@ni/nimble-components 20.7.0 → 20.8.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 +1 -1
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/table-column/date-text/testing/table-column-date-text.pageobject.d.ts +3 -9
- package/dist/esm/table-column/date-text/testing/table-column-date-text.pageobject.js +2 -24
- package/dist/esm/table-column/date-text/testing/table-column-date-text.pageobject.js.map +1 -1
- package/dist/esm/table-column/duration-text/cell-view/index.d.ts +16 -0
- package/dist/esm/table-column/duration-text/cell-view/index.js +28 -0
- package/dist/esm/table-column/duration-text/cell-view/index.js.map +1 -0
- package/dist/esm/table-column/duration-text/group-header-view/index.d.ts +17 -0
- package/dist/esm/table-column/duration-text/group-header-view/index.js +33 -0
- package/dist/esm/table-column/duration-text/group-header-view/index.js.map +1 -0
- package/dist/esm/table-column/duration-text/index.d.ts +24 -0
- package/dist/esm/table-column/duration-text/index.js +62 -0
- package/dist/esm/table-column/duration-text/index.js.map +1 -0
- package/dist/esm/table-column/duration-text/models/duration-formatter.d.ts +14 -0
- package/dist/esm/table-column/duration-text/models/duration-formatter.js +79 -0
- package/dist/esm/table-column/duration-text/models/duration-formatter.js.map +1 -0
- package/dist/esm/table-column/duration-text/testing/table-column-duration-text.pageobject.d.ts +8 -0
- package/dist/esm/table-column/duration-text/testing/table-column-duration-text.pageobject.js +14 -0
- package/dist/esm/table-column/duration-text/testing/table-column-duration-text.pageobject.js.map +1 -0
- package/dist/esm/table-column/testing/table-column-formatted-text.pageobject.d.ts +14 -0
- package/dist/esm/table-column/testing/table-column-formatted-text.pageobject.js +30 -0
- package/dist/esm/table-column/testing/table-column-formatted-text.pageobject.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
import type { TablePageObject } from '../../../table/testing/table.pageobject';
|
|
2
1
|
import type { TableRecord } from '../../../table/types';
|
|
2
|
+
import { TableColumnFormattedTextPageObject } from '../../testing/table-column-formatted-text.pageobject';
|
|
3
3
|
/**
|
|
4
4
|
* Page object for date text table column.
|
|
5
5
|
*/
|
|
6
|
-
export declare class TableColumnDateTextPageObject<T extends TableRecord> {
|
|
7
|
-
|
|
8
|
-
private readonly narrowNonBreakingSpace;
|
|
9
|
-
constructor(tablePageObject: TablePageObject<T>);
|
|
10
|
-
getRenderedCellContent(rowIndex: number, columnIndex: number): string;
|
|
11
|
-
getRenderedGroupHeaderContent(groupRowIndex: number): string;
|
|
12
|
-
getCellTitle(rowIndex: number, columnIndex: number): string;
|
|
13
|
-
private verifyCellType;
|
|
6
|
+
export declare class TableColumnDateTextPageObject<T extends TableRecord> extends TableColumnFormattedTextPageObject<T> {
|
|
7
|
+
protected verifyCellType(rowIndex: number, columnIndex: number): void;
|
|
14
8
|
}
|
|
@@ -1,31 +1,9 @@
|
|
|
1
|
+
import { TableColumnFormattedTextPageObject } from '../../testing/table-column-formatted-text.pageobject';
|
|
1
2
|
import { TableColumnDateTextCellView } from '../cell-view';
|
|
2
3
|
/**
|
|
3
4
|
* Page object for date text table column.
|
|
4
5
|
*/
|
|
5
|
-
export class TableColumnDateTextPageObject {
|
|
6
|
-
constructor(tablePageObject) {
|
|
7
|
-
this.tablePageObject = tablePageObject;
|
|
8
|
-
// On Chrome, in a formatted date, the space before AM/PM is a narrow non-breaking space.
|
|
9
|
-
// For testing consistency across browsers, replace it with a regular space.
|
|
10
|
-
this.narrowNonBreakingSpace = '\u202f';
|
|
11
|
-
}
|
|
12
|
-
getRenderedCellContent(rowIndex, columnIndex) {
|
|
13
|
-
this.verifyCellType(rowIndex, columnIndex);
|
|
14
|
-
return this.tablePageObject
|
|
15
|
-
.getRenderedCellTextContent(rowIndex, columnIndex)
|
|
16
|
-
.replace(this.narrowNonBreakingSpace, ' ');
|
|
17
|
-
}
|
|
18
|
-
getRenderedGroupHeaderContent(groupRowIndex) {
|
|
19
|
-
return this.tablePageObject
|
|
20
|
-
.getRenderedGroupHeaderTextContent(groupRowIndex)
|
|
21
|
-
.replace(this.narrowNonBreakingSpace, ' ');
|
|
22
|
-
}
|
|
23
|
-
getCellTitle(rowIndex, columnIndex) {
|
|
24
|
-
this.verifyCellType(rowIndex, columnIndex);
|
|
25
|
-
return this.tablePageObject
|
|
26
|
-
.getCellTitle(rowIndex, columnIndex)
|
|
27
|
-
.replace(this.narrowNonBreakingSpace, ' ');
|
|
28
|
-
}
|
|
6
|
+
export class TableColumnDateTextPageObject extends TableColumnFormattedTextPageObject {
|
|
29
7
|
verifyCellType(rowIndex, columnIndex) {
|
|
30
8
|
const cell = this.tablePageObject.getRenderedCellView(rowIndex, columnIndex);
|
|
31
9
|
if (!(cell instanceof TableColumnDateTextCellView)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-column-date-text.pageobject.js","sourceRoot":"","sources":["../../../../../src/table-column/date-text/testing/table-column-date-text.pageobject.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table-column-date-text.pageobject.js","sourceRoot":"","sources":["../../../../../src/table-column/date-text/testing/table-column-date-text.pageobject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAC1G,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAE3D;;GAEG;AACH,MAAM,OAAO,6BAEX,SAAQ,kCAAqC;IACxB,cAAc,CAC7B,QAAgB,EAChB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACjD,QAAQ,EACR,WAAW,CACd,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,YAAY,2BAA2B,CAAC,EAAE;YAChD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;SACxD;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { TableColumnDurationTextCellRecord, TableColumnDurationTextColumnConfig } from '..';
|
|
2
|
+
import { TableColumnTextCellViewBase } from '../../text-base/cell-view';
|
|
3
|
+
declare global {
|
|
4
|
+
interface HTMLElementTagNameMap {
|
|
5
|
+
'nimble-table-column-duration-text-cell-view': TableColumnDurationTextCellView;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A cell view for displaying duration fields as text
|
|
10
|
+
*/
|
|
11
|
+
export declare class TableColumnDurationTextCellView extends TableColumnTextCellViewBase<TableColumnDurationTextCellRecord, TableColumnDurationTextColumnConfig> {
|
|
12
|
+
private columnConfigChanged;
|
|
13
|
+
private cellRecordChanged;
|
|
14
|
+
private updateText;
|
|
15
|
+
}
|
|
16
|
+
export declare const tableColumnDurationTextCellViewTag: string;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DesignSystem } from '@microsoft/fast-foundation';
|
|
2
|
+
import { template } from '../../text-base/cell-view/template';
|
|
3
|
+
import { styles } from '../../text-base/cell-view/styles';
|
|
4
|
+
import { TableColumnTextCellViewBase } from '../../text-base/cell-view';
|
|
5
|
+
/**
|
|
6
|
+
* A cell view for displaying duration fields as text
|
|
7
|
+
*/
|
|
8
|
+
export class TableColumnDurationTextCellView extends TableColumnTextCellViewBase {
|
|
9
|
+
columnConfigChanged() {
|
|
10
|
+
this.updateText();
|
|
11
|
+
}
|
|
12
|
+
cellRecordChanged() {
|
|
13
|
+
this.updateText();
|
|
14
|
+
}
|
|
15
|
+
updateText() {
|
|
16
|
+
this.text = this.columnConfig?.formatter.format(this.cellRecord?.value) ?? '';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const durationTextCellView = TableColumnDurationTextCellView.compose({
|
|
20
|
+
baseName: 'table-column-duration-text-cell-view',
|
|
21
|
+
template,
|
|
22
|
+
styles
|
|
23
|
+
});
|
|
24
|
+
DesignSystem.getOrCreate()
|
|
25
|
+
.withPrefix('nimble')
|
|
26
|
+
.register(durationTextCellView());
|
|
27
|
+
export const tableColumnDurationTextCellViewTag = DesignSystem.tagFor(TableColumnDurationTextCellView);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table-column/duration-text/cell-view/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAK9D,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAQxE;;GAEG;AACH,MAAM,OAAO,+BAAgC,SAAQ,2BAGpD;IACW,mBAAmB;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEO,iBAAiB;QACrB,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAClF,CAAC;CACJ;AAED,MAAM,oBAAoB,GAAG,+BAA+B,CAAC,OAAO,CAAC;IACjE,QAAQ,EAAE,sCAAsC;IAChD,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AACH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,kCAAkC,GAAG,YAAY,CAAC,MAAM,CACjE,+BAA+B,CAClC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { TableNumberFieldValue } from '../../../table/types';
|
|
2
|
+
import { TableColumnTextGroupHeaderViewBase } from '../../text-base/group-header-view';
|
|
3
|
+
import type { TableColumnDurationTextColumnConfig } from '..';
|
|
4
|
+
declare global {
|
|
5
|
+
interface HTMLElementTagNameMap {
|
|
6
|
+
'nimble-table-duration-text-group-header': TableColumnDurationTextGroupHeaderView;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The group header view for displaying duration fields as text.
|
|
11
|
+
*/
|
|
12
|
+
export declare class TableColumnDurationTextGroupHeaderView extends TableColumnTextGroupHeaderViewBase<TableNumberFieldValue, TableColumnDurationTextColumnConfig> {
|
|
13
|
+
private columnConfigChanged;
|
|
14
|
+
private groupHeaderValueChanged;
|
|
15
|
+
private updateText;
|
|
16
|
+
}
|
|
17
|
+
export declare const tableColumnDurationTextGroupHeaderViewTag: string;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { DesignSystem } from '@microsoft/fast-foundation';
|
|
2
|
+
import { TableColumnTextGroupHeaderViewBase } from '../../text-base/group-header-view';
|
|
3
|
+
import { template } from '../../text-base/group-header-view/template';
|
|
4
|
+
import { styles } from '../../text-base/group-header-view/styles';
|
|
5
|
+
/**
|
|
6
|
+
* The group header view for displaying duration fields as text.
|
|
7
|
+
*/
|
|
8
|
+
export class TableColumnDurationTextGroupHeaderView extends TableColumnTextGroupHeaderViewBase {
|
|
9
|
+
columnConfigChanged() {
|
|
10
|
+
this.updateText();
|
|
11
|
+
}
|
|
12
|
+
groupHeaderValueChanged() {
|
|
13
|
+
this.updateText();
|
|
14
|
+
}
|
|
15
|
+
updateText() {
|
|
16
|
+
if (this.columnConfig) {
|
|
17
|
+
this.text = this.columnConfig.formatter.format(this.groupHeaderValue);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
this.text = '';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const tableColumnDurationTextGroupHeaderView = TableColumnDurationTextGroupHeaderView.compose({
|
|
25
|
+
baseName: 'table-column-duration-text-group-header-view',
|
|
26
|
+
template,
|
|
27
|
+
styles
|
|
28
|
+
});
|
|
29
|
+
DesignSystem.getOrCreate()
|
|
30
|
+
.withPrefix('nimble')
|
|
31
|
+
.register(tableColumnDurationTextGroupHeaderView());
|
|
32
|
+
export const tableColumnDurationTextGroupHeaderViewTag = DesignSystem.tagFor(TableColumnDurationTextGroupHeaderView);
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table-column/duration-text/group-header-view/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AACvF,OAAO,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAQlE;;GAEG;AACH,MAAM,OAAO,sCAAuC,SAAQ,kCAG3D;IACW,mBAAmB;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEO,uBAAuB;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAC1C,IAAI,CAAC,gBAAgB,CACxB,CAAC;SACL;aAAM;YACH,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SAClB;IACL,CAAC;CACJ;AAED,MAAM,sCAAsC,GAAG,sCAAsC,CAAC,OAAO,CAAC;IAC1F,QAAQ,EAAE,8CAA8C;IACxD,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AACH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,sCAAsC,EAAE,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,yCAAyC,GAAG,YAAY,CAAC,MAAM,CACxE,sCAAsC,CACzC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { TableNumberField } from '../../table/types';
|
|
2
|
+
import { TableColumnTextBase } from '../text-base';
|
|
3
|
+
import type { ColumnInternalsOptions } from '../base/models/column-internals';
|
|
4
|
+
import { DurationFormatter } from './models/duration-formatter';
|
|
5
|
+
export declare type TableColumnDurationTextCellRecord = TableNumberField<'value'>;
|
|
6
|
+
export interface TableColumnDurationTextColumnConfig {
|
|
7
|
+
formatter: DurationFormatter;
|
|
8
|
+
}
|
|
9
|
+
declare global {
|
|
10
|
+
interface HTMLElementTagNameMap {
|
|
11
|
+
'nimble-table-column-duration-text': TableColumnDurationText;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The table column for displaying a duration value as text.
|
|
16
|
+
*/
|
|
17
|
+
export declare class TableColumnDurationText extends TableColumnTextBase {
|
|
18
|
+
private readonly langSubscriber;
|
|
19
|
+
connectedCallback(): void;
|
|
20
|
+
disconnectedCallback(): void;
|
|
21
|
+
protected getColumnInternalsOptions(): ColumnInternalsOptions;
|
|
22
|
+
private updateColumnConfig;
|
|
23
|
+
}
|
|
24
|
+
export declare const tableColumnDurationTextTag: string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { DesignSystem } from '@microsoft/fast-foundation';
|
|
2
|
+
import { styles } from '../base/styles';
|
|
3
|
+
import { template } from '../base/template';
|
|
4
|
+
import { TableColumnTextBase } from '../text-base';
|
|
5
|
+
import { TableColumnSortOperation } from '../base/types';
|
|
6
|
+
import { tableColumnDurationTextCellViewTag } from './cell-view';
|
|
7
|
+
import { lang } from '../../theme-provider';
|
|
8
|
+
import { DurationFormatter } from './models/duration-formatter';
|
|
9
|
+
import { tableColumnDurationTextGroupHeaderViewTag } from './group-header-view';
|
|
10
|
+
/**
|
|
11
|
+
* The table column for displaying a duration value as text.
|
|
12
|
+
*/
|
|
13
|
+
export class TableColumnDurationText extends TableColumnTextBase {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this.langSubscriber = {
|
|
17
|
+
handleChange: () => {
|
|
18
|
+
this.updateColumnConfig();
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
connectedCallback() {
|
|
23
|
+
super.connectedCallback();
|
|
24
|
+
lang.subscribe(this.langSubscriber, this);
|
|
25
|
+
this.updateColumnConfig();
|
|
26
|
+
}
|
|
27
|
+
disconnectedCallback() {
|
|
28
|
+
super.disconnectedCallback();
|
|
29
|
+
lang.unsubscribe(this.langSubscriber, this);
|
|
30
|
+
}
|
|
31
|
+
getColumnInternalsOptions() {
|
|
32
|
+
return {
|
|
33
|
+
cellRecordFieldNames: ['value'],
|
|
34
|
+
cellViewTag: tableColumnDurationTextCellViewTag,
|
|
35
|
+
groupHeaderViewTag: tableColumnDurationTextGroupHeaderViewTag,
|
|
36
|
+
delegatedEvents: [],
|
|
37
|
+
sortOperation: TableColumnSortOperation.basic
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
updateColumnConfig() {
|
|
41
|
+
const formatter = new DurationFormatter(lang.getValueFor(this));
|
|
42
|
+
if (formatter) {
|
|
43
|
+
const columnConfig = {
|
|
44
|
+
formatter
|
|
45
|
+
};
|
|
46
|
+
this.columnInternals.columnConfig = columnConfig;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.columnInternals.columnConfig = undefined;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const nimbleTableColumnDurationText = TableColumnDurationText.compose({
|
|
54
|
+
baseName: 'table-column-duration-text',
|
|
55
|
+
template,
|
|
56
|
+
styles
|
|
57
|
+
});
|
|
58
|
+
DesignSystem.getOrCreate()
|
|
59
|
+
.withPrefix('nimble')
|
|
60
|
+
.register(nimbleTableColumnDurationText());
|
|
61
|
+
export const tableColumnDurationTextTag = DesignSystem.tagFor(TableColumnDurationText);
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,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;AAahF;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,mBAAmB;IAAhE;;QACqB,mBAAc,GAAuC;YAClE,YAAY,EAAE,GAAG,EAAE;gBACf,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC;IAmCN,CAAC;IAjCmB,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;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,IAAI,SAAS,EAAE;YACX,MAAM,YAAY,GAAwC;gBACtD,SAAS;aACZ,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,YAAY,CAAC;SACpD;aAAM;YACH,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;SACjD;IACL,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,YAAY,CAAC,MAAM,CACzD,uBAAuB,CAC1B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A class for formatting a numeric value in the unit of milliseconds into a display value representing its
|
|
3
|
+
* days, hours, minutes, and seconds.
|
|
4
|
+
*/
|
|
5
|
+
export declare class DurationFormatter {
|
|
6
|
+
private readonly lang;
|
|
7
|
+
private readonly daysFormatter;
|
|
8
|
+
private readonly hoursFormatter;
|
|
9
|
+
private readonly minutesFormatter;
|
|
10
|
+
private readonly secondsFormatter;
|
|
11
|
+
private readonly scientificSecondsFormatter;
|
|
12
|
+
constructor(lang: string);
|
|
13
|
+
format(milliseconds: number | null | undefined): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A class for formatting a numeric value in the unit of milliseconds into a display value representing its
|
|
3
|
+
* days, hours, minutes, and seconds.
|
|
4
|
+
*/
|
|
5
|
+
export class DurationFormatter {
|
|
6
|
+
constructor(lang) {
|
|
7
|
+
this.lang = lang;
|
|
8
|
+
this.daysFormatter = new Intl.NumberFormat(this.lang, {
|
|
9
|
+
style: 'unit',
|
|
10
|
+
unit: 'day'
|
|
11
|
+
});
|
|
12
|
+
this.hoursFormatter = new Intl.NumberFormat(this.lang, {
|
|
13
|
+
style: 'unit',
|
|
14
|
+
unit: 'hour'
|
|
15
|
+
});
|
|
16
|
+
this.minutesFormatter = new Intl.NumberFormat(this.lang, {
|
|
17
|
+
style: 'unit',
|
|
18
|
+
unit: 'minute'
|
|
19
|
+
});
|
|
20
|
+
this.secondsFormatter = new Intl.NumberFormat(this.lang, {
|
|
21
|
+
style: 'unit',
|
|
22
|
+
unit: 'second'
|
|
23
|
+
});
|
|
24
|
+
this.scientificSecondsFormatter = new Intl.NumberFormat(this.lang, {
|
|
25
|
+
style: 'unit',
|
|
26
|
+
unit: 'second',
|
|
27
|
+
notation: 'scientific',
|
|
28
|
+
maximumFractionDigits: 3
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
format(milliseconds) {
|
|
32
|
+
if (typeof milliseconds !== 'number'
|
|
33
|
+
|| milliseconds < 0
|
|
34
|
+
|| !Number.isFinite(milliseconds)) {
|
|
35
|
+
return '';
|
|
36
|
+
}
|
|
37
|
+
const result = [];
|
|
38
|
+
const millisecondsPerSecond = 1000;
|
|
39
|
+
const millisecondsPerMinute = millisecondsPerSecond * 60;
|
|
40
|
+
const millisecondsPerHour = millisecondsPerMinute * 60;
|
|
41
|
+
const millisecondsPerDay = millisecondsPerHour * 24;
|
|
42
|
+
const fractionalDays = milliseconds / millisecondsPerDay;
|
|
43
|
+
const maximumDays = 999;
|
|
44
|
+
let remainingTime = milliseconds;
|
|
45
|
+
const days = Math.floor(fractionalDays);
|
|
46
|
+
if (days <= maximumDays && days > 0) {
|
|
47
|
+
const formattedDays = this.daysFormatter.format(days);
|
|
48
|
+
result.push(formattedDays);
|
|
49
|
+
remainingTime -= days * millisecondsPerDay;
|
|
50
|
+
}
|
|
51
|
+
else if (days > maximumDays) {
|
|
52
|
+
return this.scientificSecondsFormatter.format(milliseconds / millisecondsPerSecond);
|
|
53
|
+
}
|
|
54
|
+
const hours = Math.floor((milliseconds / millisecondsPerHour) % 24);
|
|
55
|
+
remainingTime -= hours * millisecondsPerHour;
|
|
56
|
+
if (hours) {
|
|
57
|
+
const formattedHours = this.hoursFormatter.format(hours);
|
|
58
|
+
result.push(formattedHours);
|
|
59
|
+
}
|
|
60
|
+
const minutes = Math.floor((milliseconds / millisecondsPerMinute) % 60);
|
|
61
|
+
remainingTime -= minutes * millisecondsPerMinute;
|
|
62
|
+
if (minutes) {
|
|
63
|
+
const formattedMinutes = this.minutesFormatter.format(minutes);
|
|
64
|
+
result.push(formattedMinutes);
|
|
65
|
+
}
|
|
66
|
+
const valueInSeconds = remainingTime / millisecondsPerSecond;
|
|
67
|
+
// if -0, coerce to 0
|
|
68
|
+
const seconds = valueInSeconds === 0 ? 0 : valueInSeconds % 60;
|
|
69
|
+
if (milliseconds < 1 && valueInSeconds !== 0) {
|
|
70
|
+
return this.scientificSecondsFormatter.format(valueInSeconds);
|
|
71
|
+
}
|
|
72
|
+
if (seconds >= 0.0005 || (seconds === 0 && result.length === 0)) {
|
|
73
|
+
const formattedSeconds = this.secondsFormatter.format(seconds);
|
|
74
|
+
result.push(formattedSeconds);
|
|
75
|
+
}
|
|
76
|
+
return result.join(', ');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=duration-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration-formatter.js","sourceRoot":"","sources":["../../../../../src/table-column/duration-text/models/duration-formatter.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/table-column/duration-text/testing/table-column-duration-text.pageobject.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TableRecord } from '../../../table/types';
|
|
2
|
+
import { TableColumnFormattedTextPageObject } from '../../testing/table-column-formatted-text.pageobject';
|
|
3
|
+
/**
|
|
4
|
+
* Page object for duration text table column.
|
|
5
|
+
*/
|
|
6
|
+
export declare class TableColumnDurationTextPageObject<T extends TableRecord> extends TableColumnFormattedTextPageObject<T> {
|
|
7
|
+
protected verifyCellType(rowIndex: number, columnIndex: number): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TableColumnFormattedTextPageObject } from '../../testing/table-column-formatted-text.pageobject';
|
|
2
|
+
import { TableColumnDurationTextCellView } from '../cell-view';
|
|
3
|
+
/**
|
|
4
|
+
* Page object for duration text table column.
|
|
5
|
+
*/
|
|
6
|
+
export class TableColumnDurationTextPageObject extends TableColumnFormattedTextPageObject {
|
|
7
|
+
verifyCellType(rowIndex, columnIndex) {
|
|
8
|
+
const cell = this.tablePageObject.getRenderedCellView(rowIndex, columnIndex);
|
|
9
|
+
if (!(cell instanceof TableColumnDurationTextCellView)) {
|
|
10
|
+
throw new Error('Cell is not in a duration text column');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=table-column-duration-text.pageobject.js.map
|
package/dist/esm/table-column/duration-text/testing/table-column-duration-text.pageobject.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-column-duration-text.pageobject.js","sourceRoot":"","sources":["../../../../../src/table-column/duration-text/testing/table-column-duration-text.pageobject.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,sDAAsD,CAAC;AAC1G,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,iCAEX,SAAQ,kCAAqC;IACxB,cAAc,CAC7B,QAAgB,EAChB,WAAmB;QAEnB,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACjD,QAAQ,EACR,WAAW,CACd,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,YAAY,+BAA+B,CAAC,EAAE;YACpD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC5D;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TablePageObject } from '../../table/testing/table.pageobject';
|
|
2
|
+
import type { TableRecord } from '../../table/types';
|
|
3
|
+
/**
|
|
4
|
+
* Page object for table columns that format their text for display.
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class TableColumnFormattedTextPageObject<T extends TableRecord> {
|
|
7
|
+
protected readonly tablePageObject: TablePageObject<T>;
|
|
8
|
+
private readonly spaceUnicodeCharsRegEx;
|
|
9
|
+
constructor(tablePageObject: TablePageObject<T>);
|
|
10
|
+
getRenderedCellContent(rowIndex: number, columnIndex: number): string;
|
|
11
|
+
getRenderedGroupHeaderContent(groupRowIndex: number): string;
|
|
12
|
+
getCellTitle(rowIndex: number, columnIndex: number): string;
|
|
13
|
+
protected abstract verifyCellType(rowIndex: number, columnIndex: number): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page object for table columns that format their text for display.
|
|
3
|
+
*/
|
|
4
|
+
export class TableColumnFormattedTextPageObject {
|
|
5
|
+
constructor(tablePageObject) {
|
|
6
|
+
this.tablePageObject = tablePageObject;
|
|
7
|
+
// When text is localized to different languages, the space character
|
|
8
|
+
// can get changed to a different unicode variant. This regular expression
|
|
9
|
+
// matches both known unicode variants so we can change them back to a
|
|
10
|
+
// regular space to perform consistent checks for testing purposes.
|
|
11
|
+
this.spaceUnicodeCharsRegEx = /\u202f|\u00a0/g;
|
|
12
|
+
}
|
|
13
|
+
getRenderedCellContent(rowIndex, columnIndex) {
|
|
14
|
+
return this.tablePageObject
|
|
15
|
+
.getRenderedCellTextContent(rowIndex, columnIndex)
|
|
16
|
+
.replace(this.spaceUnicodeCharsRegEx, ' ');
|
|
17
|
+
}
|
|
18
|
+
getRenderedGroupHeaderContent(groupRowIndex) {
|
|
19
|
+
return this.tablePageObject
|
|
20
|
+
.getRenderedGroupHeaderTextContent(groupRowIndex)
|
|
21
|
+
.replace(this.spaceUnicodeCharsRegEx, ' ');
|
|
22
|
+
}
|
|
23
|
+
getCellTitle(rowIndex, columnIndex) {
|
|
24
|
+
this.verifyCellType(rowIndex, columnIndex);
|
|
25
|
+
return this.tablePageObject
|
|
26
|
+
.getCellTitle(rowIndex, columnIndex)
|
|
27
|
+
.replace(this.spaceUnicodeCharsRegEx, ' ');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=table-column-formatted-text.pageobject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-column-formatted-text.pageobject.js","sourceRoot":"","sources":["../../../../src/table-column/testing/table-column-formatted-text.pageobject.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAgB,kCAAkC;IASpD,YACuB,eAAmC;QAAnC,oBAAe,GAAf,eAAe,CAAoB;QAP1D,qEAAqE;QACrE,0EAA0E;QAC1E,sEAAsE;QACtE,mEAAmE;QAClD,2BAAsB,GAAG,gBAAgB,CAAC;IAIxD,CAAC;IAEG,sBAAsB,CACzB,QAAgB,EAChB,WAAmB;QAEnB,OAAO,IAAI,CAAC,eAAe;aACtB,0BAA0B,CAAC,QAAQ,EAAE,WAAW,CAAC;aACjD,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAEM,6BAA6B,CAAC,aAAqB;QACtD,OAAO,IAAI,CAAC,eAAe;aACtB,iCAAiC,CAAC,aAAa,CAAC;aAChD,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAEM,YAAY,CAAC,QAAgB,EAAE,WAAmB;QACrD,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,eAAe;aACtB,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC;aACnC,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;CAMJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ni/nimble-components",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.8.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 build-components && npm run bundle-components && npm run generate-scss && npm run build-storybook",
|