@ni/nimble-components 24.1.8 → 24.1.10

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 (84) hide show
  1. package/dist/all-components-bundle.js +147 -148
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +5243 -5238
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/anchor-menu-item/index.js +1 -15
  6. package/dist/esm/anchor-menu-item/index.js.map +1 -1
  7. package/dist/esm/src/table-column/anchor/index.d.ts +4 -3
  8. package/dist/esm/src/table-column/base/index.d.ts +4 -3
  9. package/dist/esm/src/table-column/base/models/column-internals.d.ts +10 -8
  10. package/dist/esm/src/table-column/base/models/column-validator.d.ts +2 -3
  11. package/dist/esm/src/table-column/base/template.d.ts +1 -1
  12. package/dist/esm/src/table-column/date-text/index.d.ts +4 -8
  13. package/dist/esm/src/table-column/date-text/models/table-column-date-text-validator.d.ts +1 -2
  14. package/dist/esm/src/table-column/duration-text/index.d.ts +4 -3
  15. package/dist/esm/src/table-column/enum-base/index.d.ts +1 -4
  16. package/dist/esm/src/table-column/enum-base/models/table-column-enum-base-validator.d.ts +1 -2
  17. package/dist/esm/src/table-column/enum-text/index.d.ts +3 -6
  18. package/dist/esm/src/table-column/enum-text/models/table-column-enum-text-validator.d.ts +1 -2
  19. package/dist/esm/src/table-column/icon/index.d.ts +3 -6
  20. package/dist/esm/src/table-column/icon/models/table-column-icon-validator.d.ts +1 -2
  21. package/dist/esm/src/table-column/mixins/fractional-width-column.d.ts +1 -1
  22. package/dist/esm/src/table-column/mixins/groupable-column.d.ts +1 -1
  23. package/dist/esm/src/table-column/number-text/index.d.ts +4 -8
  24. package/dist/esm/src/table-column/number-text/models/table-column-number-text-validator.d.ts +1 -2
  25. package/dist/esm/src/table-column/text/index.d.ts +4 -3
  26. package/dist/esm/src/table-column/text-base/index.d.ts +6 -5
  27. package/dist/esm/table/index.js +9 -6
  28. package/dist/esm/table/index.js.map +1 -1
  29. package/dist/esm/table/models/table-validator.js +1 -1
  30. package/dist/esm/table/models/table-validator.js.map +1 -1
  31. package/dist/esm/table-column/anchor/index.d.ts +4 -3
  32. package/dist/esm/table-column/anchor/index.js +3 -1
  33. package/dist/esm/table-column/anchor/index.js.map +1 -1
  34. package/dist/esm/table-column/base/index.d.ts +4 -3
  35. package/dist/esm/table-column/base/index.js +2 -2
  36. package/dist/esm/table-column/base/index.js.map +1 -1
  37. package/dist/esm/table-column/base/models/column-internals.d.ts +10 -8
  38. package/dist/esm/table-column/base/models/column-internals.js +1 -7
  39. package/dist/esm/table-column/base/models/column-internals.js.map +1 -1
  40. package/dist/esm/table-column/base/models/column-validator.d.ts +2 -3
  41. package/dist/esm/table-column/base/models/column-validator.js +8 -3
  42. package/dist/esm/table-column/base/models/column-validator.js.map +1 -1
  43. package/dist/esm/table-column/base/template.d.ts +1 -1
  44. package/dist/esm/table-column/date-text/index.d.ts +4 -8
  45. package/dist/esm/table-column/date-text/index.js +4 -8
  46. package/dist/esm/table-column/date-text/index.js.map +1 -1
  47. package/dist/esm/table-column/date-text/models/table-column-date-text-validator.d.ts +1 -2
  48. package/dist/esm/table-column/date-text/models/table-column-date-text-validator.js +2 -2
  49. package/dist/esm/table-column/date-text/models/table-column-date-text-validator.js.map +1 -1
  50. package/dist/esm/table-column/duration-text/index.d.ts +4 -3
  51. package/dist/esm/table-column/duration-text/index.js +3 -1
  52. package/dist/esm/table-column/duration-text/index.js.map +1 -1
  53. package/dist/esm/table-column/enum-base/index.d.ts +1 -4
  54. package/dist/esm/table-column/enum-base/index.js +2 -6
  55. package/dist/esm/table-column/enum-base/index.js.map +1 -1
  56. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.d.ts +1 -2
  57. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.js +2 -2
  58. package/dist/esm/table-column/enum-base/models/table-column-enum-base-validator.js.map +1 -1
  59. package/dist/esm/table-column/enum-text/index.d.ts +3 -6
  60. package/dist/esm/table-column/enum-text/index.js +2 -7
  61. package/dist/esm/table-column/enum-text/index.js.map +1 -1
  62. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.d.ts +1 -2
  63. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.js +2 -2
  64. package/dist/esm/table-column/enum-text/models/table-column-enum-text-validator.js.map +1 -1
  65. package/dist/esm/table-column/icon/index.d.ts +3 -6
  66. package/dist/esm/table-column/icon/index.js +2 -7
  67. package/dist/esm/table-column/icon/index.js.map +1 -1
  68. package/dist/esm/table-column/icon/models/table-column-icon-validator.d.ts +1 -2
  69. package/dist/esm/table-column/icon/models/table-column-icon-validator.js +2 -2
  70. package/dist/esm/table-column/icon/models/table-column-icon-validator.js.map +1 -1
  71. package/dist/esm/table-column/mixins/fractional-width-column.d.ts +1 -1
  72. package/dist/esm/table-column/mixins/groupable-column.d.ts +1 -1
  73. package/dist/esm/table-column/number-text/index.d.ts +4 -8
  74. package/dist/esm/table-column/number-text/index.js +8 -11
  75. package/dist/esm/table-column/number-text/index.js.map +1 -1
  76. package/dist/esm/table-column/number-text/models/table-column-number-text-validator.d.ts +1 -2
  77. package/dist/esm/table-column/number-text/models/table-column-number-text-validator.js +2 -2
  78. package/dist/esm/table-column/number-text/models/table-column-number-text-validator.js.map +1 -1
  79. package/dist/esm/table-column/text/index.d.ts +4 -3
  80. package/dist/esm/table-column/text/index.js +3 -1
  81. package/dist/esm/table-column/text/index.js.map +1 -1
  82. package/dist/esm/table-column/text-base/index.d.ts +6 -5
  83. package/dist/esm/table-column/text-base/index.js.map +1 -1
  84. package/package.json +3 -3
