@theseam/ui-common 0.2.16 → 0.2.17
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/bundles/theseam-ui-common-datatable.umd.js.map +1 -1
- package/bundles/theseam-ui-common-table-cell-types.umd.js +89 -4
- package/bundles/theseam-ui-common-table-cell-types.umd.js.map +1 -1
- package/bundles/theseam-ui-common-testing.umd.js.map +1 -1
- package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
- package/esm2015/datatable/models/columns-alteration.js +1 -1
- package/esm2015/datatable/models/columns-alterations/hide-column.columns-alteration.js +1 -1
- package/esm2015/datatable/models/columns-alterations/sort.columns-alteration.js +1 -1
- package/esm2015/datatable/models/columns-alterations/width.columns-alteration.js +1 -1
- package/esm2015/datatable/models/internal-column-props.js +1 -1
- package/esm2015/datatable/services/columns-alterations-manager.service.js +1 -1
- package/esm2015/datatable/utils/map-columns-alterations-states.js +1 -1
- package/esm2015/graphql/models/gql-datatable-accessor.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.js +17 -2
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.js +16 -2
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.js +16 -2
- package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-string/table-cell-type-string.component.js +32 -4
- package/esm2015/testing/current-tick-time.js +1 -1
- package/esm2015/utils/array-move.js +1 -1
- package/esm2015/utils/router/is-empty-url-route.js +1 -1
- package/fesm2015/theseam-ui-common-datatable.js.map +1 -1
- package/fesm2015/theseam-ui-common-table-cell-types.js +74 -5
- package/fesm2015/theseam-ui-common-table-cell-types.js.map +1 -1
- package/fesm2015/theseam-ui-common-testing.js.map +1 -1
- package/fesm2015/theseam-ui-common-utils.js.map +1 -1
- package/package.json +1 -1
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +5 -0
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +5 -0
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +5 -0
- package/table-cell-types/table-cell-type-string/table-cell-type-string-config.d.ts +8 -0
- package/table-cell-types/table-cell-type-string/table-cell-type-string.component.d.ts +9 -0
- package/table-cell-types/theseam-ui-common-table-cell-types.metadata.json +1 -1
|
@@ -3,7 +3,7 @@ import { formatCurrency, formatNumber, CommonModule } from '@angular/common';
|
|
|
3
3
|
import { Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Inject, Input, HostBinding, NgModule } from '@angular/core';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import { takeUntil } from 'rxjs/operators';
|
|
6
|
-
import { notNullOrUndefined, hasProperty } from '@theseam/ui-common/utils';
|
|
6
|
+
import { notNullOrUndefined, isNumeric, hasProperty } from '@theseam/ui-common/utils';
|
|
7
7
|
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
8
8
|
import { DatatableComponent } from '@theseam/ui-common/datatable';
|
|
9
9
|
import { getKnownIcon, TheSeamIconModule } from '@theseam/ui-common/icon';
|
|
@@ -55,11 +55,24 @@ class TableCellTypeCurrencyComponent {
|
|
|
55
55
|
_formatCurrency(currentValue, tableData) {
|
|
56
56
|
var _a;
|
|
57
57
|
const config = (_a = tableData === null || tableData === void 0 ? void 0 : tableData.colData) === null || _a === void 0 ? void 0 : _a.cellTypeConfig;
|
|
58
|
+
const defaultToEmpty = notNullOrUndefined(config === null || config === void 0 ? void 0 : config.defaultToEmpty) ?
|
|
59
|
+
this._parseConfigValue(coerceBooleanProperty(config === null || config === void 0 ? void 0 : config.defaultToEmpty), tableData) : true;
|
|
60
|
+
const valueIsNumeric = isNumeric(currentValue);
|
|
61
|
+
if (!valueIsNumeric) {
|
|
62
|
+
if (defaultToEmpty) {
|
|
63
|
+
// return empty string instead of $0 when currentValue is empty or unparseable
|
|
64
|
+
return '';
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// set non-numeric value to 0 so it can be formatted the same as other numbers
|
|
68
|
+
currentValue = 0;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
58
71
|
const locale = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.locale, tableData) || 'en-US';
|
|
59
72
|
const currency = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.currency, tableData) || '$';
|
|
60
73
|
const currencyCode = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.currencyCode, tableData) || 'USD';
|
|
61
74
|
const minIntegerDigits = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.minIntegerDigits, tableData) || 1;
|
|
62
|
-
const minFractionDigits = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.minFractionDigits, tableData) ||
|
|
75
|
+
const minFractionDigits = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.minFractionDigits, tableData) || 2;
|
|
63
76
|
const maxFractionDigits = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.maxFractionDigits, tableData) || 2;
|
|
64
77
|
const format = `${minIntegerDigits}.${minFractionDigits}-${maxFractionDigits}`;
|
|
65
78
|
return formatCurrency(currentValue, locale, currency, currencyCode, format);
|
|
@@ -172,8 +185,22 @@ class TableCellTypeDecimalComponent {
|
|
|
172
185
|
_formatDecimal(currentValue, tableData) {
|
|
173
186
|
var _a;
|
|
174
187
|
const config = (_a = tableData === null || tableData === void 0 ? void 0 : tableData.colData) === null || _a === void 0 ? void 0 : _a.cellTypeConfig;
|
|
188
|
+
const defaultToEmpty = notNullOrUndefined(config === null || config === void 0 ? void 0 : config.defaultToEmpty) ?
|
|
189
|
+
this._parseConfigValue(coerceBooleanProperty(config === null || config === void 0 ? void 0 : config.defaultToEmpty), tableData) : true;
|
|
175
190
|
const formatDecimal = notNullOrUndefined(config === null || config === void 0 ? void 0 : config.formatNumber) ?
|
|
176
191
|
this._parseConfigValue(coerceBooleanProperty(config === null || config === void 0 ? void 0 : config.formatNumber), tableData) : true;
|
|
192
|
+
const valueIsNumeric = isNumeric(currentValue);
|
|
193
|
+
// unparseable values are OK to return as long as we're not trying to format them
|
|
194
|
+
if (!valueIsNumeric && formatDecimal) {
|
|
195
|
+
if (defaultToEmpty) {
|
|
196
|
+
// return empty string instead of 0 when currentValue is empty or unparseable
|
|
197
|
+
return '';
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
// set non-numeric value to 0 so it can be formatted the same as other numbers
|
|
201
|
+
currentValue = 0;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
177
204
|
const locale = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.locale, tableData) || 'en-US';
|
|
178
205
|
const minIntegerDigits = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.minIntegerDigits, tableData) || 1;
|
|
179
206
|
const minFractionDigits = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.minFractionDigits, tableData) || 0;
|
|
@@ -397,8 +424,22 @@ class TableCellTypeIntegerComponent {
|
|
|
397
424
|
_formatInteger(currentValue, tableData) {
|
|
398
425
|
var _a;
|
|
399
426
|
const config = (_a = tableData === null || tableData === void 0 ? void 0 : tableData.colData) === null || _a === void 0 ? void 0 : _a.cellTypeConfig;
|
|
427
|
+
const defaultToEmpty = notNullOrUndefined(config === null || config === void 0 ? void 0 : config.defaultToEmpty) ?
|
|
428
|
+
this._parseConfigValue(coerceBooleanProperty(config === null || config === void 0 ? void 0 : config.defaultToEmpty), tableData) : true;
|
|
400
429
|
const formatInteger = notNullOrUndefined(config === null || config === void 0 ? void 0 : config.formatNumber) ?
|
|
401
430
|
this._parseConfigValue(coerceBooleanProperty(config === null || config === void 0 ? void 0 : config.formatNumber), tableData) : true;
|
|
431
|
+
const valueIsNumeric = isNumeric(currentValue);
|
|
432
|
+
// unparseable values are OK to return as long as we're not trying to format them
|
|
433
|
+
if (!valueIsNumeric && formatInteger) {
|
|
434
|
+
if (defaultToEmpty) {
|
|
435
|
+
// return empty string instead of 0 when currentValue is empty or unparseable
|
|
436
|
+
return '';
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
// set non-numeric value to 0 so it can be formatted the same as other numbers
|
|
440
|
+
currentValue = 0;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
402
443
|
const locale = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.locale, tableData) || 'en-US';
|
|
403
444
|
const minIntegerDigits = this._parseConfigValue(config === null || config === void 0 ? void 0 : config.minIntegerDigits, tableData) || 1;
|
|
404
445
|
const format = `${minIntegerDigits}.0-0`;
|
|
@@ -748,12 +789,18 @@ class TableCellTypeStringComponent {
|
|
|
748
789
|
set config(value) {
|
|
749
790
|
this._config = value;
|
|
750
791
|
if (value) {
|
|
751
|
-
this.
|
|
792
|
+
this.setConfig(value);
|
|
752
793
|
}
|
|
753
794
|
}
|
|
754
|
-
set title(value) { this.
|
|
795
|
+
set title(value) { this._title = value; }
|
|
755
796
|
get title() { return this._title; }
|
|
756
797
|
get _titleAttr() { return this.title || this.value; }
|
|
798
|
+
set style(value) { this._style = value; }
|
|
799
|
+
get style() { return this._style; }
|
|
800
|
+
get _styleAttr() { return this.style; }
|
|
801
|
+
set classAttr(value) { this._class = value; }
|
|
802
|
+
get classAttr() { return this._class; }
|
|
803
|
+
get _classAttr() { return this.classAttr; }
|
|
757
804
|
ngOnInit() {
|
|
758
805
|
const _data = this._tableData;
|
|
759
806
|
if (_data) {
|
|
@@ -814,6 +861,24 @@ class TableCellTypeStringComponent {
|
|
|
814
861
|
this._detectMimeContent = detectMimeContent;
|
|
815
862
|
this._queryParams = queryParams;
|
|
816
863
|
}
|
|
864
|
+
setConfig(config) {
|
|
865
|
+
if (!config) {
|
|
866
|
+
return;
|
|
867
|
+
}
|
|
868
|
+
const title = this._parseConfigValue(config.titleAttr);
|
|
869
|
+
if (title) {
|
|
870
|
+
this.title = title;
|
|
871
|
+
}
|
|
872
|
+
const style = this._parseConfigValue(config.styleAttr);
|
|
873
|
+
if (style) {
|
|
874
|
+
this.style = style;
|
|
875
|
+
}
|
|
876
|
+
const classAttr = this._parseConfigValue(config.classAttr);
|
|
877
|
+
if (classAttr) {
|
|
878
|
+
this.classAttr = classAttr;
|
|
879
|
+
}
|
|
880
|
+
this.setAction(config.action);
|
|
881
|
+
}
|
|
817
882
|
_parseConfigValue(val) {
|
|
818
883
|
const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, this._tableCellData);
|
|
819
884
|
return this._tableCellTypeHelpers.parseValueProp(val, contextFn);
|
|
@@ -854,7 +919,11 @@ TableCellTypeStringComponent.propDecorators = {
|
|
|
854
919
|
value: [{ type: Input }],
|
|
855
920
|
config: [{ type: Input }],
|
|
856
921
|
title: [{ type: Input }],
|
|
857
|
-
_titleAttr: [{ type: HostBinding, args: ['attr.title',] }]
|
|
922
|
+
_titleAttr: [{ type: HostBinding, args: ['attr.title',] }],
|
|
923
|
+
style: [{ type: Input }],
|
|
924
|
+
_styleAttr: [{ type: HostBinding, args: ['attr.style',] }],
|
|
925
|
+
classAttr: [{ type: Input }],
|
|
926
|
+
_classAttr: [{ type: HostBinding, args: ['class',] }]
|
|
858
927
|
};
|
|
859
928
|
|
|
860
929
|
const ɵ0 = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-table-cell-types.js","sources":["../../../projects/ui-common/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-date/table-cell-type-date.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-string/table-cell-type-string.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-manifests.ts","../../../projects/ui-common/table-cell-types/table-cell-types.module.ts","../../../projects/ui-common/table-cell-types/theseam-ui-common-table-cell-types.ts"],"sourcesContent":["import { formatCurrency } from '@angular/common'\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\n\nimport { TableCellTypeConfigCurrency } from './table-cell-type-currency-config'\n\n@Component({\n selector: 'seam-table-cell-type-currency',\n templateUrl: './table-cell-type-currency.component.html',\n styleUrls: ['./table-cell-type-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeCurrencyComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: string | null | undefined\n\n row?: any\n rowIndex?: number\n colData?: TheSeamTableColumn<'currency', TableCellTypeConfigCurrency>\n textAlign?: 'left' | 'center' | 'right'\n // TODO: implement\n // titleAttr?: string\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'currency', TableCellTypeConfigCurrency>\n ) {\n const tableData = _tableData\n this.value = tableData && this._formatCurrency(tableData.value, tableData)\n this.row = tableData && tableData.row\n this.rowIndex = tableData && tableData.rowIndex\n this.colData = tableData && tableData.colData\n this.textAlign = this._parseConfigValue(tableData?.colData?.cellTypeConfig?.textAlign, tableData) || 'right'\n // this.titleAttr = this._parseConfigValue(tableData?.colData?.cellTypeConfig?.titleAttr, tableData) || this.value\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = this._formatCurrency(v.changes.value.currentValue, tableData)\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _formatCurrency(currentValue?: any, tableData?: TableCellData<'currency', TableCellTypeConfigCurrency>): string {\n const config = tableData?.colData?.cellTypeConfig\n const locale = this._parseConfigValue(config?.locale, tableData) || 'en-US'\n const currency = this._parseConfigValue(config?.currency, tableData) || '$'\n const currencyCode = this._parseConfigValue(config?.currencyCode, tableData) || 'USD'\n const minIntegerDigits = this._parseConfigValue(config?.minIntegerDigits, tableData) || 1\n const minFractionDigits = this._parseConfigValue(config?.minFractionDigits, tableData) || 0\n const maxFractionDigits = this._parseConfigValue(config?.maxFractionDigits, tableData) || 2\n const format = `${ minIntegerDigits }.${ minFractionDigits }-${ maxFractionDigits }`\n\n return formatCurrency(currentValue, locale, currency, currencyCode, format )\n }\n\n private _parseConfigValue(val?: any, tableData?: TableCellData<'currency', TableCellTypeConfigCurrency>) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, tableData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\n\nimport { TableCellTypeConfigDate } from './table-cell-type-date-config'\n\n@Component({\n selector: 'seam-table-cell-type-date',\n templateUrl: './table-cell-type-date.component.html',\n styleUrls: ['./table-cell-type-date.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeDateComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: string | undefined | null\n @Input() format: string | undefined | null\n\n constructor(\n private _cdf: ChangeDetectorRef,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'date', TableCellTypeConfigDate>\n ) {\n const _data = _tableData\n\n this.value = _data && _data.value\n this.format = _data && _data.colData && _data.colData.cellTypeConfig && _data.colData.cellTypeConfig.format\n\n if (_data) {\n _data.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n const colData = v.changes.colData.currentValue\n if (colData && colData.format !== this.format) {\n this.format = colData.format\n } else {\n this.format = undefined\n }\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n}\n","import { formatNumber } from '@angular/common'\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { TableCellTypeConfigDecimal } from './table-cell-type-decimal-config'\n\n@Component({\n selector: 'seam-table-cell-type-decimal',\n templateUrl: './table-cell-type-decimal.component.html',\n styleUrls: ['./table-cell-type-decimal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeDecimalComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: string | undefined | null\n\n row?: any\n rowIndex?: number\n colData?: TheSeamTableColumn<'decimal', TableCellTypeConfigDecimal>\n textAlign?: 'left' | 'center' | 'right'\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'decimal', TableCellTypeConfigDecimal>\n ) {\n const tableData = _tableData\n this.value = tableData && this._formatDecimal(tableData.value, tableData)\n this.row = tableData && tableData.row\n this.rowIndex = tableData && tableData.rowIndex\n this.colData = tableData && tableData.colData\n this.textAlign = this._parseConfigValue(tableData?.colData?.cellTypeConfig?.textAlign, tableData) || 'right'\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = this._formatDecimal(v.changes.value.currentValue, tableData)\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _formatDecimal(currentValue?: any, tableData?: TableCellData<'decimal', TableCellTypeConfigDecimal> | undefined): string {\n const config = tableData?.colData?.cellTypeConfig\n const formatDecimal = notNullOrUndefined(config?.formatNumber) ?\n this._parseConfigValue(coerceBooleanProperty(config?.formatNumber), tableData) : true\n const locale = this._parseConfigValue(config?.locale, tableData) || 'en-US'\n const minIntegerDigits = this._parseConfigValue(config?.minIntegerDigits, tableData) || 1\n const minFractionDigits = this._parseConfigValue(config?.minFractionDigits, tableData) || 0\n const maxFractionDigits = this._parseConfigValue(config?.maxFractionDigits, tableData) || 3\n const format = `${ minIntegerDigits }.${ minFractionDigits }-${ maxFractionDigits }`\n\n return formatDecimal ? formatNumber(currentValue, locale, format) : currentValue\n }\n\n private _parseConfigValue(val?: any, tableData?: TableCellData<'decimal', TableCellTypeConfigDecimal>) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, tableData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { DatatableComponent } from '@theseam/ui-common/datatable'\nimport { getKnownIcon, SeamIcon, TheSeamIconType } from '@theseam/ui-common/icon'\nimport { TableComponent } from '@theseam/ui-common/table'\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\n\nimport { TableCellTypeConfigIcon, TableCellTypeIconConfigAction } from './table-cell-type-icon-config'\n\nexport type IconTemplateType = 'default' | 'link' | 'link-external' | 'link-encrypted' | 'button'\n\n@Component({\n selector: 'seam-table-cell-type-icon',\n templateUrl: './table-cell-type-icon.component.html',\n styleUrls: ['./table-cell-type-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeIconComponent<R = any, V = any> implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input()\n get value() { return this._value }\n set value(value: string | undefined | null) {\n this._value = value\n this._icon = value ? getKnownIcon(value) || value : value\n }\n private _value: string | undefined | null\n\n @Input()\n get config() { return this._config }\n set config(value: TableCellTypeConfigIcon | undefined | null) {\n this._config = value\n if (value) {\n this.setAction(value.action)\n this._linkClass = this._parseConfigValue(value.linkClass)\n this._iconClass = this._parseConfigValue(value.iconClass)\n this._iconType = value.iconType\n this._title = this._parseConfigValue(value.titleAttr)\n this._srOnly = this._parseConfigValue(value.srOnly)\n this._tooltip = this._parseConfigValue(value.tooltip)\n if (this._tooltip) {\n this._tooltipClass = this._parseConfigValue(value.tooltipClass)\n this._tooltipPlacement = this._parseConfigValue(value.tooltipPlacement) || 'auto'\n this._tooltipContainer = this._parseConfigValue(value.tooltipContainer)\n this._tooltipDisabled = false\n } else {\n this._tooltipDisabled = true\n }\n }\n }\n private _config: TableCellTypeConfigIcon | undefined | null\n\n _icon: SeamIcon | undefined | null\n _link?: string\n _queryParams?: { [k: string]: any }\n _tplType: IconTemplateType = 'default'\n _title?: string\n _srOnly?: string\n _linkClass?: string\n _iconClass?: string\n _iconType?: TheSeamIconType\n _target?: string\n _tooltip?: string\n _tooltipClass?: string\n _tooltipPlacement?: string\n _tooltipContainer?: string\n _tooltipDisabled: boolean = true\n\n _buttonAction?: TableCellTypeIconConfigAction\n\n _tableCellData?: TableCellData<'icon', TableCellTypeConfigIcon>\n _row?: any\n _rowIndex?: number\n _colData?: TheSeamTableColumn<'icon', TableCellTypeConfigIcon>\n\n _download?: boolean\n _detectMimeContent?: boolean\n\n @HostBinding('class.datatable-cell-type') _isDatatable = false\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() private _datatable?: DatatableComponent,\n @Optional() private _table?: TableComponent,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'icon', TableCellTypeConfigIcon>\n ) {\n if (_datatable) {\n this._isDatatable = true\n // console.log('isDataTable')\n }\n // if (_table) {\n // console.log('isTable')\n // }\n\n const _data = _tableData\n this._tableCellData = _tableData\n\n this._row = _data && _data.row\n this._rowIndex = _data && _data.rowIndex\n\n this.value = _data && _data.value\n this._colData = _data && _data.colData\n if (_data && _data.colData && (<any>_data.colData).cellTypeConfig) {\n this.config = (<any>_data.colData).cellTypeConfig\n }\n\n if (_data) {\n _data.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this.config = this._config\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n const colData = v.changes.colData.currentValue\n if (colData && colData.cellTypeConfig !== this.config) {\n this.config = colData.cellTypeConfig\n } else {\n this.config = undefined\n }\n this._cdf.markForCheck()\n } else {\n if (v.changes.hasOwnProperty('row')) {\n this.config = this.config\n this._cdf.markForCheck()\n }\n }\n })\n }\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n public setAction(configAction?: TableCellTypeIconConfigAction) {\n let newTplType: IconTemplateType = 'default'\n let link: string | undefined\n let download: boolean = false\n let detectMimeContent = false\n let target: string | undefined\n let queryParams: { [l: string]: any } | undefined\n\n if (configAction) {\n if (configAction.type === 'link') {\n link = this._parseConfigValue(configAction.link)\n if (link !== undefined && link !== null) {\n newTplType = this._parseConfigValue(configAction.asset)\n ? 'link-encrypted'\n : this._parseConfigValue(configAction.external) ? 'link-external' : 'link'\n download = !!this._parseConfigValue(configAction.download)\n detectMimeContent = !!this._parseConfigValue(configAction.detectMimeContent)\n target = this._parseConfigValue(configAction.target)\n queryParams = this._parseConfigValue(configAction.queryParams)\n }\n } else if (configAction.type === 'modal') {\n newTplType = 'button'\n this._buttonAction = configAction\n }\n }\n\n this._tplType = newTplType\n this._link = link\n this._download = download\n this._detectMimeContent = detectMimeContent\n this._target = target\n this._queryParams = queryParams\n }\n\n private _parseConfigValue(val: any) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, this._tableCellData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n _doButtonAction() {\n if (this._buttonAction && this._buttonAction.type === 'modal') {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(this.value, this._tableCellData)\n this._tableCellTypeHelpers.handleModalAction(this._buttonAction, contextFn)\n .subscribe(\n r => {},\n err => console.error(err),\n () => this._actionRefreshRequest()\n )\n }\n }\n\n private _actionRefreshRequest() {\n if (this._datatable) {\n this._datatable.triggerActionRefreshRequest()\n } else if (this._table) {\n this._table.triggerActionRefreshRequest()\n }\n }\n\n}\n","import { formatNumber } from '@angular/common'\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\nimport { notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { TableCellTypeConfigInteger } from './table-cell-type-integer-config'\n\n@Component({\n selector: 'seam-table-cell-type-integer',\n templateUrl: './table-cell-type-integer.component.html',\n styleUrls: ['./table-cell-type-integer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeIntegerComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: string | null | undefined\n\n row?: any\n rowIndex?: number\n colData?: TheSeamTableColumn<'integer', TableCellTypeConfigInteger>\n textAlign?: 'left' | 'center' | 'right'\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'integer', TableCellTypeConfigInteger>\n ) {\n const tableData = _tableData\n this.value = tableData && this._formatInteger(tableData.value, tableData)\n this.row = tableData && tableData.row\n this.rowIndex = tableData && tableData.rowIndex\n this.colData = tableData && tableData.colData\n this.textAlign = this._parseConfigValue(tableData?.colData?.cellTypeConfig?.textAlign, tableData) || 'right'\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = this._formatInteger(v.changes.value.currentValue, tableData)\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _formatInteger(currentValue?: any, tableData?: TableCellData<'integer', TableCellTypeConfigInteger> | undefined): string {\n const config = tableData?.colData?.cellTypeConfig\n const formatInteger = notNullOrUndefined(config?.formatNumber) ?\n this._parseConfigValue(coerceBooleanProperty(config?.formatNumber), tableData) : true\n const locale = this._parseConfigValue(config?.locale, tableData) || 'en-US'\n const minIntegerDigits = this._parseConfigValue(config?.minIntegerDigits, tableData) || 1\n const format = `${ minIntegerDigits }.0-0`\n\n return formatInteger ? formatNumber(currentValue, locale, format ) : currentValue\n }\n\n private _parseConfigValue(val?: any, tableData?: TableCellData<'integer', TableCellTypeConfigInteger>) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, tableData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\nimport { coercePhoneNumberFormat, THESEAM_DEFAULT_PHONE_NUMBER_FORMAT } from '@theseam/ui-common/tel-input'\nimport type { intlTelInputUtils } from '@theseam/ui-common/tel-input'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport { TableCellTypeConfigPhone } from './table-cell-type-phone-config'\n\n@Component({\n selector: 'seam-table-cell-type-phone',\n templateUrl: './table-cell-type-phone.component.html',\n styleUrls: ['./table-cell-type-phone.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypePhoneComponent implements OnInit, OnDestroy {\n\n /** @ignore */\n private readonly _ngUnsubscribe = new Subject()\n\n /** @ignore */\n _format: intlTelInputUtils.numberFormat = THESEAM_DEFAULT_PHONE_NUMBER_FORMAT\n\n @Input() value?: string | null\n @Input()\n set format(value: intlTelInputUtils.numberFormat) { this._format = coercePhoneNumberFormat(value) }\n get format() { return this._format }\n\n constructor(\n private _cdf: ChangeDetectorRef,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'phone', TableCellTypeConfigPhone>\n ) {\n const _data = _tableData\n\n this.value = _data && _data.value\n if (_data && _data.colData && _data.colData.cellTypeConfig && hasProperty(_data.colData.cellTypeConfig, 'format')) {\n this.format = _data.colData.cellTypeConfig.format as intlTelInputUtils.numberFormat\n }\n\n if (_data) {\n _data.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n const colData = v.changes.colData.currentValue\n if (colData && hasProperty(colData, 'cellTypeConfig') &&\n hasProperty(colData.cellTypeConfig, 'format') &&\n colData.cellTypeConfig.format !== this.format\n ) {\n this.format = colData.cellTypeConfig.format\n } else {\n this.format = THESEAM_DEFAULT_PHONE_NUMBER_FORMAT\n }\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { SeamIcon } from '@theseam/ui-common/icon'\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\n\nimport { TableCellTypeConfigProgressCircleIcon } from './table-cell-type-progress-circle-icon-config'\n\n@Component({\n selector: 'seam-table-cell-type-progress-circle-icon',\n templateUrl: './table-cell-type-progress-circle-icon.component.html',\n styleUrls: ['./table-cell-type-progress-circle-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeProgressCircleIconComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: number | null | undefined\n\n row?: any\n rowIndex?: number\n colData?: TheSeamTableColumn<'progress-circle-icon', TableCellTypeConfigProgressCircleIcon>\n\n displayIcon: boolean = false\n icon?: SeamIcon\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'progress-circle-icon', TableCellTypeConfigProgressCircleIcon>\n ) {\n const tableData = _tableData\n this.value = tableData && tableData.value\n this.row = tableData && tableData.row\n this.rowIndex = tableData && tableData.rowIndex\n this.colData = tableData && tableData.colData\n\n this._setIcon(tableData)\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this._setIcon(tableData)\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n this._setIcon(tableData)\n this._cdf.markForCheck()\n } else {\n if (v.changes.hasOwnProperty('row')) {\n this._setIcon(tableData)\n this._cdf.markForCheck()\n }\n }\n })\n }\n }\n\n private _setIcon(tableData?: TableCellData<'progress-circle-icon', TableCellTypeConfigProgressCircleIcon>) {\n if (tableData &&\n tableData.colData &&\n tableData.colData.cellTypeConfig &&\n tableData.colData.cellTypeConfig.displayIcon &&\n tableData.colData.cellTypeConfig.icon &&\n this._parseConfigValue(tableData.colData.cellTypeConfig.displayIcon, tableData) &&\n this._parseConfigValue(tableData.colData.cellTypeConfig.icon, tableData)) {\n this.icon = this._parseConfigValue(tableData.colData.cellTypeConfig.icon, tableData)\n this.displayIcon = this._parseConfigValue(tableData.colData.cellTypeConfig.displayIcon, tableData)\n }\n }\n\n private _parseConfigValue(val: any, tableData?: TableCellData<'progress-circle-icon', TableCellTypeConfigProgressCircleIcon>) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, tableData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n}\n","import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { DatatableComponent } from '@theseam/ui-common/datatable'\nimport { TableComponent } from '@theseam/ui-common/table'\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\n\nimport { IconTemplateType } from './../table-cell-type-icon/table-cell-type-icon.component'\nimport { TableCellTypeConfigProgressCircle, TableCellTypeProgressCircleConfigAction } from './table-cell-type-progress-circle-config'\n\n@Component({\n selector: 'seam-table-cell-type-progress-circle',\n templateUrl: './table-cell-type-progress-circle.component.html',\n styleUrls: ['./table-cell-type-progress-circle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeProgressCircleComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: number | null | undefined\n\n _tableCellData?: TableCellData<'progress-circle', TableCellTypeConfigProgressCircle>\n colData?: TheSeamTableColumn<'progress-circle', TableCellTypeConfigProgressCircle>\n\n fillBackground: boolean = false\n showText: boolean = false\n hiddenOnEmpty: boolean = true\n pending: boolean = false\n tooltip?: string\n tooltipClass?: string\n tooltipPlacement?: string\n tooltipContainer?: string\n _tooltipDisabled: boolean = false\n\n _title?: string\n _srOnly?: string\n\n _link?: string\n _linkClass = '' // TODO: Decide if this makes sense\n _tplType: IconTemplateType = 'default'\n _target?: string\n _queryParams?: { [k: string]: any }\n\n _buttonAction?: TableCellTypeProgressCircleConfigAction\n\n _download?: boolean\n _detectMimeContent?: boolean\n\n private _config: TableCellTypeConfigProgressCircle | undefined | null\n\n @HostBinding('class.datatable-cell-type') _isDatatable = false\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() private _datatable?: DatatableComponent,\n @Optional() private _table?: TableComponent,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'progress-circle', TableCellTypeConfigProgressCircle>\n ) {\n if (_datatable) {\n this._isDatatable = true\n }\n\n const tableData = _tableData\n this._tableCellData = _tableData\n\n this.value = tableData && coerceNumberProperty(tableData.value)\n this.colData = tableData && tableData.colData\n\n if (this.colData && this.colData.cellTypeConfig) {\n this._setCellTypeConfigProps(this.colData.cellTypeConfig)\n }\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = coerceNumberProperty(v.changes.value.currentValue)\n if (this._config) {\n this._setCellTypeConfigProps(this._config)\n }\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n if (this.colData && this.colData.cellTypeConfig) {\n this._setCellTypeConfigProps(this.colData.cellTypeConfig)\n }\n this._cdf.markForCheck()\n } else {\n if (v.changes.hasOwnProperty('row')) {\n if (this.colData?.cellTypeConfig) {\n this._setCellTypeConfigProps(this.colData.cellTypeConfig)\n this._cdf.markForCheck()\n }\n }\n }\n })\n }\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _parseConfigValue(val: any) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, this._tableCellData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n public setAction(configAction?: TableCellTypeProgressCircleConfigAction) {\n let newTplType: IconTemplateType = 'default'\n let link: string | undefined\n let download: boolean = false\n let detectMimeContent = false\n let target: string | undefined\n let queryParams: { [k: string]: any } | undefined\n\n if (configAction) {\n if (configAction.type === 'link') {\n link = this._parseConfigValue(configAction.link)\n if (link !== undefined && link !== null) {\n newTplType = this._parseConfigValue(configAction.asset)\n ? 'link-encrypted'\n : this._parseConfigValue(configAction.external) ? 'link-external' : 'link'\n download = !!this._parseConfigValue(configAction.download)\n detectMimeContent = !!this._parseConfigValue(configAction.detectMimeContent)\n target = this._parseConfigValue(configAction.target)\n queryParams = this._parseConfigValue(configAction.queryParams)\n }\n } else if (configAction.type === 'modal') {\n newTplType = 'button'\n this._buttonAction = configAction\n }\n }\n\n this._tplType = newTplType\n this._link = link\n this._download = download\n this._detectMimeContent = detectMimeContent\n this._target = target\n this._queryParams = queryParams\n }\n\n private _setCellTypeConfigProps(config: TableCellTypeConfigProgressCircle): void {\n this._config = config\n this.setAction(config.action)\n this.fillBackground = coerceBooleanProperty(this._parseConfigValue(config.fillBackground))\n this.showText = coerceBooleanProperty(this._parseConfigValue(config.showText))\n this.hiddenOnEmpty = coerceBooleanProperty(this._parseConfigValue(config.hiddenOnEmpty))\n this.pending = coerceBooleanProperty(this._parseConfigValue(config.pending))\n this.tooltip = this._parseConfigValue(config.tooltip)\n\n this.tooltip = this._parseConfigValue(config.tooltip)\n if (this.tooltip) {\n this.tooltipClass = this._parseConfigValue(config.tooltipClass)\n this.tooltipPlacement = this._parseConfigValue(config.tooltipPlacement) || 'auto'\n this.tooltipContainer = this._parseConfigValue(config.tooltipContainer)\n this._tooltipDisabled = false\n } else {\n this._tooltipDisabled = true\n }\n\n this._title = this._parseConfigValue(config.titleAttr)\n this._srOnly = this._parseConfigValue(config.srOnly)\n }\n\n _doButtonAction() {\n if (this._buttonAction && this._buttonAction.type === 'modal') {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(this.value, this._tableCellData)\n this._tableCellTypeHelpers.handleModalAction(this._buttonAction, contextFn)\n .subscribe(\n r => {},\n err => console.error(err),\n () => this._actionRefreshRequest()\n )\n }\n }\n\n private _actionRefreshRequest() {\n if (this._datatable) {\n this._datatable.triggerActionRefreshRequest()\n } else if (this._table) {\n this._table.triggerActionRefreshRequest()\n }\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { DatatableComponent } from '@theseam/ui-common/datatable'\nimport { TableComponent } from '@theseam/ui-common/table'\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\n\n\nimport { TableCellTypeConfigString, TableCellTypeStringConfigAction } from './table-cell-type-string-config'\n\nexport type StringTemplateType = 'default' | 'link' | 'link-external' | 'link-encrypted' | 'button'\n\n@Component({\n selector: 'seam-table-cell-type-string',\n templateUrl: './table-cell-type-string.component.html',\n styleUrls: ['./table-cell-type-string.component.scss'],\n host: { },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeStringComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input()\n get value() { return this._value }\n set value(val: string | null | undefined) {\n this._value = val\n // TODO: This is temporary to test the feature and will be fixed when the\n // dynamic column data is fixed. The plan is to add a config toggle to\n // always enable and depending on performance it could try to decide on its\n // own based on content size.\n if (this.value && this.value.length > 30) {\n this.canPopover = true\n }\n }\n _value: string | null | undefined\n\n @Input()\n get config() { return this._config }\n set config(value: TableCellTypeConfigString | undefined | null) {\n this._config = value\n if (value) {\n this.setAction(value.action)\n }\n }\n private _config: TableCellTypeConfigString | undefined | null\n\n _tplType: StringTemplateType = 'default'\n _link?: string\n _title?: string\n _queryParams?: { [k: string]: any }\n\n _buttonAction?: TableCellTypeStringConfigAction\n\n _tableCellData?: TableCellData<'string', TableCellTypeConfigString>\n _row?: any\n _rowIndex?: number\n _colData?: TheSeamTableColumn<'string', TableCellTypeConfigString>\n\n _download?: boolean\n _detectMimeContent?: boolean\n\n @Input()\n set title(value: string | undefined) { this.title = value }\n get title(): string | undefined { return this._title }\n\n @HostBinding('attr.title') get _titleAttr() { return this.title || this.value }\n\n canPopover = false\n\n constructor(\n private readonly _cdf: ChangeDetectorRef,\n private readonly _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() private _datatable?: DatatableComponent,\n @Optional() private _table?: TableComponent,\n @Optional() @Inject(TABLE_CELL_DATA) readonly _tableData?: TableCellData<'string', TableCellTypeConfigString>\n ) {\n const _data = _tableData\n this._tableCellData = _tableData\n\n this._row = _data && _data.row\n this._rowIndex = _data && _data.rowIndex\n\n this.value = _data && _data.value\n this._colData = _data && _data.colData\n if (_data && _data.colData && (<any>_data.colData).cellTypeConfig) {\n this.config = (<any>_data.colData).cellTypeConfig\n }\n }\n\n ngOnInit() {\n const _data = this._tableData\n if (_data) {\n _data.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n const colData = v.changes.colData.currentValue\n if (colData && colData.cellTypeConfig !== this.config) {\n this.config = colData.cellTypeConfig\n } else {\n this.config = undefined\n }\n this._cdf.markForCheck()\n } else {\n if (v.changes.hasOwnProperty('row')) {\n this.config = this.config\n this._cdf.markForCheck()\n }\n }\n })\n }\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n public setAction(configAction?: TableCellTypeStringConfigAction) {\n let newTplType: StringTemplateType = 'default'\n let link: string | undefined\n let download: boolean = false\n let detectMimeContent = false\n let queryParams: { [k: string]: any } | undefined\n\n if (configAction) {\n if (configAction.type === 'link') {\n link = this._parseConfigValue(configAction.link)\n if (link !== undefined && link !== null) {\n newTplType = this._parseConfigValue(configAction.asset) ? 'link-encrypted' : 'link'\n download = !!this._parseConfigValue(configAction.download)\n detectMimeContent = !!this._parseConfigValue(configAction.detectMimeContent)\n queryParams = this._parseConfigValue(configAction.queryParams)\n }\n } else if (configAction.type === 'modal') {\n newTplType = 'button'\n this._buttonAction = configAction\n }\n }\n\n this._tplType = newTplType\n this._link = link\n this._download = download\n this._detectMimeContent = detectMimeContent\n this._queryParams = queryParams\n }\n\n private _parseConfigValue(val: any) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, this._tableCellData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n _doButtonAction() {\n if (this._buttonAction && this._buttonAction.type === 'modal') {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(this.value, this._tableCellData)\n this._tableCellTypeHelpers.handleModalAction(this._buttonAction, contextFn)\n .subscribe(\n r => {},\n err => console.error(err),\n () => this._actionRefreshRequest()\n )\n }\n }\n\n private _actionRefreshRequest() {\n if (this._datatable) {\n this._datatable.triggerActionRefreshRequest()\n } else if (this._table) {\n this._table.triggerActionRefreshRequest()\n }\n }\n\n}\n","import { ITableCellTypeManifestProvider, TABLE_CELL_TYPE_MANIFEST } from '@theseam/ui-common/table-cell-type'\n\nimport { TableCellTypeCurrencyComponent } from './table-cell-type-currency/table-cell-type-currency.component'\nimport { TableCellTypeDateComponent } from './table-cell-type-date/table-cell-type-date.component'\nimport { TableCellTypeDecimalComponent } from './table-cell-type-decimal/table-cell-type-decimal.component'\nimport { TableCellTypeIconComponent } from './table-cell-type-icon/table-cell-type-icon.component'\nimport { TableCellTypeIntegerComponent } from './table-cell-type-integer/table-cell-type-integer.component'\nimport { TableCellTypePhoneComponent } from './table-cell-type-phone/table-cell-type-phone.component'\n// tslint:disable-next-line: max-line-length\nimport { TableCellTypeProgressCircleIconComponent } from './table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component'\nimport { TableCellTypeProgressCircleComponent } from './table-cell-type-progress-circle/table-cell-type-progress-circle.component'\nimport { TableCellTypeStringComponent } from './table-cell-type-string/table-cell-type-string.component'\n\nexport const TABLE_CELL_TYPE_MANIFEST_STRING: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'string',\n component: TableCellTypeStringComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_CURRENCY: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'currency',\n component: TableCellTypeCurrencyComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_DECIMAL: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'decimal',\n component: TableCellTypeDecimalComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_INTEGER: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'integer',\n component: TableCellTypeIntegerComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_DATE: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'date',\n component: TableCellTypeDateComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_ICON: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'icon',\n component: TableCellTypeIconComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_IMAGE: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'image',\n component: TableCellTypeIconComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'progress-circle',\n component: TableCellTypeProgressCircleComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE_ICON: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'progress-circle-icon',\n component: TableCellTypeProgressCircleIconComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_PHONE: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'phone',\n component: TableCellTypePhoneComponent\n },\n multi: true\n}\n","import { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'\n\nimport { TheSeamAssetReaderModule } from '@theseam/ui-common/asset-reader'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamPopoverModule } from '@theseam/ui-common/popover'\nimport { TheSeamProgressModule } from '@theseam/ui-common/progress'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\nimport { TheSeamTableCellTypeModule } from '@theseam/ui-common/table-cell-type'\nimport { TheSeamTelInputModule } from '@theseam/ui-common/tel-input'\n\nimport { TableCellTypeCurrencyComponent } from './table-cell-type-currency/table-cell-type-currency.component'\nimport { TableCellTypeDateComponent } from './table-cell-type-date/table-cell-type-date.component'\nimport { TableCellTypeDecimalComponent } from './table-cell-type-decimal/table-cell-type-decimal.component'\nimport { TableCellTypeIconComponent } from './table-cell-type-icon/table-cell-type-icon.component'\nimport { TableCellTypeIntegerComponent } from './table-cell-type-integer/table-cell-type-integer.component'\nimport { TableCellTypePhoneComponent } from './table-cell-type-phone/table-cell-type-phone.component'\n// tslint:disable-next-line: max-line-length\nimport { TableCellTypeProgressCircleIconComponent } from './table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component'\nimport { TableCellTypeProgressCircleComponent } from './table-cell-type-progress-circle/table-cell-type-progress-circle.component'\nimport { TableCellTypeStringComponent } from './table-cell-type-string/table-cell-type-string.component'\n\nimport {\n TABLE_CELL_TYPE_MANIFEST_CURRENCY,\n TABLE_CELL_TYPE_MANIFEST_DATE,\n TABLE_CELL_TYPE_MANIFEST_DECIMAL,\n TABLE_CELL_TYPE_MANIFEST_ICON,\n TABLE_CELL_TYPE_MANIFEST_IMAGE,\n TABLE_CELL_TYPE_MANIFEST_INTEGER,\n TABLE_CELL_TYPE_MANIFEST_PHONE,\n TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE,\n TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE_ICON,\n TABLE_CELL_TYPE_MANIFEST_STRING\n} from './table-cell-type-manifests'\n\nconst cellTypeComponents = [\n TableCellTypeStringComponent,\n TableCellTypeCurrencyComponent,\n TableCellTypeDateComponent,\n TableCellTypeDecimalComponent,\n TableCellTypeIconComponent,\n TableCellTypeIntegerComponent,\n TableCellTypeProgressCircleComponent,\n TableCellTypeProgressCircleIconComponent,\n TableCellTypePhoneComponent\n]\n\nconst cellTypeProviders = [\n TABLE_CELL_TYPE_MANIFEST_STRING,\n TABLE_CELL_TYPE_MANIFEST_INTEGER,\n TABLE_CELL_TYPE_MANIFEST_CURRENCY,\n TABLE_CELL_TYPE_MANIFEST_DECIMAL,\n TABLE_CELL_TYPE_MANIFEST_DATE,\n TABLE_CELL_TYPE_MANIFEST_ICON,\n TABLE_CELL_TYPE_MANIFEST_IMAGE,\n TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE,\n TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE_ICON,\n TABLE_CELL_TYPE_MANIFEST_PHONE\n]\n\n@NgModule({\n declarations: [\n ...cellTypeComponents\n ],\n imports: [\n CommonModule,\n NgbTooltipModule,\n RouterModule,\n TheSeamSharedModule,\n TheSeamIconModule,\n PortalModule,\n TheSeamPopoverModule,\n TheSeamProgressModule,\n TheSeamTelInputModule,\n TheSeamAssetReaderModule,\n TheSeamTableCellTypeModule\n ],\n providers: [\n ...cellTypeProviders\n ],\n exports: [\n ...cellTypeComponents\n ],\n entryComponents: [\n ...cellTypeComponents\n ]\n})\nexport class TheSeamTableCellTypesModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {TableCellTypeConfigProgressCircleIcon as ɵb} from './table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon-config';\nexport {TableCellTypeConfigProgressCircle as ɵa} from './table-cell-type-progress-circle/table-cell-type-progress-circle-config';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-table-cell-types.js","sources":["../../../projects/ui-common/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-date/table-cell-type-date.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-phone/table-cell-type-phone.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-string/table-cell-type-string.component.ts","../../../projects/ui-common/table-cell-types/table-cell-type-manifests.ts","../../../projects/ui-common/table-cell-types/table-cell-types.module.ts","../../../projects/ui-common/table-cell-types/theseam-ui-common-table-cell-types.ts"],"sourcesContent":["import { formatCurrency } from '@angular/common'\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\nimport { isNumeric, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion'\n\nimport { TableCellTypeConfigCurrency } from './table-cell-type-currency-config'\n\n@Component({\n selector: 'seam-table-cell-type-currency',\n templateUrl: './table-cell-type-currency.component.html',\n styleUrls: ['./table-cell-type-currency.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeCurrencyComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: string | null | undefined\n\n row?: any\n rowIndex?: number\n colData?: TheSeamTableColumn<'currency', TableCellTypeConfigCurrency>\n textAlign?: 'left' | 'center' | 'right'\n // TODO: implement\n // titleAttr?: string\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'currency', TableCellTypeConfigCurrency>\n ) {\n const tableData = _tableData\n this.value = tableData && this._formatCurrency(tableData.value, tableData)\n this.row = tableData && tableData.row\n this.rowIndex = tableData && tableData.rowIndex\n this.colData = tableData && tableData.colData\n this.textAlign = this._parseConfigValue(tableData?.colData?.cellTypeConfig?.textAlign, tableData) || 'right'\n // this.titleAttr = this._parseConfigValue(tableData?.colData?.cellTypeConfig?.titleAttr, tableData) || this.value\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = this._formatCurrency(v.changes.value.currentValue, tableData)\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _formatCurrency(currentValue?: any, tableData?: TableCellData<'currency', TableCellTypeConfigCurrency>): string {\n const config = tableData?.colData?.cellTypeConfig\n const defaultToEmpty = notNullOrUndefined(config?.defaultToEmpty) ?\n this._parseConfigValue(coerceBooleanProperty(config?.defaultToEmpty), tableData) : true\n const valueIsNumeric = isNumeric(currentValue)\n\n if (!valueIsNumeric) {\n if (defaultToEmpty) {\n // return empty string instead of $0 when currentValue is empty or unparseable\n return ''\n } else {\n // set non-numeric value to 0 so it can be formatted the same as other numbers\n currentValue = 0\n }\n }\n\n const locale = this._parseConfigValue(config?.locale, tableData) || 'en-US'\n const currency = this._parseConfigValue(config?.currency, tableData) || '$'\n const currencyCode = this._parseConfigValue(config?.currencyCode, tableData) || 'USD'\n\n const minIntegerDigits = this._parseConfigValue(config?.minIntegerDigits, tableData) || 1\n const minFractionDigits = this._parseConfigValue(config?.minFractionDigits, tableData) || 2\n const maxFractionDigits = this._parseConfigValue(config?.maxFractionDigits, tableData) || 2\n const format = `${ minIntegerDigits }.${ minFractionDigits }-${ maxFractionDigits }`\n\n return formatCurrency(currentValue, locale, currency, currencyCode, format )\n }\n\n private _parseConfigValue(val?: any, tableData?: TableCellData<'currency', TableCellTypeConfigCurrency>) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, tableData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\n\nimport { TableCellTypeConfigDate } from './table-cell-type-date-config'\n\n@Component({\n selector: 'seam-table-cell-type-date',\n templateUrl: './table-cell-type-date.component.html',\n styleUrls: ['./table-cell-type-date.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeDateComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: string | undefined | null\n @Input() format: string | undefined | null\n\n constructor(\n private _cdf: ChangeDetectorRef,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'date', TableCellTypeConfigDate>\n ) {\n const _data = _tableData\n\n this.value = _data && _data.value\n this.format = _data && _data.colData && _data.colData.cellTypeConfig && _data.colData.cellTypeConfig.format\n\n if (_data) {\n _data.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n const colData = v.changes.colData.currentValue\n if (colData && colData.format !== this.format) {\n this.format = colData.format\n } else {\n this.format = undefined\n }\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n}\n","import { formatNumber } from '@angular/common'\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\nimport { isNumeric, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { TableCellTypeConfigDecimal } from './table-cell-type-decimal-config'\n\n@Component({\n selector: 'seam-table-cell-type-decimal',\n templateUrl: './table-cell-type-decimal.component.html',\n styleUrls: ['./table-cell-type-decimal.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeDecimalComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: string | undefined | null\n\n row?: any\n rowIndex?: number\n colData?: TheSeamTableColumn<'decimal', TableCellTypeConfigDecimal>\n textAlign?: 'left' | 'center' | 'right'\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'decimal', TableCellTypeConfigDecimal>\n ) {\n const tableData = _tableData\n this.value = tableData && this._formatDecimal(tableData.value, tableData)\n this.row = tableData && tableData.row\n this.rowIndex = tableData && tableData.rowIndex\n this.colData = tableData && tableData.colData\n this.textAlign = this._parseConfigValue(tableData?.colData?.cellTypeConfig?.textAlign, tableData) || 'right'\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = this._formatDecimal(v.changes.value.currentValue, tableData)\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _formatDecimal(currentValue?: any, tableData?: TableCellData<'decimal', TableCellTypeConfigDecimal> | undefined): string {\n const config = tableData?.colData?.cellTypeConfig\n const defaultToEmpty = notNullOrUndefined(config?.defaultToEmpty) ?\n this._parseConfigValue(coerceBooleanProperty(config?.defaultToEmpty), tableData) : true\n const formatDecimal = notNullOrUndefined(config?.formatNumber) ?\n this._parseConfigValue(coerceBooleanProperty(config?.formatNumber), tableData) : true\n const valueIsNumeric = isNumeric(currentValue)\n\n // unparseable values are OK to return as long as we're not trying to format them\n if (!valueIsNumeric && formatDecimal) {\n if (defaultToEmpty) {\n // return empty string instead of 0 when currentValue is empty or unparseable\n return ''\n } else {\n // set non-numeric value to 0 so it can be formatted the same as other numbers\n currentValue = 0\n }\n }\n\n const locale = this._parseConfigValue(config?.locale, tableData) || 'en-US'\n const minIntegerDigits = this._parseConfigValue(config?.minIntegerDigits, tableData) || 1\n const minFractionDigits = this._parseConfigValue(config?.minFractionDigits, tableData) || 0\n const maxFractionDigits = this._parseConfigValue(config?.maxFractionDigits, tableData) || 3\n const format = `${ minIntegerDigits }.${ minFractionDigits }-${ maxFractionDigits }`\n\n return formatDecimal ? formatNumber(currentValue, locale, format) : currentValue\n }\n\n private _parseConfigValue(val?: any, tableData?: TableCellData<'decimal', TableCellTypeConfigDecimal>) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, tableData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { DatatableComponent } from '@theseam/ui-common/datatable'\nimport { getKnownIcon, SeamIcon, TheSeamIconType } from '@theseam/ui-common/icon'\nimport { TableComponent } from '@theseam/ui-common/table'\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\n\nimport { TableCellTypeConfigIcon, TableCellTypeIconConfigAction } from './table-cell-type-icon-config'\n\nexport type IconTemplateType = 'default' | 'link' | 'link-external' | 'link-encrypted' | 'button'\n\n@Component({\n selector: 'seam-table-cell-type-icon',\n templateUrl: './table-cell-type-icon.component.html',\n styleUrls: ['./table-cell-type-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeIconComponent<R = any, V = any> implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input()\n get value() { return this._value }\n set value(value: string | undefined | null) {\n this._value = value\n this._icon = value ? getKnownIcon(value) || value : value\n }\n private _value: string | undefined | null\n\n @Input()\n get config() { return this._config }\n set config(value: TableCellTypeConfigIcon | undefined | null) {\n this._config = value\n if (value) {\n this.setAction(value.action)\n this._linkClass = this._parseConfigValue(value.linkClass)\n this._iconClass = this._parseConfigValue(value.iconClass)\n this._iconType = value.iconType\n this._title = this._parseConfigValue(value.titleAttr)\n this._srOnly = this._parseConfigValue(value.srOnly)\n this._tooltip = this._parseConfigValue(value.tooltip)\n if (this._tooltip) {\n this._tooltipClass = this._parseConfigValue(value.tooltipClass)\n this._tooltipPlacement = this._parseConfigValue(value.tooltipPlacement) || 'auto'\n this._tooltipContainer = this._parseConfigValue(value.tooltipContainer)\n this._tooltipDisabled = false\n } else {\n this._tooltipDisabled = true\n }\n }\n }\n private _config: TableCellTypeConfigIcon | undefined | null\n\n _icon: SeamIcon | undefined | null\n _link?: string\n _queryParams?: { [k: string]: any }\n _tplType: IconTemplateType = 'default'\n _title?: string\n _srOnly?: string\n _linkClass?: string\n _iconClass?: string\n _iconType?: TheSeamIconType\n _target?: string\n _tooltip?: string\n _tooltipClass?: string\n _tooltipPlacement?: string\n _tooltipContainer?: string\n _tooltipDisabled: boolean = true\n\n _buttonAction?: TableCellTypeIconConfigAction\n\n _tableCellData?: TableCellData<'icon', TableCellTypeConfigIcon>\n _row?: any\n _rowIndex?: number\n _colData?: TheSeamTableColumn<'icon', TableCellTypeConfigIcon>\n\n _download?: boolean\n _detectMimeContent?: boolean\n\n @HostBinding('class.datatable-cell-type') _isDatatable = false\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() private _datatable?: DatatableComponent,\n @Optional() private _table?: TableComponent,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'icon', TableCellTypeConfigIcon>\n ) {\n if (_datatable) {\n this._isDatatable = true\n // console.log('isDataTable')\n }\n // if (_table) {\n // console.log('isTable')\n // }\n\n const _data = _tableData\n this._tableCellData = _tableData\n\n this._row = _data && _data.row\n this._rowIndex = _data && _data.rowIndex\n\n this.value = _data && _data.value\n this._colData = _data && _data.colData\n if (_data && _data.colData && (<any>_data.colData).cellTypeConfig) {\n this.config = (<any>_data.colData).cellTypeConfig\n }\n\n if (_data) {\n _data.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this.config = this._config\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n const colData = v.changes.colData.currentValue\n if (colData && colData.cellTypeConfig !== this.config) {\n this.config = colData.cellTypeConfig\n } else {\n this.config = undefined\n }\n this._cdf.markForCheck()\n } else {\n if (v.changes.hasOwnProperty('row')) {\n this.config = this.config\n this._cdf.markForCheck()\n }\n }\n })\n }\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n public setAction(configAction?: TableCellTypeIconConfigAction) {\n let newTplType: IconTemplateType = 'default'\n let link: string | undefined\n let download: boolean = false\n let detectMimeContent = false\n let target: string | undefined\n let queryParams: { [l: string]: any } | undefined\n\n if (configAction) {\n if (configAction.type === 'link') {\n link = this._parseConfigValue(configAction.link)\n if (link !== undefined && link !== null) {\n newTplType = this._parseConfigValue(configAction.asset)\n ? 'link-encrypted'\n : this._parseConfigValue(configAction.external) ? 'link-external' : 'link'\n download = !!this._parseConfigValue(configAction.download)\n detectMimeContent = !!this._parseConfigValue(configAction.detectMimeContent)\n target = this._parseConfigValue(configAction.target)\n queryParams = this._parseConfigValue(configAction.queryParams)\n }\n } else if (configAction.type === 'modal') {\n newTplType = 'button'\n this._buttonAction = configAction\n }\n }\n\n this._tplType = newTplType\n this._link = link\n this._download = download\n this._detectMimeContent = detectMimeContent\n this._target = target\n this._queryParams = queryParams\n }\n\n private _parseConfigValue(val: any) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, this._tableCellData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n _doButtonAction() {\n if (this._buttonAction && this._buttonAction.type === 'modal') {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(this.value, this._tableCellData)\n this._tableCellTypeHelpers.handleModalAction(this._buttonAction, contextFn)\n .subscribe(\n r => {},\n err => console.error(err),\n () => this._actionRefreshRequest()\n )\n }\n }\n\n private _actionRefreshRequest() {\n if (this._datatable) {\n this._datatable.triggerActionRefreshRequest()\n } else if (this._table) {\n this._table.triggerActionRefreshRequest()\n }\n }\n\n}\n","import { formatNumber } from '@angular/common'\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\nimport { isNumeric, notNullOrUndefined } from '@theseam/ui-common/utils'\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { TableCellTypeConfigInteger } from './table-cell-type-integer-config'\n\n@Component({\n selector: 'seam-table-cell-type-integer',\n templateUrl: './table-cell-type-integer.component.html',\n styleUrls: ['./table-cell-type-integer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeIntegerComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: string | null | undefined\n\n row?: any\n rowIndex?: number\n colData?: TheSeamTableColumn<'integer', TableCellTypeConfigInteger>\n textAlign?: 'left' | 'center' | 'right'\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'integer', TableCellTypeConfigInteger>\n ) {\n const tableData = _tableData\n this.value = tableData && this._formatInteger(tableData.value, tableData)\n this.row = tableData && tableData.row\n this.rowIndex = tableData && tableData.rowIndex\n this.colData = tableData && tableData.colData\n this.textAlign = this._parseConfigValue(tableData?.colData?.cellTypeConfig?.textAlign, tableData) || 'right'\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = this._formatInteger(v.changes.value.currentValue, tableData)\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _formatInteger(currentValue?: any, tableData?: TableCellData<'integer', TableCellTypeConfigInteger> | undefined): string {\n const config = tableData?.colData?.cellTypeConfig\n const defaultToEmpty = notNullOrUndefined(config?.defaultToEmpty) ?\n this._parseConfigValue(coerceBooleanProperty(config?.defaultToEmpty), tableData) : true\n const formatInteger = notNullOrUndefined(config?.formatNumber) ?\n this._parseConfigValue(coerceBooleanProperty(config?.formatNumber), tableData) : true\n const valueIsNumeric = isNumeric(currentValue)\n\n // unparseable values are OK to return as long as we're not trying to format them\n if (!valueIsNumeric && formatInteger) {\n if (defaultToEmpty) {\n // return empty string instead of 0 when currentValue is empty or unparseable\n return ''\n } else {\n // set non-numeric value to 0 so it can be formatted the same as other numbers\n currentValue = 0\n }\n }\n\n const locale = this._parseConfigValue(config?.locale, tableData) || 'en-US'\n const minIntegerDigits = this._parseConfigValue(config?.minIntegerDigits, tableData) || 1\n const format = `${ minIntegerDigits }.0-0`\n\n return formatInteger ? formatNumber(currentValue, locale, format ) : currentValue\n }\n\n private _parseConfigValue(val?: any, tableData?: TableCellData<'integer', TableCellTypeConfigInteger>) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, tableData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData } from '@theseam/ui-common/table-cell-type'\nimport { coercePhoneNumberFormat, THESEAM_DEFAULT_PHONE_NUMBER_FORMAT } from '@theseam/ui-common/tel-input'\nimport type { intlTelInputUtils } from '@theseam/ui-common/tel-input'\nimport { hasProperty } from '@theseam/ui-common/utils'\n\nimport { TableCellTypeConfigPhone } from './table-cell-type-phone-config'\n\n@Component({\n selector: 'seam-table-cell-type-phone',\n templateUrl: './table-cell-type-phone.component.html',\n styleUrls: ['./table-cell-type-phone.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypePhoneComponent implements OnInit, OnDestroy {\n\n /** @ignore */\n private readonly _ngUnsubscribe = new Subject()\n\n /** @ignore */\n _format: intlTelInputUtils.numberFormat = THESEAM_DEFAULT_PHONE_NUMBER_FORMAT\n\n @Input() value?: string | null\n @Input()\n set format(value: intlTelInputUtils.numberFormat) { this._format = coercePhoneNumberFormat(value) }\n get format() { return this._format }\n\n constructor(\n private _cdf: ChangeDetectorRef,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'phone', TableCellTypeConfigPhone>\n ) {\n const _data = _tableData\n\n this.value = _data && _data.value\n if (_data && _data.colData && _data.colData.cellTypeConfig && hasProperty(_data.colData.cellTypeConfig, 'format')) {\n this.format = _data.colData.cellTypeConfig.format as intlTelInputUtils.numberFormat\n }\n\n if (_data) {\n _data.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n const colData = v.changes.colData.currentValue\n if (colData && hasProperty(colData, 'cellTypeConfig') &&\n hasProperty(colData.cellTypeConfig, 'format') &&\n colData.cellTypeConfig.format !== this.format\n ) {\n this.format = colData.cellTypeConfig.format\n } else {\n this.format = THESEAM_DEFAULT_PHONE_NUMBER_FORMAT\n }\n this._cdf.markForCheck()\n }\n })\n }\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, OnDestroy, OnInit, Optional } from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { SeamIcon } from '@theseam/ui-common/icon'\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\n\nimport { TableCellTypeConfigProgressCircleIcon } from './table-cell-type-progress-circle-icon-config'\n\n@Component({\n selector: 'seam-table-cell-type-progress-circle-icon',\n templateUrl: './table-cell-type-progress-circle-icon.component.html',\n styleUrls: ['./table-cell-type-progress-circle-icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeProgressCircleIconComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: number | null | undefined\n\n row?: any\n rowIndex?: number\n colData?: TheSeamTableColumn<'progress-circle-icon', TableCellTypeConfigProgressCircleIcon>\n\n displayIcon: boolean = false\n icon?: SeamIcon\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'progress-circle-icon', TableCellTypeConfigProgressCircleIcon>\n ) {\n const tableData = _tableData\n this.value = tableData && tableData.value\n this.row = tableData && tableData.row\n this.rowIndex = tableData && tableData.rowIndex\n this.colData = tableData && tableData.colData\n\n this._setIcon(tableData)\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this._setIcon(tableData)\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n this._setIcon(tableData)\n this._cdf.markForCheck()\n } else {\n if (v.changes.hasOwnProperty('row')) {\n this._setIcon(tableData)\n this._cdf.markForCheck()\n }\n }\n })\n }\n }\n\n private _setIcon(tableData?: TableCellData<'progress-circle-icon', TableCellTypeConfigProgressCircleIcon>) {\n if (tableData &&\n tableData.colData &&\n tableData.colData.cellTypeConfig &&\n tableData.colData.cellTypeConfig.displayIcon &&\n tableData.colData.cellTypeConfig.icon &&\n this._parseConfigValue(tableData.colData.cellTypeConfig.displayIcon, tableData) &&\n this._parseConfigValue(tableData.colData.cellTypeConfig.icon, tableData)) {\n this.icon = this._parseConfigValue(tableData.colData.cellTypeConfig.icon, tableData)\n this.displayIcon = this._parseConfigValue(tableData.colData.cellTypeConfig.displayIcon, tableData)\n }\n }\n\n private _parseConfigValue(val: any, tableData?: TableCellData<'progress-circle-icon', TableCellTypeConfigProgressCircleIcon>) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, tableData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n}\n","import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion'\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { DatatableComponent } from '@theseam/ui-common/datatable'\nimport { TableComponent } from '@theseam/ui-common/table'\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\n\nimport { IconTemplateType } from './../table-cell-type-icon/table-cell-type-icon.component'\nimport { TableCellTypeConfigProgressCircle, TableCellTypeProgressCircleConfigAction } from './table-cell-type-progress-circle-config'\n\n@Component({\n selector: 'seam-table-cell-type-progress-circle',\n templateUrl: './table-cell-type-progress-circle.component.html',\n styleUrls: ['./table-cell-type-progress-circle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeProgressCircleComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input() value: number | null | undefined\n\n _tableCellData?: TableCellData<'progress-circle', TableCellTypeConfigProgressCircle>\n colData?: TheSeamTableColumn<'progress-circle', TableCellTypeConfigProgressCircle>\n\n fillBackground: boolean = false\n showText: boolean = false\n hiddenOnEmpty: boolean = true\n pending: boolean = false\n tooltip?: string\n tooltipClass?: string\n tooltipPlacement?: string\n tooltipContainer?: string\n _tooltipDisabled: boolean = false\n\n _title?: string\n _srOnly?: string\n\n _link?: string\n _linkClass = '' // TODO: Decide if this makes sense\n _tplType: IconTemplateType = 'default'\n _target?: string\n _queryParams?: { [k: string]: any }\n\n _buttonAction?: TableCellTypeProgressCircleConfigAction\n\n _download?: boolean\n _detectMimeContent?: boolean\n\n private _config: TableCellTypeConfigProgressCircle | undefined | null\n\n @HostBinding('class.datatable-cell-type') _isDatatable = false\n\n constructor(\n private _cdf: ChangeDetectorRef,\n private _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() private _datatable?: DatatableComponent,\n @Optional() private _table?: TableComponent,\n @Optional() @Inject(TABLE_CELL_DATA) _tableData?: TableCellData<'progress-circle', TableCellTypeConfigProgressCircle>\n ) {\n if (_datatable) {\n this._isDatatable = true\n }\n\n const tableData = _tableData\n this._tableCellData = _tableData\n\n this.value = tableData && coerceNumberProperty(tableData.value)\n this.colData = tableData && tableData.colData\n\n if (this.colData && this.colData.cellTypeConfig) {\n this._setCellTypeConfigProps(this.colData.cellTypeConfig)\n }\n\n if (tableData) {\n tableData.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = coerceNumberProperty(v.changes.value.currentValue)\n if (this._config) {\n this._setCellTypeConfigProps(this._config)\n }\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n this.colData = v.changes.colData.currentValue\n if (this.colData && this.colData.cellTypeConfig) {\n this._setCellTypeConfigProps(this.colData.cellTypeConfig)\n }\n this._cdf.markForCheck()\n } else {\n if (v.changes.hasOwnProperty('row')) {\n if (this.colData?.cellTypeConfig) {\n this._setCellTypeConfigProps(this.colData.cellTypeConfig)\n this._cdf.markForCheck()\n }\n }\n }\n })\n }\n }\n\n ngOnInit() { }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _parseConfigValue(val: any) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, this._tableCellData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n public setAction(configAction?: TableCellTypeProgressCircleConfigAction) {\n let newTplType: IconTemplateType = 'default'\n let link: string | undefined\n let download: boolean = false\n let detectMimeContent = false\n let target: string | undefined\n let queryParams: { [k: string]: any } | undefined\n\n if (configAction) {\n if (configAction.type === 'link') {\n link = this._parseConfigValue(configAction.link)\n if (link !== undefined && link !== null) {\n newTplType = this._parseConfigValue(configAction.asset)\n ? 'link-encrypted'\n : this._parseConfigValue(configAction.external) ? 'link-external' : 'link'\n download = !!this._parseConfigValue(configAction.download)\n detectMimeContent = !!this._parseConfigValue(configAction.detectMimeContent)\n target = this._parseConfigValue(configAction.target)\n queryParams = this._parseConfigValue(configAction.queryParams)\n }\n } else if (configAction.type === 'modal') {\n newTplType = 'button'\n this._buttonAction = configAction\n }\n }\n\n this._tplType = newTplType\n this._link = link\n this._download = download\n this._detectMimeContent = detectMimeContent\n this._target = target\n this._queryParams = queryParams\n }\n\n private _setCellTypeConfigProps(config: TableCellTypeConfigProgressCircle): void {\n this._config = config\n this.setAction(config.action)\n this.fillBackground = coerceBooleanProperty(this._parseConfigValue(config.fillBackground))\n this.showText = coerceBooleanProperty(this._parseConfigValue(config.showText))\n this.hiddenOnEmpty = coerceBooleanProperty(this._parseConfigValue(config.hiddenOnEmpty))\n this.pending = coerceBooleanProperty(this._parseConfigValue(config.pending))\n this.tooltip = this._parseConfigValue(config.tooltip)\n\n this.tooltip = this._parseConfigValue(config.tooltip)\n if (this.tooltip) {\n this.tooltipClass = this._parseConfigValue(config.tooltipClass)\n this.tooltipPlacement = this._parseConfigValue(config.tooltipPlacement) || 'auto'\n this.tooltipContainer = this._parseConfigValue(config.tooltipContainer)\n this._tooltipDisabled = false\n } else {\n this._tooltipDisabled = true\n }\n\n this._title = this._parseConfigValue(config.titleAttr)\n this._srOnly = this._parseConfigValue(config.srOnly)\n }\n\n _doButtonAction() {\n if (this._buttonAction && this._buttonAction.type === 'modal') {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(this.value, this._tableCellData)\n this._tableCellTypeHelpers.handleModalAction(this._buttonAction, contextFn)\n .subscribe(\n r => {},\n err => console.error(err),\n () => this._actionRefreshRequest()\n )\n }\n }\n\n private _actionRefreshRequest() {\n if (this._datatable) {\n this._datatable.triggerActionRefreshRequest()\n } else if (this._table) {\n this._table.triggerActionRefreshRequest()\n }\n }\n\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional\n} from '@angular/core'\nimport { Subject } from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport { DatatableComponent } from '@theseam/ui-common/datatable'\nimport { TableComponent } from '@theseam/ui-common/table'\nimport { TableCellTypesHelpersService, TABLE_CELL_DATA } from '@theseam/ui-common/table-cell-type'\nimport type { TableCellData, TheSeamTableColumn } from '@theseam/ui-common/table-cell-type'\n\n\nimport { TableCellTypeConfigString, TableCellTypeStringConfigAction } from './table-cell-type-string-config'\n\nexport type StringTemplateType = 'default' | 'link' | 'link-external' | 'link-encrypted' | 'button'\n\n@Component({\n selector: 'seam-table-cell-type-string',\n templateUrl: './table-cell-type-string.component.html',\n styleUrls: ['./table-cell-type-string.component.scss'],\n host: { },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableCellTypeStringComponent implements OnInit, OnDestroy {\n\n private readonly _ngUnsubscribe = new Subject()\n\n @Input()\n get value() { return this._value }\n set value(val: string | null | undefined) {\n this._value = val\n // TODO: This is temporary to test the feature and will be fixed when the\n // dynamic column data is fixed. The plan is to add a config toggle to\n // always enable and depending on performance it could try to decide on its\n // own based on content size.\n if (this.value && this.value.length > 30) {\n this.canPopover = true\n }\n }\n _value: string | null | undefined\n\n @Input()\n get config() { return this._config }\n set config(value: TableCellTypeConfigString | undefined | null) {\n this._config = value\n if (value) {\n this.setConfig(value)\n }\n }\n private _config: TableCellTypeConfigString | undefined | null\n\n _tplType: StringTemplateType = 'default'\n _link?: string\n _title?: string\n _queryParams?: { [k: string]: any }\n\n _style?: string\n _class?: string\n\n _buttonAction?: TableCellTypeStringConfigAction\n\n _tableCellData?: TableCellData<'string', TableCellTypeConfigString>\n _row?: any\n _rowIndex?: number\n _colData?: TheSeamTableColumn<'string', TableCellTypeConfigString>\n\n _download?: boolean\n _detectMimeContent?: boolean\n\n @Input()\n set title(value: string | undefined) { this._title = value }\n get title(): string | undefined { return this._title }\n\n @HostBinding('attr.title') get _titleAttr() { return this.title || this.value }\n\n @Input()\n set style(value: string | undefined) { this._style = value }\n get style(): string | undefined { return this._style }\n\n @HostBinding('attr.style') get _styleAttr() { return this.style }\n\n @Input()\n set classAttr(value: string | undefined) { this._class = value }\n get classAttr(): string | undefined { return this._class }\n\n @HostBinding('class') get _classAttr() { return this.classAttr }\n\n canPopover = false\n\n constructor(\n private readonly _cdf: ChangeDetectorRef,\n private readonly _tableCellTypeHelpers: TableCellTypesHelpersService,\n @Optional() private _datatable?: DatatableComponent,\n @Optional() private _table?: TableComponent,\n @Optional() @Inject(TABLE_CELL_DATA) readonly _tableData?: TableCellData<'string', TableCellTypeConfigString>\n ) {\n const _data = _tableData\n this._tableCellData = _tableData\n\n this._row = _data && _data.row\n this._rowIndex = _data && _data.rowIndex\n\n this.value = _data && _data.value\n this._colData = _data && _data.colData\n if (_data && _data.colData && (<any>_data.colData).cellTypeConfig) {\n this.config = (<any>_data.colData).cellTypeConfig\n }\n }\n\n ngOnInit() {\n const _data = this._tableData\n if (_data) {\n _data.changed\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(v => {\n if (v.changes.hasOwnProperty('value')) {\n this.value = v.changes.value.currentValue\n this._cdf.markForCheck()\n }\n\n if (v.changes.hasOwnProperty('colData')) {\n const colData = v.changes.colData.currentValue\n if (colData && colData.cellTypeConfig !== this.config) {\n this.config = colData.cellTypeConfig\n } else {\n this.config = undefined\n }\n this._cdf.markForCheck()\n } else {\n if (v.changes.hasOwnProperty('row')) {\n this.config = this.config\n this._cdf.markForCheck()\n }\n }\n })\n }\n }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n public setAction(configAction?: TableCellTypeStringConfigAction) {\n let newTplType: StringTemplateType = 'default'\n let link: string | undefined\n let download: boolean = false\n let detectMimeContent = false\n let queryParams: { [k: string]: any } | undefined\n\n if (configAction) {\n if (configAction.type === 'link') {\n link = this._parseConfigValue(configAction.link)\n if (link !== undefined && link !== null) {\n newTplType = this._parseConfigValue(configAction.asset) ? 'link-encrypted' : 'link'\n download = !!this._parseConfigValue(configAction.download)\n detectMimeContent = !!this._parseConfigValue(configAction.detectMimeContent)\n queryParams = this._parseConfigValue(configAction.queryParams)\n }\n } else if (configAction.type === 'modal') {\n newTplType = 'button'\n this._buttonAction = configAction\n }\n }\n\n this._tplType = newTplType\n this._link = link\n this._download = download\n this._detectMimeContent = detectMimeContent\n this._queryParams = queryParams\n }\n\n public setConfig(config?: TableCellTypeConfigString): void {\n if (!config) { return }\n\n const title = this._parseConfigValue(config.titleAttr)\n if (title) {\n this.title = title\n }\n\n const style = this._parseConfigValue(config.styleAttr)\n if (style) {\n this.style = style\n }\n\n const classAttr = this._parseConfigValue(config.classAttr)\n if (classAttr) {\n this.classAttr = classAttr\n }\n\n this.setAction(config.action)\n }\n\n private _parseConfigValue(val: any) {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(val, this._tableCellData)\n return this._tableCellTypeHelpers.parseValueProp(val, contextFn)\n }\n\n _doButtonAction() {\n if (this._buttonAction && this._buttonAction.type === 'modal') {\n const contextFn = () => this._tableCellTypeHelpers.getValueContext(this.value, this._tableCellData)\n this._tableCellTypeHelpers.handleModalAction(this._buttonAction, contextFn)\n .subscribe(\n r => {},\n err => console.error(err),\n () => this._actionRefreshRequest()\n )\n }\n }\n\n private _actionRefreshRequest() {\n if (this._datatable) {\n this._datatable.triggerActionRefreshRequest()\n } else if (this._table) {\n this._table.triggerActionRefreshRequest()\n }\n }\n\n}\n","import { ITableCellTypeManifestProvider, TABLE_CELL_TYPE_MANIFEST } from '@theseam/ui-common/table-cell-type'\n\nimport { TableCellTypeCurrencyComponent } from './table-cell-type-currency/table-cell-type-currency.component'\nimport { TableCellTypeDateComponent } from './table-cell-type-date/table-cell-type-date.component'\nimport { TableCellTypeDecimalComponent } from './table-cell-type-decimal/table-cell-type-decimal.component'\nimport { TableCellTypeIconComponent } from './table-cell-type-icon/table-cell-type-icon.component'\nimport { TableCellTypeIntegerComponent } from './table-cell-type-integer/table-cell-type-integer.component'\nimport { TableCellTypePhoneComponent } from './table-cell-type-phone/table-cell-type-phone.component'\n// tslint:disable-next-line: max-line-length\nimport { TableCellTypeProgressCircleIconComponent } from './table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component'\nimport { TableCellTypeProgressCircleComponent } from './table-cell-type-progress-circle/table-cell-type-progress-circle.component'\nimport { TableCellTypeStringComponent } from './table-cell-type-string/table-cell-type-string.component'\n\nexport const TABLE_CELL_TYPE_MANIFEST_STRING: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'string',\n component: TableCellTypeStringComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_CURRENCY: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'currency',\n component: TableCellTypeCurrencyComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_DECIMAL: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'decimal',\n component: TableCellTypeDecimalComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_INTEGER: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'integer',\n component: TableCellTypeIntegerComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_DATE: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'date',\n component: TableCellTypeDateComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_ICON: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'icon',\n component: TableCellTypeIconComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_IMAGE: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'image',\n component: TableCellTypeIconComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'progress-circle',\n component: TableCellTypeProgressCircleComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE_ICON: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'progress-circle-icon',\n component: TableCellTypeProgressCircleIconComponent\n },\n multi: true\n}\n\nexport const TABLE_CELL_TYPE_MANIFEST_PHONE: ITableCellTypeManifestProvider = {\n provide: TABLE_CELL_TYPE_MANIFEST,\n useValue: {\n name: 'phone',\n component: TableCellTypePhoneComponent\n },\n multi: true\n}\n","import { PortalModule } from '@angular/cdk/portal'\nimport { CommonModule } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { RouterModule } from '@angular/router'\n\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'\n\nimport { TheSeamAssetReaderModule } from '@theseam/ui-common/asset-reader'\nimport { TheSeamIconModule } from '@theseam/ui-common/icon'\nimport { TheSeamPopoverModule } from '@theseam/ui-common/popover'\nimport { TheSeamProgressModule } from '@theseam/ui-common/progress'\nimport { TheSeamSharedModule } from '@theseam/ui-common/shared'\nimport { TheSeamTableCellTypeModule } from '@theseam/ui-common/table-cell-type'\nimport { TheSeamTelInputModule } from '@theseam/ui-common/tel-input'\n\nimport { TableCellTypeCurrencyComponent } from './table-cell-type-currency/table-cell-type-currency.component'\nimport { TableCellTypeDateComponent } from './table-cell-type-date/table-cell-type-date.component'\nimport { TableCellTypeDecimalComponent } from './table-cell-type-decimal/table-cell-type-decimal.component'\nimport { TableCellTypeIconComponent } from './table-cell-type-icon/table-cell-type-icon.component'\nimport { TableCellTypeIntegerComponent } from './table-cell-type-integer/table-cell-type-integer.component'\nimport { TableCellTypePhoneComponent } from './table-cell-type-phone/table-cell-type-phone.component'\n// tslint:disable-next-line: max-line-length\nimport { TableCellTypeProgressCircleIconComponent } from './table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon.component'\nimport { TableCellTypeProgressCircleComponent } from './table-cell-type-progress-circle/table-cell-type-progress-circle.component'\nimport { TableCellTypeStringComponent } from './table-cell-type-string/table-cell-type-string.component'\n\nimport {\n TABLE_CELL_TYPE_MANIFEST_CURRENCY,\n TABLE_CELL_TYPE_MANIFEST_DATE,\n TABLE_CELL_TYPE_MANIFEST_DECIMAL,\n TABLE_CELL_TYPE_MANIFEST_ICON,\n TABLE_CELL_TYPE_MANIFEST_IMAGE,\n TABLE_CELL_TYPE_MANIFEST_INTEGER,\n TABLE_CELL_TYPE_MANIFEST_PHONE,\n TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE,\n TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE_ICON,\n TABLE_CELL_TYPE_MANIFEST_STRING\n} from './table-cell-type-manifests'\n\nconst cellTypeComponents = [\n TableCellTypeStringComponent,\n TableCellTypeCurrencyComponent,\n TableCellTypeDateComponent,\n TableCellTypeDecimalComponent,\n TableCellTypeIconComponent,\n TableCellTypeIntegerComponent,\n TableCellTypeProgressCircleComponent,\n TableCellTypeProgressCircleIconComponent,\n TableCellTypePhoneComponent\n]\n\nconst cellTypeProviders = [\n TABLE_CELL_TYPE_MANIFEST_STRING,\n TABLE_CELL_TYPE_MANIFEST_INTEGER,\n TABLE_CELL_TYPE_MANIFEST_CURRENCY,\n TABLE_CELL_TYPE_MANIFEST_DECIMAL,\n TABLE_CELL_TYPE_MANIFEST_DATE,\n TABLE_CELL_TYPE_MANIFEST_ICON,\n TABLE_CELL_TYPE_MANIFEST_IMAGE,\n TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE,\n TABLE_CELL_TYPE_MANIFEST_PROGRESS_CIRCLE_ICON,\n TABLE_CELL_TYPE_MANIFEST_PHONE\n]\n\n@NgModule({\n declarations: [\n ...cellTypeComponents\n ],\n imports: [\n CommonModule,\n NgbTooltipModule,\n RouterModule,\n TheSeamSharedModule,\n TheSeamIconModule,\n PortalModule,\n TheSeamPopoverModule,\n TheSeamProgressModule,\n TheSeamTelInputModule,\n TheSeamAssetReaderModule,\n TheSeamTableCellTypeModule\n ],\n providers: [\n ...cellTypeProviders\n ],\n exports: [\n ...cellTypeComponents\n ],\n entryComponents: [\n ...cellTypeComponents\n ]\n})\nexport class TheSeamTableCellTypesModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {TableCellTypeConfigProgressCircleIcon as ɵb} from './table-cell-type-progress-circle-icon/table-cell-type-progress-circle-icon-config';\nexport {TableCellTypeConfigProgressCircle as ɵa} from './table-cell-type-progress-circle/table-cell-type-progress-circle-config';"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-testing.js","sources":["../../../projects/ui-common/testing/fake-toastr.ts","../../../projects/ui-common/testing/render-story.ts","../../../projects/ui-common/testing/tick-helper.ts","../../../projects/ui-common/testing/current-tick-time.ts","../../../projects/ui-common/testing/story-expect.ts","../../../projects/ui-common/testing/get-harness.ts","../../../projects/ui-common/testing/theseam-ui-common-testing.ts"],"sourcesContent":["import { ActiveToast, GlobalConfig, IndividualConfig, ToastContainerDirective } from 'ngx-toastr'\n\nexport class FakeToastrService {\n toastrConfig!: GlobalConfig\n currentlyActive = 0\n toasts: ActiveToast<any>[] = []\n overlayContainer!: ToastContainerDirective\n previousToastMessage: string | undefined\n\n /** show toast */\n show(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n type = ''\n ) { }\n\n /** show successful toast */\n success(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show error toast */\n error(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show info toast */\n info(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show warning toast */\n warning(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /**\n * Remove all or a single toast by id\n */\n clear(toastId?: number) { }\n\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId: number) { }\n\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(message: string, resetOnDuplicate: boolean, countDuplicates: boolean) { }\n\n}\n","import { createMountableStoryComponent } from '@storybook/testing-angular'\nimport { render, RenderResult } from '@testing-library/angular'\n\n// NOTE: This is an experimental attempt at removing some of the boilerplate. If\n// this ends up being worth it, then I will add it to `@storybook/testing-angular`.\nexport async function renderStory<ComponentType = any>(story: any): Promise<RenderResult<ComponentType, ComponentType>> {\n const { component, ngModule } = createMountableStoryComponent(\n story({}, {} as any)\n )\n return await render(component, { imports: [ ngModule ] })\n}\n","import { tick } from '@angular/core/testing'\n\n/**\n * Helps advance tests to specific elapsed times.\n *\n * # When to use\n *\n * If a test needs to do something at 100 ticks, but expected values should\n * also be tested at multiple ticks before 100 ticks, then the previous tick\n * sum needs to be counted. If the elapsed can be easily counted by just\n * skimming the code you should just use `tick()`.\n *\n * The following example is simple enough that `tick()` is probably better, but\n * it shows how it is used.\n *\n * ## Example without\n *\n * ```ts\n * const thing = new Thing()\n * thing.dieAfterTicks(100)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(false)\n * ```\n *\n * ## Example with\n *\n * ```ts\n * const t = new TickHelper()\n * const thing = new Thing()\n * thing.dieAfterTicks(100)\n *\n * t.tickTo(25)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(50)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(75)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(100)\n * expect(thing.isAlive).toBe(false)\n * ```\n */\nexport class TickHelper {\n\n private _startTime = Date.now()\n\n /**\n * Returns the number of ticks that have elapsed since this class was\n * initialized.\n */\n public get ticksElapsed() { return Date.now() - this._startTime }\n\n /**\n * Calls `tick()` for the remaining number of ticks to reach elapsed ticks.\n *\n * ```\n * const t = new TickHelper()\n * tick(3)\n * t.tickTo(10) // Equivalent to `tick(7)` in this case to reach 10 ticks.\n * ```\n */\n public tickTo(ticks: number) { tick(ticks - this.ticksElapsed) }\n\n}\n","\
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-testing.js","sources":["../../../projects/ui-common/testing/fake-toastr.ts","../../../projects/ui-common/testing/render-story.ts","../../../projects/ui-common/testing/tick-helper.ts","../../../projects/ui-common/testing/current-tick-time.ts","../../../projects/ui-common/testing/story-expect.ts","../../../projects/ui-common/testing/get-harness.ts","../../../projects/ui-common/testing/theseam-ui-common-testing.ts"],"sourcesContent":["import { ActiveToast, GlobalConfig, IndividualConfig, ToastContainerDirective } from 'ngx-toastr'\n\nexport class FakeToastrService {\n toastrConfig!: GlobalConfig\n currentlyActive = 0\n toasts: ActiveToast<any>[] = []\n overlayContainer!: ToastContainerDirective\n previousToastMessage: string | undefined\n\n /** show toast */\n show(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {},\n type = ''\n ) { }\n\n /** show successful toast */\n success(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show error toast */\n error(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show info toast */\n info(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /** show warning toast */\n warning(\n message?: string,\n title?: string,\n override: Partial<IndividualConfig> = {}\n ) { }\n\n /**\n * Remove all or a single toast by id\n */\n clear(toastId?: number) { }\n\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId: number) { }\n\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(message: string, resetOnDuplicate: boolean, countDuplicates: boolean) { }\n\n}\n","import { createMountableStoryComponent } from '@storybook/testing-angular'\nimport { render, RenderResult } from '@testing-library/angular'\n\n// NOTE: This is an experimental attempt at removing some of the boilerplate. If\n// this ends up being worth it, then I will add it to `@storybook/testing-angular`.\nexport async function renderStory<ComponentType = any>(story: any): Promise<RenderResult<ComponentType, ComponentType>> {\n const { component, ngModule } = createMountableStoryComponent(\n story({}, {} as any)\n )\n return await render(component, { imports: [ ngModule ] })\n}\n","import { tick } from '@angular/core/testing'\n\n/**\n * Helps advance tests to specific elapsed times.\n *\n * # When to use\n *\n * If a test needs to do something at 100 ticks, but expected values should\n * also be tested at multiple ticks before 100 ticks, then the previous tick\n * sum needs to be counted. If the elapsed can be easily counted by just\n * skimming the code you should just use `tick()`.\n *\n * The following example is simple enough that `tick()` is probably better, but\n * it shows how it is used.\n *\n * ## Example without\n *\n * ```ts\n * const thing = new Thing()\n * thing.dieAfterTicks(100)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(true)\n *\n * tick(25)\n * expect(thing.isAlive).toBe(false)\n * ```\n *\n * ## Example with\n *\n * ```ts\n * const t = new TickHelper()\n * const thing = new Thing()\n * thing.dieAfterTicks(100)\n *\n * t.tickTo(25)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(50)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(75)\n * expect(thing.isAlive).toBe(true)\n *\n * t.tickTo(100)\n * expect(thing.isAlive).toBe(false)\n * ```\n */\nexport class TickHelper {\n\n private _startTime = Date.now()\n\n /**\n * Returns the number of ticks that have elapsed since this class was\n * initialized.\n */\n public get ticksElapsed() { return Date.now() - this._startTime }\n\n /**\n * Calls `tick()` for the remaining number of ticks to reach elapsed ticks.\n *\n * ```\n * const t = new TickHelper()\n * tick(3)\n * t.tickTo(10) // Equivalent to `tick(7)` in this case to reach 10 ticks.\n * ```\n */\n public tickTo(ticks: number) { tick(ticks - this.ticksElapsed) }\n\n}\n","\n/**\n * When using `fakeAsync` this can access the internal currentTickTime of the\n * fake zone's scheduler.\n *\n * NOTE: Do **NOT** rely on this in tests. It is accesses private properties\n * that could break or change at any time, which could cause it to not have the\n * same meaning and be inaccurate in a future version.\n *\n * NOTE: This is accessing private properties, so I don't recommend relying on\n * this in tests. I find it useful to sometimes set this on a global property\n * that I can observe in the debugger's watch variables.\n */\nexport function currentTickTime(documentWindow: any = window): number {\n return documentWindow.Zone.current._properties.FakeAsyncTestZoneSpec._scheduler._currentTickTime\n}\n","import { default as expectPatched } from '@storybook/expect'\nimport { instrument } from '@storybook/instrumenter'\nimport * as mock from 'jest-mock'\n\nexport const { jest } = instrument({ jest: mock })\n\n// const expectJasmineFn = (window as any).expect\nconst expectJestFn = expectPatched\n// const isInJasmine = expectJasmineFn !== undefined && expectJasmineFn !== null\n// const expectFn = expectJasmineFn || exp\nconst isInJasmine = false\n\n// console.log('isInJasmine', isInJasmine)\n\nconst { expect } = instrument(\n // { expect: expectJasmineFn || expectJestFn },\n { expect: expectJestFn },\n // { intercept: (method, path) => path[0] !== 'expect' }\n { intercept: (method, path) => {\n // console.log('intercept', method, path)\n return path[0] !== 'expect'\n } }\n)\n\n\n\n\n\nfunction toBeFn(matcher: any): (value: any) => Promise<void> {\n // if (isInJasmine) {\n // // @ts-ignore\n // const m = matcher as jasmine.Matchers<any>\n // return async (value: any) => m.toBe(value) as any\n // } else {\n // const m = matcher as ReturnType<typeof expectJestFn>\n // return async (value: any) => m.toBe(value) as any\n // }\n const m = matcher as ReturnType<typeof expectJestFn>\n return async (value: any) => m.toBe(value) as any\n}\n\nexport function expectFn(value: any) {\n // const t = isInJasmine ? expectJasmineFn(value) : expect(value)\n const t = expect(value)\n return {\n toBe: toBeFn(t)\n }\n}\n","import { ComponentHarness, ComponentHarnessConstructor } from '@angular/cdk/testing'\nimport { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'\nimport { ComponentFixture } from '@angular/core/testing'\n\nimport { StorybookHarnessEnvironment } from '@marklb/storybook-harness'\n\nexport interface GetHarnessOptions<TComponent = any> {\n canvasElement?: HTMLElement\n fixture?: ComponentFixture<TComponent>\n}\n\nexport async function getHarness<T extends ComponentHarness>(\n harnessType: ComponentHarnessConstructor<T>,\n options: GetHarnessOptions\n): Promise<T> {\n if (options.fixture !== undefined) {\n return TestbedHarnessEnvironment.harnessForFixture(options.fixture, harnessType)\n }\n\n if (options.canvasElement !== undefined) {\n return (new StorybookHarnessEnvironment(options.canvasElement))\n .getHarness(harnessType)\n }\n\n throw Error(`Unable to get harness. fixture or canvasElement must be provided.`)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|