@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.
@@ -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.dateTimeFormat ?? 'dd.MM.yyyy',
9
- numberFormat: dataTableConfig.numberFormat ?? {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1nbG9iYWwtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hdGVyaWFsLWFkZG9ucy9zcmMvbGliL2RhdGEtdGFibGUvY29uZmlndXJhdGlvbi9kYXRhLXRhYmxlLWdsb2JhbC1jb25maWd1cmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFjM0UsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsSUFBSSxjQUFjLENBQStCLHFDQUFxQyxDQUFDLENBQUM7QUFFM0ksMkdBQTJHO0FBQzNHLE1BQU0sQ0FBQyxNQUFNLDJDQUEyQyxHQUFHO0lBQ3pELE9BQU8sRUFBRSxtQ0FBbUM7SUFDNUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsbUNBQW1DLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLFVBQVUsRUFBRSxDQUFDLGVBQThDLEVBQUUsRUFBRSxDQUM3RCxlQUFlLElBQUk7UUFDakIsY0FBYyxFQUFFLGVBQWUsQ0FBQyxjQUFjLElBQUksWUFBWTtRQUM5RCxZQUFZLEVBQUUsZUFBZSxDQUFDLFlBQVksSUFBSTtZQUM1QyxnQkFBZ0IsRUFBRSxHQUFHO1lBQ3JCLGlCQUFpQixFQUFFLEdBQUc7WUFDdEIsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUNsQjtLQUNGO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckZvcm1hdCB7XG4gIGRlY2ltYWxTZXBhcmF0b3I6IHN0cmluZztcbiAgZ3JvdXBpbmdTZXBhcmF0b3I6IHN0cmluZztcbiAgdW5pdHM6IHN0cmluZ1tdOyAvLyBlLmcuIHNpZ25zIGxpa2Ug4oKsLCAkXG59XG5cbi8vIHRoaXMgY291bGQgYWxzbyBiZSBleHRlbmRlZCB3aXRoIGUuZy4gbGFiZWxzIG9yIG90aGVyIGdlbmVyYWwgY29uZmlndXJhdGlvbiBzdHVmZlxuZXhwb3J0IGludGVyZmFjZSBEYXRhVGFibGVHbG9iYWxDb25maWd1cmF0aW9uIHtcbiAgZGF0ZVRpbWVGb3JtYXQ/OiBzdHJpbmc7XG4gIG51bWJlckZvcm1hdD86IE51bWJlckZvcm1hdDtcbn1cblxuZXhwb3J0IGNvbnN0IE1BRF9EQVRBX1RBQkxFX0dMT0JBTF9DT05GSUdVUkFUSU9OID0gbmV3IEluamVjdGlvblRva2VuPERhdGFUYWJsZUdsb2JhbENvbmZpZ3VyYXRpb24+KCdtYWQtZGF0YS10YWJsZS1nbG9iYWwtY29uZmlndXJhdGlvbicpO1xuXG4vLyBJZiB0aGVyZSBpcyBhIGN1c3RvbSBEQVRBX1RBQkxFX0NPTkZJR19QUk9WSURFUiBhdmFpbGFibGUsIHVzZSB0aGF0LiBPdGhlcndpc2UsIHByb3ZpZGUgdGhlIGRlZmF1bHQgb25lLlxuZXhwb3J0IGNvbnN0IE1BRF9EQVRBX1RBQkxfR0xPQkFMX0NPTkZJR1VSQVRJT05fUFJPVklERVIgPSB7XG4gIHByb3ZpZGU6IE1BRF9EQVRBX1RBQkxFX0dMT0JBTF9DT05GSUdVUkFUSU9OLFxuICBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBuZXcgU2tpcFNlbGYoKSwgbmV3IEluamVjdChNQURfREFUQV9UQUJMRV9HTE9CQUxfQ09ORklHVVJBVElPTildXSxcbiAgdXNlRmFjdG9yeTogKGRhdGFUYWJsZUNvbmZpZz86IERhdGFUYWJsZUdsb2JhbENvbmZpZ3VyYXRpb24pID0+XG4gICAgZGF0YVRhYmxlQ29uZmlnID8/IHtcbiAgICAgIGRhdGVUaW1lRm9ybWF0OiBkYXRhVGFibGVDb25maWcuZGF0ZVRpbWVGb3JtYXQgPz8gJ2RkLk1NLnl5eXknLFxuICAgICAgbnVtYmVyRm9ybWF0OiBkYXRhVGFibGVDb25maWcubnVtYmVyRm9ybWF0ID8/IHtcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvcjogJywnLFxuICAgICAgICBncm91cGluZ1NlcGFyYXRvcjogJy4nLFxuICAgICAgICB1bml0czogWyfigqwnLCAnJCddLFxuICAgICAgfSxcbiAgICB9LFxufTtcbiJdfQ==
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
- const dateX = DateTime.fromFormat(x, dateTimeFormat);
23
- const dateY = DateTime.fromFormat(stringY, dateTimeFormat);
24
- // .. but also a formatted number
25
- const numberX = DataTableSortUtil.parseNumber(x, numberFormat);
26
- const numberY = DataTableSortUtil.parseNumber(y, numberFormat);
27
- if (dateX.isValid && dateY.isValid) {
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
- if (typeof numberX === 'number' && typeof numberY === 'number') {
31
- return DataTableSortUtil.compareNumber(numberX, numberY, ascending);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1zb3J0LXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXRlcmlhbC1hZGRvbnMvc3JjL2xpYi9kYXRhLXRhYmxlL3V0aWwvZGF0YS10YWJsZS1zb3J0LXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUdqQyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBc0IsRUFBRSxZQUEwQjtRQUNoRSxPQUFPLENBQUMsU0FBZ0IsRUFBRSxPQUFnQixFQUFFLEVBQUUsQ0FDNUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVc7UUFDaEIsT0FBTyxDQUFDLFNBQWdCLEVBQUUsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBc0IsRUFBRSxDQUFzQixFQUFFLElBQVUsRUFBRSxjQUFzQixFQUFFLFlBQTBCO1FBQzNILE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQztRQUUzQyxRQUFRLE9BQU8sQ0FBQyxFQUFFO1lBQ2hCLEtBQUssUUFBUTtnQkFDWCxJQUFJLE9BQU8sQ0FBQyxLQUFL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Q0FBQyxLQUFhLEVBQUUsWUFBMEI7UUFDMUQsTUFBTSxTQUFTLEdBQUcsS0FBSzthQUNwQixPQUFPLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQzthQUMzQyxPQUFPLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQzthQUMzQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6RCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdEMsSUFBSSxPQUFPLFdBQVcsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDMUQsT0FBTyxXQUFXLENBQUM7U0FDcEI7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1hdFNvcnQsIFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHsgTnVtYmVyRm9ybWF0IH0gZnJvbSAnLi4vY29uZmlndXJhdGlvbi9kYXRhLXRhYmxlLWdsb2JhbC1jb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZVNvcnRVdGlsIHtcbiAgc3RhdGljIHNvcnREYXRhKGRhdGVUaW1lRm9ybWF0OiBzdHJpbmcsIG51bWJlckZvcm1hdDogTnVtYmVyRm9ybWF0KTogKHRhYmxlRGF0YTogYW55W10sIG1hdFNvcnQ6IE1hdFNvcnQpID0+IGFueVtdIHtcbiAgICByZXR1cm4gKHRhYmxlRGF0YTogYW55W10sIG1hdFNvcnQ6IE1hdFNvcnQpID0+XG4gICAgICBbLi4udGFibGVEYXRhXS5zb3J0KChhLCBiKSA9PiBEYXRhVGFibGVTb3J0VXRpbC5jb21wYXJlKGEsIGIsIG1hdFNvcnQsIGRhdGVUaW1lRm9ybWF0LCBudW1iZXJGb3JtYXQpKTtcbiAgfVxuXG4gIHN0YXRpYyBzb3J0Tm90aGluZygpOiAodGFibGVEYXRhOiBhbnlbXSwgbWF0U29ydDogTWF0U29ydCkgPT4gYW55W10ge1xuICAgIHJldHVybiAodGFibGVEYXRhOiBhbnlbXSwgXzogTWF0U29ydCkgPT4gdGFibGVEYXRhO1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmUoYTogUmVjb3JkPHN0cmluZywgYW55PiwgYjogUmVjb3JkPHN0cmluZywgYW55Piwgc29ydDogU29ydCwgZGF0ZVRpbWVGb3JtYXQ6IHN0cmluZywgbnVtYmVyRm9ybWF0OiBOdW1iZXJGb3JtYXQpOiBudW1iZXIge1xuICAgIGNvbnN0IHggPSBhW3NvcnQuYWN0aXZlXTtcbiAgICBjb25zdCB5ID0gYltzb3J0LmFjdGl2ZV07XG4gICAgY29uc3QgYXNjZW5kaW5nID0gc29ydC5kaXJlY3Rpb24gPT09ICdhc2MnO1xuXG4gICAgc3dpdGNoICh0eXBlb2YgeCkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgaWYgKHR5cGVvZiB5ICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiBEYXRhVGFibGVTb3J0VXRpbC5jb21wYXJlU3RyaW5nKFN0cmluZyh4KSwgeSwgYXNjZW5kaW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRGF0YVRhYmxlU29ydFV0aWwuY29tcGFyZU51bWJlcih4LCB5LCBhc2NlbmRpbmcpO1xuICAgICAgY2FzZSAnc3RyaW5nJzoge1xuICAgICAgICBjb25zdCBzdHJpbmdZID0gU3RyaW5nKHkpO1xuXG4gICAgICAgIC8vIGEgc3RyaW5nIGNvdWxkIGJlIGEgZGF0ZVxuICAgICAgICBjb25zdCBkYXRlWCA9IERhdGVUaW1lLmZyb21Gb3JtYXQoeCwgZGF0ZVRpbWVGb3JtYXQpO1xuICAgICAgICBjb25zdCBkYXRlWSA9IERhdGVUaW1lLmZyb21Gb3JtYXQoc3RyaW5nWSwgZGF0ZVRpbWVGb3JtYXQpO1xuXG4gICAgICAgIC8vIC4uIGJ1dCBhbHNvIGEgZm9ybWF0dGVkIG51bWJlclxuICAgICAgICBjb25zdCBudW1iZXJYID0gRGF0YVRhYmxlU29ydFV0aWwucGFyc2VOdW1iZXIoeCwgbnVtYmVyRm9ybWF0KTtcbiAgICAgICAgY29uc3QgbnVtYmVyWSA9IERhdGFUYWJsZVNvcnRVdGlsLnBhcnNlTnVtYmVyKHksIG51bWJlckZvcm1hdCk7XG5cbiAgICAgICAgaWYgKGRhdGVYLmlzVmFsaWQgJiYgZGF0ZVkuaXNWYWxpZCkge1xuICAgICAgICAgIHJldHVybiBEYXRhVGFibGVTb3J0VXRpbC5jb21wYXJlRGF0ZShkYXRlWCwgZGF0ZVksIGFzY2VuZGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG51bWJlclggPT09ICdudW1iZXInICYmIHR5cGVvZiBudW1iZXJZID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiBEYXRhVGFibGVTb3J0VXRpbC5jb21wYXJlTnVtYmVyKG51bWJlclgsIG51bWJlclksIGFzY2VuZGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGF0YVRhYmxlU29ydFV0aWwuY29tcGFyZVN0cmluZyh4LCBzdHJpbmdZLCBhc2NlbmRpbmcpO1xuICAgICAgfVxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiBEYXRhVGFibGVTb3J0VXRpbC5jb21wYXJlQm9vbGVhbih4LCB5LCBhc2NlbmRpbmcpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gY2Fubm90IGNvbXBhcmUgLT4gcmV0dXJuIGVxdWFsXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb21wYXJlTnVtYmVyKHg6IG51bWJlciwgeTogbnVtYmVyLCBhc2NlbmRpbmc6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgIHJldHVybiBhc2NlbmRpbmcgPyB4IC0geSA6IHkgLSB4O1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmVEYXRlKHg6IERhdGVUaW1lLCB5OiBEYXRlVGltZSwgYXNjZW5kaW5nOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0YVRhYmxlU29ydFV0aWwuY29tcGFyZU51bWJlcigreCwgK3ksIGFzY2VuZGluZyk7XG4gIH1cblxuICBzdGF0aWMgY29tcGFyZVN0cmluZyh4OiBzdHJpbmcsIHk6IHN0cmluZywgYXNjZW5kaW5nOiBib29sZWFuKTogbnVtYmVyIHtcbiAgICByZXR1cm4gYXNjZW5kaW5nID8geC5sb2NhbGVDb21wYXJlKHkpIDogeS5sb2NhbGVDb21wYXJlKHgpO1xuICB9XG5cbiAgc3RhdGljIGNvbXBhcmVCb29sZWFuKHg6IGJvb2xlYW4sIHk6IGJvb2xlYW4sIGFzY2VuZGluZzogYm9vbGVhbik6IG51bWJlciB7XG4gICAgaWYgKHggPT09IHkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBpZiAoYXNjZW5kaW5nKSB7XG4gICAgICAvLyB0cnVlIGZpcnN0XG4gICAgICByZXR1cm4geCA/IC0xIDogMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmFsc2UgZmlyc3RcbiAgICAgIHJldHVybiB4ID8gMSA6IC0xO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBwYXJzZU51bWJlcih2YWx1ZTogc3RyaW5nLCBudW1iZXJGb3JtYXQ6IE51bWJlckZvcm1hdCk6IG51bWJlciB8IHN0cmluZyB7XG4gICAgY29uc3Qgc2FuaXRpemVkID0gdmFsdWVcbiAgICAgIC5yZXBsYWNlKG51bWJlckZvcm1hdC5ncm91cGluZ1NlcGFyYXRvciwgJycpXG4gICAgICAucmVwbGFjZShudW1iZXJGb3JtYXQuZGVjaW1hbFNlcGFyYXRvciwgJy4nKVxuICAgICAgLnJlcGxhY2UobmV3IFJlZ0V4cChudW1iZXJGb3JtYXQudW5pdHMuam9pbignfCcpKSwgJycpO1xuXG4gICAgY29uc3QgbnVtYmVyVmFsdWUgPSBOdW1iZXIoc2FuaXRpemVkKTtcblxuICAgIGlmICh0eXBlb2YgbnVtYmVyVmFsdWUgPT09ICdudW1iZXInICYmICFpc05hTihudW1iZXJWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBudW1iZXJWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiJdfQ==
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
- const dateX = DateTime.fromFormat(x, dateTimeFormat);
1930
- const dateY = DateTime.fromFormat(stringY, dateTimeFormat);
1931
- // .. but also a formatted number
1932
- const numberX = DataTableSortUtil.parseNumber(x, numberFormat);
1933
- const numberY = DataTableSortUtil.parseNumber(y, numberFormat);
1934
- if (dateX.isValid && dateY.isValid) {
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
- if (typeof numberX === 'number' && typeof numberY === 'number') {
1938
- return DataTableSortUtil.compareNumber(numberX, numberY, ascending);
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.dateTimeFormat ?? 'dd.MM.yyyy',
2162
- numberFormat: dataTableConfig.numberFormat ?? {
2165
+ dateTimeFormat: dataTableConfig?.dateTimeFormat ?? 'dd.MM.yyyy',
2166
+ numberFormat: dataTableConfig?.numberFormat ?? {
2163
2167
  decimalSeparator: ',',
2164
2168
  groupingSeparator: '.',
2165
2169
  units: ['€', '$'],