@ni/nimble-components 29.7.9 → 29.8.1

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 (75) hide show
  1. package/dist/all-components-bundle.js +524 -243
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +1925 -1830
  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/menu-button/testing/menu-button.pageobject.d.ts +12 -0
  9. package/dist/esm/menu-button/testing/menu-button.pageobject.js +26 -0
  10. package/dist/esm/menu-button/testing/menu-button.pageobject.js.map +1 -1
  11. package/dist/esm/patterns/button/styles.js +8 -0
  12. package/dist/esm/patterns/button/styles.js.map +1 -1
  13. package/dist/esm/table/components/header/index.d.ts +2 -1
  14. package/dist/esm/table/components/header/index.js +5 -1
  15. package/dist/esm/table/components/header/index.js.map +1 -1
  16. package/dist/esm/table/components/header/styles.js +10 -3
  17. package/dist/esm/table/components/header/styles.js.map +1 -1
  18. package/dist/esm/table/components/header/template.js +2 -1
  19. package/dist/esm/table/components/header/template.js.map +1 -1
  20. package/dist/esm/table/components/row/index.d.ts +2 -1
  21. package/dist/esm/table/components/row/index.js +14 -0
  22. package/dist/esm/table/components/row/index.js.map +1 -1
  23. package/dist/esm/table/components/row/template.js +9 -0
  24. package/dist/esm/table/components/row/template.js.map +1 -1
  25. package/dist/esm/table/index.d.ts +6 -1
  26. package/dist/esm/table/index.js +40 -1
  27. package/dist/esm/table/index.js.map +1 -1
  28. package/dist/esm/table/models/utilities.d.ts +3 -0
  29. package/dist/esm/table/models/utilities.js +7 -0
  30. package/dist/esm/table/models/utilities.js.map +1 -0
  31. package/dist/esm/table/template.js +8 -0
  32. package/dist/esm/table/template.js.map +1 -1
  33. package/dist/esm/table/types.d.ts +32 -1
  34. package/dist/esm/table/types.js +8 -0
  35. package/dist/esm/table/types.js.map +1 -1
  36. package/dist/esm/table-column/base/cell-view/template.js +9 -1
  37. package/dist/esm/table-column/base/cell-view/template.js.map +1 -1
  38. package/dist/esm/table-column/base/models/column-internals.d.ts +15 -3
  39. package/dist/esm/table-column/base/models/column-internals.js +14 -4
  40. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  41. package/dist/esm/table-column/menu-button/cell-view/index.d.ts +32 -0
  42. package/dist/esm/table-column/menu-button/cell-view/index.js +70 -0
  43. package/dist/esm/table-column/menu-button/cell-view/index.js.map +1 -0
  44. package/dist/esm/table-column/menu-button/cell-view/styles.d.ts +1 -0
  45. package/dist/esm/table-column/menu-button/cell-view/styles.js +21 -0
  46. package/dist/esm/table-column/menu-button/cell-view/styles.js.map +1 -0
  47. package/dist/esm/table-column/menu-button/cell-view/templates.d.ts +2 -0
  48. package/dist/esm/table-column/menu-button/cell-view/templates.js +25 -0
  49. package/dist/esm/table-column/menu-button/cell-view/templates.js.map +1 -0
  50. package/dist/esm/table-column/menu-button/index.d.ts +42 -0
  51. package/dist/esm/table-column/menu-button/index.js +68 -0
  52. package/dist/esm/table-column/menu-button/index.js.map +1 -0
  53. package/dist/esm/table-column/menu-button/template.d.ts +2 -0
  54. package/dist/esm/table-column/menu-button/template.js +8 -0
  55. package/dist/esm/table-column/menu-button/template.js.map +1 -0
  56. package/dist/esm/table-column/menu-button/testing/table-column-menu-button.pageobject.d.ts +11 -0
  57. package/dist/esm/table-column/menu-button/testing/table-column-menu-button.pageobject.js +18 -0
  58. package/dist/esm/table-column/menu-button/testing/table-column-menu-button.pageobject.js.map +1 -0
  59. package/dist/esm/table-column/menu-button/types.d.ts +10 -0
  60. package/dist/esm/table-column/menu-button/types.js +3 -0
  61. package/dist/esm/table-column/menu-button/types.js.map +1 -0
  62. package/dist/esm/table-column/number-text/cell-view/index.js +2 -2
  63. package/dist/esm/table-column/number-text/cell-view/index.js.map +1 -1
  64. package/dist/esm/table-column/number-text/index.d.ts +2 -3
  65. package/dist/esm/table-column/number-text/index.js +6 -5
  66. package/dist/esm/table-column/number-text/index.js.map +1 -1
  67. package/dist/esm/table-column/text-base/cell-view/index.d.ts +2 -3
  68. package/dist/esm/table-column/text-base/cell-view/index.js +2 -2
  69. package/dist/esm/table-column/text-base/cell-view/index.js.map +1 -1
  70. package/dist/esm/table-column/text-base/cell-view/template.js +2 -2
  71. package/dist/esm/table-column/text-base/cell-view/template.js.map +1 -1
  72. package/package.json +1 -1
  73. package/dist/esm/table-column/text-base/cell-view/types.d.ts +0 -8
  74. package/dist/esm/table-column/text-base/cell-view/types.js +0 -8
  75. package/dist/esm/table-column/text-base/cell-view/types.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ import { html, ref, when } from '@microsoft/fast-element';
