@porscheinformatik/material-addons 17.2.1 → 17.2.3
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/esm2022/lib/data-table/configuration/data-table-global-configuration.mjs +3 -3
- package/esm2022/lib/data-table/util/data-table-sort-util.mjs +17 -13
- package/fesm2022/porscheinformatik-material-addons.mjs +18 -14
- package/fesm2022/porscheinformatik-material-addons.mjs.map +1 -1
- package/lib/data-table/util/data-table-sort-util.d.ts +3 -3
- package/lib/data-table/util/data-table-sort-util.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -5,12 +5,12 @@ export const MAD_DATA_TABL_GLOBAL_CONFIGURATION_PROVIDER = {
|
|
|
5
5
|
provide: MAD_DATA_TABLE_GLOBAL_CONFIGURATION,
|
|
6
6
|
deps: [[new Optional(), new SkipSelf(), new Inject(MAD_DATA_TABLE_GLOBAL_CONFIGURATION)]],
|
|
7
7
|
useFactory: (dataTableConfig) => dataTableConfig ?? {
|
|
8
|
-
dateTimeFormat: dataTableConfig
|
|
9
|
-
numberFormat: dataTableConfig
|
|
8
|
+
dateTimeFormat: dataTableConfig?.dateTimeFormat ?? 'dd.MM.yyyy',
|
|
9
|
+
numberFormat: dataTableConfig?.numberFormat ?? {
|
|
10
10
|
decimalSeparator: ',',
|
|
11
11
|
groupingSeparator: '.',
|
|
12
12
|
units: ['€', '$'],
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1nbG9iYWwtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL2RhdGEtdGFibGUvY29uZmlndXJhdGlvbi9kYXRhLXRhYmxlLWdsb2JhbC1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFjM0UsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsSUFBSSxjQUFjLENBQStCLHFDQUFxQyxDQUFDLENBQUM7QUFFM0ksMkdBQTJHO0FBQzNHLE1BQU0sQ0FBQyxNQUFNLDJDQUEyQyxHQUFHO0lBQ3pELE9BQU8sRUFBRSxtQ0FBbUM7SUFDNUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLFVBQVUsRUFBRSxDQUFDLGVBQThDLEVBQUUsRUFBRSxDQUM3RCxlQUFlLElBQUk7UUFDakIsY0FBYyxFQUFFLGVBQWUsRUFBRSxjQUFjLElBQUksWUFBWTtRQUMvRCxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksSUFBSTtZQUM3QyxnQkFBZ0IsRUFBRSxHQUFHO1lBQ3JCLGlCQUFpQixFQUFFLEdBQUc7WUFDdEIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUNsQjtLQUNGO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckZvcm1hdCB7XG4gIGRlY2ltYWxTZXBhcmF0b3I6IHN0cmluZztcbiAgZ3JvdXBpbmdTZXBhcmF0b3I6IHN0cmluZztcbiAgdW5pdHM6IHN0cmluZ1tdOyAvLyBlLmcuIHNpZ25zIGxpa2Ug4oKsLCAkXG59XG5cbi8vIHRoaXMgY291bGQgYWxzbyBiZSBleHRlbmRlZCB3aXRoIGUuZy4gbGFiZWxzIG9yIG90aGVyIGdlbmVyYWwgY29uZmlndXJhdGlvbiBzdHVmZlxuZXhwb3J0IGludGVyZmFjZSBEYXRhVGFibGVHbG9iYWxDb25maWd1cmF0aW9uIHtcbiAgZGF0ZVRpbWVGb3JtYXQ/OiBzdHJpbmc7XG4gIG51bWJlckZvcm1hdD86IE51bWJlckZvcm1hdDtcbn1cblxuZXhwb3J0IGNvbnN0IE1BRF9EQVRBX1RBQkxFX0dMT0JBTF9DT05GSUdVUkFUSU9OID0gbmV3IEluamVjdGlvblRva2VuPERhdGFUYWJsZUdsb2JhbENvbmZpZ3VyYXRpb24+KCdtYWQtZGF0YS10YWJsZS1nbG9iYWwtY29uZmlndXJhdGlvbicpO1xuXG4vLyBJZiB0aGVyZSBpcyBhIGN1c3RvbSBEQVRBX1RBQkxFX0NPTkZJR19QUk9WSURFUiBhdmFpbGFibGUsIHVzZSB0aGF0LiBPdGhlcndpc2UsIHByb3ZpZGUgdGhlIGRlZmF1bHQgb25lLlxuZXhwb3J0IGNvbnN0IE1BRF9EQVRBX1RBQkxfR0xPQkFMX0NPTkZJR1VSQVRJT05fUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IE1BRF9EQVRBX1RBQkxFX0dMT0JBTF9DT05GSUdVUkFUSU9OLFxuICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgbmV3IEluamVjdChNQURfREFUQV9UQUJMRV9HTE9CQUxfQ09ORklHVVJBVElPTildXSxcbiAgdXNlRmFjdG9yeTogKGRhdGFUYWJsZUNvbmZpZz86IERhdGFUYWJsZUdsb2JhbENvbmZpZ3VyYXRpb24pID0+XG4gICAgZGF0YVRhYmxlQ29uZmlnID8/IHtcbiAgICAgIGRhdGVUaW1lRm9ybWF0OiBkYXRhVGFibGVDb25maWc/LmRhdGVUaW1lRm9ybWF0ID8/ICdkZC5NTS55eXl5JyxcbiAgICAgIG51bWJlckZvcm1hdDogZGF0YVRhYmxlQ29uZmlnPy5udW1iZXJGb3JtYXQgPz8ge1xuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLCcsXG4gICAgICAgIGdyb3VwaW5nU2VwYXJhdG9yOiAnLicsXG4gICAgICAgIHVuaXRzOiBbJ+KCrCcsICckJ10sXG4gICAgICB9LFxuICAgIH0sXG59O1xuIl19
|
|
@@ -19,16 +19,20 @@ export class DataTableSortUtil {
|
|
|
19
19
|
case 'string': {
|
|
20
20
|
const stringY = String(y);
|
|
21
21
|
// a string could be a date
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return DataTableSortUtil.compareDate(dateX, dateY, ascending);
|
|
22
|
+
if (!!dateTimeFormat) {
|
|
23
|
+
const dateX = DateTime.fromFormat(x, dateTimeFormat);
|
|
24
|
+
const dateY = DateTime.fromFormat(stringY, dateTimeFormat);
|
|
25
|
+
if (dateX.isValid && dateY.isValid) {
|
|
26
|
+
return DataTableSortUtil.compareDate(dateX, dateY, ascending);
|
|
27
|
+
}
|
|
29
28
|
}
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
// .. but also a formatted number
|
|
30
|
+
if (!!numberFormat) {
|
|
31
|
+
const numberX = DataTableSortUtil.parseNumber(x, numberFormat);
|
|
32
|
+
const numberY = DataTableSortUtil.parseNumber(y, numberFormat);
|
|
33
|
+
if (typeof numberX === 'number' && typeof numberY === 'number') {
|
|
34
|
+
return DataTableSortUtil.compareNumber(numberX, numberY, ascending);
|
|
35
|
+
}
|
|
32
36
|
}
|
|
33
37
|
return DataTableSortUtil.compareString(x, stringY, ascending);
|
|
34
38
|
}
|
|
@@ -63,9 +67,9 @@ export class DataTableSortUtil {
|
|
|
63
67
|
}
|
|
64
68
|
static parseNumber(value, numberFormat) {
|
|
65
69
|
const sanitized = value
|
|
66
|
-
.replace(numberFormat.groupingSeparator, '')
|
|
67
|
-
.replace(numberFormat.decimalSeparator, '.')
|
|
68
|
-
.replace(new RegExp(numberFormat.units.join('|')), '');
|
|
70
|
+
.replace(numberFormat.groupingSeparator ?? '', '')
|
|
71
|
+
.replace(numberFormat.decimalSeparator ?? '', '.')
|
|
72
|
+
.replace(new RegExp((numberFormat.units ?? []).join('|')), '');
|
|
69
73
|
const numberValue = Number(sanitized);
|
|
70
74
|
if (typeof numberValue === 'number' && !isNaN(numberValue)) {
|
|
71
75
|
return numberValue;
|
|
@@ -73,4 +77,4 @@ export class DataTableSortUtil {
|
|
|
73
77
|
return value;
|
|
74
78
|
}
|
|
75
79
|
}
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1zb3J0LXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9kYXRhLXRhYmxlL3V0aWwvZGF0YS10YWJsZS1zb3J0LXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUdqQyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBdUIsRUFBRSxZQUEyQjtRQUNsRSxPQUFPLENBQUMsU0FBZ0IsRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FDNUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVc7UUFDaEIsT0FBTyxDQUFDLFNBQWdCLEVBQUUsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBc0IsRUFBRSxDQUFzQixFQUFFLElBQVUsRUFBRSxjQUF1QixFQUFFLFlBQTJCO1FBQzdILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQztRQUUzQyxRQUFRLE9BQU8sQ0FBQyxFQUFFO1lBQ2hCLEtBQUssUUFBUTtnQkFDWCxJQUFJLE9BQU8sQ0FBQyxLQUFL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Q0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYSxFQUFFLFlBQTJCO1FBQzNELE1BQU0sU0FBUyxHQUFHLEtBQUs7YUFDcEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO2FBQ2pELE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQzthQUNqRCxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0QyxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMxRCxPQUFPLFdBQVcsQ0FBQztTQUNwQjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0U29ydCwgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgeyBOdW1iZXJGb3JtYXQgfSBmcm9tICcuLi9jb25maWd1cmF0aW9uL2RhdGEtdGFibGUtZ2xvYmFsLWNvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlU29ydFV0aWwge1xuICBzdGF0aWMgc29ydERhdGEoZGF0ZVRpbWVGb3JtYXQ/OiBzdHJpbmcsIG51bWJlckZvcm1hdD86IE51bWJlckZvcm1hdCk6ICh0YWJsZURhdGE6IGFueVtdLCBtYXRTb3J0OiBNYXRTb3J0KSA9PiBhbnlbXSB7XG4gICAgcmV0dXJuICh0YWJsZURhdGE6IGFueVtdLCBtYXRTb3J0OiBNYXRTb3J0KSA9PlxuICAgICAgWy4uLnRhYmxlRGF0YV0uc29ydCgoYSwgYikgPT4gRGF0YVRhYmxlU29ydFV0aWwuY29tcGFyZShhLCBiLCBtYXRTb3J0LCBkYXRlVGltZUZvcm1hdCwgbnVtYmVyRm9ybWF0KSk7XG4gIH1cblxuICBzdGF0aWMgc29ydE5vdGhpbmcoKTogKHRhYmxlRGF0YTogYW55W10sIG1hdFNvcnQ6IE1hdFNvcnQpID0+IGFueVtdIHtcbiAgICByZXR1cm4gKHRhYmxlRGF0YTogYW55W10sIF86IE1hdFNvcnQpID0+IHRhYmxlRGF0YTtcbiAgfVxuXG4gIHN0YXRpYyBjb21wYXJlKGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGI6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNvcnQ6IFNvcnQsIGRhdGVUaW1lRm9ybWF0Pzogc3RyaW5nLCBudW1iZXJGb3JtYXQ/OiBOdW1iZXJGb3JtYXQpOiBudW1iZXIge1xuICAgIGNvbnN0IHggPSBhW3NvcnQuYWN0aXZlXTtcbiAgICBjb25zdCB5ID0gYltzb3J0LmFjdGl2ZV07XG4gICAgY29uc3QgYXNjZW5kaW5nID0gc29ydC5kaXJlY3Rpb24gPT09ICdhc2MnO1xuXG4gICAgc3dpdGNoICh0eXBlb2YgeCkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgaWYgKHR5cGVvZiB5ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiBEYXRhVGFibGVTb3J0VXRpbC5jb21wYXJlU3RyaW5nKFN0cmluZyh4KSwgeSwgYXNjZW5kaW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRGF0YVRhYmxlU29ydFV0aWwuY29tcGFyZU51bWJlcih4LCB5LCBhc2NlbmRpbmcpO1xuICAgICAgY2FzZSAnc3RyaW5nJzoge1xuICAgICAgICBjb25zdCBzdHJpbmdZID0gU3RyaW5nKHkpO1xuXG4gICAgICAgIC8vIGEgc3RyaW5nIGNvdWxkIGJlIGEgZGF0ZVxuICAgICAgICBpZiAoISFkYXRlVGltZUZvcm1hdCkge1xuICAgICAgICAgIGNvbnN0IGRhdGVYID0gRGF0ZVRpbWUuZnJvbUZvcm1hdCh4LCBkYXRlVGltZUZvcm1hdCk7XG4gICAgICAgICAgY29uc3QgZGF0ZVkgPSBEYXRlVGltZS5mcm9tRm9ybWF0KHN0cmluZ1ksIGRhdGVUaW1lRm9ybWF0KTtcblxuICAgICAgICAgIGlmIChkYXRlWC5pc1ZhbGlkICYmIGRhdGVZLmlzVmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRhVGFibGVTb3J0VXRpbC5jb21wYXJlRGF0ZShkYXRlWCwgZGF0ZVksIGFzY2VuZGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gLi4gYnV0IGFsc28gYSBmb3JtYXR0ZWQgbnVtYmVyXG4gICAgICAgIGlmICghIW51bWJlckZvcm1hdCkge1xuICAgICAgICAgIGNvbnN0IG51bWJlclggPSBEYXRhVGFibGVTb3J0VXRpbC5wYXJzZU51bWJlcih4LCBudW1iZXJGb3JtYXQpO1xuICAgICAgICAgIGNvbnN0IG51bWJlclkgPSBEYXRhVGFibGVTb3J0VXRpbC5wYXJzZU51bWJlcih5LCBudW1iZXJGb3JtYXQpO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBudW1iZXJYID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgbnVtYmVyWSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRhVGFibGVTb3J0VXRpbC5jb21wYXJlTnVtYmVyKG51bWJlclgsIG51bWJlclksIGFzY2VuZGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIERhdGFUYWJsZVNvcnRVdGlsLmNvbXBhcmVTdHJpbmcoeCwgc3RyaW5nWSwgYXNjZW5kaW5nKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gRGF0YVRhYmxlU29ydFV0aWwuY29tcGFyZUJvb2xlYW4oeCwgeSwgYXNjZW5kaW5nKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIGNhbm5vdCBjb21wYXJlIC0+IHJldHVybiBlcXVhbFxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29tcGFyZU51bWJlcih4OiBudW1iZXIsIHk6IG51bWJlciwgYXNjZW5kaW5nOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICByZXR1cm4gYXNjZW5kaW5nID8geCAtIHkgOiB5IC0geDtcbiAgfVxuXG4gIHN0YXRpYyBjb21wYXJlRGF0ZSh4OiBEYXRlVGltZSwgeTogRGF0ZVRpbWUsIGFzY2VuZGluZzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGFUYWJsZVNvcnRVdGlsLmNvbXBhcmVOdW1iZXIoK3gsICt5LCBhc2NlbmRpbmcpO1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmVTdHJpbmcoeDogc3RyaW5nLCB5OiBzdHJpbmcsIGFzY2VuZGluZzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgcmV0dXJuIGFzY2VuZGluZyA/IHgubG9jYWxlQ29tcGFyZSh5KSA6IHkubG9jYWxlQ29tcGFyZSh4KTtcbiAgfVxuXG4gIHN0YXRpYyBjb21wYXJlQm9vbGVhbih4OiBib29sZWFuLCB5OiBib29sZWFuLCBhc2NlbmRpbmc6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIGlmICh4ID09PSB5KSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKGFzY2VuZGluZykge1xuICAgICAgLy8gdHJ1ZSBmaXJzdFxuICAgICAgcmV0dXJuIHggPyAtMSA6IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZhbHNlIGZpcnN0XG4gICAgICByZXR1cm4geCA/IDEgOiAtMTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgcGFyc2VOdW1iZXIodmFsdWU6IHN0cmluZywgbnVtYmVyRm9ybWF0PzogTnVtYmVyRm9ybWF0KTogbnVtYmVyIHwgc3RyaW5nIHtcbiAgICBjb25zdCBzYW5pdGl6ZWQgPSB2YWx1ZVxuICAgICAgLnJlcGxhY2UobnVtYmVyRm9ybWF0Lmdyb3VwaW5nU2VwYXJhdG9yID8/ICcnLCAnJylcbiAgICAgIC5yZXBsYWNlKG51bWJlckZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yID8/ICcnLCAnLicpXG4gICAgICAucmVwbGFjZShuZXcgUmVnRXhwKChudW1iZXJGb3JtYXQudW5pdHMgPz8gW10pLmpvaW4oJ3wnKSksICcnKTtcblxuICAgIGNvbnN0IG51bWJlclZhbHVlID0gTnVtYmVyKHNhbml0aXplZCk7XG5cbiAgICBpZiAodHlwZW9mIG51bWJlclZhbHVlID09PSAnbnVtYmVyJyAmJiAhaXNOYU4obnVtYmVyVmFsdWUpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyVmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=
|
|
@@ -1926,16 +1926,20 @@ class DataTableSortUtil {
|
|
|
1926
1926
|
case 'string': {
|
|
1927
1927
|
const stringY = String(y);
|
|
1928
1928
|
// a string could be a date
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
return DataTableSortUtil.compareDate(dateX, dateY, ascending);
|
|
1929
|
+
if (!!dateTimeFormat) {
|
|
1930
|
+
const dateX = DateTime.fromFormat(x, dateTimeFormat);
|
|
1931
|
+
const dateY = DateTime.fromFormat(stringY, dateTimeFormat);
|
|
1932
|
+
if (dateX.isValid && dateY.isValid) {
|
|
1933
|
+
return DataTableSortUtil.compareDate(dateX, dateY, ascending);
|
|
1934
|
+
}
|
|
1936
1935
|
}
|
|
1937
|
-
|
|
1938
|
-
|
|
1936
|
+
// .. but also a formatted number
|
|
1937
|
+
if (!!numberFormat) {
|
|
1938
|
+
const numberX = DataTableSortUtil.parseNumber(x, numberFormat);
|
|
1939
|
+
const numberY = DataTableSortUtil.parseNumber(y, numberFormat);
|
|
1940
|
+
if (typeof numberX === 'number' && typeof numberY === 'number') {
|
|
1941
|
+
return DataTableSortUtil.compareNumber(numberX, numberY, ascending);
|
|
1942
|
+
}
|
|
1939
1943
|
}
|
|
1940
1944
|
return DataTableSortUtil.compareString(x, stringY, ascending);
|
|
1941
1945
|
}
|
|
@@ -1970,9 +1974,9 @@ class DataTableSortUtil {
|
|
|
1970
1974
|
}
|
|
1971
1975
|
static parseNumber(value, numberFormat) {
|
|
1972
1976
|
const sanitized = value
|
|
1973
|
-
.replace(numberFormat.groupingSeparator, '')
|
|
1974
|
-
.replace(numberFormat.decimalSeparator, '.')
|
|
1975
|
-
.replace(new RegExp(numberFormat.units.join('|')), '');
|
|
1977
|
+
.replace(numberFormat.groupingSeparator ?? '', '')
|
|
1978
|
+
.replace(numberFormat.decimalSeparator ?? '', '.')
|
|
1979
|
+
.replace(new RegExp((numberFormat.units ?? []).join('|')), '');
|
|
1976
1980
|
const numberValue = Number(sanitized);
|
|
1977
1981
|
if (typeof numberValue === 'number' && !isNaN(numberValue)) {
|
|
1978
1982
|
return numberValue;
|
|
@@ -2158,8 +2162,8 @@ const MAD_DATA_TABL_GLOBAL_CONFIGURATION_PROVIDER = {
|
|
|
2158
2162
|
provide: MAD_DATA_TABLE_GLOBAL_CONFIGURATION,
|
|
2159
2163
|
deps: [[new Optional(), new SkipSelf(), new Inject(MAD_DATA_TABLE_GLOBAL_CONFIGURATION)]],
|
|
2160
2164
|
useFactory: (dataTableConfig) => dataTableConfig ?? {
|
|
2161
|
-
dateTimeFormat: dataTableConfig
|
|
2162
|
-
numberFormat: dataTableConfig
|
|
2165
|
+
dateTimeFormat: dataTableConfig?.dateTimeFormat ?? 'dd.MM.yyyy',
|
|
2166
|
+
numberFormat: dataTableConfig?.numberFormat ?? {
|
|
2163
2167
|
decimalSeparator: ',',
|
|
2164
2168
|
groupingSeparator: '.',
|
|
2165
2169
|
units: ['€', '$'],
|