@@ -15,10 +15,6 @@ export class ColumnInternals {
15
15
  * A unique id used internally in the table to identify specific column instances
16
16
  */
17
17
  this.uniqueId = uniqueId('table-column-slot');
18
- /**
19
- * Whether this column has a valid configuration.
20
- */
21
- this.validConfiguration = true;
22
18
  /**
23
19
  * The operation to use when sorting the table by this column.
24
20
  */
@@ -56,6 +52,7 @@ export class ColumnInternals {
56
52
  this.groupHeaderViewTemplate = createGroupHeaderViewTemplate(options.groupHeaderViewTag);
57
53
  this.delegatedEvents = options.delegatedEvents;
58
54
  this.sortOperation = options.sortOperation ?? TableColumnSortOperation.basic;
55
+ this.validator = options.validator;
59
56
  }
60
57
  fractionalWidthChanged() {
61
58
  this.currentFractionalWidth = this.fractionalWidth;
@@ -67,9 +64,6 @@ export class ColumnInternals {
67
64
  __decorate([
68
65
  observable
69
66
  ], ColumnInternals.prototype, "columnConfig", void 0);
70
- __decorate([
71
- observable
72
- ], ColumnInternals.prototype, "validConfiguration", void 0);
73
67
  __decorate([
74
68
  observable
75
69
  ], ColumnInternals.prototype, "operandDataRecordFieldName", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"column-internals.js","sourceRoot":"","sources":["../../../../../src/table-column/base/models/column-internals.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAgB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAkB,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EACH,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAgC/D;;;GAGG;AACH,MAAM,OAAO,eAAe;IAsHxB,YAAmB,OAA+B;QAhHlD;;WAEG;QACa,aAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAkBzD;;WAEG;QAEI,uBAAkB,GAAG,IAAI,CAAC;QAQjC;;WAEG;QAEI,kBAAa,GAA6B,wBAAwB,CAAC,KAAK,CAAC;QAEhF;;;WAGG;QAEI,yBAAoB,GAA4C,EAAE,CAAC;QAO1E;;WAEG;QAEI,qBAAgB,GAAG,KAAK,CAAC;QAgBhC;;;WAGG;QAEI,oBAAe,GAAG,sBAAsB,CAAC;QAEhD;;WAEG;QAEI,kBAAa,GAAG,oBAAoB,CAAC;QAE5C;;;WAGG;QAEI,2BAAsB,GAAG,sBAAsB,CAAC;QAgBvD;;;WAGG;QAEI,yBAAoB,GAA6B,wBAAwB,CAAC,IAAI,CAAC;QAGlF,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,uBAAuB,GAAG,6BAA6B,CACxD,OAAO,CAAC,kBAAkB,CAC7B,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,wBAAwB,CAAC,KAAK,CAAC;IACjF,CAAC;IAES,sBAAsB;QAC5B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC;IACvD,CAAC;IAES,iBAAiB;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;IAC7C,CAAC;CACJ;AA9GG;IADC,UAAU;qDACyB;AAMpC;IADC,UAAU;2DACsB;AAMjC;IADC,UAAU;mEACwC;AAMnD;IADC,UAAU;sDACqE;AAOhF;IADC,UAAU;6DAC+D;AAW1E;IADC,UAAU;yDACqB;AAQhC;IADC,UAAU;mDACgB;AAM3B;IADC,UAAU;mDACgB;AAO3B;IADC,UAAU;wDACqC;AAMhD;IADC,UAAU;sDACiC;AAO5C;IADC,UAAU;+DAC4C;AAOvD;IADC,UAAU;0DACuB;AAOlC;IADC,UAAU;yDAC6B;AAOxC;IADC,UAAU;6DAC2E;AAqB1F,MAAM,UAAU,yBAAyB,CACrC,eAAuB,EACvB,GAAG,IAAwC;IAE3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACpB,IAAI,eAAe,KAAK,GAAG,EAAE;YACzB,OAAO,IAAI,CAAC;SACf;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["import { uniqueId } from '@microsoft/fast-web-utilities';\nimport { ViewTemplate, observable } from '@microsoft/fast-element';\nimport { TableColumnSortDirection, TableFieldName } from '../../../table/types';\nimport type { TableCell } from '../../../table/components/cell';\nimport {\n TableColumnSortOperation,\n defaultFractionalWidth,\n defaultMinPixelWidth\n} from '../types';\nimport type { TableGroupRow } from '../../../table/components/group-row';\nimport { createGroupHeaderViewTemplate } from '../group-header-view/template';\nimport { createCellViewTemplate } from '../cell-view/template';\n\nexport interface ColumnInternalsOptions {\n /**\n * The tag (element name) of the custom element that renders the cell content for the column.\n * That element should derive from TableCellView<TCellRecord, TColumnConfig>.\n */\n readonly cellViewTag: string;\n\n /**\n * The names of the fields that should be present in TCellRecord.\n * This array is parallel with the field names specified by `dataRecordFieldNames`.\n */\n readonly cellRecordFieldNames: readonly TableFieldName[];\n\n /**\n * The tag to use to render the group header content for a column.\n * The element this tag refers to must derive from TableGroupHeaderView.\n */\n readonly groupHeaderViewTag: string;\n\n /**\n * The names of events that should be delegated from the cell view to the column.\n */\n readonly delegatedEvents: readonly string[];\n\n /**\n * The sort operation to use for the column (defaults to TableColumnSortOperation.basic)\n */\n readonly sortOperation?: TableColumnSortOperation;\n}\n\n/**\n * Internal column state configured by plugin authors\n * @internal\n */\nexport class ColumnInternals<TColumnConfig> {\n /**\n * @see ColumnInternalsOptions.cellRecordFieldNames\n */\n public readonly cellRecordFieldNames: readonly TableFieldName[];\n\n /**\n * A unique id used internally in the table to identify specific column instances\n */\n public readonly uniqueId = uniqueId('table-column-slot');\n\n /**\n * Template for the cell view\n */\n public readonly cellViewTemplate: ViewTemplate<TableCell>;\n\n /**\n * The names of events that should be delegated from the cell view to the column.\n */\n public readonly delegatedEvents: readonly string[];\n\n /**\n * The relevant, static configuration a column requires its cell view to have access to.\n */\n @observable\n public columnConfig?: TColumnConfig;\n\n /**\n * Whether this column has a valid configuration.\n */\n @observable\n public validConfiguration = true;\n\n /**\n * The name of the data field that will be used for operations on the table, such as sorting and grouping.\n */\n @observable\n public operandDataRecordFieldName?: TableFieldName;\n\n /**\n * The operation to use when sorting the table by this column.\n */\n @observable\n public sortOperation: TableColumnSortOperation = TableColumnSortOperation.basic;\n\n /**\n * The names of the fields from the row's record that correlate to the data that will be in TCellRecord.\n * This array is parallel with the field names specified by `cellRecordFieldNames`.\n */\n @observable\n public dataRecordFieldNames: readonly (TableFieldName | undefined)[] = [];\n\n /**\n * Template for the group header view\n */\n public readonly groupHeaderViewTemplate: ViewTemplate<TableGroupRow>;\n\n /**\n * Whether or not this column can be used to group rows by\n */\n @observable\n public groupingDisabled = false;\n\n /**\n * Specifies the grouping precedence of the column within the set of all columns participating in grouping.\n * Columns are rendered in the grouping tree from lowest group-index as the tree root to highest\n * group-index as tree leaves.\n */\n @observable\n public groupIndex?: number;\n\n /**\n * Used by column plugins to set a specific pixel width. Sets currentPixelWidth when changed.\n */\n @observable\n public pixelWidth?: number;\n\n /**\n * Used by column plugins to size a column proportionally to the available\n * width of a row. Sets currentFractionalWidth when changed.\n */\n @observable\n public fractionalWidth = defaultFractionalWidth;\n\n /**\n * The minimum size in pixels according to the design doc\n */\n @observable\n public minPixelWidth = defaultMinPixelWidth;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the fractionalWidth after updates programmatic or interactive updates.\n */\n @observable\n public currentFractionalWidth = defaultFractionalWidth;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the pixelWidth after programmatic or interactive updates.\n */\n @observable\n public currentPixelWidth?: number;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the sortIndex after programmatic or interactive updates.\n */\n @observable\n public currentSortIndex?: number | null;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the sortDirection after programmatic or interactive updates.\n */\n @observable\n public currentSortDirection: TableColumnSortDirection = TableColumnSortDirection.none;\n\n public constructor(options: ColumnInternalsOptions) {\n this.cellRecordFieldNames = options.cellRecordFieldNames;\n this.cellViewTemplate = createCellViewTemplate(options.cellViewTag);\n this.groupHeaderViewTemplate = createGroupHeaderViewTemplate(\n options.groupHeaderViewTag\n );\n this.delegatedEvents = options.delegatedEvents;\n this.sortOperation = options.sortOperation ?? TableColumnSortOperation.basic;\n }\n\n protected fractionalWidthChanged(): void {\n this.currentFractionalWidth = this.fractionalWidth;\n }\n\n protected pixelWidthChanged(): void {\n this.currentPixelWidth = this.pixelWidth;\n }\n}\n\nexport function isColumnInternalsProperty(\n changedProperty: string,\n ...args: (keyof ColumnInternals<unknown>)[]\n): boolean {\n for (const arg of args) {\n if (changedProperty === arg) {\n return true;\n }\n }\n return false;\n}\n"]}
1
+ {"version":3,"file":"column-internals.js","sourceRoot":"","sources":["../../../../../src/table-column/base/models/column-internals.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAgB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAkB,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EACH,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAwC/D;;;GAGG;AACH,MAAM,OAAO,eAAe;IAqHxB,YAAmB,OAAiD;QA5GpE;;WAEG;QACa,aAAQ,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QAwBzD;;WAEG;QAEI,kBAAa,GAA6B,wBAAwB,CAAC,KAAK,CAAC;QAEhF;;;WAGG;QAEI,yBAAoB,GAA4C,EAAE,CAAC;QAO1E;;WAEG;QAEI,qBAAgB,GAAG,KAAK,CAAC;QAgBhC;;;WAGG;QAEI,oBAAe,GAAG,sBAAsB,CAAC;QAEhD;;WAEG;QAEI,kBAAa,GAAG,oBAAoB,CAAC;QAE5C;;;WAGG;QAEI,2BAAsB,GAAG,sBAAsB,CAAC;QAgBvD;;;WAGG;QAEI,yBAAoB,GAA6B,wBAAwB,CAAC,IAAI,CAAC;QAKlF,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,uBAAuB,GAAG,6BAA6B,CACxD,OAAO,CAAC,kBAAkB,CAC7B,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,wBAAwB,CAAC,KAAK,CAAC;QAC7E,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,CAAC;IAES,sBAAsB;QAC5B,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC;IACvD,CAAC;IAES,iBAAiB;QACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;IAC7C,CAAC;CACJ;AA3GG;IADC,UAAU;qDACyB;AAMpC;IADC,UAAU;mEACwC;AAMnD;IADC,UAAU;sDACqE;AAOhF;IADC,UAAU;6DAC+D;AAW1E;IADC,UAAU;yDACqB;AAQhC;IADC,UAAU;mDACgB;AAM3B;IADC,UAAU;mDACgB;AAO3B;IADC,UAAU;wDACqC;AAMhD;IADC,UAAU;sDACiC;AAO5C;IADC,UAAU;+DAC4C;AAOvD;IADC,UAAU;0DACuB;AAOlC;IADC,UAAU;yDAC6B;AAOxC;IADC,UAAU;6DAC2E;AAwB1F,MAAM,UAAU,yBAAyB,CACrC,eAAuB,EACvB,GAAG,IAA6D;IAEhE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACpB,IAAI,eAAe,KAAK,GAAG,EAAE;YACzB,OAAO,IAAI,CAAC;SACf;KACJ;IACD,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["import { uniqueId } from '@microsoft/fast-web-utilities';\nimport { ViewTemplate, observable } from '@microsoft/fast-element';\nimport { TableColumnSortDirection, TableFieldName } from '../../../table/types';\nimport type { TableCell } from '../../../table/components/cell';\nimport {\n TableColumnSortOperation,\n defaultFractionalWidth,\n defaultMinPixelWidth\n} from '../types';\nimport type { TableGroupRow } from '../../../table/components/group-row';\nimport { createGroupHeaderViewTemplate } from '../group-header-view/template';\nimport { createCellViewTemplate } from '../cell-view/template';\nimport type { ColumnValidator } from './column-validator';\n\nexport interface ColumnInternalsOptions<\n TColumnValidator extends ColumnValidator<[]> = ColumnValidator<[]>\n> {\n /**\n * The tag (element name) of the custom element that renders the cell content for the column.\n * That element should derive from TableCellView<TCellRecord, TColumnConfig>.\n */\n readonly cellViewTag: string;\n\n /**\n * The names of the fields that should be present in TCellRecord.\n * This array is parallel with the field names specified by `dataRecordFieldNames`.\n */\n readonly cellRecordFieldNames: readonly TableFieldName[];\n\n /**\n * The tag to use to render the group header content for a column.\n * The element this tag refers to must derive from TableGroupHeaderView.\n */\n readonly groupHeaderViewTag: string;\n\n /**\n * The names of events that should be delegated from the cell view to the column.\n */\n readonly delegatedEvents: readonly string[];\n\n /**\n * The sort operation to use for the column (defaults to TableColumnSortOperation.basic)\n */\n readonly sortOperation?: TableColumnSortOperation;\n\n /**\n * The validator for the column\n */\n readonly validator: TColumnValidator;\n}\n\n/**\n * Internal column state configured by plugin authors\n * @internal\n */\nexport class ColumnInternals<\n TColumnConfig,\n TColumnValidator extends ColumnValidator<[]>\n> {\n /**\n * @see ColumnInternalsOptions.cellRecordFieldNames\n */\n public readonly cellRecordFieldNames: readonly TableFieldName[];\n\n /**\n * A unique id used internally in the table to identify specific column instances\n */\n public readonly uniqueId = uniqueId('table-column-slot');\n\n /**\n * Template for the cell view\n */\n public readonly cellViewTemplate: ViewTemplate<TableCell>;\n\n /**\n * The names of events that should be delegated from the cell view to the column.\n */\n public readonly delegatedEvents: readonly string[];\n\n /**\n * The relevant, static configuration a column requires its cell view to have access to.\n */\n @observable\n public columnConfig?: TColumnConfig;\n\n /**\n * The name of the data field that will be used for operations on the table, such as sorting and grouping.\n */\n @observable\n public operandDataRecordFieldName?: TableFieldName;\n\n /**\n * The operation to use when sorting the table by this column.\n */\n @observable\n public sortOperation: TableColumnSortOperation = TableColumnSortOperation.basic;\n\n /**\n * The names of the fields from the row's record that correlate to the data that will be in TCellRecord.\n * This array is parallel with the field names specified by `cellRecordFieldNames`.\n */\n @observable\n public dataRecordFieldNames: readonly (TableFieldName | undefined)[] = [];\n\n /**\n * Template for the group header view\n */\n public readonly groupHeaderViewTemplate: ViewTemplate<TableGroupRow>;\n\n /**\n * Whether or not this column can be used to group rows by\n */\n @observable\n public groupingDisabled = false;\n\n /**\n * Specifies the grouping precedence of the column within the set of all columns participating in grouping.\n * Columns are rendered in the grouping tree from lowest group-index as the tree root to highest\n * group-index as tree leaves.\n */\n @observable\n public groupIndex?: number;\n\n /**\n * Used by column plugins to set a specific pixel width. Sets currentPixelWidth when changed.\n */\n @observable\n public pixelWidth?: number;\n\n /**\n * Used by column plugins to size a column proportionally to the available\n * width of a row. Sets currentFractionalWidth when changed.\n */\n @observable\n public fractionalWidth = defaultFractionalWidth;\n\n /**\n * The minimum size in pixels according to the design doc\n */\n @observable\n public minPixelWidth = defaultMinPixelWidth;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the fractionalWidth after updates programmatic or interactive updates.\n */\n @observable\n public currentFractionalWidth = defaultFractionalWidth;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the pixelWidth after programmatic or interactive updates.\n */\n @observable\n public currentPixelWidth?: number;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the sortIndex after programmatic or interactive updates.\n */\n @observable\n public currentSortIndex?: number | null;\n\n /**\n * @internal Do not write to this value directly. It is used by the Table in order to store\n * the resolved value of the sortDirection after programmatic or interactive updates.\n */\n @observable\n public currentSortDirection: TableColumnSortDirection = TableColumnSortDirection.none;\n\n public readonly validator: TColumnValidator;\n\n public constructor(options: ColumnInternalsOptions<TColumnValidator>) {\n this.cellRecordFieldNames = options.cellRecordFieldNames;\n this.cellViewTemplate = createCellViewTemplate(options.cellViewTag);\n this.groupHeaderViewTemplate = createGroupHeaderViewTemplate(\n options.groupHeaderViewTag\n );\n this.delegatedEvents = options.delegatedEvents;\n this.sortOperation = options.sortOperation ?? TableColumnSortOperation.basic;\n this.validator = options.validator;\n }\n\n protected fractionalWidthChanged(): void {\n this.currentFractionalWidth = this.fractionalWidth;\n }\n\n protected pixelWidthChanged(): void {\n this.currentPixelWidth = this.pixelWidth;\n }\n}\n\nexport function isColumnInternalsProperty(\n changedProperty: string,\n ...args: (keyof ColumnInternals<unknown, ColumnValidator<[]>>)[]\n): boolean {\n for (const arg of args) {\n if (changedProperty === arg) {\n return true;\n }\n }\n return false;\n}\n"]}
@@ -1,12 +1,11 @@
1
1
  import { Validator } from '../../../utilities/models/validator';
2
2
  import type { TableColumnValidity } from '../types';
3
- import type { ColumnInternals } from './column-internals';
4
3
  /**
5
4
  * Base column validator
6
5
  */
7
6
  export declare class ColumnValidator<ValidityFlagNames extends readonly string[]> extends Validator<ValidityFlagNames> {
8
- private readonly columnInternals;
9
- constructor(columnInternals: ColumnInternals<unknown>, configValidityKeys: ValidityFlagNames);
7
+ isColumnValid: boolean;
8
+ constructor(configValidityKeys: ValidityFlagNames);
10
9
  /**
11
10
  * @returns an object containing flags for various ways the configuation can be invalid
12
11
  */
@@ -1,11 +1,13 @@
1
+ import { __decorate } from "tslib";
2
+ import { observable } from '@microsoft/fast-element';
1
3
  import { Validator } from '../../../utilities/models/validator';
2
4
  /**
3
5
  * Base column validator
4
6
  */
5
7
  export class ColumnValidator extends Validator {
6
- constructor(columnInternals, configValidityKeys) {
8
+ constructor(configValidityKeys) {
7
9
  super(configValidityKeys);
8
- this.columnInternals = columnInternals;
10
+ this.isColumnValid = true;
9
11
  }
10
12
  /**
11
13
  * @returns an object containing flags for various ways the configuation can be invalid
@@ -26,7 +28,10 @@ export class ColumnValidator extends Validator {
26
28
  this.updateColumnInternalsFlag();
27
29
  }
28
30
  updateColumnInternalsFlag() {
29
- this.columnInternals.validConfiguration = this.isValid();
31
+ this.isColumnValid = this.isValid();
30
32
  }
31
33
  }
34
+ __decorate([
35
+ observable
36
+ ], ColumnValidator.prototype, "isColumnValid", void 0);
32
37
  //# sourceMappingURL=column-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-validator.js","sourceRoot":"","sources":["../../../../../src/table-column/base/models/column-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAIhE;;GAEG;AACH,MAAM,OAAO,eAEX,SAAQ,SAA4B;IAClC,YACqB,eAAyC,EAC1D,kBAAqC;QAErC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAHT,oBAAe,GAAf,eAAe,CAA0B;IAI9D,CAAC;IAED;;OAEG;IACI,WAAW;QACd,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACO,iBAAiB,CACvB,IAAgE,EAChE,SAAkB;QAElB,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACpB;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB;QACD,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACrC,CAAC;IAEO,yBAAyB;QAC7B,IAAI,CAAC,eAAe,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7D,CAAC;CACJ","sourcesContent":["import { Validator } from '../../../utilities/models/validator';\nimport type { TableColumnValidity } from '../types';\nimport type { ColumnInternals } from './column-internals';\n\n/**\n * Base column validator\n */\nexport class ColumnValidator<\n ValidityFlagNames extends readonly string[]\n> extends Validator<ValidityFlagNames> {\n public constructor(\n private readonly columnInternals: ColumnInternals<unknown>,\n configValidityKeys: ValidityFlagNames\n ) {\n super(configValidityKeys);\n }\n\n /**\n * @returns an object containing flags for various ways the configuation can be invalid\n */\n public getValidity(): TableColumnValidity {\n return this.getValidationFlags();\n }\n\n /**\n * Sets a particular validity condition flag's value, e.g. \"hasInvalidFooValue\" = true\n */\n protected setConditionValue(\n name: ValidityFlagNames extends readonly (infer U)[] ? U : never,\n isInvalid: boolean\n ): void {\n if (isInvalid) {\n this.track(name);\n } else {\n this.untrack(name);\n }\n this.updateColumnInternalsFlag();\n }\n\n private updateColumnInternalsFlag(): void {\n this.columnInternals.validConfiguration = this.isValid();\n }\n}\n"]}
1
+ {"version":3,"file":"column-validator.js","sourceRoot":"","sources":["../../../../../src/table-column/base/models/column-validator.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAGhE;;GAEG;AACH,MAAM,OAAO,eAEX,SAAQ,SAA4B;IAIlC,YAAmB,kBAAqC;QACpD,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAHvB,kBAAa,GAAG,IAAI,CAAC;IAI5B,CAAC;IAED;;OAEG;IACI,WAAW;QACd,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACO,iBAAiB,CACvB,IAAgE,EAChE,SAAkB;QAElB,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACpB;aAAM;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACtB;QACD,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACrC,CAAC;IAEO,yBAAyB;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;CACJ;AA/BG;IADC,UAAU;sDACiB","sourcesContent":["import { observable } from '@microsoft/fast-element';\nimport { Validator } from '../../../utilities/models/validator';\nimport type { TableColumnValidity } from '../types';\n\n/**\n * Base column validator\n */\nexport class ColumnValidator<\n ValidityFlagNames extends readonly string[]\n> extends Validator<ValidityFlagNames> {\n @observable\n public isColumnValid = true;\n\n public constructor(configValidityKeys: ValidityFlagNames) {\n super(configValidityKeys);\n }\n\n /**\n * @returns an object containing flags for various ways the configuation can be invalid\n */\n public getValidity(): TableColumnValidity {\n return this.getValidationFlags();\n }\n\n /**\n * Sets a particular validity condition flag's value, e.g. \"hasInvalidFooValue\" = true\n */\n protected setConditionValue(\n name: ValidityFlagNames extends readonly (infer U)[] ? U : never,\n isInvalid: boolean\n ): void {\n if (isInvalid) {\n this.track(name);\n } else {\n this.untrack(name);\n }\n this.updateColumnInternalsFlag();\n }\n\n private updateColumnInternalsFlag(): void {\n this.isColumnValid = this.isValid();\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
1
  import type { TableColumn } from '.';
2
- export declare const template: import("@microsoft/fast-element").ViewTemplate<TableColumn<unknown>, any>;
2
+ export declare const template: import("@microsoft/fast-element").ViewTemplate<TableColumn<unknown, import("./models/column-validator").ColumnValidator<[]>>, any>;
@@ -1,6 +1,5 @@
1
1
  import type { TableNumberField } from '../../table/types';
2
2
  import { TableColumnTextBase } from '../text-base';
3
- import { TableColumnValidity } from '../base/types';
4
3
  import type { ColumnInternalsOptions } from '../base/models/column-internals';
5
4
  import { DateTextFormat, LocaleMatcherAlgorithm, EraFormat, YearFormat, DayFormat, HourFormat, MinuteFormat, SecondFormat, TimeZoneNameFormat, FormatMatcherAlgorithm, DayPeriodFormat, DateStyle, TimeStyle, HourCycleFormat, MonthFormat, WeekdayFormat } from './types';
6
5
  import { TableColumnDateTextValidator } from './models/table-column-date-text-validator';
@@ -19,17 +18,17 @@ declare const TableColumnDateText_base: (abstract new (...args: any[]) => {
19
18
  groupIndex?: number | null | undefined;
20
19
  groupingDisabledChanged(): void;
21
20
  groupIndexChanged(): void;
22
- readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown>;
21
+ readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, import("../base/models/column-validator").ColumnValidator<[]>>;
23
22
  }) & (abstract new (...args: any[]) => {
24
23
  fractionalWidth?: number | null | undefined;
25
24
  minPixelWidth?: number | null | undefined;
26
25
  fractionalWidthChanged(): void;
27
26
  minPixelWidthChanged(): void;
28
- readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown>;
27
+ readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, import("../base/models/column-validator").ColumnValidator<[]>>;
29
28
  }) & (abstract new (...args: any[]) => {
30
29
  placeholder?: string | undefined;
31
30
  placeholderChanged(): void;
32
- }) & ((abstract new () => TableColumnTextBase<TableColumnDateTextColumnConfig>) & {
31
+ }) & ((abstract new () => TableColumnTextBase<TableColumnDateTextColumnConfig, TableColumnDateTextValidator>) & {
33
32
  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>;
34
33
  from<TBase extends {
35
34
  new (): HTMLElement;
@@ -41,8 +40,6 @@ declare const TableColumnDateText_base: (abstract new (...args: any[]) => {
41
40
  * The table column for displaying dates/times as text.
42
41
  */
43
42
  export declare class TableColumnDateText extends TableColumnDateText_base {
44
- /** @internal */
45
- validator: TableColumnDateTextValidator;
46
43
  format: DateTextFormat;
47
44
  customLocaleMatcher: LocaleMatcherAlgorithm;
48
45
  customWeekday: WeekdayFormat;
@@ -66,9 +63,8 @@ export declare class TableColumnDateText extends TableColumnDateText_base {
66
63
  private readonly langSubscriber;
67
64
  connectedCallback(): void;
68
65
  disconnectedCallback(): void;
69
- get validity(): TableColumnValidity;
70
66
  placeholderChanged(): void;
71
- protected getColumnInternalsOptions(): ColumnInternalsOptions;
67
+ protected getColumnInternalsOptions(): ColumnInternalsOptions<TableColumnDateTextValidator>;
72
68
  protected formatChanged(): void;
73
69
  protected customLocaleMatcherChanged(): void;
74
70
  protected customWeekdayChanged(): void;
@@ -17,8 +17,6 @@ import { optionalBooleanConverter } from '../../utilities/models/converter';
17
17
  export class TableColumnDateText extends mixinTextBase((TableColumnTextBase)) {
18
18
  constructor() {
19
19
  super(...arguments);
20
- /** @internal */
21
- this.validator = new TableColumnDateTextValidator(this.columnInternals);
22
20
  this.langSubscriber = {
23
21
  handleChange: () => {
24
22
  this.updateColumnConfig();
@@ -34,9 +32,6 @@ export class TableColumnDateText extends mixinTextBase((TableColumnTextBase)) {
34
32
  super.disconnectedCallback();
35
33
  lang.unsubscribe(this.langSubscriber, this);
36
34
  }
37
- get validity() {
38
- return this.validator.getValidity();
39
- }
40
35
  placeholderChanged() {
41
36
  this.updateColumnConfig();
42
37
  }
@@ -46,7 +41,8 @@ export class TableColumnDateText extends mixinTextBase((TableColumnTextBase)) {
46
41
  cellViewTag: tableColumnDateTextCellViewTag,
47
42
  groupHeaderViewTag: tableColumnDateTextGroupHeaderViewTag,
48
43
  delegatedEvents: [],
49
- sortOperation: TableColumnSortOperation.basic
44
+ sortOperation: TableColumnSortOperation.basic,
45
+ validator: new TableColumnDateTextValidator()
50
46
  };
51
47
  }
52
48
  formatChanged() {
@@ -117,11 +113,11 @@ export class TableColumnDateText extends mixinTextBase((TableColumnTextBase)) {
117
113
  placeholder: this.placeholder
118
114
  };
119
115
  this.columnInternals.columnConfig = columnConfig;
120
- this.validator.setCustomOptionsValidity(true);
116
+ this.columnInternals.validator.setCustomOptionsValidity(true);
121
117
  }
122
118
  else {
123
119
  this.columnInternals.columnConfig = undefined;
124
- this.validator.setCustomOptionsValidity(false);
120
+ this.columnInternals.validator.setCustomOptionsValidity(false);
125
121
  }
126
122
  }
127
123
  createFormatter() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/date-text/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DesignSystem,\n DesignTokenSubscriber\n} from '@microsoft/fast-foundation';\nimport { attr } from '@microsoft/fast-element';\nimport { styles } from '../base/styles';\nimport { template } from '../base/template';\nimport type { TableNumberField } from '../../table/types';\nimport { TableColumnTextBase, mixinTextBase } from '../text-base';\nimport { TableColumnSortOperation, TableColumnValidity } from '../base/types';\nimport { tableColumnDateTextGroupHeaderViewTag } from './group-header-view';\nimport { tableColumnDateTextCellViewTag } from './cell-view';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\nimport {\n DateTextFormat,\n LocaleMatcherAlgorithm,\n EraFormat,\n YearFormat,\n DayFormat,\n HourFormat,\n MinuteFormat,\n SecondFormat,\n TimeZoneNameFormat,\n FormatMatcherAlgorithm,\n DayPeriodFormat,\n DateStyle,\n TimeStyle,\n HourCycleFormat,\n MonthFormat,\n WeekdayFormat\n} from './types';\nimport { TableColumnDateTextValidator } from './models/table-column-date-text-validator';\nimport { lang } from '../../theme-provider';\nimport { optionalBooleanConverter } from '../../utilities/models/converter';\nimport type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';\n\nexport type TableColumnDateTextCellRecord = TableNumberField<'value'>;\nexport interface TableColumnDateTextColumnConfig\n extends TableColumnTextBaseColumnConfig {\n formatter: Intl.DateTimeFormat;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-date-text': TableColumnDateText;\n }\n}\n\n/**\n * The table column for displaying dates/times as text.\n */\nexport class TableColumnDateText extends mixinTextBase(\n TableColumnTextBase<TableColumnDateTextColumnConfig>\n) {\n /** @internal */\n public validator = new TableColumnDateTextValidator(this.columnInternals);\n\n @attr\n public format: DateTextFormat;\n\n @attr({ attribute: 'custom-locale-matcher' })\n public customLocaleMatcher: LocaleMatcherAlgorithm;\n\n @attr({ attribute: 'custom-weekday' })\n public customWeekday: WeekdayFormat;\n\n @attr({ attribute: 'custom-era' })\n public customEra: EraFormat;\n\n @attr({ attribute: 'custom-year' })\n public customYear: YearFormat;\n\n @attr({ attribute: 'custom-month' })\n public customMonth: MonthFormat;\n\n @attr({ attribute: 'custom-day' })\n public customDay: DayFormat;\n\n @attr({ attribute: 'custom-hour' })\n public customHour: HourFormat;\n\n @attr({ attribute: 'custom-minute' })\n public customMinute: MinuteFormat;\n\n @attr({ attribute: 'custom-second' })\n public customSecond: SecondFormat;\n\n @attr({ attribute: 'custom-time-zone-name' })\n public customTimeZoneName: TimeZoneNameFormat;\n\n @attr({ attribute: 'custom-format-matcher' })\n public customFormatMatcher: FormatMatcherAlgorithm;\n\n // Later versions of FAST (than the legacy branch we're on) have a nullableBooleanConverter.\n // We should replace our converter with that one when it is available to us.\n // See issue related to adopting FastElement 2.0: https://github.com/ni/nimble/issues/572\n @attr({ attribute: 'custom-hour12', converter: optionalBooleanConverter })\n public customHour12?: boolean;\n\n @attr({ attribute: 'custom-time-zone' })\n public customTimeZone?: string;\n\n @attr({ attribute: 'custom-calendar' })\n public customCalendar?: string;\n\n @attr({ attribute: 'custom-day-period' })\n public customDayPeriod: DayPeriodFormat;\n\n @attr({ attribute: 'custom-numbering-system' })\n public customNumberingSystem?: string;\n\n @attr({ attribute: 'custom-date-style' })\n public customDateStyle: DateStyle;\n\n @attr({ attribute: 'custom-time-style' })\n public customTimeStyle: TimeStyle;\n\n @attr({ attribute: 'custom-hour-cycle' })\n public customHourCycle: HourCycleFormat;\n\n private readonly langSubscriber: DesignTokenSubscriber<typeof lang> = {\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 override get validity(): TableColumnValidity {\n return this.validator.getValidity();\n }\n\n public placeholderChanged(): void {\n this.updateColumnConfig();\n }\n\n protected override getColumnInternalsOptions(): ColumnInternalsOptions {\n return {\n cellRecordFieldNames: ['value'],\n cellViewTag: tableColumnDateTextCellViewTag,\n groupHeaderViewTag: tableColumnDateTextGroupHeaderViewTag,\n delegatedEvents: [],\n sortOperation: TableColumnSortOperation.basic\n };\n }\n\n protected formatChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customLocaleMatcherChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customWeekdayChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customEraChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customYearChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customMonthChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customDayChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customHourChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customMinuteChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customSecondChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customTimeZoneNameChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customFormatMatcherChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customHour12Changed(): void {\n this.updateColumnConfig();\n }\n\n protected customTimeZoneChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customCalendarChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customDayPeriodChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customNumberingSystemChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customDateStyleChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customTimeStyleChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customHourCycleChanged(): void {\n this.updateColumnConfig();\n }\n\n private updateColumnConfig(): void {\n const formatter = this.createFormatter();\n\n if (formatter) {\n const columnConfig: TableColumnDateTextColumnConfig = {\n formatter,\n placeholder: this.placeholder\n };\n this.columnInternals.columnConfig = columnConfig;\n this.validator.setCustomOptionsValidity(true);\n } else {\n this.columnInternals.columnConfig = undefined;\n this.validator.setCustomOptionsValidity(false);\n }\n }\n\n private createFormatter(): Intl.DateTimeFormat | undefined {\n let options: Intl.DateTimeFormatOptions;\n if (this.format === DateTextFormat.default) {\n options = {\n dateStyle: 'medium',\n timeStyle: 'medium'\n };\n } else {\n options = this.getCustomFormattingOptions();\n }\n try {\n return new Intl.DateTimeFormat(lang.getValueFor(this), options);\n } catch (e) {\n return undefined;\n }\n }\n\n private getCustomFormattingOptions(): Intl.DateTimeFormatOptions {\n // There's a FAST bug (https://github.com/microsoft/fast/issues/6630) where removing\n // attributes sets their values to null instead of undefined. To work around this,\n // translate null values to undefined.\n const options: Intl.DateTimeFormatOptions = {\n localeMatcher: this.customLocaleMatcher ?? undefined,\n weekday: this.customWeekday ?? undefined,\n era: this.customEra ?? undefined,\n year: this.customYear ?? undefined,\n month: this.customMonth ?? undefined,\n day: this.customDay ?? undefined,\n hour: this.customHour ?? undefined,\n minute: this.customMinute ?? undefined,\n second: this.customSecond ?? undefined,\n timeZoneName: this.customTimeZoneName ?? undefined,\n formatMatcher: this.customFormatMatcher ?? undefined,\n hour12: this.customHour12 ?? undefined,\n timeZone: this.customTimeZone ?? undefined,\n calendar: this.customCalendar ?? undefined,\n dayPeriod: this.customDayPeriod ?? undefined,\n numberingSystem: this.customNumberingSystem ?? undefined,\n dateStyle: this.customDateStyle ?? undefined,\n timeStyle: this.customTimeStyle ?? undefined,\n hourCycle: this.customHourCycle ?? undefined\n };\n return options;\n }\n}\n\nconst nimbleTableColumnDateText = TableColumnDateText.compose({\n baseName: 'table-column-date-text',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnDateText());\nexport const tableColumnDateTextTag = 'nimble-table-column-date-text';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/date-text/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DesignSystem,\n DesignTokenSubscriber\n} from '@microsoft/fast-foundation';\nimport { attr } from '@microsoft/fast-element';\nimport { styles } from '../base/styles';\nimport { template } from '../base/template';\nimport type { TableNumberField } from '../../table/types';\nimport { TableColumnTextBase, mixinTextBase } from '../text-base';\nimport { TableColumnSortOperation } from '../base/types';\nimport { tableColumnDateTextGroupHeaderViewTag } from './group-header-view';\nimport { tableColumnDateTextCellViewTag } from './cell-view';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\nimport {\n DateTextFormat,\n LocaleMatcherAlgorithm,\n EraFormat,\n YearFormat,\n DayFormat,\n HourFormat,\n MinuteFormat,\n SecondFormat,\n TimeZoneNameFormat,\n FormatMatcherAlgorithm,\n DayPeriodFormat,\n DateStyle,\n TimeStyle,\n HourCycleFormat,\n MonthFormat,\n WeekdayFormat\n} from './types';\nimport { TableColumnDateTextValidator } from './models/table-column-date-text-validator';\nimport { lang } from '../../theme-provider';\nimport { optionalBooleanConverter } from '../../utilities/models/converter';\nimport type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';\n\nexport type TableColumnDateTextCellRecord = TableNumberField<'value'>;\nexport interface TableColumnDateTextColumnConfig\n extends TableColumnTextBaseColumnConfig {\n formatter: Intl.DateTimeFormat;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-date-text': TableColumnDateText;\n }\n}\n\n/**\n * The table column for displaying dates/times as text.\n */\nexport class TableColumnDateText extends mixinTextBase(\n TableColumnTextBase<\n TableColumnDateTextColumnConfig,\n TableColumnDateTextValidator\n >\n) {\n @attr\n public format: DateTextFormat;\n\n @attr({ attribute: 'custom-locale-matcher' })\n public customLocaleMatcher: LocaleMatcherAlgorithm;\n\n @attr({ attribute: 'custom-weekday' })\n public customWeekday: WeekdayFormat;\n\n @attr({ attribute: 'custom-era' })\n public customEra: EraFormat;\n\n @attr({ attribute: 'custom-year' })\n public customYear: YearFormat;\n\n @attr({ attribute: 'custom-month' })\n public customMonth: MonthFormat;\n\n @attr({ attribute: 'custom-day' })\n public customDay: DayFormat;\n\n @attr({ attribute: 'custom-hour' })\n public customHour: HourFormat;\n\n @attr({ attribute: 'custom-minute' })\n public customMinute: MinuteFormat;\n\n @attr({ attribute: 'custom-second' })\n public customSecond: SecondFormat;\n\n @attr({ attribute: 'custom-time-zone-name' })\n public customTimeZoneName: TimeZoneNameFormat;\n\n @attr({ attribute: 'custom-format-matcher' })\n public customFormatMatcher: FormatMatcherAlgorithm;\n\n // Later versions of FAST (than the legacy branch we're on) have a nullableBooleanConverter.\n // We should replace our converter with that one when it is available to us.\n // See issue related to adopting FastElement 2.0: https://github.com/ni/nimble/issues/572\n @attr({ attribute: 'custom-hour12', converter: optionalBooleanConverter })\n public customHour12?: boolean;\n\n @attr({ attribute: 'custom-time-zone' })\n public customTimeZone?: string;\n\n @attr({ attribute: 'custom-calendar' })\n public customCalendar?: string;\n\n @attr({ attribute: 'custom-day-period' })\n public customDayPeriod: DayPeriodFormat;\n\n @attr({ attribute: 'custom-numbering-system' })\n public customNumberingSystem?: string;\n\n @attr({ attribute: 'custom-date-style' })\n public customDateStyle: DateStyle;\n\n @attr({ attribute: 'custom-time-style' })\n public customTimeStyle: TimeStyle;\n\n @attr({ attribute: 'custom-hour-cycle' })\n public customHourCycle: HourCycleFormat;\n\n private readonly langSubscriber: DesignTokenSubscriber<typeof lang> = {\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<TableColumnDateTextValidator> {\n return {\n cellRecordFieldNames: ['value'],\n cellViewTag: tableColumnDateTextCellViewTag,\n groupHeaderViewTag: tableColumnDateTextGroupHeaderViewTag,\n delegatedEvents: [],\n sortOperation: TableColumnSortOperation.basic,\n validator: new TableColumnDateTextValidator()\n };\n }\n\n protected formatChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customLocaleMatcherChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customWeekdayChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customEraChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customYearChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customMonthChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customDayChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customHourChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customMinuteChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customSecondChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customTimeZoneNameChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customFormatMatcherChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customHour12Changed(): void {\n this.updateColumnConfig();\n }\n\n protected customTimeZoneChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customCalendarChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customDayPeriodChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customNumberingSystemChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customDateStyleChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customTimeStyleChanged(): void {\n this.updateColumnConfig();\n }\n\n protected customHourCycleChanged(): void {\n this.updateColumnConfig();\n }\n\n private updateColumnConfig(): void {\n const formatter = this.createFormatter();\n\n if (formatter) {\n const columnConfig: TableColumnDateTextColumnConfig = {\n formatter,\n placeholder: this.placeholder\n };\n this.columnInternals.columnConfig = columnConfig;\n this.columnInternals.validator.setCustomOptionsValidity(true);\n } else {\n this.columnInternals.columnConfig = undefined;\n this.columnInternals.validator.setCustomOptionsValidity(false);\n }\n }\n\n private createFormatter(): Intl.DateTimeFormat | undefined {\n let options: Intl.DateTimeFormatOptions;\n if (this.format === DateTextFormat.default) {\n options = {\n dateStyle: 'medium',\n timeStyle: 'medium'\n };\n } else {\n options = this.getCustomFormattingOptions();\n }\n try {\n return new Intl.DateTimeFormat(lang.getValueFor(this), options);\n } catch (e) {\n return undefined;\n }\n }\n\n private getCustomFormattingOptions(): Intl.DateTimeFormatOptions {\n // There's a FAST bug (https://github.com/microsoft/fast/issues/6630) where removing\n // attributes sets their values to null instead of undefined. To work around this,\n // translate null values to undefined.\n const options: Intl.DateTimeFormatOptions = {\n localeMatcher: this.customLocaleMatcher ?? undefined,\n weekday: this.customWeekday ?? undefined,\n era: this.customEra ?? undefined,\n year: this.customYear ?? undefined,\n month: this.customMonth ?? undefined,\n day: this.customDay ?? undefined,\n hour: this.customHour ?? undefined,\n minute: this.customMinute ?? undefined,\n second: this.customSecond ?? undefined,\n timeZoneName: this.customTimeZoneName ?? undefined,\n formatMatcher: this.customFormatMatcher ?? undefined,\n hour12: this.customHour12 ?? undefined,\n timeZone: this.customTimeZone ?? undefined,\n calendar: this.customCalendar ?? undefined,\n dayPeriod: this.customDayPeriod ?? undefined,\n numberingSystem: this.customNumberingSystem ?? undefined,\n dateStyle: this.customDateStyle ?? undefined,\n timeStyle: this.customTimeStyle ?? undefined,\n hourCycle: this.customHourCycle ?? undefined\n };\n return options;\n }\n}\n\nconst nimbleTableColumnDateText = TableColumnDateText.compose({\n baseName: 'table-column-date-text',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnDateText());\nexport const tableColumnDateTextTag = 'nimble-table-column-date-text';\n"]}
@@ -1,11 +1,10 @@
1
- import type { ColumnInternals } from '../../base/models/column-internals';
2
1
  import { ColumnValidator } from '../../base/models/column-validator';
3
2
  declare const dateTextValidityFlagNames: readonly ["invalidCustomOptionsCombination"];
4
3
  /**
5
4
  * Validator for TableColumnDateText.
6
5
  */
7
6
  export declare class TableColumnDateTextValidator extends ColumnValidator<typeof dateTextValidityFlagNames> {
8
- constructor(columnInternals: ColumnInternals<unknown>);
7
+ constructor();
9
8
  setCustomOptionsValidity(valid: boolean): void;
10
9
  }
11
10
  export {};
@@ -4,8 +4,8 @@ const dateTextValidityFlagNames = ['invalidCustomOptionsCombination'];
4
4
  * Validator for TableColumnDateText.
5
5
  */
6
6
  export class TableColumnDateTextValidator extends ColumnValidator {
7
- constructor(columnInternals) {
8
- super(columnInternals, dateTextValidityFlagNames);
7
+ constructor() {
8
+ super(dateTextValidityFlagNames);
9
9
  }
10
10
  setCustomOptionsValidity(valid) {
11
11
  this.setConditionValue('invalidCustomOptionsCombination', !valid);
@@ -1 +1 @@
1
- {"version":3,"file":"table-column-date-text-validator.js","sourceRoot":"","sources":["../../../../../src/table-column/date-text/models/table-column-date-text-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,yBAAyB,GAAG,CAAC,iCAAiC,CAAU,CAAC;AAE/E;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,eAEjD;IACG,YAAmB,eAAyC;QACxD,KAAK,CAAC,eAAe,EAAE,yBAAyB,CAAC,CAAC;IACtD,CAAC;IAEM,wBAAwB,CAAC,KAAc;QAC1C,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,EAAE,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;CACJ","sourcesContent":["import type { ColumnInternals } from '../../base/models/column-internals';\nimport { ColumnValidator } from '../../base/models/column-validator';\n\nconst dateTextValidityFlagNames = ['invalidCustomOptionsCombination'] as const;\n\n/**\n * Validator for TableColumnDateText.\n */\nexport class TableColumnDateTextValidator extends ColumnValidator<\n typeof dateTextValidityFlagNames\n> {\n public constructor(columnInternals: ColumnInternals<unknown>) {\n super(columnInternals, dateTextValidityFlagNames);\n }\n\n public setCustomOptionsValidity(valid: boolean): void {\n this.setConditionValue('invalidCustomOptionsCombination', !valid);\n }\n}\n"]}
1
+ {"version":3,"file":"table-column-date-text-validator.js","sourceRoot":"","sources":["../../../../../src/table-column/date-text/models/table-column-date-text-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,yBAAyB,GAAG,CAAC,iCAAiC,CAAU,CAAC;AAE/E;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,eAEjD;IACG;QACI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACrC,CAAC;IAEM,wBAAwB,CAAC,KAAc;QAC1C,IAAI,CAAC,iBAAiB,CAAC,iCAAiC,EAAE,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;CACJ","sourcesContent":["import { ColumnValidator } from '../../base/models/column-validator';\n\nconst dateTextValidityFlagNames = ['invalidCustomOptionsCombination'] as const;\n\n/**\n * Validator for TableColumnDateText.\n */\nexport class TableColumnDateTextValidator extends ColumnValidator<\n typeof dateTextValidityFlagNames\n> {\n public constructor() {\n super(dateTextValidityFlagNames);\n }\n\n public setCustomOptionsValidity(valid: boolean): void {\n this.setConditionValue('invalidCustomOptionsCombination', !valid);\n }\n}\n"]}
@@ -3,6 +3,7 @@ import type { ColumnInternalsOptions } from '../base/models/column-internals';
3
3
  import { DurationFormatter } from './models/duration-formatter';
4
4
  import type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';
5
5
  import { TableColumnTextBase } from '../text-base';
6
+ import { ColumnValidator } from '../base/models/column-validator';
6
7
  export type TableColumnDurationTextCellRecord = TableNumberField<'value'>;
7
8
  export interface TableColumnDurationTextColumnConfig extends TableColumnTextBaseColumnConfig {
8
9
  formatter: DurationFormatter;
@@ -17,17 +18,17 @@ declare const TableColumnDurationText_base: (abstract new (...args: any[]) => {
17
18
  groupIndex?: number | null | undefined;
18
19
  groupingDisabledChanged(): void;
19
20
  groupIndexChanged(): void;
20
- readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown>;
21
+ readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, ColumnValidator<[]>>;
21
22
  }) & (abstract new (...args: any[]) => {
22
23
  fractionalWidth?: number | null | undefined;
23
24
  minPixelWidth?: number | null | undefined;
24
25
  fractionalWidthChanged(): void;
25
26
  minPixelWidthChanged(): void;
26
- readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown>;
27
+ readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, ColumnValidator<[]>>;
27
28
  }) & (abstract new (...args: any[]) => {
28
29
  placeholder?: string | undefined;
29
30
  placeholderChanged(): void;
30
- }) & ((abstract new () => TableColumnTextBase<TableColumnDurationTextColumnConfig>) & {
31
+ }) & ((abstract new () => TableColumnTextBase<TableColumnDurationTextColumnConfig, ColumnValidator<[]>>) & {
31
32
  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>;
32
33
  from<TBase extends {
33
34
  new (): HTMLElement;
@@ -7,6 +7,7 @@ import { lang } from '../../theme-provider';
7
7
  import { DurationFormatter } from './models/duration-formatter';
8
8
  import { tableColumnDurationTextGroupHeaderViewTag } from './group-header-view';
9
9
  import { TableColumnTextBase, mixinTextBase } from '../text-base';
10
+ import { ColumnValidator } from '../base/models/column-validator';
10
11
  /**
11
12
  * The table column for displaying a duration value as text.
12
13
  */
@@ -37,7 +38,8 @@ export class TableColumnDurationText extends mixinTextBase((TableColumnTextBase)
37
38
  cellViewTag: tableColumnDurationTextCellViewTag,
38
39
  groupHeaderViewTag: tableColumnDurationTextGroupHeaderViewTag,
39
40
  delegatedEvents: [],
40
- sortOperation: TableColumnSortOperation.basic
41
+ sortOperation: TableColumnSortOperation.basic,
42
+ validator: new ColumnValidator([])
41
43
  };
42
44
  }
43
45
  updateColumnConfig() {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/duration-text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,yCAAyC,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAclE;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,aAAa,CACtD,CAAA,mBAAwD,CAAA,CAC3D;IAFD;;QAGqB,mBAAc,GAAuC;YAClE,YAAY,EAAE,GAAG,EAAE;gBACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC;IAoCN,CAAC;IAlCmB,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,kCAAkC;YAC/C,kBAAkB,EAAE,yCAAyC;YAC7D,eAAe,EAAE,EAAE;YACnB,aAAa,EAAE,wBAAwB,CAAC,KAAK;SAChD,CAAC;IACN,CAAC;IAEO,kBAAkB;QACtB,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,MAAM,YAAY,GAAwC;YACtD,SAAS;YACT,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,YAAY,CAAC;IACrD,CAAC;CACJ;AAED,MAAM,6BAA6B,GAAG,uBAAuB,CAAC,OAAO,CAAC;IAClE,QAAQ,EAAE,4BAA4B;IACtC,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,6BAA6B,EAAE,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,mCAAmC,CAAC","sourcesContent":["import {\n DesignSystem,\n DesignTokenSubscriber\n} from '@microsoft/fast-foundation';\nimport { styles } from '../base/styles';\nimport { template } from '../base/template';\nimport type { TableNumberField } from '../../table/types';\nimport { TableColumnSortOperation } from '../base/types';\nimport { tableColumnDurationTextCellViewTag } from './cell-view';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\nimport { lang } from '../../theme-provider';\nimport { DurationFormatter } from './models/duration-formatter';\nimport { tableColumnDurationTextGroupHeaderViewTag } from './group-header-view';\nimport type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';\nimport { TableColumnTextBase, mixinTextBase } from '../text-base';\n\nexport type TableColumnDurationTextCellRecord = TableNumberField<'value'>;\nexport interface TableColumnDurationTextColumnConfig\n extends TableColumnTextBaseColumnConfig {\n formatter: DurationFormatter;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-duration-text': TableColumnDurationText;\n }\n}\n\n/**\n * The table column for displaying a duration value as text.\n */\nexport class TableColumnDurationText extends mixinTextBase(\n TableColumnTextBase<TableColumnDurationTextColumnConfig>\n) {\n private readonly langSubscriber: DesignTokenSubscriber<typeof lang> = {\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 {\n return {\n cellRecordFieldNames: ['value'],\n cellViewTag: tableColumnDurationTextCellViewTag,\n groupHeaderViewTag: tableColumnDurationTextGroupHeaderViewTag,\n delegatedEvents: [],\n sortOperation: TableColumnSortOperation.basic\n };\n }\n\n private updateColumnConfig(): void {\n const formatter = new DurationFormatter(lang.getValueFor(this));\n\n const columnConfig: TableColumnDurationTextColumnConfig = {\n formatter,\n placeholder: this.placeholder\n };\n this.columnInternals.columnConfig = columnConfig;\n }\n}\n\nconst nimbleTableColumnDurationText = TableColumnDurationText.compose({\n baseName: 'table-column-duration-text',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnDurationText());\nexport const tableColumnDurationTextTag = 'nimble-table-column-duration-text';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/duration-text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,YAAY,EAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,kCAAkC,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,yCAAyC,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAclE;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,aAAa,CACtD,CAAA,mBAAwD,CAAA,CAC3D;IAFD;;QAGqB,mBAAc,GAAuC;YAClE,YAAY,EAAE,GAAG,EAAE;gBACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC;IAqCN,CAAC;IAnCmB,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,kCAAkC;YAC/C,kBAAkB,EAAE,yCAAyC;YAC7D,eAAe,EAAE,EAAE;YACnB,aAAa,EAAE,wBAAwB,CAAC,KAAK;YAC7C,SAAS,EAAE,IAAI,eAAe,CAAK,EAAE,CAAC;SACzC,CAAC;IACN,CAAC;IAEO,kBAAkB;QACtB,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,MAAM,YAAY,GAAwC;YACtD,SAAS;YACT,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,YAAY,CAAC;IACrD,CAAC;CACJ;AAED,MAAM,6BAA6B,GAAG,uBAAuB,CAAC,OAAO,CAAC;IAClE,QAAQ,EAAE,4BAA4B;IACtC,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,6BAA6B,EAAE,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,mCAAmC,CAAC","sourcesContent":["import {\n DesignSystem,\n DesignTokenSubscriber\n} from '@microsoft/fast-foundation';\nimport { styles } from '../base/styles';\nimport { template } from '../base/template';\nimport type { TableNumberField } from '../../table/types';\nimport { TableColumnSortOperation } from '../base/types';\nimport { tableColumnDurationTextCellViewTag } from './cell-view';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\nimport { lang } from '../../theme-provider';\nimport { DurationFormatter } from './models/duration-formatter';\nimport { tableColumnDurationTextGroupHeaderViewTag } from './group-header-view';\nimport type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';\nimport { TableColumnTextBase, mixinTextBase } from '../text-base';\nimport { ColumnValidator } from '../base/models/column-validator';\n\nexport type TableColumnDurationTextCellRecord = TableNumberField<'value'>;\nexport interface TableColumnDurationTextColumnConfig\n extends TableColumnTextBaseColumnConfig {\n formatter: DurationFormatter;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-duration-text': TableColumnDurationText;\n }\n}\n\n/**\n * The table column for displaying a duration value as text.\n */\nexport class TableColumnDurationText extends mixinTextBase(\n TableColumnTextBase<TableColumnDurationTextColumnConfig>\n) {\n private readonly langSubscriber: DesignTokenSubscriber<typeof lang> = {\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 {\n return {\n cellRecordFieldNames: ['value'],\n cellViewTag: tableColumnDurationTextCellViewTag,\n groupHeaderViewTag: tableColumnDurationTextGroupHeaderViewTag,\n delegatedEvents: [],\n sortOperation: TableColumnSortOperation.basic,\n validator: new ColumnValidator<[]>([])\n };\n }\n\n private updateColumnConfig(): void {\n const formatter = new DurationFormatter(lang.getValueFor(this));\n\n const columnConfig: TableColumnDurationTextColumnConfig = {\n formatter,\n placeholder: this.placeholder\n };\n this.columnInternals.columnConfig = columnConfig;\n }\n}\n\nconst nimbleTableColumnDurationText = TableColumnDurationText.compose({\n baseName: 'table-column-duration-text',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnDurationText());\nexport const tableColumnDurationTextTag = 'nimble-table-column-duration-text';\n"]}
@@ -15,9 +15,7 @@ export interface TableColumnEnumColumnConfig extends TableColumnTextBaseColumnCo
15
15
  /**
16
16
  * Base class for table columns that map values to content (e.g. nimble-table-column-enum-text and nimble-table-column-icon)
17
17
  */
18
- export declare abstract class TableColumnEnumBase<TColumnConfig extends TableColumnEnumColumnConfig, TEnumValidator extends TableColumnEnumBaseValidator<[]>> extends TableColumn<TColumnConfig> implements Subscriber {
19
- /** @internal */
20
- validator: TEnumValidator;
18
+ export declare abstract class TableColumnEnumBase<TColumnConfig extends TableColumnEnumColumnConfig, TEnumValidator extends TableColumnEnumBaseValidator<[]>> extends TableColumn<TColumnConfig, TEnumValidator> implements Subscriber {
21
19
  /** @internal */
22
20
  mappingNotifiers: Notifier[];
23
21
  /** @internal */
@@ -31,7 +29,6 @@ export declare abstract class TableColumnEnumBase<TColumnConfig extends TableCol
31
29
  * a mapping is updated.
32
30
  */
33
31
  handleChange(source: unknown, args: unknown): void;
34
- abstract createValidator(): TEnumValidator;
35
32
  /**
36
33
  * Implementations should throw an error if an invalid Mapping is passed.
37
34
  */
@@ -9,10 +9,6 @@ import { resolveKeyWithType } from './models/mapping-key-resolver';
9
9
  export class TableColumnEnumBase extends TableColumn {
10
10
  constructor() {
11
11
  super(...arguments);
12
- // To ensure the validator is available when other properties get initialized
13
- // (which can trigger validation), declare the validator first.
14
- /** @internal */
15
- this.validator = this.createValidator();
16
12
  /** @internal */
17
13
  this.mappingNotifiers = [];
18
14
  /** @internal */
@@ -34,8 +30,8 @@ export class TableColumnEnumBase extends TableColumn {
34
30
  * Called when any Mapping related state has changed.
35
31
  */
36
32
  updateColumnConfig() {
37
- this.validator.validate(this.mappings, this.keyType);
38
- this.columnInternals.columnConfig = this.validator.isValid()
33
+ this.columnInternals.validator.validate(this.mappings, this.keyType);
34
+ this.columnInternals.columnConfig = this.checkValidity()
39
35
  ? this.createColumnConfig(this.getMappingConfigs())
40
36
  : undefined;
41
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/enum-base/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n attr,\n Notifier,\n Observable,\n observable,\n Subscriber\n} from '@microsoft/fast-element';\nimport type {\n TableStringField,\n TableBooleanField,\n TableNumberField\n} from '../../table/types';\nimport { TableColumn } from '../base';\nimport { Mapping } from '../../mapping/base';\nimport type { MappingKeyType } from './types';\nimport type { MappingConfig } from './models/mapping-config';\nimport type { MappingKey } from '../../mapping/base/types';\nimport { resolveKeyWithType } from './models/mapping-key-resolver';\nimport type { TableColumnEnumBaseValidator } from './models/table-column-enum-base-validator';\nimport type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';\n\nexport type TableColumnEnumCellRecord =\n | TableStringField<'value'>\n | TableBooleanField<'value'>\n | TableNumberField<'value'>;\nexport type MappingConfigs = Map<MappingKey, MappingConfig>;\nexport interface TableColumnEnumColumnConfig\n extends TableColumnTextBaseColumnConfig {\n mappingConfigs: MappingConfigs;\n}\n\n/**\n * Base class for table columns that map values to content (e.g. nimble-table-column-enum-text and nimble-table-column-icon)\n */\nexport abstract class TableColumnEnumBase<\n TColumnConfig extends TableColumnEnumColumnConfig,\n TEnumValidator extends TableColumnEnumBaseValidator<[]>\n>\n extends TableColumn<TColumnConfig>\n implements Subscriber {\n // To ensure the validator is available when other properties get initialized\n // (which can trigger validation), declare the validator first.\n /** @internal */\n public validator = this.createValidator();\n\n /** @internal */\n public mappingNotifiers: Notifier[] = [];\n\n /** @internal */\n @observable\n public mappings: Mapping<unknown>[] = [];\n\n @attr({ attribute: 'field-name' })\n public fieldName?: string;\n\n @attr({ attribute: 'key-type' })\n public keyType: MappingKeyType = 'string';\n\n /**\n * @internal\n *\n * Triggers a request to update the columnConfig when any observable property on\n * a mapping is updated.\n */\n public handleChange(source: unknown, args: unknown): void {\n if (source instanceof Mapping && typeof args === 'string') {\n this.updateColumnConfig();\n }\n }\n\n public abstract createValidator(): TEnumValidator;\n\n /**\n * Implementations should throw an error if an invalid Mapping is passed.\n */\n protected abstract createMappingConfig(\n mapping: Mapping<unknown>\n ): MappingConfig;\n\n protected abstract createColumnConfig(\n mappingConfigs: MappingConfigs\n ): TColumnConfig;\n\n /**\n * Called when any Mapping related state has changed.\n */\n private updateColumnConfig(): void {\n this.validator.validate(this.mappings, this.keyType);\n this.columnInternals.columnConfig = this.validator.isValid()\n ? this.createColumnConfig(this.getMappingConfigs())\n : undefined;\n }\n\n private getMappingConfigs(): MappingConfigs {\n const mappingConfigs = new Map<MappingKey, MappingConfig>();\n this.mappings.forEach(mapping => {\n const key = resolveKeyWithType(mapping.key, this.keyType);\n if (key === undefined) {\n throw Error(\n 'Key was invalid for type. Validation should have prevented this.'\n );\n }\n const mappingConfig = this.createMappingConfig(mapping);\n mappingConfigs.set(key, mappingConfig);\n });\n return mappingConfigs;\n }\n\n private fieldNameChanged(): void {\n this.columnInternals.dataRecordFieldNames = [this.fieldName];\n this.columnInternals.operandDataRecordFieldName = this.fieldName;\n }\n\n private mappingsChanged(): void {\n this.updateColumnConfig();\n this.observeMappings();\n }\n\n private keyTypeChanged(): void {\n this.updateColumnConfig();\n }\n\n private removeMappingObservers(): void {\n this.mappingNotifiers.forEach(notifier => {\n notifier.unsubscribe(this);\n });\n this.mappingNotifiers = [];\n }\n\n private observeMappings(): void {\n this.removeMappingObservers();\n\n for (const mapping of this.mappings) {\n const notifier = Observable.getNotifier(mapping);\n notifier.subscribe(this);\n this.mappingNotifiers.push(notifier);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/enum-base/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n attr,\n Notifier,\n Observable,\n observable,\n Subscriber\n} from '@microsoft/fast-element';\nimport type {\n TableStringField,\n TableBooleanField,\n TableNumberField\n} from '../../table/types';\nimport { TableColumn } from '../base';\nimport { Mapping } from '../../mapping/base';\nimport type { MappingKeyType } from './types';\nimport type { MappingConfig } from './models/mapping-config';\nimport type { MappingKey } from '../../mapping/base/types';\nimport { resolveKeyWithType } from './models/mapping-key-resolver';\nimport type { TableColumnEnumBaseValidator } from './models/table-column-enum-base-validator';\nimport type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';\n\nexport type TableColumnEnumCellRecord =\n | TableStringField<'value'>\n | TableBooleanField<'value'>\n | TableNumberField<'value'>;\nexport type MappingConfigs = Map<MappingKey, MappingConfig>;\nexport interface TableColumnEnumColumnConfig\n extends TableColumnTextBaseColumnConfig {\n mappingConfigs: MappingConfigs;\n}\n\n/**\n * Base class for table columns that map values to content (e.g. nimble-table-column-enum-text and nimble-table-column-icon)\n */\nexport abstract class TableColumnEnumBase<\n TColumnConfig extends TableColumnEnumColumnConfig,\n TEnumValidator extends TableColumnEnumBaseValidator<[]>\n>\n extends TableColumn<TColumnConfig, TEnumValidator>\n implements Subscriber {\n /** @internal */\n public mappingNotifiers: Notifier[] = [];\n\n /** @internal */\n @observable\n public mappings: Mapping<unknown>[] = [];\n\n @attr({ attribute: 'field-name' })\n public fieldName?: string;\n\n @attr({ attribute: 'key-type' })\n public keyType: MappingKeyType = 'string';\n\n /**\n * @internal\n *\n * Triggers a request to update the columnConfig when any observable property on\n * a mapping is updated.\n */\n public handleChange(source: unknown, args: unknown): void {\n if (source instanceof Mapping && typeof args === 'string') {\n this.updateColumnConfig();\n }\n }\n\n /**\n * Implementations should throw an error if an invalid Mapping is passed.\n */\n protected abstract createMappingConfig(\n mapping: Mapping<unknown>\n ): MappingConfig;\n\n protected abstract createColumnConfig(\n mappingConfigs: MappingConfigs\n ): TColumnConfig;\n\n /**\n * Called when any Mapping related state has changed.\n */\n private updateColumnConfig(): void {\n this.columnInternals.validator.validate(this.mappings, this.keyType);\n this.columnInternals.columnConfig = this.checkValidity()\n ? this.createColumnConfig(this.getMappingConfigs())\n : undefined;\n }\n\n private getMappingConfigs(): MappingConfigs {\n const mappingConfigs = new Map<MappingKey, MappingConfig>();\n this.mappings.forEach(mapping => {\n const key = resolveKeyWithType(mapping.key, this.keyType);\n if (key === undefined) {\n throw Error(\n 'Key was invalid for type. Validation should have prevented this.'\n );\n }\n const mappingConfig = this.createMappingConfig(mapping);\n mappingConfigs.set(key, mappingConfig);\n });\n return mappingConfigs;\n }\n\n private fieldNameChanged(): void {\n this.columnInternals.dataRecordFieldNames = [this.fieldName];\n this.columnInternals.operandDataRecordFieldName = this.fieldName;\n }\n\n private mappingsChanged(): void {\n this.updateColumnConfig();\n this.observeMappings();\n }\n\n private keyTypeChanged(): void {\n this.updateColumnConfig();\n }\n\n private removeMappingObservers(): void {\n this.mappingNotifiers.forEach(notifier => {\n notifier.unsubscribe(this);\n });\n this.mappingNotifiers = [];\n }\n\n private observeMappings(): void {\n this.removeMappingObservers();\n\n for (const mapping of this.mappings) {\n const notifier = Observable.getNotifier(mapping);\n notifier.subscribe(this);\n this.mappingNotifiers.push(notifier);\n }\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import { ColumnValidator } from '../../base/models/column-validator';
2
- import type { ColumnInternals } from '../../base/models/column-internals';
3
2
  import type { Mapping } from '../../../mapping/base';
4
3
  import type { MappingKeyType } from '../types';
5
4
  export declare const enumBaseValidityFlagNames: readonly ["invalidMappingKeyValueForType", "duplicateMappingKey", "missingKeyValue"];
@@ -7,7 +6,7 @@ export declare const enumBaseValidityFlagNames: readonly ["invalidMappingKeyValu
7
6
  * Validator for TableColumnEnumText. Implementations MUST include enumBaseValidityFlagNames in validity flag names set.
8
7
  */
9
8
  export declare abstract class TableColumnEnumBaseValidator<ValidityFlagNames extends readonly string[]> extends ColumnValidator<typeof enumBaseValidityFlagNames | ValidityFlagNames> {
10
- constructor(columnInternals: ColumnInternals<unknown>, configValidityKeys: ValidityFlagNames);
9
+ constructor(configValidityKeys: ValidityFlagNames);
11
10
  validate(mappings: Mapping<unknown>[], keyType: MappingKeyType): void;
12
11
  private validateKeyValuesForType;
13
12
  private validateUniqueKeys;
@@ -9,8 +9,8 @@ export const enumBaseValidityFlagNames = [
9
9
  * Validator for TableColumnEnumText. Implementations MUST include enumBaseValidityFlagNames in validity flag names set.
10
10
  */
11
11
  export class TableColumnEnumBaseValidator extends ColumnValidator {
12
- constructor(columnInternals, configValidityKeys) {
13
- super(columnInternals, configValidityKeys);
12
+ constructor(configValidityKeys) {
13
+ super(configValidityKeys);
14
14
  }
15
15
  validate(mappings, keyType) {
16
16
  this.untrackAll();
@@ -1 +1 @@
1
- {"version":3,"file":"table-column-enum-base-validator.js","sourceRoot":"","sources":["../../../../../src/table-column/enum-base/models/table-column-enum-base-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAIrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,+BAA+B;IAC/B,qBAAqB;IACrB,iBAAiB;CACX,CAAC;AAEX;;GAEG;AACH,MAAM,OAAgB,4BAEpB,SAAQ,eAEL;IACD,YACI,eAAyC,EACzC,kBAAqC;QAErC,KAAK,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;IAC/C,CAAC;IAEM,QAAQ,CACX,QAA4B,EAC5B,OAAuB;QAEvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEO,wBAAwB,CAC5B,IAAe,EACf,OAAuB;QAEvB,yEAAyE;QACzE,0EAA0E;QAC1E,yCAAyC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACrB,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS;eACjB,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,SAAS,CACxD,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAEO,kBAAkB,CAAC,IAAe,EAAE,OAAuB;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC;QAC7D,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEO,qBAAqB,CAAC,QAA4B;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;CACJ","sourcesContent":["import { ColumnValidator } from '../../base/models/column-validator';\nimport type { ColumnInternals } from '../../base/models/column-internals';\nimport type { Mapping } from '../../../mapping/base';\nimport type { MappingKeyType } from '../types';\nimport { resolveKeyWithType } from './mapping-key-resolver';\n\nexport const enumBaseValidityFlagNames = [\n 'invalidMappingKeyValueForType',\n 'duplicateMappingKey',\n 'missingKeyValue'\n] as const;\n\n/**\n * Validator for TableColumnEnumText. Implementations MUST include enumBaseValidityFlagNames in validity flag names set.\n */\nexport abstract class TableColumnEnumBaseValidator<\n ValidityFlagNames extends readonly string[]\n> extends ColumnValidator<\n typeof enumBaseValidityFlagNames | ValidityFlagNames\n > {\n public constructor(\n columnInternals: ColumnInternals<unknown>,\n configValidityKeys: ValidityFlagNames\n ) {\n super(columnInternals, configValidityKeys);\n }\n\n public validate(\n mappings: Mapping<unknown>[],\n keyType: MappingKeyType\n ): void {\n this.untrackAll();\n const keys = mappings.map(mapping => mapping.key);\n this.validateKeyValuesForType(keys, keyType);\n this.validateUniqueKeys(keys, keyType);\n this.validateNoMissingKeys(mappings);\n }\n\n private validateKeyValuesForType(\n keys: unknown[],\n keyType: MappingKeyType\n ): void {\n // Ignore undefined keys, because validateNoMissingKeys covers that case.\n // We should only set 'invalidMappingKeyValueForType' when there is a key,\n // but it isn't appropriate for the type.\n const invalid = keys.some(\n key => key !== undefined\n && resolveKeyWithType(key, keyType) === undefined\n );\n this.setConditionValue('invalidMappingKeyValueForType', invalid);\n }\n\n private validateUniqueKeys(keys: unknown[], keyType: MappingKeyType): void {\n const typedKeys = keys.map(x => resolveKeyWithType(x, keyType));\n const invalid = new Set(typedKeys).size !== typedKeys.length;\n this.setConditionValue('duplicateMappingKey', invalid);\n }\n\n private validateNoMissingKeys(mappings: Mapping<unknown>[]): void {\n const invalid = mappings.some(mapping => mapping.key === undefined);\n this.setConditionValue('missingKeyValue', invalid);\n }\n}\n"]}
1
+ {"version":3,"file":"table-column-enum-base-validator.js","sourceRoot":"","sources":["../../../../../src/table-column/enum-base/models/table-column-enum-base-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAGrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,+BAA+B;IAC/B,qBAAqB;IACrB,iBAAiB;CACX,CAAC;AAEX;;GAEG;AACH,MAAM,OAAgB,4BAEpB,SAAQ,eAEL;IACD,YAAmB,kBAAqC;QACpD,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC9B,CAAC;IAEM,QAAQ,CACX,QAA4B,EAC5B,OAAuB;QAEvB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEO,wBAAwB,CAC5B,IAAe,EACf,OAAuB;QAEvB,yEAAyE;QACzE,0EAA0E;QAC1E,yCAAyC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACrB,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS;eACjB,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,SAAS,CACxD,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAEO,kBAAkB,CAAC,IAAe,EAAE,OAAuB;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC;QAC7D,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEO,qBAAqB,CAAC,QAA4B;QACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;CACJ","sourcesContent":["import { ColumnValidator } from '../../base/models/column-validator';\nimport type { Mapping } from '../../../mapping/base';\nimport type { MappingKeyType } from '../types';\nimport { resolveKeyWithType } from './mapping-key-resolver';\n\nexport const enumBaseValidityFlagNames = [\n 'invalidMappingKeyValueForType',\n 'duplicateMappingKey',\n 'missingKeyValue'\n] as const;\n\n/**\n * Validator for TableColumnEnumText. Implementations MUST include enumBaseValidityFlagNames in validity flag names set.\n */\nexport abstract class TableColumnEnumBaseValidator<\n ValidityFlagNames extends readonly string[]\n> extends ColumnValidator<\n typeof enumBaseValidityFlagNames | ValidityFlagNames\n > {\n public constructor(configValidityKeys: ValidityFlagNames) {\n super(configValidityKeys);\n }\n\n public validate(\n mappings: Mapping<unknown>[],\n keyType: MappingKeyType\n ): void {\n this.untrackAll();\n const keys = mappings.map(mapping => mapping.key);\n this.validateKeyValuesForType(keys, keyType);\n this.validateUniqueKeys(keys, keyType);\n this.validateNoMissingKeys(mappings);\n }\n\n private validateKeyValuesForType(\n keys: unknown[],\n keyType: MappingKeyType\n ): void {\n // Ignore undefined keys, because validateNoMissingKeys covers that case.\n // We should only set 'invalidMappingKeyValueForType' when there is a key,\n // but it isn't appropriate for the type.\n const invalid = keys.some(\n key => key !== undefined\n && resolveKeyWithType(key, keyType) === undefined\n );\n this.setConditionValue('invalidMappingKeyValueForType', invalid);\n }\n\n private validateUniqueKeys(keys: unknown[], keyType: MappingKeyType): void {\n const typedKeys = keys.map(x => resolveKeyWithType(x, keyType));\n const invalid = new Set(typedKeys).size !== typedKeys.length;\n this.setConditionValue('duplicateMappingKey', invalid);\n }\n\n private validateNoMissingKeys(mappings: Mapping<unknown>[]): void {\n const invalid = mappings.some(mapping => mapping.key === undefined);\n this.setConditionValue('missingKeyValue', invalid);\n }\n}\n"]}
@@ -1,5 +1,4 @@
1
1
  import { MappingConfigs, TableColumnEnumBase, TableColumnEnumColumnConfig } from '../enum-base';
2
- import { TableColumnValidity } from '../base/types';
3
2
  import { TableColumnEnumTextValidator } from './models/table-column-enum-text-validator';
4
3
  import type { ColumnInternalsOptions } from '../base/models/column-internals';
5
4
  import type { Mapping } from '../../mapping/base';
@@ -14,13 +13,13 @@ declare const TableColumnEnumText_base: (abstract new (...args: any[]) => {
14
13
  groupIndex?: number | null | undefined;
15
14
  groupingDisabledChanged(): void;
16
15
  groupIndexChanged(): void;
17
- readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown>;
16
+ readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, import("../base/models/column-validator").ColumnValidator<[]>>;
18
17
  }) & (abstract new (...args: any[]) => {
19
18
  fractionalWidth?: number | null | undefined;
20
19
  minPixelWidth?: number | null | undefined;
21
20
  fractionalWidthChanged(): void;
22
21
  minPixelWidthChanged(): void;
23
- readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown>;
22
+ readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, import("../base/models/column-validator").ColumnValidator<[]>>;
24
23
  }) & ((abstract new () => TableColumnEnumBase<TableColumnEnumColumnConfig, TableColumnEnumTextValidator>) & {
25
24
  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>;
26
25
  from<TBase extends {
@@ -33,9 +32,7 @@ declare const TableColumnEnumText_base: (abstract new (...args: any[]) => {
33
32
  * Table column that maps values to strings
34
33
  */
35
34
  export declare class TableColumnEnumText extends TableColumnEnumText_base {
36
- createValidator(): TableColumnEnumTextValidator;
37
- get validity(): TableColumnValidity;
38
- protected getColumnInternalsOptions(): ColumnInternalsOptions;
35
+ protected getColumnInternalsOptions(): ColumnInternalsOptions<TableColumnEnumTextValidator>;
39
36
  protected createColumnConfig(mappingConfigs: MappingConfigs): TableColumnEnumColumnConfig;
40
37
  protected createMappingConfig(mapping: Mapping<unknown>): MappingConfig;
41
38
  }