@ni/nimble-components 17.0.1 → 17.0.3

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 (58) hide show
  1. package/dist/all-components-bundle.js +3194 -216
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +3022 -2714
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/all-components.d.ts +1 -0
  6. package/dist/esm/all-components.js +1 -0
  7. package/dist/esm/all-components.js.map +1 -1
  8. package/dist/esm/table/components/cell/index.d.ts +15 -3
  9. package/dist/esm/table/components/cell/index.js +32 -2
  10. package/dist/esm/table/components/cell/index.js.map +1 -1
  11. package/dist/esm/table/components/cell/styles.js +8 -1
  12. package/dist/esm/table/components/cell/styles.js.map +1 -1
  13. package/dist/esm/table/components/cell/template.d.ts +1 -1
  14. package/dist/esm/table/components/cell/template.js +2 -2
  15. package/dist/esm/table/components/cell/template.js.map +1 -1
  16. package/dist/esm/table/components/row/index.d.ts +7 -5
  17. package/dist/esm/table/components/row/index.js +20 -5
  18. package/dist/esm/table/components/row/index.js.map +1 -1
  19. package/dist/esm/table/components/row/styles.js +3 -5
  20. package/dist/esm/table/components/row/styles.js.map +1 -1
  21. package/dist/esm/table/components/row/template.d.ts +1 -1
  22. package/dist/esm/table/components/row/template.js +3 -1
  23. package/dist/esm/table/components/row/template.js.map +1 -1
  24. package/dist/esm/table/index.d.ts +2 -2
  25. package/dist/esm/table/index.js +3 -12
  26. package/dist/esm/table/index.js.map +1 -1
  27. package/dist/esm/table/template.js +14 -4
  28. package/dist/esm/table/template.js.map +1 -1
  29. package/dist/esm/table/types.d.ts +17 -1
  30. package/dist/esm/table-column/base/index.d.ts +31 -0
  31. package/dist/esm/table-column/base/index.js +7 -0
  32. package/dist/esm/table-column/base/index.js.map +1 -0
  33. package/dist/esm/table-column/base/styles.d.ts +1 -0
  34. package/dist/esm/table-column/base/styles.js +7 -0
  35. package/dist/esm/table-column/base/styles.js.map +1 -0
  36. package/dist/esm/table-column/base/template.d.ts +1 -0
  37. package/dist/esm/table-column/base/template.js +7 -0
  38. package/dist/esm/table-column/base/template.js.map +1 -0
  39. package/dist/esm/table-column/text/index.d.ts +18 -0
  40. package/dist/esm/table-column/text/index.js +40 -0
  41. package/dist/esm/table-column/text/index.js.map +1 -0
  42. package/dist/esm/table-column/text/styles.d.ts +1 -0
  43. package/dist/esm/table-column/text/styles.js +16 -0
  44. package/dist/esm/table-column/text/styles.js.map +1 -0
  45. package/dist/esm/table-column/text/template.d.ts +3 -0
  46. package/dist/esm/table-column/text/template.js +11 -0
  47. package/dist/esm/table-column/text/template.js.map +1 -0
  48. package/dist/esm/wafer-map/index.d.ts +9 -4
  49. package/dist/esm/wafer-map/index.js +8 -0
  50. package/dist/esm/wafer-map/index.js.map +1 -1
  51. package/dist/esm/wafer-map/modules/zoom-handler.d.ts +24 -0
  52. package/dist/esm/wafer-map/modules/zoom-handler.js +87 -0
  53. package/dist/esm/wafer-map/modules/zoom-handler.js.map +1 -0
  54. package/dist/esm/wafer-map/styles.js +15 -4
  55. package/dist/esm/wafer-map/styles.js.map +1 -1
  56. package/dist/esm/wafer-map/template.js +16 -14
  57. package/dist/esm/wafer-map/template.js.map +1 -1
  58. package/package.json +5 -1
@@ -28,6 +28,7 @@ import './switch';
28
28
  import './tab';
29
29
  import './tab-panel';
30
30
  import './table';
31
+ import './table-column/text';
31
32
  import './tabs';
32
33
  import './tabs-toolbar';
33
34
  import './text-area';
@@ -28,6 +28,7 @@ import './switch';
28
28
  import './tab';
29
29
  import './tab-panel';