2
+ import { menuButtonTag } from '../../../menu-button';
3
+ import { ButtonAppearance } from '../../../menu-button/types';
4
+ import { iconArrowExpanderDownTag } from '../../../icons/arrow-expander-down';
5
+ import { cellViewMenuSlotName } from '../types';
6
+ // prettier-ignore
7
+ export const template = html `
8
+ ${when(x => x.showMenuButton, html `
9
+ <${menuButtonTag}
10
+ ${ref('menuButton')}
11
+ appearance="${ButtonAppearance.ghost}"
12
+ @beforetoggle="${(x, c) => x.onMenuButtonBeforeToggle(c.event)}"
13
+ @mouseover="${x => x.onMenuButtonMouseOver()}"
14
+ @mouseout="${x => x.onMenuButtonMouseOut()}"
15
+ @click="${(x, c) => x.onMenuButtonClick(c.event)}"
16
+ title=${x => (x.hasOverflow ? x.cellRecord.value : null)}
17
+ >
18
+ <span ${ref('valueSpan')} class="value-label">${x => x.cellRecord.value}</span>
19
+ <${iconArrowExpanderDownTag} slot="end"></${iconArrowExpanderDownTag}>
20
+
21
+ <slot name="${cellViewMenuSlotName}" slot="menu"></slot>
22
+ </${menuButtonTag}>
23
+ `)}
24
+ `;
25
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../../src/table-column/menu-button/cell-view/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACH,gBAAgB,EAEnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAA+B;MACrD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,IAAI,CAA+B;WAC1D,aAAa;cACV,GAAG,CAAC,YAAY,CAAC;0BACL,gBAAgB,CAAC,KAAK;6BACnB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAiD,CAAC;0BAC5F,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE;yBAC/B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE;sBAChC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC;oBACxC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;;oBAEjD,GAAG,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAW,CAAC,KAAK;eACrE,wBAAwB,iBAAiB,wBAAwB;;0BAEtD,oBAAoB;YAClC,aAAa;KACpB,CAAC;CACL,CAAC","sourcesContent":["import { html, ref, when } from '@microsoft/fast-element';\nimport type { TableColumnMenuButtonCellView } from '.';\nimport { menuButtonTag } from '../../../menu-button';\nimport {\n ButtonAppearance,\n type MenuButtonToggleEventDetail\n} from '../../../menu-button/types';\nimport { iconArrowExpanderDownTag } from '../../../icons/arrow-expander-down';\nimport { cellViewMenuSlotName } from '../types';\n\n// prettier-ignore\nexport const template = html<TableColumnMenuButtonCellView>`\n ${when(x => x.showMenuButton, html<TableColumnMenuButtonCellView>`\n <${menuButtonTag}\n ${ref('menuButton')}\n appearance=\"${ButtonAppearance.ghost}\"\n @beforetoggle=\"${(x, c) => x.onMenuButtonBeforeToggle(c.event as CustomEvent<MenuButtonToggleEventDetail>)}\"\n @mouseover=\"${x => x.onMenuButtonMouseOver()}\"\n @mouseout=\"${x => x.onMenuButtonMouseOut()}\"\n @click=\"${(x, c) => x.onMenuButtonClick(c.event)}\"\n title=${x => (x.hasOverflow ? x.cellRecord!.value : null)}\n >\n <span ${ref('valueSpan')} class=\"value-label\">${x => x.cellRecord!.value}</span>\n <${iconArrowExpanderDownTag} slot=\"end\"></${iconArrowExpanderDownTag}>\n\n <slot name=\"${cellViewMenuSlotName}\" slot=\"menu\"></slot>\n </${menuButtonTag}>\n `)}\n`;\n"]}
@@ -0,0 +1,42 @@
1
+ import type { TableStringField } from '../../table/types';
2
+ import type { ColumnInternalsOptions } from '../base/models/column-internals';
3
+ import { ColumnValidator } from '../base/models/column-validator';
4
+ import { TableColumn } from '../base';
5
+ export type TableColumnMenuButtonCellRecord = TableStringField<'value'>;
6
+ export interface TableColumnMenuButtonColumnConfig {
7
+ menuSlot?: string;
8
+ }
9
+ declare global {
10
+ interface HTMLElementTagNameMap {
11
+ 'nimble-table-column-menu-button': TableColumnMenuButton;
12
+ }
13
+ }
14
+ declare const TableColumnMenuButton_base: (abstract new (...args: any[]) => {
15
+ fractionalWidth?: number | null | undefined;
16
+ minPixelWidth?: number | null | undefined;
17
+ fractionalWidthChanged(): void;
18
+ minPixelWidthChanged(): void;
19
+ readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, ColumnValidator<[]>>;
20
+ }) & ((abstract new () => TableColumn<TableColumnMenuButtonColumnConfig, ColumnValidator<[]>>) & {
21
+ compose<T extends import("@microsoft/fast-foundation").FoundationElementDefinition = import("@microsoft/fast-foundation").FoundationElementDefinition, K extends import("@microsoft/fast-element").Constructable<import("@microsoft/fast-foundation").FoundationElement> = import("@microsoft/fast-element").Constructable<import("@microsoft/fast-foundation").FoundationElement>>(this: K, elementDefinition: T): (overrideDefinition?: import("@microsoft/fast-foundation").OverrideFoundationElementDefinition<T> | undefined) => import("@microsoft/fast-foundation").FoundationElementRegistry<T, K>;
22
+ from<TBase extends {
23
+ new (): HTMLElement;
24
+ prototype: HTMLElement;
25
+ }>(BaseType: TBase): new () => InstanceType<TBase> & import("@microsoft/fast-element").FASTElement;
26
+ define<TType extends Function>(type: TType, nameOrDef?: string | import("@microsoft/fast-element").PartialFASTElementDefinition | undefined): TType;
27
+ });
28
+ /**
29
+ * The table column for displaying string fields as the content within a menu button.
30
+ */
31
+ export declare class TableColumnMenuButton extends TableColumnMenuButton_base {
32
+ fieldName?: string;
33
+ menuSlot?: string;
34
+ /** @internal */
35
+ onDelegatedEvent(e: Event): void;
36
+ protected getColumnInternalsOptions(): ColumnInternalsOptions;
37
+ protected fieldNameChanged(): void;
38
+ protected menuSlotChanged(): void;
39
+ private updateColumnConfig;
40
+ }
41
+ export declare const tableColumnMenuButtonTag = "nimble-table-column-menu-button";
42
+ export {};
@@ -0,0 +1,68 @@
1
+ import { __decorate } from "tslib";
2
+ import { DesignSystem } from '@microsoft/fast-foundation';
3
+ import { attr } from '@microsoft/fast-element';
4
+ import { template } from './template';
5
+ import { styles } from '../base/styles';
6
+ import { tableColumnMenuButtonCellViewTag } from './cell-view';
7
+ import { ColumnValidator } from '../base/models/column-validator';
8
+ import { mixinFractionalWidthColumnAPI } from '../mixins/fractional-width-column';
9
+ import { TableColumn } from '../base';
10
+ import { cellViewMenuSlotName } from './types';
11
+ /**
12
+ * The table column for displaying string fields as the content within a menu button.
13
+ */
14
+ export class TableColumnMenuButton extends mixinFractionalWidthColumnAPI((TableColumn)) {
15
+ /** @internal */
16
+ onDelegatedEvent(e) {
17
+ e.stopImmediatePropagation();
18
+ const event = e;
19
+ const originalEvent = event.detail.originalEvent;
20
+ if (originalEvent.type === 'beforetoggle'
21
+ || originalEvent.type === 'toggle') {
22
+ const newEventName = `menu-button-column-${originalEvent.type}`;
23
+ const originalToggleEvent = originalEvent;
24
+ const detail = {
25
+ ...originalToggleEvent.detail,
26
+ recordId: event.detail.recordId
27
+ };
28
+ this.$emit(newEventName, detail);
29
+ }
30
+ }
31
+ getColumnInternalsOptions() {
32
+ return {
33
+ cellRecordFieldNames: ['value'],
34
+ cellViewTag: tableColumnMenuButtonCellViewTag,
35
+ delegatedEvents: ['beforetoggle', 'toggle'],
36
+ slotNames: [cellViewMenuSlotName],
37
+ validator: new ColumnValidator([])
38
+ };
39
+ }
40
+ fieldNameChanged() {
41
+ this.columnInternals.dataRecordFieldNames = [this.fieldName];
42
+ this.columnInternals.operandDataRecordFieldName = this.fieldName;
43
+ }
44
+ menuSlotChanged() {
45
+ this.updateColumnConfig();
46
+ }
47
+ updateColumnConfig() {
48
+ this.columnInternals.columnConfig = {
49
+ menuSlot: this.menuSlot
50
+ };
51
+ }
52
+ }
53
+ __decorate([
54
+ attr({ attribute: 'field-name' })
55
+ ], TableColumnMenuButton.prototype, "fieldName", void 0);
56
+ __decorate([
57
+ attr({ attribute: 'menu-slot' })
58
+ ], TableColumnMenuButton.prototype, "menuSlot", void 0);
59
+ const nimbleTableColumnMenuButton = TableColumnMenuButton.compose({
60
+ baseName: 'table-column-menu-button',
61
+ template,
62
+ styles
63
+ });
64
+ DesignSystem.getOrCreate()
65
+ .withPrefix('nimble')
66
+ .register(nimbleTableColumnMenuButton());
67
+ export const tableColumnMenuButtonTag = 'nimble-table-column-menu-button';
68
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/menu-button/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAEH,oBAAoB,EACvB,MAAM,SAAS,CAAC;AAgBjB;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,6BAA6B,CACpE,CAAA,WAA8C,CAAA,CACjD;IAOG,gBAAgB;IACT,gBAAgB,CAAC,CAAQ;QAC5B,CAAC,CAAC,wBAAwB,EAAE,CAAC;QAE7B,MAAM,KAAK,GAAG,CAA4C,CAAC;QAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;QACjD,IACI,aAAa,CAAC,IAAI,KAAK,cAAc;eAClC,aAAa,CAAC,IAAI,KAAK,QAAQ,EACpC;YACE,MAAM,YAAY,GAAG,sBAAsB,aAAa,CAAC,IAAI,EAAE,CAAC;YAChE,MAAM,mBAAmB,GAAG,aAAyD,CAAC;YACtF,MAAM,MAAM,GAAsC;gBAC9C,GAAG,mBAAmB,CAAC,MAAM;gBAC7B,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;aAClC,CAAC;YACF,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;SACpC;IACL,CAAC;IAEkB,yBAAyB;QACxC,OAAO;YACH,oBAAoB,EAAE,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,gCAAgC;YAC7C,eAAe,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC;YAC3C,SAAS,EAAE,CAAC,oBAAoB,CAAC;YACjC,SAAS,EAAE,IAAI,eAAe,CAAK,EAAE,CAAC;SACzC,CAAC;IACN,CAAC;IAES,gBAAgB;QACtB,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,CAAC,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC;IACrE,CAAC;IAES,eAAe;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG;YAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC;IACN,CAAC;CACJ;AAjDU;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;wDACR;AAGnB;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;uDACR;AAgD7B,MAAM,2BAA2B,GAAG,qBAAqB,CAAC,OAAO,CAAC;IAC9D,QAAQ,EAAE,0BAA0B;IACpC,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,2BAA2B,EAAE,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,iCAAiC,CAAC","sourcesContent":["import { DesignSystem } from '@microsoft/fast-foundation';\nimport { attr } from '@microsoft/fast-element';\nimport { template } from './template';\nimport { styles } from '../base/styles';\nimport type { TableStringField } from '../../table/types';\nimport { tableColumnMenuButtonCellViewTag } from './cell-view';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\nimport { ColumnValidator } from '../base/models/column-validator';\nimport { mixinFractionalWidthColumnAPI } from '../mixins/fractional-width-column';\nimport { TableColumn } from '../base';\nimport {\n MenuButtonColumnToggleEventDetail,\n cellViewMenuSlotName\n} from './types';\nimport type { DelegatedEventEventDetails } from '../base/types';\nimport type { MenuButtonToggleEventDetail } from '../../menu-button/types';\n\nexport type TableColumnMenuButtonCellRecord = TableStringField<'value'>;\n\nexport interface TableColumnMenuButtonColumnConfig {\n menuSlot?: string;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-menu-button': TableColumnMenuButton;\n }\n}\n\n/**\n * The table column for displaying string fields as the content within a menu button.\n */\nexport class TableColumnMenuButton extends mixinFractionalWidthColumnAPI(\n TableColumn<TableColumnMenuButtonColumnConfig>\n) {\n @attr({ attribute: 'field-name' })\n public fieldName?: string;\n\n @attr({ attribute: 'menu-slot' })\n public menuSlot?: string;\n\n /** @internal */\n public onDelegatedEvent(e: Event): void {\n e.stopImmediatePropagation();\n\n const event = e as CustomEvent<DelegatedEventEventDetails>;\n const originalEvent = event.detail.originalEvent;\n if (\n originalEvent.type === 'beforetoggle'\n || originalEvent.type === 'toggle'\n ) {\n const newEventName = `menu-button-column-${originalEvent.type}`;\n const originalToggleEvent = originalEvent as CustomEvent<MenuButtonToggleEventDetail>;\n const detail: MenuButtonColumnToggleEventDetail = {\n ...originalToggleEvent.detail,\n recordId: event.detail.recordId\n };\n this.$emit(newEventName, detail);\n }\n }\n\n protected override getColumnInternalsOptions(): ColumnInternalsOptions {\n return {\n cellRecordFieldNames: ['value'],\n cellViewTag: tableColumnMenuButtonCellViewTag,\n delegatedEvents: ['beforetoggle', 'toggle'],\n slotNames: [cellViewMenuSlotName],\n validator: new ColumnValidator<[]>([])\n };\n }\n\n protected fieldNameChanged(): void {\n this.columnInternals.dataRecordFieldNames = [this.fieldName];\n this.columnInternals.operandDataRecordFieldName = this.fieldName;\n }\n\n protected menuSlotChanged(): void {\n this.updateColumnConfig();\n }\n\n private updateColumnConfig(): void {\n this.columnInternals.columnConfig = {\n menuSlot: this.menuSlot\n };\n }\n}\n\nconst nimbleTableColumnMenuButton = TableColumnMenuButton.compose({\n baseName: 'table-column-menu-button',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnMenuButton());\nexport const tableColumnMenuButtonTag = 'nimble-table-column-menu-button';\n"]}
@@ -0,0 +1,2 @@
1
+ import type { TableColumnMenuButton } from '.';
2
+ export declare const template: import("@microsoft/fast-element").ViewTemplate<TableColumnMenuButton, any>;
@@ -0,0 +1,8 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ import { template as baseTemplate } from '../base/template';
3
+ export const template = html `
4
+ <template @delegated-event="${(x, c) => x.onDelegatedEvent(c.event)}"
5
+ >${baseTemplate}</template
6
+ >
7
+ `;
8
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/table-column/menu-button/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAuB;kCACjB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC;WAC5D,YAAY;;CAEtB,CAAC","sourcesContent":["import { html } from '@microsoft/fast-element';\nimport type { TableColumnMenuButton } from '.';\nimport { template as baseTemplate } from '../base/template';\n\nexport const template = html<TableColumnMenuButton>`\n <template @delegated-event=\"${(x, c) => x.onDelegatedEvent(c.event)}\"\n >${baseTemplate}</template\n >\n`;\n"]}
@@ -0,0 +1,11 @@
1
+ import { MenuButtonPageObject } from '../../../menu-button/testing/menu-button.pageobject';
2
+ import type { TablePageObject } from '../../../table/testing/table.pageobject';
3
+ import type { TableRecord } from '../../../table/types';
4
+ /**
5
+ * Page object for `nimble-table-column-menu-button`.
6
+ */
7
+ export declare class TableColumnMenuButtonPageObject<T extends TableRecord> {
8
+ private readonly tablePageObject;
9
+ constructor(tablePageObject: TablePageObject<T>);
10
+ getMenuButton(rowIndex: number, columnIndex: number): MenuButtonPageObject | null;
11
+ }
@@ -0,0 +1,18 @@
1
+ import { menuButtonTag } from '../../../menu-button';
2
+ import { MenuButtonPageObject } from '../../../menu-button/testing/menu-button.pageobject';
3
+ /**
4
+ * Page object for `nimble-table-column-menu-button`.
5
+ */
6
+ export class TableColumnMenuButtonPageObject {
7
+ constructor(tablePageObject) {
8
+ this.tablePageObject = tablePageObject;
9
+ }
10
+ getMenuButton(rowIndex, columnIndex) {
11
+ const cellView = this.tablePageObject.getRenderedCellView(rowIndex, columnIndex);
12
+ const menuButtonElement = cellView.shadowRoot.querySelector(menuButtonTag);
13
+ return menuButtonElement
14
+ ? new MenuButtonPageObject(menuButtonElement)
15
+ : null;
16
+ }
17
+ }
18
+ //# sourceMappingURL=table-column-menu-button.pageobject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-column-menu-button.pageobject.js","sourceRoot":"","sources":["../../../../../src/table-column/menu-button/testing/table-column-menu-button.pageobject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAI3F;;GAEG;AACH,MAAM,OAAO,+BAA+B;IACxC,YAAoC,eAAmC;QAAnC,oBAAe,GAAf,eAAe,CAAoB;IAAG,CAAC;IAEpE,aAAa,CAChB,QAAgB,EAChB,WAAmB;QAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACrD,QAAQ,EACR,WAAW,CACd,CAAC;QACF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAW,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC5E,OAAO,iBAAiB;YACpB,CAAC,CAAC,IAAI,oBAAoB,CAAC,iBAAiB,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;CACJ","sourcesContent":["import { menuButtonTag } from '../../../menu-button';\nimport { MenuButtonPageObject } from '../../../menu-button/testing/menu-button.pageobject';\nimport type { TablePageObject } from '../../../table/testing/table.pageobject';\nimport type { TableRecord } from '../../../table/types';\n\n/**\n * Page object for `nimble-table-column-menu-button`.\n */\nexport class TableColumnMenuButtonPageObject<T extends TableRecord> {\n public constructor(private readonly tablePageObject: TablePageObject<T>) {}\n\n public getMenuButton(\n rowIndex: number,\n columnIndex: number\n ): MenuButtonPageObject | null {\n const cellView = this.tablePageObject.getRenderedCellView(\n rowIndex,\n columnIndex\n );\n const menuButtonElement = cellView.shadowRoot!.querySelector(menuButtonTag);\n return menuButtonElement\n ? new MenuButtonPageObject(menuButtonElement)\n : null;\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { MenuButtonToggleEventDetail } from '../../menu-button/types';
2
+ /** @internal */
3
+ export declare const cellViewMenuSlotName: "menu-button-menu";
4
+ /**
5
+ * The type of the detail associated with the `menu-button-column-beforetoggle` and `menu-button-column-toggle`
6
+ * events on the menu button column.
7
+ */
8
+ export interface MenuButtonColumnToggleEventDetail extends MenuButtonToggleEventDetail {
9
+ recordId: string;
10
+ }
@@ -0,0 +1,3 @@
1
+ /** @internal */
2
+ export const cellViewMenuSlotName = 'menu-button-menu';
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/table-column/menu-button/types.ts"],"names":[],"mappings":"AAEA,gBAAgB;AAChB,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAA2B,CAAC","sourcesContent":["import type { MenuButtonToggleEventDetail } from '../../menu-button/types';\n\n/** @internal */\nexport const cellViewMenuSlotName = 'menu-button-menu' as const;\n\n/**\n * The type of the detail associated with the `menu-button-column-beforetoggle` and `menu-button-column-toggle`\n * events on the menu button column.\n */\nexport interface MenuButtonColumnToggleEventDetail\n extends MenuButtonToggleEventDetail {\n recordId: string;\n}\n"]}
@@ -2,14 +2,14 @@ import { DesignSystem } from '@microsoft/fast-foundation';
2
2
  import { template } from '../../text-base/cell-view/template';
3
3
  import { styles } from '../../text-base/cell-view/styles';
4
4
  import { TableColumnTextCellViewBase } from '../../text-base/cell-view';
5
- import { TextCellViewBaseAlignment } from '../../text-base/cell-view/types';
5
+ import { TableColumnAlignment } from '../../../table/types';
6
6
  /**
7
7
  * A cell view for displaying number fields as text
8
8
  */
9
9
  export class TableColumnNumberTextCellView extends TableColumnTextCellViewBase {
10
10
  columnConfigChanged() {
11
11
  super.columnConfigChanged();
12
- this.alignment = this.columnConfig?.alignment ?? TextCellViewBaseAlignment.left;
12
+ this.alignment = this.columnConfig?.alignment ?? TableColumnAlignment.left;
13
13
  }
14
14
  updateText() {
15
15
  this.text = this.columnConfig?.formatter?.format(this.cellRecord?.value) ?? '';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table-column/number-text/cell-view/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAK9D,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAQ5E;;GAEG;AACH,MAAM,OAAO,6BAA8B,SAAQ,2BAGlD;IACsB,mBAAmB;QAClC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,IAAI,yBAAyB,CAAC,IAAI,CAAC;IACpF,CAAC;IAES,UAAU;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC;CACJ;AAED,MAAM,kBAAkB,GAAG,6BAA6B,CAAC,OAAO,CAAC;IAC7D,QAAQ,EAAE,oCAAoC;IAC9C,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AACH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,gCAAgC,GAAG,2CAA2C,CAAC","sourcesContent":["import { DesignSystem } from '@microsoft/fast-foundation';\nimport { template } from '../../text-base/cell-view/template';\nimport type {\n TableColumnNumberTextCellRecord,\n TableColumnNumberTextColumnConfig\n} from '..';\nimport { styles } from '../../text-base/cell-view/styles';\nimport { TableColumnTextCellViewBase } from '../../text-base/cell-view';\nimport { TextCellViewBaseAlignment } from '../../text-base/cell-view/types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-number-text-cell-view': TableColumnNumberTextCellView;\n }\n}\n\n/**\n * A cell view for displaying number fields as text\n */\nexport class TableColumnNumberTextCellView extends TableColumnTextCellViewBase<\nTableColumnNumberTextCellRecord,\nTableColumnNumberTextColumnConfig\n> {\n protected override columnConfigChanged(): void {\n super.columnConfigChanged();\n this.alignment = this.columnConfig?.alignment ?? TextCellViewBaseAlignment.left;\n }\n\n protected updateText(): void {\n this.text = this.columnConfig?.formatter?.format(this.cellRecord?.value) ?? '';\n }\n}\n\nconst numberTextCellView = TableColumnNumberTextCellView.compose({\n baseName: 'table-column-number-text-cell-view',\n template,\n styles\n});\nDesignSystem.getOrCreate().withPrefix('nimble').register(numberTextCellView());\nexport const tableColumnNumberTextCellViewTag = 'nimble-table-column-number-text-cell-view';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table-column/number-text/cell-view/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAK9D,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAQ5D;;GAEG;AACH,MAAM,OAAO,6BAA8B,SAAQ,2BAGlD;IACsB,mBAAmB;QAClC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,IAAI,oBAAoB,CAAC,IAAI,CAAC;IAC/E,CAAC;IAES,UAAU;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC;CACJ;AAED,MAAM,kBAAkB,GAAG,6BAA6B,CAAC,OAAO,CAAC;IAC7D,QAAQ,EAAE,oCAAoC;IAC9C,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AACH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC/E,MAAM,CAAC,MAAM,gCAAgC,GAAG,2CAA2C,CAAC","sourcesContent":["import { DesignSystem } from '@microsoft/fast-foundation';\nimport { template } from '../../text-base/cell-view/template';\nimport type {\n TableColumnNumberTextCellRecord,\n TableColumnNumberTextColumnConfig\n} from '..';\nimport { styles } from '../../text-base/cell-view/styles';\nimport { TableColumnTextCellViewBase } from '../../text-base/cell-view';\nimport { TableColumnAlignment } from '../../../table/types';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-number-text-cell-view': TableColumnNumberTextCellView;\n }\n}\n\n/**\n * A cell view for displaying number fields as text\n */\nexport class TableColumnNumberTextCellView extends TableColumnTextCellViewBase<\nTableColumnNumberTextCellRecord,\nTableColumnNumberTextColumnConfig\n> {\n protected override columnConfigChanged(): void {\n super.columnConfigChanged();\n this.alignment = this.columnConfig?.alignment ?? TableColumnAlignment.left;\n }\n\n protected updateText(): void {\n this.text = this.columnConfig?.formatter?.format(this.cellRecord?.value) ?? '';\n }\n}\n\nconst numberTextCellView = TableColumnNumberTextCellView.compose({\n baseName: 'table-column-number-text-cell-view',\n template,\n styles\n});\nDesignSystem.getOrCreate().withPrefix('nimble').register(numberTextCellView());\nexport const tableColumnNumberTextCellViewTag = 'nimble-table-column-number-text-cell-view';\n"]}
@@ -1,15 +1,14 @@
1
- import type { TableNumberField } from '../../table/types';
1
+ import { TableColumnAlignment, type TableNumberField } from '../../table/types';
2
2
  import { TableColumnTextBase } from '../text-base';
3
3
  import type { ColumnInternalsOptions } from '../base/models/column-internals';
4
4
  import { NumberTextAlignment, NumberTextFormat } from './types';
5
5
  import type { UnitFormat } from '../../utilities/unit-format/unit-format';
6
6
  import { TableColumnNumberTextValidator } from './models/table-column-number-text-validator';
7
- import { TextCellViewBaseAlignment } from '../text-base/cell-view/types';
8
7
  import type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';
9
8
  export type TableColumnNumberTextCellRecord = TableNumberField<'value'>;
10
9
  export interface TableColumnNumberTextColumnConfig extends TableColumnTextBaseColumnConfig {
11
10
  formatter: UnitFormat;
12
- alignment: TextCellViewBaseAlignment;
11
+ alignment: TableColumnAlignment;
13
12
  }
14
13
  declare global {
15
14
  interface HTMLElementTagNameMap {
@@ -3,6 +3,7 @@ import { DesignSystem } from '@microsoft/fast-foundation';
3
3
  import { attr, nullableNumberConverter, Observable, observable } from '@microsoft/fast-element';
4
4
  import { styles } from '../base/styles';
5
5
  import { template } from './template';
6
+ import { TableColumnAlignment } from '../../table/types';
6
7
  import { TableColumnTextBase, mixinTextBase } from '../text-base';
7
8
  import { TableColumnSortOperation } from '../base/types';
8
9
  import { tableColumnNumberTextGroupHeaderTag } from './group-header-view';
@@ -10,7 +11,6 @@ import { tableColumnNumberTextCellViewTag } from './cell-view';
10
11
  import { NumberTextAlignment, NumberTextFormat } from './types';
11
12
  import { NumberTextUnitFormat } from './models/number-text-unit-format';
12
13
  import { TableColumnNumberTextValidator } from './models/table-column-number-text-validator';
13
- import { TextCellViewBaseAlignment } from '../text-base/cell-view/types';
14
14
  import { lang } from '../../theme-provider';
15
15
  import { Unit } from '../../unit/base/unit';
16
16
  import { waitUntilCustomElementsDefinedAsync } from '../../utilities/wait-until-custom-elements-defined-async';
@@ -102,6 +102,7 @@ export class TableColumnNumberText extends mixinTextBase((TableColumnTextBase))
102
102
  alignment: this.determineCellContentAlignment(),
103
103
  placeholder: this.placeholder
104
104
  };
105
+ this.columnInternals.headerAlignment = columnConfig.alignment;
105
106
  this.columnInternals.columnConfig = columnConfig;
106
107
  }
107
108
  else {
@@ -121,18 +122,18 @@ export class TableColumnNumberText extends mixinTextBase((TableColumnTextBase))
121
122
  }
122
123
  determineCellContentAlignment() {
123
124
  if (this.alignment === NumberTextAlignment.left) {
124
- return TextCellViewBaseAlignment.left;
125
+ return TableColumnAlignment.left;
125
126
  }
126
127
  if (this.alignment === NumberTextAlignment.right) {
127
- return TextCellViewBaseAlignment.right;
128
+ return TableColumnAlignment.right;
128
129
  }
129
130
  // Look at format and decimal max digits and unit to determine the default alignment
130
131
  if (this.format === NumberTextFormat.decimal
131
132
  && typeof this.decimalMaximumDigits !== 'number'
132
133
  && !this.unit) {
133
- return TextCellViewBaseAlignment.right;
134
+ return TableColumnAlignment.right;
134
135
  }
135
- return TextCellViewBaseAlignment.left;
136
+ return TableColumnAlignment.left;
136
137
  }
137
138
  }
