@ni/nimble-components 29.8.1 → 29.9.0
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.
- package/dist/all-components-bundle.js +157 -29
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +4261 -4258
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/table/index.d.ts +2 -1
- package/dist/esm/table/index.js +15 -14
- package/dist/esm/table/index.js.map +1 -1
- package/dist/esm/table/template.js +1 -1
- package/dist/esm/table/template.js.map +1 -1
- package/dist/esm/table/testing/table.pageobject.js +10 -4
- package/dist/esm/table/testing/table.pageobject.js.map +1 -1
- package/dist/esm/table-column/anchor/index.d.ts +23 -6
- package/dist/esm/table-column/anchor/index.js +14 -5
- package/dist/esm/table-column/anchor/index.js.map +1 -1
- package/dist/esm/table-column/anchor/models/table-column-anchor-validator.d.ts +8 -0
- package/dist/esm/table-column/anchor/models/table-column-anchor-validator.js +13 -0
- package/dist/esm/table-column/anchor/models/table-column-anchor-validator.js.map +1 -0
- package/dist/esm/table-column/base/models/column-validator.d.ts +1 -1
- package/dist/esm/table-column/base/models/column-validator.js +4 -4
- package/dist/esm/table-column/base/models/column-validator.js.map +1 -1
- package/dist/esm/table-column/mixins/custom-sort-order.d.ts +26 -0
- package/dist/esm/table-column/mixins/custom-sort-order.js +66 -0
- package/dist/esm/table-column/mixins/custom-sort-order.js.map +1 -0
- package/dist/esm/table-column/text/index.d.ts +24 -6
- package/dist/esm/table-column/text/index.js +20 -4
- package/dist/esm/table-column/text/index.js.map +1 -1
- package/dist/esm/table-column/text/models/table-column-text-validator.d.ts +8 -0
- package/dist/esm/table-column/text/models/table-column-text-validator.js +13 -0
- package/dist/esm/table-column/text/models/table-column-text-validator.js.map +1 -0
- package/dist/esm/utilities/models/tracker.d.ts +1 -0
- package/dist/esm/utilities/models/tracker.js +19 -2
- package/dist/esm/utilities/models/tracker.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-sort-order.js","sourceRoot":"","sources":["../../../../src/table-column/mixins/custom-sort-order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,UAAU,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAWzD,4HAA4H;AAC5H,+HAA+H;AAC/H,MAAM,UAAU,6BAA6B,CAG3C,IAAW;IACT;;;OAGG;IACH,MAAe,qBAAsB,SAAQ,IAAI;QAAjD;;YAMI,gBAAgB;YACT,uCAAkC,GAAG;gBACxC,YAAY,EAAE,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC;aAClE,CAAC;QAoEN,CAAC;QAlEU,qCAAqC,CACxC,uBAA2C;YAE3C,OAAO,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ;gBAC3C,CAAC,CAAC,IAAI,CAAC,eAAe;gBACtB,CAAC,CAAC,uBAAuB,CAAC;QAClC,CAAC;QAEM,wBAAwB,CAC3B,oBAA8C;YAE9C,OAAO,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ;gBAC3C,CAAC,CAAC,wBAAwB,CAAC,KAAK;gBAChC,CAAC,CAAC,oBAAoB,CAAC;QAC/B,CAAC;QAED,gBAAgB;QACT,sBAAsB;YACzB,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,iCAAiC,EAAE,CAAC;YAEzC,IACI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ;mBACrC,CAAC,IAAI,CAAC,6BAA6B,EACxC;gBACE,IAAI,CAAC,6BAA6B,GAAG,UAAU,CAAC,WAAW,CACvD,IAAI,CAAC,eAAe,CACvB,CAAC;gBACF,IAAI,CAAC,6BAA6B,CAAC,SAAS,CACxC,IAAI,CAAC,kCAAkC,CAC1C,CAAC;aACL;iBAAM;gBACH,IAAI,CAAC,6BAA6B,EAAE,WAAW,CAC3C,IAAI,CAAC,kCAAkC,CAC1C,CAAC;gBACF,IAAI,CAAC,6BAA6B,GAAG,SAAS,CAAC;aAClD;QACL,CAAC;QAID,gBAAgB;QACT,iCAAiC,CACpC,OAAgB,EAChB,IAAa;YAEb,IAAI,IAAI,KAAK,kBAAkB,EAAE;gBAC7B,IAAI,CAAC,iCAAiC,EAAE,CAAC;aAC5C;QACL,CAAC;QAED,gBAAgB;QACT,iCAAiC;YACpC,MAAM,sBAAsB,GAAG,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC;YACxE,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;YACjE,MAAM,OAAO,GAAG,CAAC,iBAAiB,IAAI,CAAC,sBAAsB,CAAC;YAC9D,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAClC,+BAA+B,CAClC,CAAC;aACL;iBAAM;gBACH,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAChC,+BAA+B,CAClC,CAAC;aACL;QACL,CAAC;KACJ;IAED,IAAI,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;IACrC,iEAAiE;IACjE,qBAAqB,CAAC,SAAS,EAC/B,iBAAiB,CACpB,CAAC;IAEF,OAAO,qBAAqB,CAAC;AACjC,CAAC","sourcesContent":["import { Notifier, Observable, attr } from '@microsoft/fast-element';\nimport type { TableColumn } from '../base';\nimport { TableColumnSortOperation } from '../base/types';\nimport type { ColumnValidator } from '../base/models/column-validator';\n\n// Pick just the relevant properties the mixin depends on (typescript complains if the mixin declares private / protected base exports)\ntype CustomSortOrderTableColumn<\n TColumnValidator extends ColumnValidator<['invalidCustomSortWithGrouping']>\n> = Pick<TableColumn<unknown, TColumnValidator>, 'columnInternals'>;\n// prettier-ignore\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype CustomSortOrderTableColumnConstructor<TColumnValidator extends ColumnValidator<['invalidCustomSortWithGrouping']>> = abstract new (...args: any[]) => CustomSortOrderTableColumn<TColumnValidator>;\n\n// As the returned class is internal to the function, we can't write a signature that uses is directly, so rely on inference\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type\nexport function mixinCustomSortOrderColumnAPI<\n TBase extends CustomSortOrderTableColumnConstructor<TColumnValidator>,\n TColumnValidator extends ColumnValidator<['invalidCustomSortWithGrouping']>\n>(base: TBase) {\n /**\n * The Mixin that provides a concrete column with the API to allow sorting\n * by a field other than the default for that column.\n */\n abstract class CustomSortOrderColumn extends base {\n public sortByFieldName?: string;\n\n /** @internal */\n public customSortOrderColumnNotifier?: Notifier;\n\n /** @internal */\n public customSortOrderColumnChangeHandler = {\n handleChange: this.handleCustomSortOrderColumnChange.bind(this)\n };\n\n public getResolvedOperandDataRecordFieldName(\n initialOperandFieldName: string | undefined\n ): string | undefined {\n return typeof this.sortByFieldName === 'string'\n ? this.sortByFieldName\n : initialOperandFieldName;\n }\n\n public getResolvedSortOperation(\n initialSortOperation: TableColumnSortOperation\n ): TableColumnSortOperation {\n return typeof this.sortByFieldName === 'string'\n ? TableColumnSortOperation.basic\n : initialSortOperation;\n }\n\n /** @internal */\n public sortByFieldNameChanged(): void {\n this.handleSortConfigurationChange();\n this.updateCustomColumnSortingValidity();\n\n if (\n typeof this.sortByFieldName === 'string'\n && !this.customSortOrderColumnNotifier\n ) {\n this.customSortOrderColumnNotifier = Observable.getNotifier(\n this.columnInternals\n );\n this.customSortOrderColumnNotifier.subscribe(\n this.customSortOrderColumnChangeHandler\n );\n } else {\n this.customSortOrderColumnNotifier?.unsubscribe(\n this.customSortOrderColumnChangeHandler\n );\n this.customSortOrderColumnNotifier = undefined;\n }\n }\n\n public abstract handleSortConfigurationChange(): void;\n\n /** @internal */\n public handleCustomSortOrderColumnChange(\n _source: unknown,\n args: unknown\n ): void {\n if (args === 'groupingDisabled') {\n this.updateCustomColumnSortingValidity();\n }\n }\n\n /** @internal */\n public updateCustomColumnSortingValidity(): void {\n const hasCustomColumnSorting = typeof this.sortByFieldName === 'string';\n const isGroupingEnabled = !this.columnInternals.groupingDisabled;\n const isValid = !isGroupingEnabled || !hasCustomColumnSorting;\n if (isValid) {\n this.columnInternals.validator.untrack(\n 'invalidCustomSortWithGrouping'\n );\n } else {\n this.columnInternals.validator.track(\n 'invalidCustomSortWithGrouping'\n );\n }\n }\n }\n\n attr({ attribute: 'sort-by-field-name' })(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n CustomSortOrderColumn.prototype,\n 'sortByFieldName'\n );\n\n return CustomSortOrderColumn;\n}\n"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { TableStringField } from '../../table/types';
|
|
2
2
|
import { TableColumnTextBase } from '../text-base';
|
|
3
|
+
import { TableColumnSortOperation } from '../base/types';
|
|
3
4
|
import type { ColumnInternalsOptions } from '../base/models/column-internals';
|
|
4
5
|
import type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';
|
|
5
|
-
import {
|
|
6
|
+
import { TableColumnTextValidator } from './models/table-column-text-validator';
|
|
6
7
|
export type TableColumnTextCellRecord = TableStringField<'value'>;
|
|
7
8
|
export interface TableColumnTextColumnConfig extends TableColumnTextBaseColumnConfig {
|
|
8
9
|
}
|
|
@@ -12,17 +13,30 @@ declare global {
|
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
15
|
declare const TableColumnText_base: (abstract new (...args: any[]) => {
|
|
16
|
+
sortByFieldName?: string | undefined;
|
|
17
|
+
customSortOrderColumnNotifier?: import("@microsoft/fast-element").Notifier | undefined;
|
|
18
|
+
customSortOrderColumnChangeHandler: {
|
|
19
|
+
handleChange: (_source: unknown, args: unknown) => void;
|
|
20
|
+
};
|
|
21
|
+
getResolvedOperandDataRecordFieldName(initialOperandFieldName: string | undefined): string | undefined;
|
|
22
|
+
getResolvedSortOperation(initialSortOperation: TableColumnSortOperation): TableColumnSortOperation;
|
|
23
|
+
sortByFieldNameChanged(): void;
|
|
24
|
+
handleSortConfigurationChange(): void;
|
|
25
|
+
handleCustomSortOrderColumnChange(_source: unknown, args: unknown): void;
|
|
26
|
+
updateCustomColumnSortingValidity(): void;
|
|
27
|
+
readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, import("../base/models/column-validator").ColumnValidator<["invalidCustomSortWithGrouping"]>>;
|
|
28
|
+
}) & (abstract new (...args: any[]) => {
|
|
15
29
|
groupingDisabled: boolean;
|
|
16
30
|
groupIndex?: number | null | undefined;
|
|
17
31
|
groupingDisabledChanged(): void;
|
|
18
32
|
groupIndexChanged(): void;
|
|
19
|
-
readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, ColumnValidator<[]>>;
|
|
33
|
+
readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, import("../base/models/column-validator").ColumnValidator<[]>>;
|
|
20
34
|
}) & (abstract new (...args: any[]) => {
|
|
21
35
|
fractionalWidth?: number | null | undefined;
|
|
22
36
|
minPixelWidth?: number | null | undefined;
|
|
23
37
|
fractionalWidthChanged(): void;
|
|
24
38
|
minPixelWidthChanged(): void;
|
|
25
|
-
readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, ColumnValidator<[]>>;
|
|
39
|
+
readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, import("../base/models/column-validator").ColumnValidator<[]>>;
|
|
26
40
|
}) & (abstract new (...args: any[]) => {
|
|
27
41
|
placeholder?: string | undefined;
|
|
28
42
|
placeholderChanged(): void;
|
|
@@ -33,8 +47,8 @@ declare const TableColumnText_base: (abstract new (...args: any[]) => {
|
|
|
33
47
|
sortingDisabledChanged(): void;
|
|
34
48
|
sortDirectionChanged(): void;
|
|
35
49
|
sortIndexChanged(): void;
|
|
36
|
-
readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, ColumnValidator<[]>>;
|
|
37
|
-
}) & ((abstract new () => TableColumnTextBase<TableColumnTextColumnConfig,
|
|
50
|
+
readonly columnInternals: import("../base/models/column-internals").ColumnInternals<unknown, import("../base/models/column-validator").ColumnValidator<[]>>;
|
|
51
|
+
}) & ((abstract new () => TableColumnTextBase<TableColumnTextColumnConfig, TableColumnTextValidator>) & {
|
|
38
52
|
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>;
|
|
39
53
|
from<TBase extends {
|
|
40
54
|
new (): HTMLElement;
|
|
@@ -46,8 +60,12 @@ declare const TableColumnText_base: (abstract new (...args: any[]) => {
|
|
|
46
60
|
* The table column for displaying string fields as text.
|
|
47
61
|
*/
|
|
48
62
|
export declare class TableColumnText extends TableColumnText_base {
|
|
63
|
+
private readonly defaultSortOperation;
|
|
49
64
|
placeholderChanged(): void;
|
|
50
|
-
|
|
65
|
+
handleSortConfigurationChange(): void;
|
|
66
|
+
protected getColumnInternalsOptions(): ColumnInternalsOptions<TableColumnTextValidator>;
|
|
67
|
+
protected fieldNameChanged(): void;
|
|
68
|
+
private updateColumnInternalsSortConfiguration;
|
|
51
69
|
}
|
|
52
70
|
export declare const tableColumnTextTag = "nimble-table-column-text";
|
|
53
71
|
export {};
|
|
@@ -5,26 +5,42 @@ import { TableColumnTextBase, mixinTextBase } from '../text-base';
|
|
|
5
5
|
import { TableColumnSortOperation } from '../base/types';
|
|
6
6
|
import { tableColumnTextGroupHeaderViewTag } from './group-header-view';
|
|
7
7
|
import { tableColumnTextCellViewTag } from './cell-view';
|
|
8
|
-
import {
|
|
8
|
+
import { mixinCustomSortOrderColumnAPI } from '../mixins/custom-sort-order';
|
|
9
|
+
import { TableColumnTextValidator } from './models/table-column-text-validator';
|
|
9
10
|
/**
|
|
10
11
|
* The table column for displaying string fields as text.
|
|
11
12
|
*/
|
|
12
|
-
export class TableColumnText extends mixinTextBase((TableColumnTextBase)) {
|
|
13
|
+
export class TableColumnText extends mixinCustomSortOrderColumnAPI(mixinTextBase((TableColumnTextBase))) {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.defaultSortOperation = TableColumnSortOperation.localeAwareCaseSensitive;
|
|
17
|
+
}
|
|
13
18
|
placeholderChanged() {
|
|
14
19
|
this.columnInternals.columnConfig = {
|
|
15
20
|
placeholder: this.placeholder
|
|
16
21
|
};
|
|
17
22
|
}
|
|
23
|
+
handleSortConfigurationChange() {
|
|
24
|
+
this.updateColumnInternalsSortConfiguration();
|
|
25
|
+
}
|
|
18
26
|
getColumnInternalsOptions() {
|
|
19
27
|
return {
|
|
20
28
|
cellRecordFieldNames: ['value'],
|
|
21
29
|
cellViewTag: tableColumnTextCellViewTag,
|
|
22
30
|
groupHeaderViewTag: tableColumnTextGroupHeaderViewTag,
|
|
23
31
|
delegatedEvents: [],
|
|
24
|
-
sortOperation:
|
|
25
|
-
validator: new
|
|
32
|
+
sortOperation: this.getResolvedSortOperation(this.defaultSortOperation),
|
|
33
|
+
validator: new TableColumnTextValidator()
|
|
26
34
|
};
|
|
27
35
|
}
|
|
36
|
+
fieldNameChanged() {
|
|
37
|
+
this.columnInternals.dataRecordFieldNames = [this.fieldName];
|
|
38
|
+
this.updateColumnInternalsSortConfiguration();
|
|
39
|
+
}
|
|
40
|
+
updateColumnInternalsSortConfiguration() {
|
|
41
|
+
this.columnInternals.operandDataRecordFieldName = this.getResolvedOperandDataRecordFieldName(this.fieldName);
|
|
42
|
+
this.columnInternals.sortOperation = this.getResolvedSortOperation(this.defaultSortOperation);
|
|
43
|
+
}
|
|
28
44
|
}
|
|
29
45
|
const nimbleTableColumnText = TableColumnText.compose({
|
|
30
46
|
baseName: 'table-column-text',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/table-column/text/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAchF;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,6BAA6B,CAC9D,aAAa,CACT,CAAA,mBAGC,CAAA,CACJ,CACJ;IAPD;;QAQqB,yBAAoB,GAAG,wBAAwB,CAAC,wBAAwB,CAAC;IAoC9F,CAAC;IAlCU,kBAAkB;QACrB,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG;YAChC,WAAW,EAAE,IAAI,CAAC,WAAW;SAChC,CAAC;IACN,CAAC;IAEe,6BAA6B;QACzC,IAAI,CAAC,sCAAsC,EAAE,CAAC;IAClD,CAAC;IAEkB,yBAAyB;QACxC,OAAO;YACH,oBAAoB,EAAE,CAAC,OAAO,CAAC;YAC/B,WAAW,EAAE,0BAA0B;YACvC,kBAAkB,EAAE,iCAAiC;YACrD,eAAe,EAAE,EAAE;YACnB,aAAa,EAAE,IAAI,CAAC,wBAAwB,CACxC,IAAI,CAAC,oBAAoB,CAC5B;YACD,SAAS,EAAE,IAAI,wBAAwB,EAAE;SAC5C,CAAC;IACN,CAAC;IAEkB,gBAAgB;QAC/B,IAAI,CAAC,eAAe,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAU,CAAC;QACtE,IAAI,CAAC,sCAAsC,EAAE,CAAC;IAClD,CAAC;IAEO,sCAAsC;QAC1C,IAAI,CAAC,eAAe,CAAC,0BAA0B,GAAG,IAAI,CAAC,qCAAqC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7G,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAC9D,IAAI,CAAC,oBAAoB,CAC5B,CAAC;IACN,CAAC;CACJ;AAED,MAAM,qBAAqB,GAAG,eAAe,CAAC,OAAO,CAAC;IAClD,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC","sourcesContent":["import { DesignSystem } from '@microsoft/fast-foundation';\nimport { styles } from '../base/styles';\nimport { template } from '../base/template';\nimport type { TableStringField } from '../../table/types';\nimport { TableColumnTextBase, mixinTextBase } from '../text-base';\nimport { TableColumnSortOperation } from '../base/types';\nimport { tableColumnTextGroupHeaderViewTag } from './group-header-view';\nimport { tableColumnTextCellViewTag } from './cell-view';\nimport type { ColumnInternalsOptions } from '../base/models/column-internals';\nimport type { TableColumnTextBaseColumnConfig } from '../text-base/cell-view';\nimport { mixinCustomSortOrderColumnAPI } from '../mixins/custom-sort-order';\nimport { TableColumnTextValidator } from './models/table-column-text-validator';\n\nexport type TableColumnTextCellRecord = TableStringField<'value'>;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface TableColumnTextColumnConfig\n extends TableColumnTextBaseColumnConfig {}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nimble-table-column-text': TableColumnText;\n }\n}\n\n/**\n * The table column for displaying string fields as text.\n */\nexport class TableColumnText extends mixinCustomSortOrderColumnAPI(\n mixinTextBase(\n TableColumnTextBase<\n TableColumnTextColumnConfig,\n TableColumnTextValidator\n >\n )\n) {\n private readonly defaultSortOperation = TableColumnSortOperation.localeAwareCaseSensitive;\n\n public placeholderChanged(): void {\n this.columnInternals.columnConfig = {\n placeholder: this.placeholder\n };\n }\n\n public override handleSortConfigurationChange(): void {\n this.updateColumnInternalsSortConfiguration();\n }\n\n protected override getColumnInternalsOptions(): ColumnInternalsOptions<TableColumnTextValidator> {\n return {\n cellRecordFieldNames: ['value'],\n cellViewTag: tableColumnTextCellViewTag,\n groupHeaderViewTag: tableColumnTextGroupHeaderViewTag,\n delegatedEvents: [],\n sortOperation: this.getResolvedSortOperation(\n this.defaultSortOperation\n ),\n validator: new TableColumnTextValidator()\n };\n }\n\n protected override fieldNameChanged(): void {\n this.columnInternals.dataRecordFieldNames = [this.fieldName] as const;\n this.updateColumnInternalsSortConfiguration();\n }\n\n private updateColumnInternalsSortConfiguration(): void {\n this.columnInternals.operandDataRecordFieldName = this.getResolvedOperandDataRecordFieldName(this.fieldName);\n this.columnInternals.sortOperation = this.getResolvedSortOperation(\n this.defaultSortOperation\n );\n }\n}\n\nconst nimbleTableColumnText = TableColumnText.compose({\n baseName: 'table-column-text',\n template,\n styles\n});\n\nDesignSystem.getOrCreate()\n .withPrefix('nimble')\n .register(nimbleTableColumnText());\nexport const tableColumnTextTag = 'nimble-table-column-text';\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ColumnValidator } from '../../base/models/column-validator';
|
|
2
|
+
export declare const columnTextValidityFlagNames: readonly ["invalidCustomSortWithGrouping"];
|
|
3
|
+
/**
|
|
4
|
+
* Validator class for the text table column.
|
|
5
|
+
*/
|
|
6
|
+
export declare class TableColumnTextValidator extends ColumnValidator<typeof columnTextValidityFlagNames> {
|
|
7
|
+
constructor();
|
|
8
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ColumnValidator } from '../../base/models/column-validator';
|
|
2
|
+
export const columnTextValidityFlagNames = [
|
|
3
|
+
'invalidCustomSortWithGrouping'
|
|
4
|
+
];
|
|
5
|
+
/**
|
|
6
|
+
* Validator class for the text table column.
|
|
7
|
+
*/
|
|
8
|
+
export class TableColumnTextValidator extends ColumnValidator {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(columnTextValidityFlagNames);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=table-column-text-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-column-text-validator.js","sourceRoot":"","sources":["../../../../../src/table-column/text/models/table-column-text-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACvC,+BAA+B;CACzB,CAAC;AAEX;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,eAE7C;IACG;QACI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACvC,CAAC;CACJ","sourcesContent":["import { ColumnValidator } from '../../base/models/column-validator';\n\nexport const columnTextValidityFlagNames = [\n 'invalidCustomSortWithGrouping'\n] as const;\n\n/**\n * Validator class for the text table column.\n */\nexport class TableColumnTextValidator extends ColumnValidator<\n typeof columnTextValidityFlagNames\n> {\n public constructor() {\n super(columnTextValidityFlagNames);\n }\n}\n"]}
|
|
@@ -18,16 +18,32 @@ export class Tracker {
|
|
|
18
18
|
return this.trackedItems[key];
|
|
19
19
|
}
|
|
20
20
|
track(key) {
|
|
21
|
-
this.trackedItems[key]
|
|
21
|
+
const wasTracked = this.trackedItems[key];
|
|
22
|
+
if (!wasTracked) {
|
|
23
|
+
this.trackedItems[key] = true;
|
|
24
|
+
this.onTrackingChange();
|
|
25
|
+
}
|
|
22
26
|
}
|
|
23
27
|
untrack(key) {
|
|
24
|
-
this.trackedItems[key]
|
|
28
|
+
const wasTracked = this.trackedItems[key];
|
|
29
|
+
if (wasTracked) {
|
|
30
|
+
this.trackedItems[key] = false;
|
|
31
|
+
this.onTrackingChange();
|
|
32
|
+
}
|
|
25
33
|
}
|
|
26
34
|
trackAll() {
|
|
35
|
+
if (this.allTracked()) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
27
38
|
this.setAllKeys(true);
|
|
39
|
+
this.onTrackingChange();
|
|
28
40
|
}
|
|
29
41
|
untrackAll() {
|
|
42
|
+
if (this.noneTracked()) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
30
45
|
this.setAllKeys(false);
|
|
46
|
+
this.onTrackingChange();
|
|
31
47
|
}
|
|
32
48
|
allTracked() {
|
|
33
49
|
return Object.values(this.trackedItems).every(x => x);
|
|
@@ -38,6 +54,7 @@ export class Tracker {
|
|
|
38
54
|
noneTracked() {
|
|
39
55
|
return Object.values(this.trackedItems).every(x => !x);
|
|
40
56
|
}
|
|
57
|
+
onTrackingChange() { }
|
|
41
58
|
setAllKeys(value) {
|
|
42
59
|
this.trackedItems = Object.keys(this.trackedItems).reduce((r, key) => {
|
|
43
60
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../../src/utilities/models/tracker.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,OAAO;IAGhB,YAAmB,gBAAkC;QAEjD,IAAI,CAAC,YAAY,GAAG,EAAkB,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,GAAG,EAAgB,EAAE;YACrB,OAAO;gBACH,GAAG,CAAC;gBACJ,CAAC,GAAG,CAAC,EAAE,KAAK;aACf,CAAC;QACN,CAAC,EACD,IAAI,CAAC,YAAY,CACpB,CAAC;IACN,CAAC;IAEM,eAAe;QAClB,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAEM,SAAS,CAAC,GAA2C;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,GAA2C;QACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../../src/utilities/models/tracker.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,OAAO;IAGhB,YAAmB,gBAAkC;QAEjD,IAAI,CAAC,YAAY,GAAG,EAAkB,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,GAAG,EAAgB,EAAE;YACrB,OAAO;gBACH,GAAG,CAAC;gBACJ,CAAC,GAAG,CAAC,EAAE,KAAK;aACf,CAAC;QACN,CAAC,EACD,IAAI,CAAC,YAAY,CACpB,CAAC;IACN,CAAC;IAEM,eAAe;QAClB,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAEM,SAAS,CAAC,GAA2C;QACxD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,GAA2C;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE;YACb,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;IACL,CAAC;IAEM,OAAO,CAAC,GAA2C;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC3B;IACL,CAAC;IAEM,QAAQ;QACX,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACnB,OAAO;SACV;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAEM,UAAU;QACb,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACpB,OAAO;SACV;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAEM,UAAU;QACb,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,UAAU;QACb,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,WAAW;QACd,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,gBAAgB,KAAU,CAAC;IAE1B,UAAU,CAAC,KAAc;QAE7B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,EAAE,GAAG,EAAgB,EAAE;YACrB,OAAO;gBACH,GAAG,CAAC;gBACJ,CAAC,GAAG,CAAC,EAAE,KAAK;aACf,CAAC;QACN,CAAC,EACD,IAAI,CAAC,YAAY,CACpB,CAAC;IACN,CAAC;CACJ","sourcesContent":["type ObjectFromList<T extends readonly string[]> = {\n [K in T extends readonly (infer U)[] ? U : never]: boolean;\n};\n\n/**\n * Generic Tracker which sets or resets provided flags\n */\nexport class Tracker<TrackedItemsList extends readonly string[]> {\n private trackedItems: ObjectFromList<TrackedItemsList>;\n\n public constructor(trackedItemsList: TrackedItemsList) {\n type TrackedItems = typeof this.trackedItems;\n this.trackedItems = {} as TrackedItems;\n this.trackedItems = trackedItemsList.reduce<TrackedItems>(\n (r, key): TrackedItems => {\n return {\n ...r,\n [key]: false\n };\n },\n this.trackedItems\n );\n }\n\n public getTrackedItems(): ObjectFromList<TrackedItemsList> {\n return { ...this.trackedItems };\n }\n\n public isTracked(key: keyof ObjectFromList<TrackedItemsList>): boolean {\n return this.trackedItems[key];\n }\n\n public track(key: keyof ObjectFromList<TrackedItemsList>): void {\n const wasTracked = this.trackedItems[key];\n if (!wasTracked) {\n this.trackedItems[key] = true;\n this.onTrackingChange();\n }\n }\n\n public untrack(key: keyof ObjectFromList<TrackedItemsList>): void {\n const wasTracked = this.trackedItems[key];\n if (wasTracked) {\n this.trackedItems[key] = false;\n this.onTrackingChange();\n }\n }\n\n public trackAll(): void {\n if (this.allTracked()) {\n return;\n }\n\n this.setAllKeys(true);\n this.onTrackingChange();\n }\n\n public untrackAll(): void {\n if (this.noneTracked()) {\n return;\n }\n\n this.setAllKeys(false);\n this.onTrackingChange();\n }\n\n public allTracked(): boolean {\n return Object.values(this.trackedItems).every(x => x);\n }\n\n public anyTracked(): boolean {\n return Object.values(this.trackedItems).some(x => x);\n }\n\n public noneTracked(): boolean {\n return Object.values(this.trackedItems).every(x => !x);\n }\n\n public onTrackingChange(): void {}\n\n private setAllKeys(value: boolean): void {\n type TrackedItems = typeof this.trackedItems;\n this.trackedItems = Object.keys(this.trackedItems).reduce<TrackedItems>(\n (r, key): TrackedItems => {\n return {\n ...r,\n [key]: value\n };\n },\n this.trackedItems\n );\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ni/nimble-components",
|
|
3
|
-
"version": "29.
|
|
3
|
+
"version": "29.9.0",
|
|
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",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"test-webkit:verbose": "karma start karma.conf.verbose.js --browsers=WebkitHeadless --single-run --skip-tags SkipWebkit",
|
|
45
45
|
"test-webkit:watch": "karma start karma.conf.js --browsers=WebkitHeadless --skip-tags SkipWebkit --watch-extensions js",
|
|
46
46
|
"test-webkit": "karma start karma.conf.js --browsers=WebkitHeadless --single-run --skip-tags SkipWebkit",
|
|
47
|
-
"test-concurrent": "concurrently --timings --group \"npm:test-chrome:verbose\" \"npm:test-firefox:verbose\""
|
|
47
|
+
"test-concurrent": "concurrently --timings --group \"npm:test-chrome:verbose\" \"npm:test-firefox:verbose\" \"npm:test-webkit:verbose\""
|
|
48
48
|
},
|
|
49
49
|
"repository": {
|
|
50
50
|
"type": "git",
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
"karma-source-map-support": "^1.4.0",
|
|
125
125
|
"karma-sourcemap-loader": "^0.4.0",
|
|
126
126
|
"karma-spec-reporter": "^0.0.36",
|
|
127
|
-
"karma-webkit-launcher": "^2.
|
|
127
|
+
"karma-webkit-launcher": "^2.6.0",
|
|
128
128
|
"karma-webpack": "^5.0.0",
|
|
129
129
|
"playwright": "1.44.0",
|
|
130
130
|
"prettier-eslint": "^16.3.0",
|