@ni/nimble-components 18.10.3 → 18.10.5

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 (73) hide show
  1. package/dist/all-components-bundle.js +996 -192
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +3280 -3087
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/table/components/cell/index.d.ts +1 -0
  6. package/dist/esm/table/components/cell/index.js +4 -0
  7. package/dist/esm/table/components/cell/index.js.map +1 -1
  8. package/dist/esm/table/components/cell/styles.js +8 -0
  9. package/dist/esm/table/components/cell/styles.js.map +1 -1
  10. package/dist/esm/table/components/cell/template.js +1 -1
  11. package/dist/esm/table/components/cell/template.js.map +1 -1
  12. package/dist/esm/table/components/group-row/index.d.ts +29 -0
  13. package/dist/esm/table/components/group-row/index.js +61 -0
  14. package/dist/esm/table/components/group-row/index.js.map +1 -0
  15. package/dist/esm/table/components/group-row/styles.d.ts +1 -0
  16. package/dist/esm/table/components/group-row/styles.js +64 -0
  17. package/dist/esm/table/components/group-row/styles.js.map +1 -0
  18. package/dist/esm/table/components/group-row/template.d.ts +2 -0
  19. package/dist/esm/table/components/group-row/template.js +23 -0
  20. package/dist/esm/table/components/group-row/template.js.map +1 -0
  21. package/dist/esm/table/components/row/index.d.ts +5 -0
  22. package/dist/esm/table/components/row/index.js +30 -5
  23. package/dist/esm/table/components/row/index.js.map +1 -1
  24. package/dist/esm/table/components/row/styles.js +4 -0
  25. package/dist/esm/table/components/row/styles.js.map +1 -1
  26. package/dist/esm/table/components/row/template.js +2 -1
  27. package/dist/esm/table/components/row/template.js.map +1 -1
  28. package/dist/esm/table/index.d.ts +31 -3
  29. package/dist/esm/table/index.js +223 -22
  30. package/dist/esm/table/index.js.map +1 -1
  31. package/dist/esm/table/models/table-validator.d.ts +9 -1
  32. package/dist/esm/table/models/table-validator.js +37 -12
  33. package/dist/esm/table/models/table-validator.js.map +1 -1
  34. package/dist/esm/table/models/update-tracker.d.ts +4 -0
  35. package/dist/esm/table/models/update-tracker.js +23 -2
  36. package/dist/esm/table/models/update-tracker.js.map +1 -1
  37. package/dist/esm/table/models/virtualizer.d.ts +3 -1
  38. package/dist/esm/table/models/virtualizer.js +3 -2
  39. package/dist/esm/table/models/virtualizer.js.map +1 -1
  40. package/dist/esm/table/styles.js +19 -3
  41. package/dist/esm/table/styles.js.map +1 -1
  42. package/dist/esm/table/template.js +38 -19
  43. package/dist/esm/table/template.js.map +1 -1
  44. package/dist/esm/table/types.d.ts +26 -0
  45. package/dist/esm/table/types.js +16 -0
  46. package/dist/esm/table/types.js.map +1 -1
  47. package/dist/esm/table-column/base/group-header-view/index.d.ts +14 -0
  48. package/dist/esm/table-column/base/group-header-view/index.js +17 -0
  49. package/dist/esm/table-column/base/group-header-view/index.js.map +1 -0
  50. package/dist/esm/table-column/base/group-header-view/template.d.ts +3 -0
  51. package/dist/esm/table-column/base/group-header-view/template.js +10 -0
  52. package/dist/esm/table-column/base/group-header-view/template.js.map +1 -0
  53. package/dist/esm/table-column/base/index.d.ts +25 -0
  54. package/dist/esm/table-column/base/index.js +23 -0
  55. package/dist/esm/table-column/base/index.js.map +1 -1
  56. package/dist/esm/table-column/mixins/groupable-column.d.ts +12 -0
  57. package/dist/esm/table-column/mixins/groupable-column.js +35 -0
  58. package/dist/esm/table-column/mixins/groupable-column.js.map +1 -0
  59. package/dist/esm/table-column/text/group-header-view/index.d.ts +22 -0
  60. package/dist/esm/table-column/text/group-header-view/index.js +47 -0
  61. package/dist/esm/table-column/text/group-header-view/index.js.map +1 -0
  62. package/dist/esm/table-column/text/group-header-view/styles.d.ts +1 -0
  63. package/dist/esm/table-column/text/group-header-view/styles.js +16 -0
  64. package/dist/esm/table-column/text/group-header-view/styles.js.map +1 -0
  65. package/dist/esm/table-column/text/group-header-view/template.d.ts +2 -0
  66. package/dist/esm/table-column/text/group-header-view/template.js +15 -0
  67. package/dist/esm/table-column/text/group-header-view/template.js.map +1 -0
  68. package/dist/esm/table-column/text/index.d.ts +9 -1
  69. package/dist/esm/table-column/text/index.js +7 -1
  70. package/dist/esm/table-column/text/index.js.map +1 -1
  71. package/dist/esm/tree-item/styles.js +2 -2
  72. package/dist/esm/tree-item/styles.js.map +1 -1
  73. package/package.json +1 -1