138
139
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/number-text/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DesignSystem,\n DesignTokenSubscriber\n} from '@microsoft/fast-foundation';\nimport {\n attr,\n Notifier,\n nullableNumberConverter,\n Observable,\n observable,\n Subscriber\n} from '@microsoft/fast-element';\nimport { styles } from '../base/styles';\nimport { template } from './template';\nimport type { TableNumberField } from '../../table/types';\nimport { TableColumnTextBase, mixinTextBase } from '../text-base';\nimport { TableColumnSortOperation } from '../base/types';\nimport { tableColumnNumberTextGroupHeaderTag } from './group-header-view';\nimport { tableColumnNumberTextCellViewTag } from './cell-view';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\nimport { NumberTextAlignment, NumberTextFormat } from './types';\nimport type { UnitFormat } from '../../utilities/unit-format/unit-format';\nimport { NumberTextUnitFormat } from './models/number-text-unit-format';\nimport { TableColumnNumberTextValidator } from './models/table-column-number-text-validator';\nimport { TextCellViewBaseAlignment } from '../text-base/cell-view/types';\nimport { lang } from '../../theme-provider';\nimport { Unit } from '../../unit/base/unit';\nimport { waitUntilCustomElementsDefinedAsync } from '../../utilities/wait-until-custom-elements-defined-async';\nimport type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';\n\nexport type TableColumnNumberTextCellRecord = TableNumberField<'value'>;\nexport interface TableColumnNumberTextColumnConfig\n extends TableColumnTextBaseColumnConfig {\n formatter: UnitFormat;\n alignment: TextCellViewBaseAlignment;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-number-text': TableColumnNumberText;\n }\n}\n\n/**\n * The table column for displaying numbers as text.\n */\nexport class TableColumnNumberText extends mixinTextBase(\n TableColumnTextBase<\n TableColumnNumberTextColumnConfig,\n TableColumnNumberTextValidator\n >\n) {\n @attr\n public format: NumberTextFormat;\n\n @attr\n public alignment: NumberTextAlignment;\n\n @attr({ attribute: 'decimal-digits', converter: nullableNumberConverter })\n public decimalDigits?: number;\n\n @attr({\n attribute: 'decimal-maximum-digits',\n converter: nullableNumberConverter\n })\n public decimalMaximumDigits?: number;\n\n /** @internal */\n @observable\n public unitElements?: Element[];\n\n @observable\n private unit?: Unit;\n\n private unitNotifier?: Notifier;\n\n private readonly langSubscriber: DesignTokenSubscriber<typeof lang> = {\n handleChange: () => {\n this.updateColumnConfig();\n }\n };\n\n private readonly unitSubscriber: Subscriber = {\n handleChange: () => {\n this.updateColumnConfig();\n }\n };\n\n public override connectedCallback(): void {\n super.connectedCallback();\n lang.subscribe(this.langSubscriber, this);\n this.updateColumnConfig();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n lang.unsubscribe(this.langSubscriber, this);\n }\n\n public placeholderChanged(): void {\n this.updateColumnConfig();\n }\n\n protected override getColumnInternalsOptions(): ColumnInternalsOptions<TableColumnNumberTextValidator> {\n return {\n cellRecordFieldNames: ['value'],\n cellViewTag: tableColumnNumberTextCellViewTag,\n groupHeaderViewTag: tableColumnNumberTextGroupHeaderTag,\n delegatedEvents: [],\n sortOperation: TableColumnSortOperation.basic,\n validator: new TableColumnNumberTextValidator()\n };\n }\n\n private updateUnitNotifier(): void {\n if (this.unitNotifier) {\n this.unitNotifier.unsubscribe(this.unitSubscriber);\n this.unitNotifier = undefined;\n }\n\n if (this.unit) {\n const notifier = Observable.getNotifier(this.unit);\n notifier.subscribe(this.unitSubscriber, 'resolvedUnitScale');\n this.unitNotifier = notifier;\n }\n }\n\n private formatChanged(): void {\n this.updateColumnConfig();\n }\n\n private alignmentChanged(): void {\n this.updateColumnConfig();\n }\n\n private decimalDigitsChanged(): void {\n this.updateColumnConfig();\n }\n\n private decimalMaximumDigitsChanged(): void {\n this.updateColumnConfig();\n }\n\n private unitElementsChanged(): void {\n void this.updateUnit();\n }\n\n private async updateUnit(): Promise<void> {\n this.unit = undefined;\n if (this.unitElements) {\n await waitUntilCustomElementsDefinedAsync(this.unitElements);\n this.unit = this.unitElements.find(\n (x): x is Unit => x instanceof Unit\n );\n }\n this.updateUnitNotifier();\n }\n\n private unitChanged(): void {\n this.updateColumnConfig();\n }\n\n private updateColumnConfig(): void {\n const validator = this.columnInternals.validator;\n validator.validateDecimalDigits(this.format, this.decimalDigits);\n validator.validateDecimalMaximumDigits(\n this.format,\n this.decimalMaximumDigits\n );\n validator.validateNoMutuallyExclusiveProperties(\n this.format,\n this.decimalDigits,\n this.decimalMaximumDigits\n );\n validator.validateAtMostOneUnit(this.unitElements ?? []);\n\n if (validator.isValid()) {\n const columnConfig: TableColumnNumberTextColumnConfig = {\n formatter: this.createFormatter(),\n alignment: this.determineCellContentAlignment(),\n placeholder: this.placeholder\n };\n this.columnInternals.columnConfig = columnConfig;\n } else {\n this.columnInternals.columnConfig = undefined;\n }\n }\n\n private createFormatter(): UnitFormat {\n const unitScale = this.unit?.resolvedUnitScale;\n return new NumberTextUnitFormat(lang.getValueFor(this), {\n // Attribute values sometimes resolve to either null or undefined\n // See https://github.com/microsoft/fast/issues/6630\n numberTextFormat: this.format ?? undefined,\n decimalDigits: this.decimalDigits ?? undefined,\n decimalMaximumDigits: this.decimalMaximumDigits ?? undefined,\n unitScale\n });\n }\n\n private determineCellContentAlignment(): TextCellViewBaseAlignment {\n if (this.alignment === NumberTextAlignment.left) {\n return TextCellViewBaseAlignment.left;\n }\n\n if (this.alignment === NumberTextAlignment.right) {\n return TextCellViewBaseAlignment.right;\n }\n\n // Look at format and decimal max digits and unit to determine the default alignment\n if (\n this.format === NumberTextFormat.decimal\n && typeof this.decimalMaximumDigits !== 'number'\n && !this.unit\n ) {\n return TextCellViewBaseAlignment.right;\n }\n return TextCellViewBaseAlignment.left;\n }\n}\n\nconst nimbleTableColumnNumberText = TableColumnNumberText.compose({\n baseName: 'table-column-number-text',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnNumberText());\nexport const tableColumnNumberTextTag = 'nimble-table-column-number-text';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/number-text/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,YAAY,EAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,IAAI,EAEJ,uBAAuB,EACvB,UAAU,EACV,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAyB,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,mCAAmC,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,mCAAmC,EAAE,MAAM,0DAA0D,CAAC;AAgB/G;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,aAAa,CACpD,CAAA,mBAGC,CAAA,CACJ;IALD;;QA8BqB,mBAAc,GAAuC;YAClE,YAAY,EAAE,GAAG,EAAE;gBACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC;QAEe,mBAAc,GAAe;YAC1C,YAAY,EAAE,GAAG,EAAE;gBACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC;IAsIN,CAAC;IApImB,iBAAiB;QAC7B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEe,oBAAoB;QAChC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAEM,kBAAkB;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEkB,yBAAyB;QACxC,OAAO;YACH,oBAAoB,EAAE,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,gCAAgC;YAC7C,kBAAkB,EAAE,mCAAmC;YACvD,eAAe,EAAE,EAAE;YACnB,aAAa,EAAE,wBAAwB,CAAC,KAAK;YAC7C,SAAS,EAAE,IAAI,8BAA8B,EAAE;SAClD,CAAC;IACN,CAAC;IAEO,kBAAkB;QACtB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;SACjC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;SAChC;IACL,CAAC;IAEO,aAAa;QACjB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEO,gBAAgB;QACpB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEO,oBAAoB;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEO,2BAA2B;QAC/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEO,mBAAmB;QACvB,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,UAAU;QACpB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,MAAM,mCAAmC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAa,EAAE,CAAC,CAAC,YAAY,IAAI,CACtC,CAAC;SACL;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEO,WAAW;QACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAEO,kBAAkB;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;QACjD,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACjE,SAAS,CAAC,4BAA4B,CAClC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,oBAAoB,CAC5B,CAAC;QACF,SAAS,CAAC,qCAAqC,CAC3C,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,oBAAoB,CAC5B,CAAC;QACF,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;QAEzD,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE;YACrB,MAAM,YAAY,GAAsC;gBACpD,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE;gBACjC,SAAS,EAAE,IAAI,CAAC,6BAA6B,EAAE;gBAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;aAChC,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC;YAC9D,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,YAAY,CAAC;SACpD;aAAM;YACH,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;SACjD;IACL,CAAC;IAEO,eAAe;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC;QAC/C,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACpD,iEAAiE;YACjE,oDAAoD;YACpD,gBAAgB,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;YAC1C,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,SAAS;YAC9C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,IAAI,SAAS;YAC5D,SAAS;SACZ,CAAC,CAAC;IACP,CAAC;IAEO,6BAA6B;QACjC,IAAI,IAAI,CAAC,SAAS,KAAK,mBAAmB,CAAC,IAAI,EAAE;YAC7C,OAAO,oBAAoB,CAAC,IAAI,CAAC;SACpC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,mBAAmB,CAAC,KAAK,EAAE;YAC9C,OAAO,oBAAoB,CAAC,KAAK,CAAC;SACrC;QAED,oFAAoF;QACpF,IACI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,OAAO;eACrC,OAAO,IAAI,CAAC,oBAAoB,KAAK,QAAQ;eAC7C,CAAC,IAAI,CAAC,IAAI,EACf;YACE,OAAO,oBAAoB,CAAC,KAAK,CAAC;SACrC;QACD,OAAO,oBAAoB,CAAC,IAAI,CAAC;IACrC,CAAC;CACJ;AAvKU;IADN,IAAI;qDAC2B;AAGzB;IADN,IAAI;wDACiC;AAG/B;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC;4DAC5C;AAMvB;IAJN,IAAI,CAAC;QACF,SAAS,EAAE,wBAAwB;QACnC,SAAS,EAAE,uBAAuB;KACrC,CAAC;mEACmC;AAI9B;IADN,UAAU;2DACqB;AAGxB;IADP,UAAU;mDACS;AAsJxB,MAAM,2BAA2B,GAAG,qBAAqB,CAAC,OAAO,CAAC;IAC9D,QAAQ,EAAE,0BAA0B;IACpC,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,2BAA2B,EAAE,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,iCAAiC,CAAC","sourcesContent":["import {\n DesignSystem,\n DesignTokenSubscriber\n} from '@microsoft/fast-foundation';\nimport {\n attr,\n Notifier,\n nullableNumberConverter,\n Observable,\n observable,\n Subscriber\n} from '@microsoft/fast-element';\nimport { styles } from '../base/styles';\nimport { template } from './template';\nimport { TableColumnAlignment, type TableNumberField } from '../../table/types';\nimport { TableColumnTextBase, mixinTextBase } from '../text-base';\nimport { TableColumnSortOperation } from '../base/types';\nimport { tableColumnNumberTextGroupHeaderTag } from './group-header-view';\nimport { tableColumnNumberTextCellViewTag } from './cell-view';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\nimport { NumberTextAlignment, NumberTextFormat } from './types';\nimport type { UnitFormat } from '../../utilities/unit-format/unit-format';\nimport { NumberTextUnitFormat } from './models/number-text-unit-format';\nimport { TableColumnNumberTextValidator } from './models/table-column-number-text-validator';\nimport { lang } from '../../theme-provider';\nimport { Unit } from '../../unit/base/unit';\nimport { waitUntilCustomElementsDefinedAsync } from '../../utilities/wait-until-custom-elements-defined-async';\nimport type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';\n\nexport type TableColumnNumberTextCellRecord = TableNumberField<'value'>;\nexport interface TableColumnNumberTextColumnConfig\n extends TableColumnTextBaseColumnConfig {\n formatter: UnitFormat;\n alignment: TableColumnAlignment;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-number-text': TableColumnNumberText;\n }\n}\n\n/**\n * The table column for displaying numbers as text.\n */\nexport class TableColumnNumberText extends mixinTextBase(\n TableColumnTextBase<\n TableColumnNumberTextColumnConfig,\n TableColumnNumberTextValidator\n >\n) {\n @attr\n public format: NumberTextFormat;\n\n @attr\n public alignment: NumberTextAlignment;\n\n @attr({ attribute: 'decimal-digits', converter: nullableNumberConverter })\n public decimalDigits?: number;\n\n @attr({\n attribute: 'decimal-maximum-digits',\n converter: nullableNumberConverter\n })\n public decimalMaximumDigits?: number;\n\n /** @internal */\n @observable\n public unitElements?: Element[];\n\n @observable\n private unit?: Unit;\n\n private unitNotifier?: Notifier;\n\n private readonly langSubscriber: DesignTokenSubscriber<typeof lang> = {\n handleChange: () => {\n this.updateColumnConfig();\n }\n };\n\n private readonly unitSubscriber: Subscriber = {\n handleChange: () => {\n this.updateColumnConfig();\n }\n };\n\n public override connectedCallback(): void {\n super.connectedCallback();\n lang.subscribe(this.langSubscriber, this);\n this.updateColumnConfig();\n }\n\n public override disconnectedCallback(): void {\n super.disconnectedCallback();\n lang.unsubscribe(this.langSubscriber, this);\n }\n\n public placeholderChanged(): void {\n this.updateColumnConfig();\n }\n\n protected override getColumnInternalsOptions(): ColumnInternalsOptions<TableColumnNumberTextValidator> {\n return {\n cellRecordFieldNames: ['value'],\n cellViewTag: tableColumnNumberTextCellViewTag,\n groupHeaderViewTag: tableColumnNumberTextGroupHeaderTag,\n delegatedEvents: [],\n sortOperation: TableColumnSortOperation.basic,\n validator: new TableColumnNumberTextValidator()\n };\n }\n\n private updateUnitNotifier(): void {\n if (this.unitNotifier) {\n this.unitNotifier.unsubscribe(this.unitSubscriber);\n this.unitNotifier = undefined;\n }\n\n if (this.unit) {\n const notifier = Observable.getNotifier(this.unit);\n notifier.subscribe(this.unitSubscriber, 'resolvedUnitScale');\n this.unitNotifier = notifier;\n }\n }\n\n private formatChanged(): void {\n this.updateColumnConfig();\n }\n\n private alignmentChanged(): void {\n this.updateColumnConfig();\n }\n\n private decimalDigitsChanged(): void {\n this.updateColumnConfig();\n }\n\n private decimalMaximumDigitsChanged(): void {\n this.updateColumnConfig();\n }\n\n private unitElementsChanged(): void {\n void this.updateUnit();\n }\n\n private async updateUnit(): Promise<void> {\n this.unit = undefined;\n if (this.unitElements) {\n await waitUntilCustomElementsDefinedAsync(this.unitElements);\n this.unit = this.unitElements.find(\n (x): x is Unit => x instanceof Unit\n );\n }\n this.updateUnitNotifier();\n }\n\n private unitChanged(): void {\n this.updateColumnConfig();\n }\n\n private updateColumnConfig(): void {\n const validator = this.columnInternals.validator;\n validator.validateDecimalDigits(this.format, this.decimalDigits);\n validator.validateDecimalMaximumDigits(\n this.format,\n this.decimalMaximumDigits\n );\n validator.validateNoMutuallyExclusiveProperties(\n this.format,\n this.decimalDigits,\n this.decimalMaximumDigits\n );\n validator.validateAtMostOneUnit(this.unitElements ?? []);\n\n if (validator.isValid()) {\n const columnConfig: TableColumnNumberTextColumnConfig = {\n formatter: this.createFormatter(),\n alignment: this.determineCellContentAlignment(),\n placeholder: this.placeholder\n };\n this.columnInternals.headerAlignment = columnConfig.alignment;\n this.columnInternals.columnConfig = columnConfig;\n } else {\n this.columnInternals.columnConfig = undefined;\n }\n }\n\n private createFormatter(): UnitFormat {\n const unitScale = this.unit?.resolvedUnitScale;\n return new NumberTextUnitFormat(lang.getValueFor(this), {\n // Attribute values sometimes resolve to either null or undefined\n // See https://github.com/microsoft/fast/issues/6630\n numberTextFormat: this.format ?? undefined,\n decimalDigits: this.decimalDigits ?? undefined,\n decimalMaximumDigits: this.decimalMaximumDigits ?? undefined,\n unitScale\n });\n }\n\n private determineCellContentAlignment(): TableColumnAlignment {\n if (this.alignment === NumberTextAlignment.left) {\n return TableColumnAlignment.left;\n }\n\n if (this.alignment === NumberTextAlignment.right) {\n return TableColumnAlignment.right;\n }\n\n // Look at format and decimal max digits and unit to determine the default alignment\n if (\n this.format === NumberTextFormat.decimal\n && typeof this.decimalMaximumDigits !== 'number'\n && !this.unit\n ) {\n return TableColumnAlignment.right;\n }\n return TableColumnAlignment.left;\n }\n}\n\nconst nimbleTableColumnNumberText = TableColumnNumberText.compose({\n baseName: 'table-column-number-text',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnNumberText());\nexport const tableColumnNumberTextTag = 'nimble-table-column-number-text';\n"]}
@@ -1,7 +1,6 @@
1
1
  import { TableCellView } from '../../base/cell-view';
2
2
  import type { TableCellRecord } from '../../base/types';
3
- import { TextCellViewBaseAlignment } from './types';
4
- import type { TableFieldValue } from '../../../table/types';
3
+ import { TableColumnAlignment, TableFieldValue } from '../../../table/types';
5
4
  export interface TableColumnTextBaseCellRecord extends TableCellRecord {
6
5
  value: TableFieldValue;
7
6
  }
@@ -21,7 +20,7 @@ export declare abstract class TableColumnTextCellViewBase<TCellRecord extends Ta
21
20
  /**
22
21
  * The alignment of the text within the cell.
23
22
  */
24
- alignment: TextCellViewBaseAlignment;
23
+ alignment: TableColumnAlignment;
25
24
  /**
26
25
  * Whether or not the text being displayed in the cell view is a placeholder.
27
26
  */
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { observable } from '@microsoft/fast-element';
3
3
  import { TableCellView } from '../../base/cell-view';
4
- import { TextCellViewBaseAlignment } from './types';
4
+ import { TableColumnAlignment } from '../../../table/types';
5
5
  /**
6
6
  * The cell view base class for displaying fields of any type as text.
7
7
  */
@@ -17,7 +17,7 @@ export class TableColumnTextCellViewBase extends TableCellView {
17
17
  /**
18
18
  * The alignment of the text within the cell.
19
19
  */
20
- this.alignment = TextCellViewBaseAlignment.left;
20
+ this.alignment = TableColumnAlignment.left;
21
21
  /**
22
22
  * Whether or not the text being displayed in the cell view is a placeholder.
23
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table-column/text-base/cell-view/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAWpD;;GAEG;AACH,MAAM,OAAgB,2BAKpB,SAAQ,aAAyC;IALnD;;QAMI,gBAAgB;QAET,gBAAW,GAAG,KAAK,CAAC;QAE3B;;WAEG;QAEI,SAAI,GAAG,EAAE,CAAC;QAEjB;;WAEG;QAEI,cAAS,GAA8B,yBAAyB,CAAC,IAAI,CAAC;QAE7E;;WAEG;QAEI,kBAAa,GAAG,KAAK,CAAC;IAmCjC,CAAC;IA/Ba,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;IACL,CAAC;IAEO,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;IACL,CAAC;IAED;;;OAGG;IACK,4BAA4B;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;QACnD,IACI,OAAO,WAAW,KAAK,QAAQ;eAC5B,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,CAAC,EACpD;YACE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CACJ;AArDU;IADN,UAAU;gEACgB;AAMpB;IADN,UAAU;yDACM;AAMV;IADN,UAAU;8DACkE;AAMtE;IADN,UAAU;kEACkB","sourcesContent":["import { observable } from '@microsoft/fast-element';\nimport { TableCellView } from '../../base/cell-view';\nimport type { TableCellRecord } from '../../base/types';\nimport { TextCellViewBaseAlignment } from './types';\nimport type { TableFieldValue } from '../../../table/types';\n\nexport interface TableColumnTextBaseCellRecord extends TableCellRecord {\n value: TableFieldValue;\n}\n\nexport interface TableColumnTextBaseColumnConfig {\n placeholder?: string;\n}\n\n/**\n * The cell view base class for displaying fields of any type as text.\n */\nexport abstract class TableColumnTextCellViewBase<\n TCellRecord extends\n TableColumnTextBaseCellRecord = TableColumnTextBaseCellRecord,\n TColumnConfig extends\n TableColumnTextBaseColumnConfig = TableColumnTextBaseColumnConfig\n> extends TableCellView<TCellRecord, TColumnConfig> {\n /** @internal */\n @observable\n public hasOverflow = false;\n\n /**\n * Text to render in the cell.\n */\n @observable\n public text = '';\n\n /**\n * The alignment of the text within the cell.\n */\n @observable\n public alignment: TextCellViewBaseAlignment = TextCellViewBaseAlignment.left;\n\n /**\n * Whether or not the text being displayed in the cell view is a placeholder.\n */\n @observable\n public isPlaceholder = false;\n\n protected abstract updateText(): void;\n\n protected columnConfigChanged(): void {\n if (!this.applyPlaceholderTextIfNeeded()) {\n this.updateText();\n }\n }\n\n private cellRecordChanged(): void {\n if (!this.applyPlaceholderTextIfNeeded()) {\n this.updateText();\n }\n }\n\n /**\n * Sets `this.text` to the appropriate placeholder if `cellValue` warrants it.\n * @returns `true` if `this.text` was set to a placeholder, `false` otherwise.\n */\n private applyPlaceholderTextIfNeeded(): boolean {\n const cellValue = this.cellRecord?.value;\n const placeholder = this.columnConfig?.placeholder;\n if (\n typeof placeholder === 'string'\n && (cellValue === null || cellValue === undefined)\n ) {\n this.text = placeholder;\n this.isPlaceholder = true;\n } else {\n this.isPlaceholder = false;\n }\n\n return this.isPlaceholder;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table-column/text-base/cell-view/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAmB,MAAM,sBAAsB,CAAC;AAU7E;;GAEG;AACH,MAAM,OAAgB,2BAKpB,SAAQ,aAAyC;IALnD;;QAMI,gBAAgB;QAET,gBAAW,GAAG,KAAK,CAAC;QAE3B;;WAEG;QAEI,SAAI,GAAG,EAAE,CAAC;QAEjB;;WAEG;QAEI,cAAS,GAAyB,oBAAoB,CAAC,IAAI,CAAC;QAEnE;;WAEG;QAEI,kBAAa,GAAG,KAAK,CAAC;IAmCjC,CAAC;IA/Ba,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;IACL,CAAC;IAEO,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;IACL,CAAC;IAED;;;OAGG;IACK,4BAA4B;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC;QACnD,IACI,OAAO,WAAW,KAAK,QAAQ;eAC5B,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,CAAC,EACpD;YACE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;aAAM;YACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;CACJ;AArDU;IADN,UAAU;gEACgB;AAMpB;IADN,UAAU;yDACM;AAMV;IADN,UAAU;8DACwD;AAM5D;IADN,UAAU;kEACkB","sourcesContent":["import { observable } from '@microsoft/fast-element';\nimport { TableCellView } from '../../base/cell-view';\nimport type { TableCellRecord } from '../../base/types';\nimport { TableColumnAlignment, TableFieldValue } from '../../../table/types';\n\nexport interface TableColumnTextBaseCellRecord extends TableCellRecord {\n value: TableFieldValue;\n}\n\nexport interface TableColumnTextBaseColumnConfig {\n placeholder?: string;\n}\n\n/**\n * The cell view base class for displaying fields of any type as text.\n */\nexport abstract class TableColumnTextCellViewBase<\n TCellRecord extends\n TableColumnTextBaseCellRecord = TableColumnTextBaseCellRecord,\n TColumnConfig extends\n TableColumnTextBaseColumnConfig = TableColumnTextBaseColumnConfig\n> extends TableCellView<TCellRecord, TColumnConfig> {\n /** @internal */\n @observable\n public hasOverflow = false;\n\n /**\n * Text to render in the cell.\n */\n @observable\n public text = '';\n\n /**\n * The alignment of the text within the cell.\n */\n @observable\n public alignment: TableColumnAlignment = TableColumnAlignment.left;\n\n /**\n * Whether or not the text being displayed in the cell view is a placeholder.\n */\n @observable\n public isPlaceholder = false;\n\n protected abstract updateText(): void;\n\n protected columnConfigChanged(): void {\n if (!this.applyPlaceholderTextIfNeeded()) {\n this.updateText();\n }\n }\n\n private cellRecordChanged(): void {\n if (!this.applyPlaceholderTextIfNeeded()) {\n this.updateText();\n }\n }\n\n /**\n * Sets `this.text` to the appropriate placeholder if `cellValue` warrants it.\n * @returns `true` if `this.text` was set to a placeholder, `false` otherwise.\n */\n private applyPlaceholderTextIfNeeded(): boolean {\n const cellValue = this.cellRecord?.value;\n const placeholder = this.columnConfig?.placeholder;\n if (\n typeof placeholder === 'string'\n && (cellValue === null || cellValue === undefined)\n ) {\n this.text = placeholder;\n this.isPlaceholder = true;\n } else {\n this.isPlaceholder = false;\n }\n\n return this.isPlaceholder;\n }\n}\n"]}
@@ -1,11 +1,11 @@
1
1
  import { html } from '@microsoft/fast-element';
2
2
  import { overflow } from '../../../utilities/directive/overflow';
3
- import { TextCellViewBaseAlignment } from './types';
3
+ import { TableColumnAlignment } from '../../../table/types';
4
4
  // prettier-ignore
5
5
  export const template = html `
6
6
  <template
7
7
  class="
8
- ${x => (x.alignment === TextCellViewBaseAlignment.right ? 'right-align' : '')}
8
+ ${x => (x.alignment === TableColumnAlignment.right ? 'right-align' : '')}
9
9
  ${x => (x.isPlaceholder ? 'placeholder' : '')}
10
10
  "
11
11
  >
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table-column/text-base/cell-view/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAA6B;;;cAG3C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;cAC3E,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;;;;cAI3C,QAAQ,CAAC,aAAa,CAAC;oBACjB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;;cAEpD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;;;CAGxB,CAAC","sourcesContent":["import { html } from '@microsoft/fast-element';\n\nimport type { TableColumnTextCellViewBase } from '.';\nimport { overflow } from '../../../utilities/directive/overflow';\nimport { TextCellViewBaseAlignment } from './types';\n\n// prettier-ignore\nexport const template = html<TableColumnTextCellViewBase>`\n <template\n class=\"\n ${x => (x.alignment === TextCellViewBaseAlignment.right ? 'right-align' : '')}\n ${x => (x.isPlaceholder ? 'placeholder' : '')}\n \"\n >\n <span\n ${overflow('hasOverflow')}\n title=${x => (x.hasOverflow && x.text ? x.text : null)}\n >\n ${x => x.text}\n </span>\n </template>\n`;\n"]}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table-column/text-base/cell-view/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAA6B;;;cAG3C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;cACtE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;;;;cAI3C,QAAQ,CAAC,aAAa,CAAC;oBACjB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;;cAEpD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;;;CAGxB,CAAC","sourcesContent":["import { html } from '@microsoft/fast-element';\n\nimport type { TableColumnTextCellViewBase } from '.';\nimport { overflow } from '../../../utilities/directive/overflow';\nimport { TableColumnAlignment } from '../../../table/types';\n\n// prettier-ignore\nexport const template = html<TableColumnTextCellViewBase>`\n <template\n class=\"\n ${x => (x.alignment === TableColumnAlignment.right ? 'right-align' : '')}\n ${x => (x.isPlaceholder ? 'placeholder' : '')}\n \"\n >\n <span\n ${overflow('hasOverflow')}\n title=${x => (x.hasOverflow && x.text ? x.text : null)}\n >\n ${x => x.text}\n </span>\n </template>\n`;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ni/nimble-components",
3
- "version": "29.7.9",
3
+ "version": "29.8.1",
4
4
  "description": "Styled web components for the NI Nimble Design System",
5
5
  "scripts": {
6
6
  "build": "npm run generate-icons && npm run generate-workers && npm run build-components && npm run bundle-components && npm run generate-scss",
@@ -1,8 +0,0 @@
1
- /**
2
- * The aligment of the value in a TableColumnTextCellViewBase instance.
3
- */
4
- export declare const TextCellViewBaseAlignment: {
5
- readonly left: "left";
6
- readonly right: "right";
7
- };
8
- export type TextCellViewBaseAlignment = (typeof TextCellViewBaseAlignment)[keyof typeof TextCellViewBaseAlignment];
@@ -1,8 +0,0 @@
1
- /**
2
- * The aligment of the value in a TableColumnTextCellViewBase instance.
3
- */
4
- export const TextCellViewBaseAlignment = {
5
- left: 'left',
6
- right: 'right'
7
- };
8
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/table-column/text-base/cell-view/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACR,CAAC","sourcesContent":["/**\n * The aligment of the value in a TableColumnTextCellViewBase instance.\n */\nexport const TextCellViewBaseAlignment = {\n left: 'left',\n right: 'right'\n} as const;\nexport type TextCellViewBaseAlignment =\n (typeof TextCellViewBaseAlignment)[keyof typeof TextCellViewBaseAlignment];\n"]}