30
30
  import './table';
31
+ import './table-column/text';
31
32
  import './tabs';
32
33
  import './tabs-toolbar';
33
34
  import './text-area';
@@ -1 +1 @@
1
- {"version":3,"file":"all-components.js","sourceRoot":"","sources":["../../src/all-components.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,UAAU,CAAC;AAClB,OAAO,iBAAiB,CAAC;AACzB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,cAAc,CAAC;AACtB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,UAAU,CAAC;AAClB,OAAO,eAAe,CAAC;AACvB,OAAO,YAAY,CAAC;AACpB,OAAO,YAAY,CAAC;AACpB,OAAO,UAAU,CAAC;AAClB,OAAO,UAAU,CAAC;AAClB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,eAAe,CAAC;AACvB,OAAO,QAAQ,CAAC;AAChB,OAAO,eAAe,CAAC;AACvB,OAAO,aAAa,CAAC;AACrB,OAAO,gBAAgB,CAAC;AACxB,OAAO,SAAS,CAAC;AACjB,OAAO,eAAe,CAAC;AACvB,OAAO,UAAU,CAAC;AAClB,OAAO,WAAW,CAAC;AACnB,OAAO,UAAU,CAAC;AAClB,OAAO,OAAO,CAAC;AACf,OAAO,aAAa,CAAC;AACrB,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,WAAW,CAAC;AACnB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC"}
1
+ {"version":3,"file":"all-components.js","sourceRoot":"","sources":["../../src/all-components.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,UAAU,CAAC;AAClB,OAAO,iBAAiB,CAAC;AACzB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,cAAc,CAAC;AACtB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,UAAU,CAAC;AAClB,OAAO,eAAe,CAAC;AACvB,OAAO,YAAY,CAAC;AACpB,OAAO,YAAY,CAAC;AACpB,OAAO,UAAU,CAAC;AAClB,OAAO,UAAU,CAAC;AAClB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,eAAe,CAAC;AACvB,OAAO,QAAQ,CAAC;AAChB,OAAO,eAAe,CAAC;AACvB,OAAO,aAAa,CAAC;AACrB,OAAO,gBAAgB,CAAC;AACxB,OAAO,SAAS,CAAC;AACjB,OAAO,eAAe,CAAC;AACvB,OAAO,UAAU,CAAC;AAClB,OAAO,WAAW,CAAC;AACnB,OAAO,UAAU,CAAC;AAClB,OAAO,OAAO,CAAC;AACf,OAAO,aAAa,CAAC;AACrB,OAAO,SAAS,CAAC;AACjB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,QAAQ,CAAC;AAChB,OAAO,gBAAgB,CAAC;AACxB,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC;AACtB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,WAAW,CAAC;AACnB,OAAO,WAAW,CAAC;AACnB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC;AACrB,OAAO,aAAa,CAAC"}
@@ -1,5 +1,6 @@
1
+ import { ElementStyles, ViewTemplate } from '@microsoft/fast-element';
1
2
  import { FoundationElement } from '@microsoft/fast-foundation';
2
- import type { TableFieldValue } from '../../types';
3
+ import type { TableCellRecord, TableCellState } from '../../types';
3
4
  declare global {
4
5
  interface HTMLElementTagNameMap {
5
6
  'nimble-table-cell': TableCell;
@@ -9,6 +10,17 @@ declare global {
9
10
  * A styled cell that is used within the nimble-table-row.
10
11
  * @internal
11
12
  */
12
- export declare class TableCell extends FoundationElement {
13
- data: TableFieldValue;
13
+ export declare class TableCell<TCellRecord extends TableCellRecord = TableCellRecord> extends FoundationElement {
14
+ cellState?: TableCellState<TCellRecord>;
15
+ cellTemplate?: ViewTemplate;
16
+ cellStyles?: ElementStyles;
17
+ /**
18
+ * @internal
19
+ */
20
+ readonly cellContentContainer: HTMLElement;
21
+ private customCellView?;
22
+ connectedCallback(): void;
23
+ protected cellStateChanged(): void;
24
+ protected cellTemplateChanged(): void;
25
+ protected cellStylesChanged(prev?: ElementStyles, next?: ElementStyles): void;
14
26
  }
@@ -1,5 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
- import { observable } from '@microsoft/fast-element';
2
+ import { defaultExecutionContext, 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';
@@ -8,10 +8,40 @@ import { template } from './template';
8
8
  * @internal
9
9
  */
10
10
  export class TableCell extends FoundationElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.customCellView = undefined;
14
+ }
15
+ connectedCallback() {
16
+ super.connectedCallback();
17
+ this.customCellView = this.cellTemplate?.render(this.cellState, this.cellContentContainer);
18
+ }
19
+ cellStateChanged() {
20
+ this.customCellView?.bind(this.cellState, defaultExecutionContext);
21
+ }
22
+ cellTemplateChanged() {
23
+ if (this.isConnected) {
24
+ this.customCellView = this.cellTemplate?.render(this.cellState, this.cellContentContainer);
25
+ }
26
+ }
27
+ cellStylesChanged(prev, next) {
28
+ if (prev) {
29
+ this.$fastController.removeStyles(prev);
30
+ }
31
+ if (next) {
32
+ this.$fastController.addStyles(next);
33
+ }
34
+ }
11
35
  }
12
36
  __decorate([
13
37
  observable
14
- ], TableCell.prototype, "data", void 0);
38
+ ], TableCell.prototype, "cellState", void 0);
39
+ __decorate([
40
+ observable
41
+ ], TableCell.prototype, "cellTemplate", void 0);
42
+ __decorate([
43
+ observable
44
+ ], TableCell.prototype, "cellStyles", void 0);
15
45
  const nimbleTableCell = TableCell.compose({
16
46
  baseName: 'table-cell',
17
47
  template,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table/components/cell/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,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,SAAU,SAAQ,iBAAiB;CAI/C;AADG;IADC,UAAU;uCACkB;AAGjC,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC;IACtC,QAAQ,EAAE,YAAY;IACtB,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table/components/cell/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,uBAAuB,EAGvB,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,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,SAEX,SAAQ,iBAAiB;IAF3B;;QAiBY,mBAAc,GAAc,SAAS,CAAC;IAmClD,CAAC;IAjCmB,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAC3C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,oBAAoB,CAC5B,CAAC;IACN,CAAC;IAES,gBAAgB;QACtB,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IACvE,CAAC;IAES,mBAAmB;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAC3C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,oBAAoB,CAC5B,CAAC;SACL;IACL,CAAC;IAES,iBAAiB,CACvB,IAAoB,EACpB,IAAoB;QAEpB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC3C;QAED,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACxC;IACL,CAAC;CACJ;AAhDG;IADC,UAAU;4CACoC;AAG/C;IADC,UAAU;+CACwB;AAGnC;IADC,UAAU;6CACuB;AA4CtC,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC;IACtC,QAAQ,EAAE,YAAY;IACtB,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC"}
@@ -2,10 +2,17 @@ import { css } from '@microsoft/fast-element';
2
2
  import { display } from '@microsoft/fast-foundation';
3
3
  import { standardPadding } from '../../../theme-provider/design-tokens';
4
4
  export const styles = css `
5
- ${display('flex')}
5
+ ${display('grid')}
6
6
 
7
7
  :host {
8
8
  padding: 0px calc(${standardPadding} / 2);
9
+ align-self: center;
10
+ height: 100%;
11
+ }
12
+
13
+ .cell-content-container {
14
+ overflow: hidden;
15
+ display: flex;
9
16
  align-items: center;
10
17
  }
11
18
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/cell/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;4BAGO,eAAe;;;CAG1C,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/cell/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;4BAGO,eAAe;;;;;;;;;;CAU1C,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import type { TableCell } from '.';
2
- export declare const template: import("@microsoft/fast-element").ViewTemplate<TableCell, any>;
2
+ export declare const template: import("@microsoft/fast-element").ViewTemplate<TableCell<import("../../types").TableCellRecord>, any>;
@@ -1,8 +1,8 @@
1
- import { html } from '@microsoft/fast-element';
1
+ import { html, ref } from '@microsoft/fast-element';
2
2
  // prettier-ignore
3
3
  export const template = html `
4
4
  <template role="cell">
5
- ${x => x.data}
5
+ <div ${ref('cellContentContainer')} class="cell-content-container"></div>
6
6
  </template>
7
7
  `;
8
8
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/cell/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG/C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAW;;UAE7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;;CAEpB,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/cell/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAGpD,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAW;;eAExB,GAAG,CAAC,sBAAsB,CAAC;;CAEzC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { FoundationElement } from '@microsoft/fast-foundation';
2
- import type { TableFieldValue, TableRecord } from '../../types';
2
+ import type { TableCellState, TableDataRecord } from '../../types';
3
+ import type { TableColumn } from '../../../table-column/base';
3
4
  declare global {
4
5
  interface HTMLElementTagNameMap {
5
6
  'nimble-table-row': TableRow;
@@ -9,8 +10,9 @@ declare global {
9
10
  * A styled row that is used within the nimble-table.
10
11
  * @internal
11
12
  */
12
- export declare class TableRow<TData extends TableRecord = TableRecord> extends FoundationElement {
13
- data?: TData;
14
- columns: string[];
15
- getCellValue(column: string): TableFieldValue;
13
+ export declare class TableRow<TDataRecord extends TableDataRecord = TableDataRecord> extends FoundationElement {
14
+ dataRecord?: TDataRecord;
15
+ columns: TableColumn[];
16
+ getCellState(column: TableColumn): TableCellState;
17
+ private hasValidFieldNames;
16
18
  }
@@ -10,17 +10,32 @@ import { template } from './template';
10
10
  export class TableRow extends FoundationElement {
11
11
  constructor() {
12
12
  super(...arguments);
13
- // TODO: Temporarily assume the set of columns will be an array of strings.
14
- // Eventually, this will be an array of column definitions.
15
13
  this.columns = [];
16
14
  }
17
- getCellValue(column) {
18
- return this.data ? this.data[column] : undefined;
15
+ getCellState(column) {
16
+ const fieldNames = column.getDataRecordFieldNames();
17
+ if (this.hasValidFieldNames(fieldNames) && this.dataRecord) {
18
+ const cellDataValues = fieldNames.map(field => this.dataRecord[field]);
19
+ const cellRecord = Object.fromEntries(column.cellRecordFieldNames.map((k, i) => [
20
+ k,
21
+ cellDataValues[i]
22
+ ]));
23
+ const columnConfig = column.getColumnConfig?.() ?? {};
24
+ const cellState = {
25
+ cellRecord,
26
+ columnConfig
27
+ };
28
+ return cellState;
29
+ }
30
+ return { cellRecord: {}, columnConfig: {} };
31
+ }
32
+ hasValidFieldNames(keys) {
33
+ return keys.every(key => key !== undefined);
19
34
  }
20
35
  }
21
36
  __decorate([
22
37
  observable
23
- ], TableRow.prototype, "data", void 0);
38
+ ], TableRow.prototype, "dataRecord", void 0);
24
39
  __decorate([
25
40
  observable
26
41
  ], TableRow.prototype, "columns", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table/components/row/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAStC;;;GAGG;AACH,MAAM,OAAO,QAEX,SAAQ,iBAAiB;IAF3B;;QAMI,2EAA2E;QAC3E,2DAA2D;QAEpD,YAAO,GAAa,EAAE,CAAC;IAKlC,CAAC;IAHU,YAAY,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;CACJ;AAVG;IADC,UAAU;sCACS;AAKpB;IADC,UAAU;yCACmB;AAOlC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;IACpC,QAAQ,EAAE,WAAW;IACrB,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table/components/row/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AActC;;;GAGG;AACH,MAAM,OAAO,QAEX,SAAQ,iBAAiB;IAF3B;;QAOW,YAAO,GAAkB,EAAE,CAAC;IA8BvC,CAAC;IA5BU,YAAY,CAAC,MAAmB;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,uBAAuB,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;YACxD,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CACjC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC,CACnC,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,CAAC;gBACD,cAAc,CAAC,CAAC,CAAC;aACpB,CAAC,CACL,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC;YACtD,MAAM,SAAS,GAAmB;gBAC9B,UAAU;gBACV,YAAY;aACf,CAAC;YACF,OAAO,SAAS,CAAC;SACpB;QAED,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAEO,kBAAkB,CACtB,IAAoC;QAEpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IAChD,CAAC;CACJ;AAjCG;IADC,UAAU;4CACqB;AAGhC;IADC,UAAU;yCACwB;AAgCvC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;IACpC,QAAQ,EAAE,WAAW;IACrB,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC"}
@@ -2,16 +2,14 @@ import { css } from '@microsoft/fast-element';
2
2
  import { display } from '@microsoft/fast-foundation';
3
3
  import { applicationBackgroundColor, borderWidth, controlHeight, fillHoverColor, tableRowBorderColor } from '../../../theme-provider/design-tokens';
4
4
  export const styles = css `
5
- ${display('flex')}
5
+ ${display('grid')}
6
6
 
7
7
  :host {
8
8
  height: ${controlHeight};
9
9
  background: ${applicationBackgroundColor};
10
10
  border-top: calc(2 * ${borderWidth}) solid ${tableRowBorderColor};
11
- }
12
-
13
- .cell {
14
- flex: 1;
11
+ grid-auto-flow: column;
12
+ grid-auto-columns: 1fr;
15
13
  }
16
14
 
17
15
  :host(:hover) .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,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,cAAc,EACd,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;kBAGH,aAAa;sBACT,0BAA0B;+BACjB,WAAW,WAAW,mBAAmB;;;;;;;;sBAQlD,cAAc;;CAEnC,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,0BAA0B,EAC1B,WAAW,EACX,aAAa,EACb,cAAc,EACd,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;kBAGH,aAAa;sBACT,0BAA0B;+BACjB,WAAW,WAAW,mBAAmB;;;;;;sBAMlD,cAAc;;CAEnC,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import type { TableRow } from '.';
2
- export declare const template: import("@microsoft/fast-element").ViewTemplate<TableRow<import("../../types").TableRecord>, any>;
2
+ export declare const template: import("@microsoft/fast-element").ViewTemplate<TableRow<import("../../types").TableDataRecord>, any>;
@@ -7,7 +7,9 @@ export const template = html `
7
7
  ${repeat(x => x.columns, html `
8
8
  <${DesignSystem.tagFor(TableCell)}
9
9
  class="cell"
10
- :data="${(x, c) => c.parent.getCellValue(x)}"
10
+ :cellTemplate="${x => x.cellTemplate}"
11
+ :cellStyles="${x => x.cellStyles}"
12
+ :cellState="${(x, c) => c.parent.getCellState(x)}"
11
13
  >
12
14
  </${DesignSystem.tagFor(TableCell)}>
13
15
  `)}
@@ -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,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;UAE5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAQ;eAC9B,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;;yBAEpB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;;gBAEzD,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;SACrC,CAAC;;CAET,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/row/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;;UAE5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAuB;eAC7C,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;;iCAEZ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;+BACrB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;8BAClB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;;gBAEhD,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;SACrC,CAAC;;CAET,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { FoundationElement } from '@microsoft/fast-foundation';
2
+ import type { TableColumn } from '../table-column/base';
2
3
  import type { TableRecord, TableRowState, TableValidity } from './types';
3
4
  declare global {
4
5
  interface HTMLElementTagNameMap {
@@ -15,8 +16,7 @@ export declare class Table<TData extends TableRecord = TableRecord> extends Foun
15
16
  * @internal
16
17
  */
17
18
  tableData: TableRowState<TData>[];
18
- columns: string[];
19
- columnHeaders: string[];
19
+ readonly columns: TableColumn[];
20
20
  get validity(): TableValidity;
21
21
  private readonly table;
22
22
  private options;
@@ -16,11 +16,7 @@ export class Table extends FoundationElement {
16
16
  * @internal
17
17
  */
18
18
  this.tableData = [];
19
- // TODO: Temporarily expose the columns as a string array. This will ultimately be
20
- // column definitions provided by slotted elements.
21
19
  this.columns = [];
22
- // TODO: Temporarily expose the column headers as a string array.
23
- this.columnHeaders = [];
24
20
  this.tableInitialized = false;
25
21
  this.tableValidator = new TableValidator();
26
22
  this.update = (state) => {
@@ -87,7 +83,7 @@ export class Table extends FoundationElement {
87
83
  refreshRows() {
88
84
  const rows = this.table.getRowModel().rows;
89
85
  this.tableData = rows.map(row => {
90
- const rowState = { data: row.original };
86
+ const rowState = { record: row.original };
91
87
  return rowState;
92
88
  });
93
89
  }
@@ -96,8 +92,8 @@ export class Table extends FoundationElement {
96
92
  this.update(this.table.initialState);
97
93
  this.refreshRows();
98
94
  }
99
- // Temporarily auto-detect the keys in TData to make columns.
100
- // TODO: Remove this logic when another way to specify columns is provided.
95
+ // Generate columns for TanStack that correspond to all the keys in TData because all operations,
96
+ // such as grouping and sorting, will be performed on the data's records, not the values rendered within a cell.
101
97
  generateColumns() {
102
98
  if (this.data.length === 0) {
103
99
  return;
@@ -113,8 +109,6 @@ export class Table extends FoundationElement {
113
109
  return columnDef;
114
110
  });
115
111
  this.updateTableOptions({ columns: generatedColumns });
116
- this.columnHeaders = generatedColumns.map(x => x.header);
117
- this.columns = this.columnHeaders;
118
112
  }
119
113
  }
120
114
  __decorate([
@@ -129,9 +123,6 @@ __decorate([
129
123
  __decorate([
130
124
  observable
131
125
  ], Table.prototype, "columns", void 0);
132
- __decorate([
133
- observable
134
- ], Table.prototype, "columnHeaders", void 0);
135
126
  const nimbleTable = Table.compose({
136
127
  baseName: 'table',
137
128
  template,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/table/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/table/index.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,40 @@
1
- import { html, repeat } from '@microsoft/fast-element';
1
+ import { html, repeat, slotted, when } from '@microsoft/fast-element';
2
2
  import { DesignSystem } from '@microsoft/fast-foundation';
3
3
  import { TableHeader } from './components/header';
4
4
  import { TableRow } from './components/row';
5
+ import { TableColumn } from '../table-column/base';
6
+ const isTableColumn = () => {
7
+ const filter = (value, _, __) => {
8
+ return value instanceof TableColumn;
9
+ };
10
+ return filter;
11
+ };
5
12
  // prettier-ignore
6
13
  export const template = html `
7
14
  <template role="table">
8
15
  <div class="table-container">
9
16
  <div role="rowgroup" class="header-container">
10
17
  <div class="header-row" role="row">
11
- ${repeat(x => x.columnHeaders, html `
18
+ ${repeat(x => x.columns, html `
12
19
  <${DesignSystem.tagFor(TableHeader)} class="header">
13
- ${x => x}
20
+ ${x => x.textContent}
14
21
  </${DesignSystem.tagFor(TableHeader)}>
15
22
  `)}
16
23
  </div>
17
24
  </div>
18
25
  <div class="table-viewport" role="rowgroup">
26
+ ${when(x => x.columns.length > 0, html `
19
27
  ${repeat(x => x.tableData, html `
20
28
  <${DesignSystem.tagFor(TableRow)}
21
- :data="${x => x.data}"
29
+ :dataRecord="${x => x.record}"
22
30
  :columns="${(_, c) => c.parent.columns}"
23
31
  >
24
32
  </${DesignSystem.tagFor(TableRow)}>
25
33
  `)}
34
+ `)}
26
35
  </div>
27
36
  </div>
37
+ <slot ${slotted({ property: 'columns', filter: isTableColumn() })}></slot>
28
38
  </template>
29
39
  `;
30
40
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAO;;;;;sBAKb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAQ;2BACpC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;8BAC7B,CAAC,CAAC,EAAE,CAAC,CAAC;4BACR,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;qBACvC,CAAC;;;;kBAIJ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAe;uBACvC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;iCACnB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;oCACR,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,OAAO;;wBAEjD,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;iBACpC,CAAC;;;;CAIjB,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/table/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,IAAI,EACJ,MAAM,EACN,OAAO,EACP,IAAI,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,aAAa,GAAG,GAAmB,EAAE;IACvC,MAAM,MAAM,GAAmB,CAC3B,KAAW,EACX,CAAS,EACT,EAAU,EACH,EAAE;QACT,OAAO,KAAK,YAAY,WAAW,CAAC;IACxC,CAAC,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAO;;;;;sBAKb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAa;2BACnC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;8BAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;4BACpB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;qBACvC,CAAC;;;;cAIR,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAO;kBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAe;uBACvC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;uCACb,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;oCAChB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,MAAgB,CAAC,OAAO;;wBAEjD,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;iBACpC,CAAC;aACL,CAAC;;;gBAGE,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC;;CAExE,CAAC"}
@@ -16,11 +16,27 @@ export declare type TableFieldValue = string | number | boolean | Date | null |
16
16
  export interface TableRecord {
17
17
  [key: TableFieldName]: TableFieldValue;
18
18
  }
19
+ /** Represents a single row (element) in the Table's data */
20
+ export interface TableDataRecord extends TableRecord {
21
+ }
22
+ /**
23
+ * An object whose fields are defined by a particular TableColumn, which is used by the column's
24
+ * cellTemplate implementation.
25
+ */
26
+ export interface TableCellRecord extends TableRecord {
27
+ }
28
+ export declare type TableStringField<FieldName extends TableFieldName> = {
29
+ [name in FieldName]: string | null | undefined;
30
+ };
31
+ export interface TableCellState<TCellRecord extends TableCellRecord = TableCellRecord, TColumnConfig = unknown> {
32
+ cellRecord: TCellRecord;
33
+ columnConfig: TColumnConfig;
34
+ }
19
35
  export interface TableValidity {
20
36
  readonly duplicateRowId: boolean;
21
37
  readonly missingRowId: boolean;
22
38
  readonly invalidRowId: boolean;
23
39
  }
24
40
  export interface TableRowState<TData extends TableRecord = TableRecord> {
25
- data: TData;
41
+ record: TData;
26
42
  }
@@ -0,0 +1,31 @@
1
+ import type { ElementStyles, ViewTemplate } from '@microsoft/fast-element';
2
+ import { FoundationElement } from '@microsoft/fast-foundation';
3
+ import type { TableCellRecord, TableCellState, TableFieldName } from '../../table/types';
4
+ /**
5
+ * The base class for table columns
6
+ */
7
+ export declare abstract class TableColumn<TCellRecord extends TableCellRecord = TableCellRecord, TColumnConfig = unknown> extends FoundationElement {
8
+ /**
9
+ * The template to use to render the cell content for the column
10
+ */
11
+ abstract cellTemplate: ViewTemplate<TableCellState<TCellRecord, TColumnConfig>>;
12
+ /**
13
+ * The style to apply to the cellTemplate
14
+ */
15
+ abstract cellStyles?: ElementStyles;
16
+ /**
17
+ * The names of the fields that should be present in TCellRecord.
18
+ * This array is parallel with the field names returned from `getDataRecordFieldNames()`.
19
+ */
20
+ abstract readonly cellRecordFieldNames: readonly TableFieldName[];
21
+ /**
22
+ * This method returns the relevant, static configuration a column requires its cellTemplate
23
+ * to have access to.
24
+ */
25
+ abstract getColumnConfig?(): TColumnConfig;
26
+ /**
27
+ * The names of the fields from the row's record that correlate to the data that will be in TCellRecord.
28
+ * This array is parallel with the field names specified by `cellRecordFieldNames`.
29
+ */
30
+ abstract getDataRecordFieldNames(): (TableFieldName | undefined)[];
31
+ }
@@ -0,0 +1,7 @@
1
+ import { FoundationElement } from '@microsoft/fast-foundation';
2
+ /**
3
+ * The base class for table columns
4
+ */
5
+ export class TableColumn extends FoundationElement {
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/base/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAO/D;;GAEG;AACH,MAAM,OAAgB,WAGpB,SAAQ,iBAAiB;CA6B1B"}
@@ -0,0 +1 @@
1
+ export declare const styles: import("@microsoft/fast-element").ElementStyles;
@@ -0,0 +1,7 @@
1
+ import { css } from '@microsoft/fast-element';
2
+ export const styles = css `
3
+ :host {
4
+ display: none;
5
+ }
6
+ `;
7
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/table-column/base/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAE9C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;CAIxB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const template: import("@microsoft/fast-element").ViewTemplate<any, any>;
@@ -0,0 +1,7 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ export const template = html `
3
+ <template>
4
+ <slot></slot>
5
+ </template>
6
+ `;
7
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/table-column/base/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAA;;;;CAI3B,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { TableStringField, TableFieldName } from '../../table/types';
2
+ import { TableColumn } from '../base';
3
+ export declare type TableColumnTextCellRecord = TableStringField<'value'>;
4
+ export interface TableColumnTextColumnConfig {
5
+ placeholder: string;
6
+ }
7
+ /**
8
+ * The table column for displaying strings.
9
+ */
10
+ export declare class TableColumnText extends TableColumn<TableColumnTextCellRecord, TableColumnTextColumnConfig> {
11
+ cellRecordFieldNames: readonly ["value"];
12
+ fieldName?: string;
13
+ placeholder?: string;
14
+ readonly cellStyles: import("@microsoft/fast-element").ElementStyles;
15
+ readonly cellTemplate: import("@microsoft/fast-element").ViewTemplate<import("../../table/types").TableCellState<TableColumnTextCellRecord, TableColumnTextColumnConfig>, any>;
16
+ getColumnConfig(): TableColumnTextColumnConfig;
17
+ getDataRecordFieldNames(): (TableFieldName | undefined)[];
18
+ }
@@ -0,0 +1,40 @@
1
+ import { __decorate } from "tslib";
2
+ import { attr } from '@microsoft/fast-element';
3
+ import { DesignSystem } from '@microsoft/fast-foundation';
4
+ import { TableColumn } from '../base';
5
+ import { styles } from '../base/styles';
6
+ import { template } from '../base/template';
7
+ import { cellStyles } from './styles';
8
+ import { cellTemplate } from './template';
9
+ /**
10
+ * The table column for displaying strings.
11
+ */
12
+ export class TableColumnText extends TableColumn {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.cellRecordFieldNames = ['value'];
16
+ this.cellStyles = cellStyles;
17
+ this.cellTemplate = cellTemplate;
18
+ }
19
+ getColumnConfig() {
20
+ return { placeholder: this.placeholder ?? '' };
21
+ }
22
+ getDataRecordFieldNames() {
23
+ return [this.fieldName];
24
+ }
25
+ }
26
+ __decorate([
27
+ attr({ attribute: 'field-name' })
28
+ ], TableColumnText.prototype, "fieldName", void 0);
29
+ __decorate([
30
+ attr
31
+ ], TableColumnText.prototype, "placeholder", void 0);
32
+ const nimbleTableColumnText = TableColumnText.compose({
33
+ baseName: 'table-column-text',
34
+ template,
35
+ styles
36
+ });
37
+ DesignSystem.getOrCreate()
38
+ .withPrefix('nimble')
39
+ .register(nimbleTableColumnText());
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/text/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO1C;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAGpC;IAHD;;QAIW,yBAAoB,GAAG,CAAC,OAAO,CAAU,CAAC;QAQjC,eAAU,GAAG,UAAU,CAAC;QAExB,iBAAY,GAAG,YAAY,CAAC;IAShD,CAAC;IAPU,eAAe;QAClB,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;IACnD,CAAC;IAEM,uBAAuB;QAC1B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;CACJ;AAhBG;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;kDACR;AAG1B;IADC,IAAI;oDACuB;AAehC,MAAM,qBAAqB,GAAG,eAAe,CAAC,OAAO,CAAC;IAClD,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const cellStyles: import("@microsoft/fast-element").ElementStyles;
@@ -0,0 +1,16 @@
1
+ import { css } from '@microsoft/fast-element';
2
+ import { bodyFont, bodyFontColor, controlLabelFontColor } from '../../theme-provider/design-tokens';
3
+ export const cellStyles = css `
4
+ span {
5
+ font: ${bodyFont};
6
+ color: ${bodyFontColor};
7
+ white-space: nowrap;
8
+ overflow: hidden;
9
+ text-overflow: ellipsis;
10
+ }
11
+
12
+ .placeholder {
13
+ color: ${controlLabelFontColor};
14
+ }
15
+ `;
16
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/table-column/text/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EACH,QAAQ,EACR,aAAa,EACb,qBAAqB,EACxB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;gBAEb,QAAQ;iBACP,aAAa;;;;;;;iBAOb,qBAAqB;;CAErC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TableColumnTextCellRecord, TableColumnTextColumnConfig } from '.';
2
+ import type { TableCellState } from '../../table/types';
3
+ export declare const cellTemplate: import("@microsoft/fast-element").ViewTemplate<TableCellState<TableColumnTextCellRecord, TableColumnTextColumnConfig>, any>;