@@ -15,11 +15,13 @@ export class UpdateTracker {
15
15
  constructor(table) {
16
16
  this.requiredUpdates = {
17
17
  rowIds: false,
18
+ groupRows: false,
18
19
  columnIds: false,
19
20
  columnSort: false,
20
21
  columnWidths: false,
21
22
  columnDefinition: false,
22
- actionMenuSlots: false
23
+ actionMenuSlots: false,
24
+ selectionMode: false
23
25
  };
24
26
  this.updateQueued = false;
25
27
  this.table = table;
@@ -27,6 +29,9 @@ export class UpdateTracker {
27
29
  get updateRowIds() {
28
30
  return this.requiredUpdates.rowIds;
29
31
  }
32
+ get updateGroupRows() {
33
+ return this.requiredUpdates.groupRows;
34
+ }
30
35
  get updateColumnIds() {
31
36
  return this.requiredUpdates.columnIds;
32
37
  }
@@ -42,10 +47,15 @@ export class UpdateTracker {
42
47
  get updateActionMenuSlots() {
43
48
  return this.requiredUpdates.actionMenuSlots;
44
49
  }
50
+ get updateSelectionMode() {
51
+ return this.requiredUpdates.selectionMode;
52
+ }
45
53
  get requiresTanStackUpdate() {
46
54
  return (this.requiredUpdates.rowIds
47
55
  || this.requiredUpdates.columnSort
48
- || this.requiredUpdates.columnDefinition);
56
+ || this.requiredUpdates.columnDefinition
57
+ || this.requiredUpdates.groupRows
58
+ || this.requiredUpdates.selectionMode);
49
59
  }
50
60
  get requiresTanStackDataReset() {
51
61
  return (this.requiredUpdates.rowIds || this.requiredUpdates.columnDefinition);
@@ -54,6 +64,9 @@ export class UpdateTracker {
54
64
  this.setAllKeys(true);
55
65
  this.queueUpdate();
56
66
  }
67
+ get hasPendingUpdates() {
68
+ return this.updateQueued;
69
+ }
57
70
  trackColumnPropertyChanged(changedColumnProperty) {
58
71
  if (isColumnProperty(changedColumnProperty, 'columnId')) {
59
72
  this.requiredUpdates.columnIds = true;
@@ -70,6 +83,9 @@ export class UpdateTracker {
70
83
  else if (isColumnProperty(changedColumnProperty, 'actionMenuSlot')) {
71
84
  this.requiredUpdates.actionMenuSlots = true;
72
85
  }
86
+ else if (isColumnProperty(changedColumnProperty, 'internalGroupIndex', 'internalGroupingDisabled')) {
87
+ this.requiredUpdates.groupRows = true;
88
+ }
73
89
  this.queueUpdate();
74
90
  }
75
91
  trackColumnInstancesChanged() {
@@ -78,12 +94,17 @@ export class UpdateTracker {
78
94
  this.requiredUpdates.columnSort = true;
79
95
  this.requiredUpdates.columnWidths = true;
80
96
  this.requiredUpdates.actionMenuSlots = true;
97
+ this.requiredUpdates.groupRows = true;
81
98
  this.queueUpdate();
82
99
  }
83
100
  trackIdFieldNameChanged() {
84
101
  this.requiredUpdates.rowIds = true;
85
102
  this.queueUpdate();
86
103
  }
104
+ trackSelectionModeChanged() {
105
+ this.requiredUpdates.selectionMode = true;
106
+ this.queueUpdate();
107
+ }
87
108
  setAllKeys(value) {
88
109
  Object.keys(this.requiredUpdates).forEach(key => {
89
110
  this.requiredUpdates[key] = value;
@@ -1 +1 @@
1
- {"version":3,"file":"update-tracker.js","sourceRoot":"","sources":["../../../../src/table/models/update-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-tracker.js","sourceRoot":"","sources":["../../../../src/table/models/update-tracker.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { Table as TanStackTable } from '@tanstack/table-core';
1
2
  import { VirtualItem } from '@tanstack/virtual-core';
2
3
  import type { Table } from '..';
3
4
  import type { TableRecord } from '../types';
@@ -12,9 +13,10 @@ export declare class Virtualizer<TData extends TableRecord = TableRecord> {
12
13
  headerContainerMarginRight: number;
13
14
  rowContainerYOffset: number;
14
15
  private readonly table;
16
+ private readonly tanStackTable;
15
17
  private readonly viewportResizeObserver;
16
18
  private virtualizer?;
17
- constructor(table: Table<TData>);
19
+ constructor(table: Table<TData>, tanStackTable: TanStackTable<TData>);
18
20
  connectedCallback(): void;
19
21
  disconnectedCallback(): void;
20
22
  dataChanged(): void;
@@ -9,12 +9,13 @@ import { TableCellView } from '../../table-column/base/cell-view';
9
9
  * @internal
10
10
  */
11
11
  export class Virtualizer {
12
- constructor(table) {
12
+ constructor(table, tanStackTable) {
13
13
  this.visibleItems = [];
14
14
  this.allRowsHeight = 0;
15
15
  this.headerContainerMarginRight = 0;
16
16
  this.rowContainerYOffset = 0;
17
17
  this.table = table;
18
+ this.tanStackTable = tanStackTable;
18
19
  this.viewportResizeObserver = new ResizeObserver(entries => {
19
20
  const borderBoxSize = entries[0]?.borderBoxSize[0];
20
21
  if (borderBoxSize) {
@@ -52,7 +53,7 @@ export class Virtualizer {
52
53
  const rowHeight = parseFloat(controlHeight.getValueFor(this.table))
53
54
  + 2 * parseFloat(borderWidth.getValueFor(this.table));
54
55
  return {
55
- count: this.table.tableData.length,
56
+ count: this.tanStackTable.getRowModel().rows.length,
56
57
  getScrollElement: () => {
57
58
  return this.table.viewport;
58
59
  },
@@ -1 +1 @@
1
- {"version":3,"file":"virtualizer.js","sourceRoot":"","sources":["../../../../src/table/models/virtualizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"virtualizer.js","sourceRoot":"","sources":["../../../../src/table/models/virtualizer.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { css } from '@microsoft/fast-element';
2
2
  import { display } from '@microsoft/fast-foundation';
3
3
  import { White } from '@ni/nimble-tokens/dist/styledictionary/js/tokens';
4
- import { applicationBackgroundColor, bodyFont, bodyFontColor, fillHoverColor } from '../theme-provider/design-tokens';
4
+ import { applicationBackgroundColor, bodyFont, bodyFontColor, fillHoverColor, fillHoverSelectedColor, fillSelectedColor } from '../theme-provider/design-tokens';
5
5
  import { Theme } from '../theme-provider/types';
6
6
  import { hexToRgbaCssColor } from '../utilities/style/colors';
7
7
  import { themeBehavior } from '../utilities/style/theme';
@@ -79,9 +79,17 @@ export const styles = css `
79
79
  pointer-events: none;
80
80
  }
81
81
 
82
- .row:hover::before {
82
+ :host([selection-mode='single']) .row:hover::before {
83
83
  background: ${fillHoverColor};
84
84
  }
85
+
86
+ :host([selection-mode='single']) .row[selected]::before {
87
+ background: ${fillSelectedColor};
88
+ }
89
+
90
+ :host([selection-mode='single']) .row[selected]:hover::before {
91
+ background: ${fillHoverSelectedColor};
92
+ }
85
93
  `.withBehaviors(themeBehavior(Theme.color, css `
86
94
  .header-row::before {
87
95
  content: '';
@@ -96,8 +104,16 @@ export const styles = css `
96
104
  background: ${fillHoverColor};
97
105
  }
98
106
 
99
- .row:hover::before {
107
+ :host([selection-mode='single']) .row:hover::before {
100
108
  background: ${hexToRgbaCssColor(White, 0.15)};
101
109
  }
110
+
111
+ :host([selection-mode='single']) .row[selected]::before {
112
+ background: ${hexToRgbaCssColor(White, 0.25)};
113
+ }
114
+
115
+ :host([selection-mode='single']) .row[selected]:hover::before {
116
+ background: ${hexToRgbaCssColor(White, 0.2)};
117
+ }
102
118
  `));
103
119
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/table/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,kDAAkD,CAAC;AACzE,OAAO,EACH,0BAA0B,EAC1B,QAAQ,EACR,aAAa,EACb,cAAc,EACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;gBAWL,QAAQ;iBACP,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA+BR,0BAA0B;;;;;;;;;;;;;;;;;sBAiB1B,0BAA0B;;;;;;;;;;;;;;sBAc1B,cAAc;;CAEnC,CAAC,aAAa,CACX,aAAa,CACT,KAAK,CAAC,KAAK,EACX,GAAG,CAAA;;;;;;8BAMmB,cAAc;;;;;8BAKd,cAAc;;;;8BAId,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;;SAEnD,CACJ,CACJ,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/table/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,kDAAkD,CAAC;AACzE,OAAO,EACH,0BAA0B,EAC1B,QAAQ,EACR,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;gBAWL,QAAQ;iBACP,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA+BR,0BAA0B;;;;;;;;;;;;;;;;;sBAiB1B,0BAA0B;;;;;;;;;;;;;;sBAc1B,cAAc;;;;sBAId,iBAAiB;;;;sBAIjB,sBAAsB;;CAE3C,CAAC,aAAa,CACX,aAAa,CACT,KAAK,CAAC,KAAK,EACX,GAAG,CAAA;;;;;;8BAMmB,cAAc;;;;;8BAKd,cAAc;;;;8BAId,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;;;;8BAI9B,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;;;;8BAI9B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC;;SAElD,CACJ,CACJ,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import { children, elements, html, ref, repeat, when } from '@microsoft/fast-element';
2
2
  import { tableHeaderTag } from './components/header';
3
3
  import { tableRowTag } from './components/row';
4
- import { TableColumnSortDirection } from './types';
4
+ import { TableColumnSortDirection, TableRowSelectionMode, TableRowSelectionState } from './types';
5
+ import { tableGroupRowTag } from './components/group-row';
5
6
  // prettier-ignore
6
7
  export const template = html `
7
- <template role="table" ${children({ property: 'childItems', filter: elements() })}>
8
+ <template role="grid" ${children({ property: 'childItems', filter: elements() })}>
8
9
  <div class="table-container" style="
9
10
  --ni-private-table-scroll-x: -${x => x.scrollX}px;
10
11
  --ni-private-table-header-scrollbar-spacer-width: ${x => x.virtualizer.headerContainerMarginRight}px;
@@ -34,23 +35,41 @@ export const template = html `
34
35
  role="rowgroup">
35
36
  ${when(x => x.columns.length > 0 && x.canRenderRows, html `
36
37
  ${repeat(x => x.virtualizer.visibleItems, html `
37
- <${tableRowTag}
38
- class="row"
39
- record-id="${(x, c) => c.parent.tableData[x.index]?.id}"
40
- :dataRecord="${(x, c) => c.parent.tableData[x.index]?.record}"
41
- :columns="${(_, c) => c.parent.columns}"
42
- @row-action-menu-beforetoggle="${(_, c) => c.parent.onRowActionMenuBeforeToggle(c.event)}"
43
- @row-action-menu-toggle="${(_, c) => c.parent.onRowActionMenuToggle(c.event)}"
44
- >
45
- ${when((x, c) => c.parent.openActionMenuRecordId === c.parent.tableData[x.index]?.id, html `
46
- ${repeat((_, c) => c.parent.actionMenuSlots, html `
47
- <slot
48
- name="${x => x}"
49
- slot="${x => `row-action-menu-${x}`}">
50
- </slot>
51
- `)}
52
- `)}
53
- </${tableRowTag}>
38
+ ${when((x, c) => c.parent.tableData[x.index]?.isGrouped, html `
39
+ <${tableGroupRowTag}
40
+ class="group-row"
41
+ :groupRowValue="${(x, c) => c.parent.tableData[x.index]?.groupRowValue}"
42
+ ?expanded="${(x, c) => c.parent.tableData[x.index]?.isExpanded}"
43
+ :nestingLevel="${(x, c) => c.parent.tableData[x.index]?.nestingLevel}"
44
+ :leafItemCount="${(x, c) => c.parent.tableData[x.index]?.leafItemCount}"
45
+ :groupColumn="${(x, c) => c.parent.tableData[x.index]?.groupColumn}"
46
+ @group-expand-toggle="${(x, c) => c.parent.handleGroupRowExpanded(x.index, c.event)}"
47
+ >
48
+ </${tableGroupRowTag}>
49
+ `)}
50
+ ${when((x, c) => !c.parent.tableData[x.index]?.isGrouped, html `
51
+ <${tableRowTag}
52
+ class="row"
53
+ record-id="${(x, c) => c.parent.tableData[x.index]?.id}"
54
+ ?selectable="${(_, c) => c.parent.selectionMode !== TableRowSelectionMode.none}"
55
+ ?selected="${(x, c) => c.parent.tableData[x.index]?.selectionState === TableRowSelectionState.selected}"
56
+ :dataRecord="${(x, c) => c.parent.tableData[x.index]?.record}"
57
+ :columns="${(_, c) => c.parent.columns}"
58
+ :nestingLevel="${(x, c) => c.parent.tableData[x.index]?.nestingLevel}"
59
+ @click="${async (x, c) => c.parent.onRowClick(x.index)}"
60
+ @row-action-menu-beforetoggle="${(_, c) => c.parent.onRowActionMenuBeforeToggle(c.event)}"
61
+ @row-action-menu-toggle="${(_, c) => c.parent.onRowActionMenuToggle(c.event)}"
62
+ >
63
+ ${when((x, c) => c.parent.openActionMenuRecordId === c.parent.tableData[x.index]?.id, html `
64
+ ${repeat((_, c) => c.parent.actionMenuSlots, html `
65
+ <slot
66
+ name="${x => x}"
67
+ slot="${x => `row-action-menu-${x}`}">
68
+ </slot>
69
+ `)}
70
+ `)}
71
+ </${tableRowTag}>
72
+ `)}
54
73
  `)}
55
74
  `)}
56
75
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,MAAM,EACN,IAAI,EACP,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAEH,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAO;4BACP,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;;4CAExC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;gEACM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,0BAA0B;gDAC7D,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa;oDAC5B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,mBAAmB;mDACvC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE;;;;sBAIxD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAa;0BACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAoB;+BAC9C,cAAc;;kDAEK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC;wDAClF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB;;8CAEpD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;gCACzB,cAAc;yBACrB,CAAC;qBACL,CAAC;;;;0CAIoB,GAAG,CAAC,UAAU,CAAC;;mDAEN,QAAQ,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;;sBAEjG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,CAAO;0BAC1D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAoB;8BAC5D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAoB;mCACrF,gBAAgB;;sDAEG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,aAAa;iDACzD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU;qDAC7C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,YAAY;sDAClD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,aAAa;oDACtD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,WAAW;4DAC1C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;;oCAEnF,gBAAgB;6BACvB,CAAC;8BACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,MAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAoB;mCACtF,WAAW;;iDAEG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE;mDACvC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,KAAK,qBAAqB,CAAC,IAAI;iDACjE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,cAAc,KAAK,sBAAsB,CAAC,QAAQ;mDACvF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM;gDAChD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;qDACrB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,YAAY;8CAC1D,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;qEACrB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,KAAsD,CAAC;+DAC9G,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAsD,CAAC;;kCAE/H,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,sBAAsB,KAAM,CAAC,CAAC,MAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,IAAI,CAAoB;sCAC9H,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,eAAe,EAAE,IAAI,CAAe;;oDAE3D,CAAC,CAAC,EAAE,CAAC,CAAC;oDACN,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE;;qCAE1C,CAAC;iCACL,CAAC;oCACE,WAAW;6BAClB,CAAC;yBACL,CAAC;qBACL,CAAC;;;;;CAKrB,CAAC"}
@@ -26,6 +26,8 @@ export interface TableValidity {
26
26
  readonly duplicateColumnId: boolean;
27
27
  readonly missingColumnId: boolean;
28
28
  readonly duplicateSortIndex: boolean;
29
+ readonly duplicateGroupIndex: boolean;
30
+ readonly idFieldNameNotConfigured: boolean;
29
31
  }
30
32
  export interface TableActionMenuToggleEventDetail {
31
33
  newState: boolean;
@@ -42,3 +44,27 @@ export declare const TableColumnSortDirection: {
42
44
  readonly descending: "descending";
43
45
  };
44
46
  export declare type TableColumnSortDirection = (typeof TableColumnSortDirection)[keyof typeof TableColumnSortDirection];
47
+ /**
48
+ * The selection modes of rows in the table.
49
+ */
50
+ export declare const TableRowSelectionMode: {
51
+ readonly none: undefined;
52
+ readonly single: "single";
53
+ };
54
+ export declare type TableRowSelectionMode = (typeof TableRowSelectionMode)[keyof typeof TableRowSelectionMode];
55
+ /**
56
+ * @internal
57
+ *
58
+ * The possible selection states that the table or a table row can be in.
59
+ */
60
+ export declare const TableRowSelectionState: {
61
+ readonly notSelected: "notSelected";
62
+ readonly selected: "selected";
63
+ };
64
+ export declare type TableRowSelectionState = (typeof TableRowSelectionState)[keyof typeof TableRowSelectionState];
65
+ /**
66
+ * Event detail type for row selection events in the table.
67
+ */
68
+ export interface TableRowSelectionEventDetail {
69
+ selectedRecordIds: string[];
70
+ }
@@ -6,4 +6,20 @@ export const TableColumnSortDirection = {
6
6
  ascending: 'ascending',
7
7
  descending: 'descending'
8
8
  };
9
+ /**
10
+ * The selection modes of rows in the table.
11
+ */
12
+ export const TableRowSelectionMode = {
13
+ none: undefined,
14
+ single: 'single'
15
+ };
16
+ /**
17
+ * @internal
18
+ *
19
+ * The possible selection states that the table or a table row can be in.
20
+ */
21
+ export const TableRowSelectionState = {
22
+ notSelected: 'notSelected',
23
+ selected: 'selected'
24
+ };
9
25
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/table/types.ts"],"names":[],"mappings":"AAyCA;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACpC,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;CAClB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/table/types.ts"],"names":[],"mappings":"AA2CA;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACpC,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;CAClB,CAAC;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,QAAQ;CACV,CAAC;AAIX;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;CACd,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { FoundationElement } from '@microsoft/fast-foundation';
2
+ export interface TableGroupHeaderState<TGroupValue = unknown, TColumnConfig = unknown> {
3
+ groupHeaderValue: TGroupValue;
4
+ columnConfig?: TColumnConfig;
5
+ }
6
+ /**
7
+ * The base class for group header views, which are displayed in a TableGroupRow.
8
+ * A TableColumn that uses the GroupableColumn mixin must provide a TableGroupHeaderView
9
+ * type (linked via TableColumn.groupHeaderViewTag).
10
+ */
11
+ export declare abstract class TableGroupHeaderView<TGroupValue = unknown, TColumnConfig = unknown> extends FoundationElement implements TableGroupHeaderState<TGroupValue, TColumnConfig> {
12
+ groupHeaderValue: TGroupValue;
13
+ columnConfig?: TColumnConfig;
14
+ }
@@ -0,0 +1,17 @@
1
+ import { __decorate } from "tslib";
2
+ import { observable } from '@microsoft/fast-element';
3
+ import { FoundationElement } from '@microsoft/fast-foundation';
4
+ /**
5
+ * The base class for group header views, which are displayed in a TableGroupRow.
6
+ * A TableColumn that uses the GroupableColumn mixin must provide a TableGroupHeaderView
7
+ * type (linked via TableColumn.groupHeaderViewTag).
8
+ */
9
+ export class TableGroupHeaderView extends FoundationElement {
10
+ }
11
+ __decorate([
12
+ observable
13
+ ], TableGroupHeaderView.prototype, "groupHeaderValue", void 0);
14
+ __decorate([
15
+ observable
16
+ ], TableGroupHeaderView.prototype, "columnConfig", void 0);
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table-column/base/group-header-view/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAU/D;;;;GAIG;AACH,MAAM,OAAgB,oBAIlB,SAAQ,iBAAiB;CAO5B;AAJG;IADC,UAAU;8DAC2B;AAGtC;IADC,UAAU;0DACyB"}
@@ -0,0 +1,3 @@
1
+ import { ViewTemplate } from '@microsoft/fast-element';
2
+ import type { TableGroupRow } from '../../../table/components/group-row';
3
+ export declare const createGroupHeaderViewTemplate: (groupHeaderViewTag: string) => ViewTemplate<TableGroupRow>;
@@ -0,0 +1,10 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ export const createGroupHeaderViewTemplate = (groupHeaderViewTag) => html `
3
+ <${groupHeaderViewTag}
4
+ :groupHeaderValue="${x => x.groupRowValue}"
5
+ :columnConfig="${x => x.groupColumn?.columnConfig}"
6
+ class="group-header-value"
7
+ >
8
+ </${groupHeaderViewTag}>
9
+ `;
10
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table-column/base/group-header-view/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,yBAAyB,CAAC;AAG7D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CACzC,kBAA0B,EACC,EAAE,CAAC,IAAI,CAAe;WAC1C,kBAAkB;iCACI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;6BACxB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,YAAY;;;YAGjD,kBAAkB;KACzB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { ViewTemplate } from '@microsoft/fast-element';
2
2
  import { FoundationElement } from '@microsoft/fast-foundation';
3
+ import type { TableGroupRow } from '../../table/components/group-row';
3
4
  import type { TableCell } from '../../table/components/cell';
4
5
  import { TableColumnSortDirection, TableFieldName } from '../../table/types';
5
6
  import { TableColumnSortOperation } from './types';
@@ -43,6 +44,29 @@ export declare abstract class TableColumn<TColumnConfig = unknown> extends Found
43
44
  internalMinPixelWidth: number;
44
45
  /**
45
46
  * @internal
47
+ * Whether or not this column can be used to group rows by
48
+ */
49
+ internalGroupingDisabled: boolean;
50
+ /**
51
+ * @internal
52
+ * Specifies the grouping precedence of the column within the set of all columns participating in grouping.
53
+ * Columns are rendered in the grouping tree from lowest group-index as the tree root to highest
54
+ * group-index as tree leaves.
55
+ */
56
+ internalGroupIndex?: number;
57
+ /**
58
+ * The tag to use to render the group header content for a column.
59
+ * The element this tag refers to must derive from TableGroupHeaderView.
60
+ */
61
+ abstract readonly groupHeaderViewTag?: string;
62
+ /**
63
+ * @internal
64
+ */
65
+ internalGroupHeaderViewTemplate?: ViewTemplate<TableGroupRow>;
66
+ /**
67
+ * @internal
68
+ *
69
+ * The template to use to render the cell content for the column
46
70
  * The tag (element name) of the custom element that renders the cell content for the column.
47
71
  * That element should derive from TableCellView<TCellRecord, TColumnConfig>.
48
72
  */
@@ -94,4 +118,5 @@ export declare abstract class TableColumn<TColumnConfig = unknown> extends Found
94
118
  protected cellViewTagChanged(): void;
95
119
  protected internalFractionalWidthChanged(): void;
96
120
  protected internalPixelWidthChanged(): void;
121
+ protected groupHeaderViewTagChanged(): void;
97
122
  }
@@ -2,6 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { attr, nullableNumberConverter, observable } from '@microsoft/fast-element';
3
3
  import { FoundationElement } from '@microsoft/fast-foundation';
4
4
  import { uniqueId } from '@microsoft/fast-web-utilities';
5
+ import { createGroupHeaderViewTemplate } from './group-header-view/template';
5
6
  import { createCellViewTemplate } from '../../table/components/cell/template';
6
7
  import { TableColumnSortDirection } from '../../table/types';
7
8
  import { defaultFractionalWidth, defaultMinPixelWidth, TableColumnSortOperation } from './types';
@@ -30,6 +31,11 @@ export class TableColumn extends FoundationElement {
30
31
  * The minimum size in pixels according to the design doc
31
32
  */
32
33
  this.internalMinPixelWidth = defaultMinPixelWidth;
34
+ /**
35
+ * @internal
36
+ * Whether or not this column can be used to group rows by
37
+ */
38
+ this.internalGroupingDisabled = false;
33
39
  /**
34
40
  * @internal
35
41
  *
@@ -63,6 +69,11 @@ export class TableColumn extends FoundationElement {
63
69
  internalPixelWidthChanged() {
64
70
  this.currentPixelWidth = this.internalPixelWidth;
65
71
  }
72
+ groupHeaderViewTagChanged() {
73
+ this.internalGroupHeaderViewTemplate = this.groupHeaderViewTag
74
+ ? createGroupHeaderViewTemplate(this.groupHeaderViewTag)
75
+ : undefined;
76
+ }
66
77
  }
67
78
  __decorate([
68
79
  attr({ attribute: 'column-id' })
@@ -97,6 +108,18 @@ __decorate([
97
108
  __decorate([
98
109
  observable
99
110
  ], TableColumn.prototype, "internalMinPixelWidth", void 0);
111
+ __decorate([
112
+ observable
113
+ ], TableColumn.prototype, "internalGroupingDisabled", void 0);
114
+ __decorate([
115
+ observable
116
+ ], TableColumn.prototype, "internalGroupIndex", void 0);
117
+ __decorate([
118
+ observable
119
+ ], TableColumn.prototype, "groupHeaderViewTag", void 0);
120
+ __decorate([
121
+ observable
122
+ ], TableColumn.prototype, "internalGroupHeaderViewTemplate", void 0);
100
123
  __decorate([
101
124
  observable
102
125
  ], TableColumn.prototype, "cellViewTag", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EACJ,uBAAuB,EACvB,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAkB,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EACH,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EAC3B,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,OAAgB,WAEpB,SAAQ,iBAAiB;IAqHvB;QACI,KAAK,EAAE,CAAC;QA3GL,iBAAY,GAAG,KAAK,CAAC;QAMrB,kBAAa,GAA6B,wBAAwB,CAAC,IAAI,CAAC;QAU/E;;;;WAIG;QAEI,2BAAsB,GAAG,sBAAsB,CAAC;QASvD;;;;WAIG;QAEI,4BAAuB,GAAG,sBAAsB,CAAC;QAExD;;;WAGG;QAEI,0BAAqB,GAAG,oBAAoB,CAAC;QAsBpD;;;;;WAKG;QAEI,yBAAoB,GAA4C,EAAE,CAAC;QAkB1E;;;;WAIG;QAEI,kBAAa,GAA6B,wBAAwB,CAAC,KAAK,CAAC;QAW5E,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACa,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAES,kBAAkB;QACxB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,WAAW;YAC3C,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC;YAC1C,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC;IAES,8BAA8B;QACpC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC;IAC/D,CAAC;IAES,yBAAyB;QAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC;IACrD,CAAC;CACJ;AA9IG;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;6CACR;AAGzB;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;mDACT;AAG/B;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;oDACT;AAGhC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iDAC1B;AAG5B;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;8CACrC;AAGjC;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;kDACyC;AAQ/E;IADC,UAAU;sDACuB;AAQlC;IADC,UAAU;2DAC4C;AAOvD;IADC,UAAU;uDACwB;AAQnC;IADC,UAAU;4DAC6C;AAOxD;IADC,UAAU;0DACyC;AAQpD;IADC,UAAU;gDACkC;AAI7C;IADC,UAAU;4DAC8C;AAiBzD;IADC,UAAU;yDAC+D;AAQ1E;IADC,UAAU;iDACyB;AAQpC;IADC,UAAU;+DACwC;AAQnD;IADC,UAAU;kDACqE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { TableColumn } from '../base';
2
+ declare type GroupableTableColumn = Pick<TableColumn, 'internalGroupingDisabled' | 'internalGroupIndex'>;
3
+ declare type GroupableTableColumnConstructor = abstract new (...args: any[]) => GroupableTableColumn;
4
+ export declare function mixinGroupableColumnAPI<TBase extends GroupableTableColumnConstructor>(base: TBase): (abstract new (...args: any[]) => {
5
+ groupingDisabled: boolean;
6
+ groupIndex?: number | null | undefined;
7
+ groupingDisabledChanged(): void;
8
+ groupIndexChanged(): void;
9
+ internalGroupingDisabled: boolean;
10
+ internalGroupIndex?: number | undefined;
11
+ }) & TBase;
12
+ export {};
@@ -0,0 +1,35 @@
1
+ import { attr, nullableNumberConverter } from '@microsoft/fast-element';
2
+ // As the returned class is internal to the function, we can't write a signature that uses is directly, so rely on inference
3
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type
4
+ export function mixinGroupableColumnAPI(base) {
5
+ /**
6
+ * The Mixin that provides a concrete column with the API to allow grouping
7
+ * by the values in that column.
8
+ */
9
+ class GroupableColumn extends base {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.groupingDisabled = false;
13
+ this.groupIndex = null;
14
+ }
15
+ groupingDisabledChanged() {
16
+ this.internalGroupingDisabled = this.groupingDisabled;
17
+ }
18
+ groupIndexChanged() {
19
+ if (typeof this.groupIndex === 'number') {
20
+ this.internalGroupIndex = this.groupIndex;
21
+ }
22
+ else {
23
+ this.internalGroupIndex = undefined;
24
+ }
25
+ }
26
+ }
27
+ attr({ attribute: 'grouping-disabled', mode: 'boolean' })(
28
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
29
+ GroupableColumn.prototype, 'groupingDisabled');
30
+ attr({ attribute: 'group-index', converter: nullableNumberConverter })(
31
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
32
+ GroupableColumn.prototype, 'groupIndex');
33
+ return GroupableColumn;
34
+ }
35
+ //# sourceMappingURL=groupable-column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupable-column.js","sourceRoot":"","sources":["../../../../src/table-column/mixins/groupable-column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAYxE,4HAA4H;AAC5H,+HAA+H;AAC/H,MAAM,UAAU,uBAAuB,CAErC,IAAW;IACT;;;OAGG;IACH,MAAe,eAAgB,SAAQ,IAAI;QAA3C;;YACW,qBAAgB,GAAG,KAAK,CAAC;YAEzB,eAAU,GAAmB,IAAI,CAAC;QAa7C,CAAC;QAXU,uBAAuB;YAC1B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC1D,CAAC;QAEM,iBAAiB;YACpB,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE;gBACrC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC;aAC7C;iBAAM;gBACH,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;aACvC;QACL,CAAC;KACJ;IACD,IAAI,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACrD,iEAAiE;IACjE,eAAe,CAAC,SAAS,EACzB,kBAAkB,CACrB,CAAC;IACF,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;IAClE,iEAAiE;IACjE,eAAe,CAAC,SAAS,EACzB,YAAY,CACf,CAAC;IAEF,OAAO,eAAe,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { TableColumnTextColumnConfig } from '..';
2
+ import { TableGroupHeaderView } from '../../base/group-header-view';
3
+ declare global {
4
+ interface HTMLElementTagNameMap {
5
+ 'nimble-table-column-text-group-header': TableColumnTextGroupHeaderView;
6
+ }
7
+ }
8
+ /**
9
+ * The custom element used to render a group row header for a group representing rows
10
+ * grouped by a TableColumnText column.
11
+ */
12
+ export declare class TableColumnTextGroupHeaderView extends TableGroupHeaderView<string | null | undefined, TableColumnTextColumnConfig> {
13
+ columnConfig?: TableColumnTextColumnConfig;
14
+ /** @internal */
15
+ textSpan: HTMLElement;
16
+ /** @internal */
17
+ isValidContentAndHasOverflow: boolean;
18
+ get content(): string;
19
+ updateTitleOverflow(): void;
20
+ clearTitleOverflow(): void;
21
+ }
22
+ export declare const tableColumnTextGroupHeaderTag: string;