@messaia/cdk 14.0.0-rc21 → 14.0.0-rc24

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.
@@ -76,10 +76,6 @@ export function Column(args) {
76
76
  else if (tableColumn.enumType) {
77
77
  tableColumn.type || (tableColumn.type = TableColumnType.Enum);
78
78
  }
79
- /* Set type to 'Select' if endpoint is specified */
80
- else if (tableColumn.endpoint || tableColumn.options) {
81
- tableColumn.type || (tableColumn.type = TableColumnType.Select);
82
- }
83
79
  /* Otherwiese, set type depending on property type */
84
80
  else {
85
81
  /* Get property type */
@@ -122,4 +118,4 @@ export function Column(args) {
122
118
  Reflect.defineMetadata(tableColumnsMetadataKey, tableColumns, target);
123
119
  };
124
120
  }
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL3RhYmxlL2Z1bmN0aW9ucy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdyRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBVSxlQUE2QztJQUN4RSxPQUFPLFVBQVUsTUFBZ0I7UUFDN0IsSUFBSSxlQUFlLEVBQUUsT0FBTyxFQUFFO1lBQzFCLG9EQUFvRDtZQUNwRCxJQUFJLFlBQVksR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDZixZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUM7b0JBQzNCLEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTTtvQkFDNUIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsWUFBWSxFQUFFLE9BQU87b0JBQ3JCLFlBQVksRUFBRSxLQUFLO2lCQUN0QixDQUFDLENBQUM7Z0JBRUgsa0RBQWtEO2dCQUNs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Y3QtbWV0YWRhdGFcIjtcclxuaW1wb3J0IHsgaGVhZGVyTWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2NvbnN0YW50cy9jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy91dGlsc1wiO1xyXG5pbXBvcnQgeyB0YWJsZUNvbHVtbnNNZXRhZGF0YUtleSwgdGFibGVEZWZpbml0aW9uTWV0YWRhdGFLZXkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIi4uL2VudW1zL2dyaWRcIjtcclxuaW1wb3J0IHsgVGFibGVDb2x1bW5UeXBlIH0gZnJvbSBcIi4uL2VudW1zL3RhYmxlLWNvbHVtbi10eXBlXCI7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSBcIi4uL21vZGVscy90YWJsZS1jb2x1bW5cIjtcclxuaW1wb3J0IHsgVGFibGVEZWZpbml0aW9uIH0gZnJvbSBcIi4uL21vZGVscy90YWJsZS1kZWZpbml0aW9uXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3MgZGVjb3JhdG9yIHRvIGNyZWF0ZSBhIG1hdC10YWJsZVxyXG4gKiBAcGFyYW0gdGFibGVEZWZpbml0aW9uIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBUYWJsZTxUID0gYW55Pih0YWJsZURlZmluaXRpb24/OiBQYXJ0aWFsPFRhYmxlRGVmaW5pdGlvbjxUPj4pOiBGdW5jdGlvbiB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogRnVuY3Rpb24pIHtcclxuICAgICAgICBpZiAodGFibGVEZWZpbml0aW9uPy5jb2x1bW5zKSB7XHJcbiAgICAgICAgICAgIC8qIEFkZCBhY3Rpb24gbWVudXMgZnJvbSB0YWJsZSBkZWZpbml0aW9uLCBpZiBhbnkgKi9cclxuICAgICAgICAgICAgdmFyIGFjdGlvbkNvbG11biA9IHRhYmxlRGVmaW5pdGlvbi5jb2x1bW5zPy5maW5kKHggPT4geC5uYW1lID09ICdhY3Rpb24nKTtcclxuICAgICAgICAgICAgaWYgKCFhY3Rpb25Db2xtdW4pIHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbkNvbG11biA9IG5ldyBUYWJsZUNvbHVtbih7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IDIwMDAsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2FjdGlvbicsXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogVGFibGVDb2x1bW5UeXBlLkFjdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICByb3dNZW51SXRlbXM6IGFjdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgLyogQWRkIHRoZSBhY3Rpb24gY29sdW1uIGludG8gdGhlIHRhYmxlIGNvbHVtbnMgKi9cclxuICAgICAgICAgICAgICAgIHRhYmxlRGVmaW5pdGlvbi5jb2x1bW5zLnB1c2goYWN0aW9uQ29sbXVuKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLyogR2V0IGN1c3RvbSBhY3Rpb24sIGlmIGFueSAqL1xyXG4gICAgICAgICAgICB2YXIgYWN0aW9ucyA9IHRhYmxlRGVmaW5pdGlvbj8uYWN0aW9ucztcclxuICAgICAgICAgICAgaWYgKGFjdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uQ29sbXVuLnJvd01lbnVJdGVtcyA9IGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMgfHwgW107XHJcbiAgICAgICAgICAgICAgICBhY3Rpb25zLmZvckVhY2goeSA9PiBhY3Rpb25Db2xtdW4ucm93TWVudUl0ZW1zLnB1c2goeSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBTYXZlIHRoZSB0YWJsZSBkZWZpbnRpb24gaW4gdGhlIG1ldGFkYXRhICovXHJcbiAgICAgICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YSh0YWJsZURlZmluaXRpb25NZXRhZGF0YUtleSwgdGFibGVEZWZpbml0aW9uLCB0YXJnZXQpO1xyXG4gICAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFByb3BlcnR5IGRlY29yYXRvciB0byBjcmVhdGUgdGFibGUgY29sdW1uc1xyXG4gKiBAcGFyYW0gYXJncyBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gQ29sdW1uPFQgPSBhbnk+KGFyZ3M/OiBQYXJ0aWFsPFRhYmxlQ29sdW1uPFQ+Pik6IEZ1bmN0aW9uIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpIHtcclxuICAgICAgICAvKiBHZXQgcHJvcGVydHkgbmFtZSAqL1xyXG4gICAgICAgIHZhciBwcm9wZXJ0eU5hbWUgPSBhcmdzPy5uYW1lIHx8IHByb3BlcnR5S2V5O1xyXG5cclxuICAgICAgICAvKiBDcmVhdGUgdGFibGUgY29sdW1uICovXHJcbiAgICAgICAgbGV0IHRhYmxlQ29sdW1uID0gT2JqZWN0LmFzc2lnbihhcmdzIHx8IHt9LCBuZXcgVGFibGVDb2x1bW4oe1xyXG4gICAgICAgICAgICBuYW1lOiBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgIGhlYWRlcjogYXJncz8uaGVhZGVyIHx8IFJlZmxlY3QuZ2V0TWV0YWRhdGEoaGVhZGVyTWV0YWRhdGFLZXksIHRhcmdldCwgcHJvcGVydHlLZXkpIHx8IHByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgZmlsdGVyOiBhcmdzPy5maWx0ZXIgfHwgcHJvcGVydHlLZXksXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6IGFyZ3M/LmNvbnRlbnQgPyBhcmdzLmNvbnRlbnQgOiAocm93OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIC8qIEdldCBjb250ZW50IHVzaW5nIHByb3BlcnR5IG5hbWUgKi9cclxuICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gVXRpbHMuZ2V0UHJvcGVydHlWYWx1ZShyb3csIHByb3BlcnR5TmFtZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgLyogVHJ1bmNhdGUgdGhlIHRleHQgaWYgY29udGVudCBsZW5ndGggaXMgc3BlY2lmaWVkICovXHJcbiAgICAgICAgICAgICAgICBpZiAodGFibGVDb2x1bW4uY29udGVudExlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gVXRpbHMudHJ1bmNhdGVUZXh0KGNvbnRlbnQsIHRhYmxlQ29sdW1uLmNvbnRlbnRMZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBjb250ZW50O1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IGFyZ3M/LmNvbmZpZ3VyYWJsZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IGFyZ3MuY29uZmlndXJhYmxlLFxyXG4gICAgICAgICAgICBkaXNwbGF5OiBhcmdzPy5kaXNwbGF5ID8/IEdyaWQuQWxsXHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAvKiBTZXQgdHlwZSB0byAnTWVudScgaWYgbWVudSBpcyBzcGVjaWZpZWQgKi9cclxuICAgICAgICBpZiAodGFibGVDb2x1bW4ubWVudSkge1xyXG4gICAgICAgICAgICB0YWJsZUNvbHVtbi50eXBlIHx8PSBUYWJsZUNvbHVtblR5cGUuTWVudTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFNldCB0eXBlIHRvICdJY29uQnV0dG9uJyBpZiBpY29uQnV0dG9uIGlzIHNwZWNpZmllZCAqL1xyXG4gICAgICAgIGVsc2UgaWYgKHRhYmxlQ29sdW1uLmljb25CdXR0b24pIHtcclxuICAgICAgICAgICAgdGFibGVDb2x1bW4udHlwZSB8fD0gVGFibGVDb2x1bW5UeXBlLkljb25CdXR0b247XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBTZXQgdHlwZSB0byBlbnVtLCBpZiBlbnVtIHR5cGUgaXMgc3BlY2lmaWVkICovXHJcbiAgICAgICAgZWxzZSBpZiAodGFibGVDb2x1bW4uZW51bVR5cGUpIHtcclxuICAgICAgICAgICAgdGFibGVDb2x1bW4udHlwZSB8fD0gVGFibGVDb2x1bW5UeXBlLkVudW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBTZXQgdHlwZSB0byAnU2VsZWN0JyBpZiBlbmRwb2ludCBpcyBzcGVjaWZpZWQgKi9cclxuICAgICAgICBlbHNlIGlmICh0YWJsZUNvbHVtbi5lbmRwb2ludCB8fCB0YWJsZUNvbHVtbi5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHRhYmxlQ29sdW1uLnR5cGUgfHw9IFRhYmxlQ29sdW1uVHlwZS5TZWxlY3Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBPdGhlcndpZXNlLCBzZXQgdHlwZSBkZXBlbmRpbmcgb24gcHJvcGVydHkgdHlwZSAqL1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvKiBHZXQgcHJvcGVydHkgdHlwZSAqL1xyXG4gICAgICAgICAgICB2YXIgcHJvcGVydHlUeXBlOiBzdHJpbmcgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFwiZGVzaWduOnR5cGVcIiwgdGFyZ2V0LCBwcm9wZXJ0eUtleSk/Lm5hbWU7XHJcbiAgICAgICAgICAgIHN3aXRjaCAocHJvcGVydHlUeXBlLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGFibGVDb2x1bW4uaW5wdXRUeXBlIHx8PSAnbnVtYmVyJztcclxuICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbi50eXBlIHx8PSBUYWJsZUNvbHVtblR5cGUuTnVtYmVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1uLmlucHV0VHlwZSB8fD0gJ2RhdGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1uLnR5cGUgfHw9IFRhYmxlQ29sdW1uVHlwZS5EYXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1uLm1heFdpZHRoIHx8PSA4MDtcclxuICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbi5hcnJvd0JlZm9yZSA9IHRhYmxlQ29sdW1uLmFycm93QmVmb3JlICE9PSB1bmRlZmluZWQgPyB0YWJsZUNvbHVtbi5hcnJvd0JlZm9yZSA6IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGFibGVDb2x1bW4udHlwZSB8fD0gVGFibGVDb2x1bW5UeXBlLlRvZ2dsZTtcclxuICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbi5vcHRpb25zIHx8PSBbeyBpZDogZmFsc2UsIG5hbWU6ICRsb2NhbGl6ZWA6QEBubzpOb2AgfSwgeyBpZDogdHJ1ZSwgbmFtZTogJGxvY2FsaXplYDpAQHllczpZZXNgIH1dO1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1uLm1heFdpZHRoIHx8PSA3MDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1uLnR5cGUgfHw9IFRhYmxlQ29sdW1uVHlwZS5UZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGFibGVDb2x1bW4ubWF4V2lkdGgpIHtcclxuICAgICAgICAgICAgdGFibGVDb2x1bW4ud2lkdGggfHw9IHRhYmxlQ29sdW1uLm1heFdpZHRoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IG9sZCB0YWJsZSBjb2x1bW5zICovXHJcbiAgICAgICAgbGV0IHByZXZpb3VzVGFibGVDb2x1bW5zOiBUYWJsZUNvbHVtbjxUPltdID0gUmVmbGVjdC5nZXRNZXRhZGF0YSh0YWJsZUNvbHVtbnNNZXRhZGF0YUtleSwgdGFyZ2V0KTtcclxuXHJcbiAgICAgICAgLyogT3ZlcnJpZGUgdGhlIGZpZWxkLCBpZiBleGlzdHMgKi9cclxuICAgICAgICBwcmV2aW91c1RhYmxlQ29sdW1ucyA9IHByZXZpb3VzVGFibGVDb2x1bW5zPy5maWx0ZXIoeCA9PiB4Lm5hbWUgIT0gdGFibGVDb2x1bW4ubmFtZSk7XHJcblxyXG4gICAgICAgIC8qIENyZWF0ZSBhIGNvcHkgb2YgdGhlIHJlc3VsdCAqL1xyXG4gICAgICAgIGxldCB0YWJsZUNvbHVtbnMgPSBwcmV2aW91c1RhYmxlQ29sdW1ucyA/IHByZXZpb3VzVGFibGVDb2x1bW5zLmNvbmNhdChbdGFibGVDb2x1bW5dKSA6IFt0YWJsZUNvbHVtbl07XHJcblxyXG4gICAgICAgIC8qIFNldCBjb2x1bW4gaW5kZXggKi9cclxuICAgICAgICB0YWJsZUNvbHVtbnMuZm9yRWFjaCgoeCwgaSkgPT4geC5pbmRleCA/Pz0gaSk7XHJcblxyXG4gICAgICAgIC8qIFNvcnQgdGhlIGNvbHVtbnMgYnkgaW5kZXggKi9cclxuICAgICAgICBVdGlscy5zb3J0QXJyYXkodGFibGVDb2x1bW5zLCAnaW5kZXgnKTtcclxuXHJcbiAgICAgICAgLyogT3ZlcnJpZGUgdGhlIHJlc3VsdCBpbiB0aGUgbWV0YWRhdGEgKi9cclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKHRhYmxlQ29sdW1uc01ldGFkYXRhS2V5LCB0YWJsZUNvbHVtbnMsIHRhcmdldCk7XHJcbiAgICB9O1xyXG59Il19
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL3RhYmxlL2Z1bmN0aW9ucy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUdyRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBVSxlQUE2QztJQUN4RSxPQUFPLFVBQVUsTUFBZ0I7UUFDN0IsSUFBSSxlQUFlLEVBQUUsT0FBTyxFQUFFO1lBQzFCLG9EQUFvRDtZQUNwRCxJQUFJLFlBQVksR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUM7WUFDMUUsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDZixZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUM7b0JBQzNCLEtBQUssRUFBRSxJQUFJO29CQUNYLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTTtvQkFDNUIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsWUFBWSxFQUFFLE9BQU87b0JBQ3JCLFlBQVksRUFBRSxLQUFLO2lCQUN0QixDQUFDLENBQUM7Z0JBRUgsa0RBQWtEO2dCQUNs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QUksV0FBVyxDQUFDLFFBQVEsRUFBRTtZQUN0QixXQUFXLENBQUMsS0FBSyxLQUFqQixXQUFXLENBQUMsS0FBSyxHQUFLLFdBQVcsQ0FBQyxRQUFRLEVBQUM7U0FDOUM7UUFFRCwyQkFBMkI7UUFDM0IsSUFBSSxvQkFBb0IsR0FBcUIsT0FBTyxDQUFDLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVsRyxtQ0FBbUM7UUFDbkMsb0JBQW9CLEdBQUcsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckYsaUNBQWlDO1FBQ2pDLElBQUksWUFBWSxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXJHLHNCQUFzQjtRQUN0QixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBUCxDQUFDLENBQUMsS0FBSyxHQUFLLENBQUMsQ0FBQSxDQUFDLENBQUM7UUFFOUMsK0JBQStCO1FBQy9CLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRXZDLHlDQUF5QztRQUN6QyxPQUFPLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwicmVmbGVjdC1tZXRhZGF0YVwiO1xyXG5pbXBvcnQgeyBoZWFkZXJNZXRhZGF0YUtleSB9IGZyb20gXCIuLi8uLi9jb21tb24vY29uc3RhbnRzL2NvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gXCIuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzXCI7XHJcbmltcG9ydCB7IHRhYmxlQ29sdW1uc01ldGFkYXRhS2V5LCB0YWJsZURlZmluaXRpb25NZXRhZGF0YUtleSB9IGZyb20gXCIuLi9jb25zdGFudHMvY29uc3RhbnRzXCI7XHJcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiLi4vZW51bXMvZ3JpZFwiO1xyXG5pbXBvcnQgeyBUYWJsZUNvbHVtblR5cGUgfSBmcm9tIFwiLi4vZW51bXMvdGFibGUtY29sdW1uLXR5cGVcIjtcclxuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tIFwiLi4vbW9kZWxzL3RhYmxlLWNvbHVtblwiO1xyXG5pbXBvcnQgeyBUYWJsZURlZmluaXRpb24gfSBmcm9tIFwiLi4vbW9kZWxzL3RhYmxlLWRlZmluaXRpb25cIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzcyBkZWNvcmF0b3IgdG8gY3JlYXRlIGEgbWF0LXRhYmxlXHJcbiAqIEBwYXJhbSB0YWJsZURlZmluaXRpb24gXHJcbiAqIEByZXR1cm5zIFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIFRhYmxlPFQgPSBhbnk+KHRhYmxlRGVmaW5pdGlvbj86IFBhcnRpYWw8VGFibGVEZWZpbml0aW9uPFQ+Pik6IEZ1bmN0aW9uIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBGdW5jdGlvbikge1xyXG4gICAgICAgIGlmICh0YWJsZURlZmluaXRpb24/LmNvbHVtbnMpIHtcclxuICAgICAgICAgICAgLyogQWRkIGFjdGlvbiBtZW51cyBmcm9tIHRhYmxlIGRlZmluaXRpb24sIGlmIGFueSAqL1xyXG4gICAgICAgICAgICB2YXIgYWN0aW9uQ29sbXVuID0gdGFibGVEZWZpbml0aW9uLmNvbHVtbnM/LmZpbmQoeCA9PiB4Lm5hbWUgPT0gJ2FjdGlvbicpO1xyXG4gICAgICAgICAgICBpZiAoIWFjdGlvbkNvbG11bikge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uQ29sbXVuID0gbmV3IFRhYmxlQ29sdW1uKHtcclxuICAgICAgICAgICAgICAgICAgICBpbmRleDogMjAwMCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWN0aW9uJyxcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBUYWJsZUNvbHVtblR5cGUuQWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIHJvd01lbnVJdGVtczogYWN0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvKiBBZGQgdGhlIGFjdGlvbiBjb2x1bW4gaW50byB0aGUgdGFibGUgY29sdW1ucyAqL1xyXG4gICAgICAgICAgICAgICAgdGFibGVEZWZpbml0aW9uLmNvbHVtbnMucHVzaChhY3Rpb25Db2xtdW4pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiBHZXQgY3VzdG9tIGFjdGlvbiwgaWYgYW55ICovXHJcbiAgICAgICAgICAgIHZhciBhY3Rpb25zID0gdGFibGVEZWZpbml0aW9uPy5hY3Rpb25zO1xyXG4gICAgICAgICAgICBpZiAoYWN0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb25Db2xtdW4ucm93TWVudUl0ZW1zID0gYWN0aW9uQ29sbXVuLnJvd01lbnVJdGVtcyB8fCBbXTtcclxuICAgICAgICAgICAgICAgIGFjdGlvbnMuZm9yRWFjaCh5ID0+IGFjdGlvbkNvbG11bi5yb3dNZW51SXRlbXMucHVzaCh5KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFNhdmUgdGhlIHRhYmxlIGRlZmludGlvbiBpbiB0aGUgbWV0YWRhdGEgKi9cclxuICAgICAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKHRhYmxlRGVmaW5pdGlvbk1ldGFkYXRhS2V5LCB0YWJsZURlZmluaXRpb24sIHRhcmdldCk7XHJcbiAgICB9O1xyXG59XHJcblxyXG4vKipcclxuICogUHJvcGVydHkgZGVjb3JhdG9yIHRvIGNyZWF0ZSB0YWJsZSBjb2x1bW5zXHJcbiAqIEBwYXJhbSBhcmdzIFxyXG4gKiBAcmV0dXJucyBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBDb2x1bW48VCA9IGFueT4oYXJncz86IFBhcnRpYWw8VGFibGVDb2x1bW48VD4+KTogRnVuY3Rpb24ge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZykge1xyXG4gICAgICAgIC8qIEdldCBwcm9wZXJ0eSBuYW1lICovXHJcbiAgICAgICAgdmFyIHByb3BlcnR5TmFtZSA9IGFyZ3M/Lm5hbWUgfHwgcHJvcGVydHlLZXk7XHJcblxyXG4gICAgICAgIC8qIENyZWF0ZSB0YWJsZSBjb2x1bW4gKi9cclxuICAgICAgICBsZXQgdGFibGVDb2x1bW4gPSBPYmplY3QuYXNzaWduKGFyZ3MgfHwge30sIG5ldyBUYWJsZUNvbHVtbih7XHJcbiAgICAgICAgICAgIG5hbWU6IHByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgaGVhZGVyOiBhcmdzPy5oZWFkZXIgfHwgUmVmbGVjdC5nZXRNZXRhZGF0YShoZWFkZXJNZXRhZGF0YUtleSwgdGFyZ2V0LCBwcm9wZXJ0eUtleSkgfHwgcHJvcGVydHlOYW1lLFxyXG4gICAgICAgICAgICBmaWx0ZXI6IGFyZ3M/LmZpbHRlciB8fCBwcm9wZXJ0eUtleSxcclxuICAgICAgICAgICAgY29udGVudDogYXJncz8uY29udGVudCA/IGFyZ3MuY29udGVudCA6IChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLyogR2V0IGNvbnRlbnQgdXNpbmcgcHJvcGVydHkgbmFtZSAqL1xyXG4gICAgICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBVdGlscy5nZXRQcm9wZXJ0eVZhbHVlKHJvdywgcHJvcGVydHlOYW1lKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvKiBUcnVuY2F0ZSB0aGUgdGV4dCBpZiBjb250ZW50IGxlbmd0aCBpcyBzcGVjaWZpZWQgKi9cclxuICAgICAgICAgICAgICAgIGlmICh0YWJsZUNvbHVtbi5jb250ZW50TGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBVdGlscy50cnVuY2F0ZVRleHQoY29udGVudCwgdGFibGVDb2x1bW4uY29udGVudExlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogYXJncz8uY29uZmlndXJhYmxlID09PSB1bmRlZmluZWQgPyB0cnVlIDogYXJncy5jb25maWd1cmFibGUsXHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGFyZ3M/LmRpc3BsYXkgPz8gR3JpZC5BbGxcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgIC8qIFNldCB0eXBlIHRvICdNZW51JyBpZiBtZW51IGlzIHNwZWNpZmllZCAqL1xyXG4gICAgICAgIGlmICh0YWJsZUNvbHVtbi5tZW51KSB7XHJcbiAgICAgICAgICAgIHRhYmxlQ29sdW1uLnR5cGUgfHw9IFRhYmxlQ29sdW1uVHlwZS5NZW51O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU2V0IHR5cGUgdG8gJ0ljb25CdXR0b24nIGlmIGljb25CdXR0b24gaXMgc3BlY2lmaWVkICovXHJcbiAgICAgICAgZWxzZSBpZiAodGFibGVDb2x1bW4uaWNvbkJ1dHRvbikge1xyXG4gICAgICAgICAgICB0YWJsZUNvbHVtbi50eXBlIHx8PSBUYWJsZUNvbHVtblR5cGUuSWNvbkJ1dHRvbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFNldCB0eXBlIHRvIGVudW0sIGlmIGVudW0gdHlwZSBpcyBzcGVjaWZpZWQgKi9cclxuICAgICAgICBlbHNlIGlmICh0YWJsZUNvbHVtbi5lbnVtVHlwZSkge1xyXG4gICAgICAgICAgICB0YWJsZUNvbHVtbi50eXBlIHx8PSBUYWJsZUNvbHVtblR5cGUuRW51bTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIE90aGVyd2llc2UsIHNldCB0eXBlIGRlcGVuZGluZyBvbiBwcm9wZXJ0eSB0eXBlICovXHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIC8qIEdldCBwcm9wZXJ0eSB0eXBlICovXHJcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eVR5cGU6IHN0cmluZyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXCJkZXNpZ246dHlwZVwiLCB0YXJnZXQsIHByb3BlcnR5S2V5KT8ubmFtZTtcclxuICAgICAgICAgICAgc3dpdGNoIChwcm9wZXJ0eVR5cGUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbi5pbnB1dFR5cGUgfHw9ICdudW1iZXInO1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1uLnR5cGUgfHw9IFRhYmxlQ29sdW1uVHlwZS5OdW1iZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGFibGVDb2x1bW4uaW5wdXRUeXBlIHx8PSAnZGF0ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFibGVDb2x1bW4udHlwZSB8fD0gVGFibGVDb2x1bW5UeXBlLkRhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFibGVDb2x1bW4ubWF4V2lkdGggfHw9IDgwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1uLmFycm93QmVmb3JlID0gdGFibGVDb2x1bW4uYXJyb3dCZWZvcmUgIT09IHVuZGVmaW5lZCA/IHRhYmxlQ29sdW1uLmFycm93QmVmb3JlIDogdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICAgICAgICAgICAgICB0YWJsZUNvbHVtbi50eXBlIHx8PSBUYWJsZUNvbHVtblR5cGUuVG9nZ2xlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYmxlQ29sdW1uLm9wdGlvbnMgfHw9IFt7IGlkOiBmYWxzZSwgbmFtZTogJGxvY2FsaXplYDpAQG5vOk5vYCB9LCB7IGlkOiB0cnVlLCBuYW1lOiAkbG9jYWxpemVgOkBAeWVzOlllc2AgfV07XHJcbiAgICAgICAgICAgICAgICAgICAgdGFibGVDb2x1bW4ubWF4V2lkdGggfHw9IDcwO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgdGFibGVDb2x1bW4udHlwZSB8fD0gVGFibGVDb2x1bW5UeXBlLlRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0YWJsZUNvbHVtbi5tYXhXaWR0aCkge1xyXG4gICAgICAgICAgICB0YWJsZUNvbHVtbi53aWR0aCB8fD0gdGFibGVDb2x1bW4ubWF4V2lkdGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBHZXQgb2xkIHRhYmxlIGNvbHVtbnMgKi9cclxuICAgICAgICBsZXQgcHJldmlvdXNUYWJsZUNvbHVtbnM6IFRhYmxlQ29sdW1uPFQ+W10gPSBSZWZsZWN0LmdldE1ldGFkYXRhKHRhYmxlQ29sdW1uc01ldGFkYXRhS2V5LCB0YXJnZXQpO1xyXG5cclxuICAgICAgICAvKiBPdmVycmlkZSB0aGUgZmllbGQsIGlmIGV4aXN0cyAqL1xyXG4gICAgICAgIHByZXZpb3VzVGFibGVDb2x1bW5zID0gcHJldmlvdXNUYWJsZUNvbHVtbnM/LmZpbHRlcih4ID0+IHgubmFtZSAhPSB0YWJsZUNvbHVtbi5uYW1lKTtcclxuXHJcbiAgICAgICAgLyogQ3JlYXRlIGEgY29weSBvZiB0aGUgcmVzdWx0ICovXHJcbiAgICAgICAgbGV0IHRhYmxlQ29sdW1ucyA9IHByZXZpb3VzVGFibGVDb2x1bW5zID8gcHJldmlvdXNUYWJsZUNvbHVtbnMuY29uY2F0KFt0YWJsZUNvbHVtbl0pIDogW3RhYmxlQ29sdW1uXTtcclxuXHJcbiAgICAgICAgLyogU2V0IGNvbHVtbiBpbmRleCAqL1xyXG4gICAgICAgIHRhYmxlQ29sdW1ucy5mb3JFYWNoKCh4LCBpKSA9PiB4LmluZGV4ID8/PSBpKTtcclxuXHJcbiAgICAgICAgLyogU29ydCB0aGUgY29sdW1ucyBieSBpbmRleCAqL1xyXG4gICAgICAgIFV0aWxzLnNvcnRBcnJheSh0YWJsZUNvbHVtbnMsICdpbmRleCcpO1xyXG5cclxuICAgICAgICAvKiBPdmVycmlkZSB0aGUgcmVzdWx0IGluIHRoZSBtZXRhZGF0YSAqL1xyXG4gICAgICAgIFJlZmxlY3QuZGVmaW5lTWV0YWRhdGEodGFibGVDb2x1bW5zTWV0YWRhdGFLZXksIHRhYmxlQ29sdW1ucywgdGFyZ2V0KTtcclxuICAgIH07XHJcbn0iXX0=
@@ -1174,10 +1174,6 @@ function Column(args) {
1174
1174
  else if (tableColumn.enumType) {
1175
1175
  tableColumn.type || (tableColumn.type = TableColumnType.Enum);
1176
1176
  }
1177
- /* Set type to 'Select' if endpoint is specified */
1178
- else if (tableColumn.endpoint || tableColumn.options) {
1179
- tableColumn.type || (tableColumn.type = TableColumnType.Select);
1180
- }
1181
1177
  /* Otherwiese, set type depending on property type */
1182
1178
  else {
1183
1179
  /* Get property type */
@@ -4837,7 +4833,7 @@ class FilterInputComponent {
4837
4833
  }
4838
4834
  ], viewQueries: [{ propertyName: "_filter", first: true, predicate: ["filterElement"], descendants: true, static: true }], ngImport: i0, template: `
4839
4835
  <mat-form-field flex>
4840
- <input matInput #filterElement ngControl="filterElement" type="input" [(ngModel)]="value" [placeholder]="placeholder" (search)="stopPropagation($event)"
4836
+ <input matInput #filterElement ngControl="filterElement" autocomplete="off" type="input" [(ngModel)]="value" [placeholder]="placeholder" (search)="stopPropagation($event)"
4841
4837
  (keyup.enter)="handleSearch($event)"/>
4842
4838
  <button type="button" mat-button matSuffix mat-icon-button aria-label="Clear" *ngIf="value" (click)="clearSearch()">
4843
4839
  <mat-icon>close</mat-icon>
@@ -4849,7 +4845,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
4849
4845
  selector: 'mat-header-cell[filter-input], [mat-header-cell][filter-input], [filter-input]',
4850
4846
  template: `
4851
4847
  <mat-form-field flex>
4852
- <input matInput #filterElement ngControl="filterElement" type="input" [(ngModel)]="value" [placeholder]="placeholder" (search)="stopPropagation($event)"
4848
+ <input matInput #filterElement ngControl="filterElement" autocomplete="off" type="input" [(ngModel)]="value" [placeholder]="placeholder" (search)="stopPropagation($event)"
4853
4849
  (keyup.enter)="handleSearch($event)"/>
4854
4850
  <button type="button" mat-button matSuffix mat-icon-button aria-label="Clear" *ngIf="value" (click)="clearSearch()">
4855
4851
  <mat-icon>close</mat-icon>
@@ -5909,6 +5905,24 @@ class VdDynamicTableComponent {
5909
5905
  }
5910
5906
  return expression;
5911
5907
  }
5908
+ /**
5909
+ * Gets row classes
5910
+ * @param column
5911
+ * @param row
5912
+ * @returns
5913
+ */
5914
+ getRowClasses(column, row) {
5915
+ return Object.assign({
5916
+ 'gt-xs': column.display == Grid.Xs,
5917
+ 'gt-sm': column.display == Grid.Sm,
5918
+ 'gt-md': column.display == Grid.Md,
5919
+ 'gt-lg': column.display == Grid.Lg,
5920
+ 'gt-xl': column.display == Grid.Xl,
5921
+ 'gt-xxl': column.display == Grid.Xxl,
5922
+ 'hidden': column.display == Grid.None,
5923
+ 'text-right': column.arrowBefore
5924
+ }, column.cellNgClass ? column.cellNgClass(row, this.context) : {});
5925
+ }
5912
5926
  /**
5913
5927
  * Responds to user-initiated events
5914
5928
  * @param event
@@ -5932,7 +5946,7 @@ class VdDynamicTableComponent {
5932
5946
  }
5933
5947
  }
5934
5948
  /** @nocollapse */ VdDynamicTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdDynamicTableComponent, deps: [{ token: DynamicBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
5935
- /** @nocollapse */ VdDynamicTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: VdDynamicTableComponent, selector: "vd-dynamic-table", inputs: { dataSource: "dataSource", data: "data", classType: "classType", context: "context", dataSourceFilter: "dataSourceFilter", static: "static", filterable: "filterable", paginable: "paginable", selectable: "selectable", sortActive: "sortActive", sortDirection: "sortDirection", stickyHeader: "stickyHeader", stickyFilter: "stickyFilter", rowNgClass: "rowNgClass", detailsTemplate: "detailsTemplate", readonly: "readonly", selectAllFilter: "selectAllFilter", columns: "columns", rowMenuItems: "rowMenuItems", excludedColumns: "excludedColumns", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions" }, outputs: { rowClick: "rowClick" }, host: { listeners: { "document:contextmenu": "handleContextMenuEvent($event)" } }, queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "detailsTemplateRef", predicate: ["detailsTemplate"], descendants: true, read: ViewContainerRef }, { propertyName: "rowContextMenuTriggers", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div class=\"loading-progress\" *ngIf=\"!static\">\r\n\t<mat-progress-bar mode=\"indeterminate\" *ngIf=\"dataSource?.isLoading\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- #region Data table -->\r\n<table mat-table #table [dataSource]=\"dataSource\" [dataSourceFilter]=\"dataSourceFilter\" [ngClass]=\"{'table-fixed': !detailsTemplate && !templateRef}\" [trackBy]=\"trackBy\" matSort matSortDisableClear [matSortActive]=\"sortActive||'id'\" [matSortDirection]=\"sortDirection\" multiTemplateDataRows>\r\n\t<ng-container *ngFor=\"let column of columns$ | async\">\r\n\t\t<!-- #region Column def -->\r\n\t\t<ng-container [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [hidden]=\"column.hidden\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.type == ColumnType.Checkbox || column.disabled\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None}\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">\r\n\t\t\t\t<mat-checkbox *ngIf=\"column.type == ColumnType.Checkbox\" (change)=\"$event ? dataSource.toggleSelect($event, selectAllFilter) : null\" [disabled]=\"!dataSource.paginator?.length\" [checked]=\"dataSource.selectionModel.hasValue() && dataSource.isAllSelected()\" [indeterminate]=\"dataSource.selectionModel.hasValue() && !dataSource.isAllSelected()\"></mat-checkbox>\r\n\t\t\t\t<span *ngIf=\"column.type != ColumnType.Checkbox\">{{column.header}}</span>\r\n\t\t\t</th>\r\n\r\n\t\t\t<!-- column.cellNgClass ? column.cellNgClass(row, context) : { 'text-right': column.arrowBefore } -->\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row; let rowIndex = index\" [matTooltip]=\"column.tooltip?column.tooltip(row, context):null\" [matTooltipClass]=\"column.tooltipClass\" [hidden]=\"column.hidden\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None }\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\">\r\n\t\t\t\t<ng-container [ngSwitch]=\"column.type\">\r\n\t\t\t\t\t<!-- #region Enum column -->\r\n\t\t\t\t\t<mat-checkbox *ngSwitchCase=\"ColumnType.Checkbox\" (click)=\"$event.stopPropagation()\" (change)=\"$event ? dataSource.selectionModel.toggle(row) : null\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" [checked]=\"dataSource.selectionModel.isSelected(row)\"></mat-checkbox>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enum column -->\r\n\t\t\t\t\t<span *ngSwitchCase=\"ColumnType.Enum\" i18n=\"@@selection\">{column.content(row) | enum:column.enumType:column.enumPrefix, select, type {type} other {{{column.content(row, context) | enum:column.enumType:column.enumPrefix}}}}</span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Toggle column -->\r\n\t\t\t\t\t<mat-slide-toggle *ngSwitchCase=\"ColumnType.Toggle\" [(ngModel)]=\"row[column.name]\" (click)=\"$event.stopPropagation();\" (ngModelChange)=\"column.event?(column.eventArgs?column.event(row,column.eventArgs):column.event(row, context)):null\" [disabled]=\"readonly || (column.disable && column.disable(row, context))\" color=\"primary\"></mat-slide-toggle>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Date column -->\r\n\t\t\t\t\t<span *ngSwitchCase=\"ColumnType.Date\">{{column.content(row, context) | date:column.shortDate?'dd.MM.yyyy':'dd.MM.yyyy HH:mm:ss'}}</span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text Input column -->\r\n\t\t\t\t\t<mat-form-field *ngSwitchCase=\"ColumnType.TextInput\" appearance=\"outline\" layout=\"column\" layout-align=\"center start\" (click)=\"$event.stopPropagation();\">\r\n\t\t\t\t\t\t<input type=\"{{column.inputType}}\" autocomplete=\"none\" matInput name=\"{{column.name}}{{rowIndex}}\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" [min]=\"column.inputMin?column.inputMin(row, context):null\" [max]=\"column.inputMax?column.inputMax(row, context):null\" (ngModelChange)=\"column.change?column.change(row, context):patch(row, [column.name], row[column.name], column.patchIncludes)\" [ngModelOptions]=\"{updateOn: 'blur'}\" (keydown.enter)=\"$event.target.blur();false\">\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text Input column -->\r\n\t\t\t\t\t<mat-form-field *ngSwitchCase=\"ColumnType.Select\" appearance=\"outline\" layout=\"column\" layout-align=\"center start\" (click)=\"$event.stopPropagation();\">\r\n\t\t\t\t\t\t<vd-select name=\"{{column.name}}{{rowIndex}}\" [enum]=\"column.enumType\" [options]=\"column.options\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" (selectionChange)=\"column.change?column.change(row, context):patch(row, [column.name], row[column.name], column.patchIncludes)\" (keydown.enter)=\"$event.target.blur();false\"></vd-select>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Action -->\r\n\t\t\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\">\r\n\t\t\t\t\t\t<div id=\"menu-{{row.id}}\" style=\"visibility: hidden; position: fixed;\" #contextMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu.matMenu\" *ngIf=\"menu?.matMenu && !row.locked && hasVisibleRowMenuItems(row, column)\"></div>\r\n\t\t\t\t\t\t<vd-dynamic-menu [items]=\"[column.menu]\" [data]=\"row\" [context]=\"context\" #menu></vd-dynamic-menu>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Menu -->\r\n\t\t\t\t\t<vd-dynamic-menu *ngSwitchCase=\"ColumnType.Menu\" [items]=\"[column.menu]\" [data]=\"row\" [context]=\"context\"></vd-dynamic-menu>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region icon button -->\r\n\t\t\t\t\t<a mat-icon-button *ngSwitchCase=\"ColumnType.IconButton\" (click)=\"$event.stopPropagation();column.iconButton?.event?column.iconButton.event(row, context):null\">\r\n\t\t\t\t\t\t<mat-icon fontSet=\"{{column.iconButton?.iconFontSet || 'material-icons-outlined'}}\" [class]=\"handleExpression(column.iconButton?.iconClass, row)\">{{handleExpression(column.iconButton?.icon, row) || 'radio_button_checked'}}</mat-icon>\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Other column types -->\r\n\t\t\t\t\t<span *ngSwitchDefault [innerHtml]=\"column.content ? column.content(row, context):''\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t</ng-container>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\t</ng-container>\r\n\r\n\t<!-- #region Filter row -->\r\n\t<ng-container *ngIf=\"dataSource && filterable\">\r\n\t\t<ng-container *ngFor=\"let column of columns$ | async\">\r\n\t\t\t<ng-container cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef [hidden]=\"column.hidden\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None}\">\r\n\t\t\t\t\t<!-- #region Text filter -->\r\n\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Text || column.type == ColumnType.TextInput || column.type == ColumnType.Number\" filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Select filter -->\r\n\t\t\t\t\t<span *ngIf=\"column.endpoint || column.enumType || column.options\" filter-select [endpoint]=\"column.endpoint\" [enum]=\"column.enumType\" [prefix]=\"column.enumPrefix\" [options]=\"column.options\" [text]=\"column.filterOptionText || 'name'\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Date filter -->\r\n\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Date\" filter-date></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Action filter (clear) -->\r\n\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Action\" filter-clear></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t</th>\r\n\t\t\t</ng-container>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Details column -->\r\n\t<ng-container cdkColumnDef=\"expandedDetail\">\r\n\t\t<td mat-cell *matCellDef=\"let row; let index = index\" [attr.colspan]=\"(displayedColumns$ | async).length\">\r\n\t\t\t<div class=\"row-detail\" [@detailExpand]=\"row == expandedRow ? 'expanded' : 'collapsed'\" #detailsTemplate>\r\n\t\t\t\t<ng-container *ngIf=\"templateRef && row === expandedRow\">\r\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"templateRef; context:{row: row, index: index, context: context}\"></ng-container>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</td>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Filter header -->\r\n\t<ng-container *ngIf=\"filterable\">\r\n\t\t<tr mat-header-row *cdkHeaderRowDef=\"displayedFilterColumns$ | async\"></tr>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<tr mat-header-row *cdkHeaderRowDef=\"displayedColumns$ | async; sticky: stickyFilter\"></tr>\r\n\t<tr mat-row *cdkRowDef=\"let row; columns: displayedColumns$ | async; let index = dataIndex\" [ngClass]=\"rowNgClass?rowNgClass(row, context):null\" [class.expanded-row]=\"expandedRow === row\" (click)=\"handleRowClick(index, row)\" (contextmenu)=\"handleRowRightClick($event, row)\"></tr>\r\n\r\n\t<!-- #region Detrails row -->\r\n\t<ng-container *ngIf=\"detailsTemplate || templateRef\">\r\n\t\t<tr mat-row *cdkRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\" [ngClass]=\"rowNgClass?rowNgClass(row, context):null\"></tr>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n</table>\r\n<!-- #endregion -->\r\n\r\n<!-- #region Row shown when there is no matching data.-->\r\n<div class=\"mat-cell pad table-empty txt-italic\" *ngIf=\"!dataSource?.filteredData?.length && !dataSource?.total\" i18n=\"@@noResultsFound\">No results were found.</div>\r\n<!-- #endregion -->\r\n\r\n<div class=\"table-footer\" layout=\"row\">\r\n\t<ng-content select=\"[table-footer]\"></ng-content>\r\n\t<span flex></span>\r\n\t<mat-paginator *ngIf=\"paginable\" [pageSize]=\"pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\"></mat-paginator>\r\n</div>", styles: ["::ng-deep .mat-table .mat-row .mat-cell .mat-form-field .mat-form-field-wrapper{width:100%}@media (max-width: 389px){::ng-deep .mat-table [gt-xs],::ng-deep .mat-table .gt-xs{display:none}::ng-deep .mat-table [gt-sm],::ng-deep .mat-table .gt-sm{display:none}::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 599px){::ng-deep .mat-table [gt-sm],::ng-deep .mat-table .gt-sm{display:none}::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 959px){::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1279px){::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1919px){::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1979px){::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: VdDynamicMenuComponent, selector: "vd-dynamic-menu", inputs: ["items", "data", "context"] }, { kind: "directive", type: OnlyNumberDirective, selector: "[onlyNumber]", inputs: ["onlyNumber"] }, { kind: "component", type: VdSelectComponent, selector: "vd-select", inputs: ["multiple", "disabled", "sorted", "textPrefix", "endpoint", "params", "projection", "enum", "key", "text", "prefix", "options", "filteredOptions", "filterable", "cache", "sortBy", "mapper", "compareWith", "searchField"], outputs: ["change", "itemChange", "selected", "itemSelected", "launch"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i1$4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i12.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i2$1.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "directive", type: i2$1.CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: i2$1.CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: i2$1.CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["sticky", "cdkColumnDef", "stickyEnd"] }, { kind: "directive", type: i2$1.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "component", type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i15$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i17.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i19.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FilterInputComponent, selector: "mat-header-cell[filter-input], [mat-header-cell][filter-input], [filter-input]", inputs: ["field", "operator", "onlyNumber", "debounce", "placeholder"] }, { kind: "component", type: FilterSelectComponent, selector: "mat-header-cell[filter-select], [mat-header-cell][filter-select], [filter-select]", inputs: ["endpoint", "params", "projection", "sortBy", "sorted", "enum", "key", "text", "prefix", "multiple", "options", "filteredOptions", "filterable", "field", "placeholder", "cache"] }, { kind: "component", type: FilterClearComponent, selector: "mat-header-cell[filter-clear], [mat-header-cell][filter-clear], [filter-clear]" }, { kind: "component", type: FilterDateComponent, selector: "mat-header-cell[filter-date], [mat-header-cell][filter-date], [filter-date]", inputs: ["field", "debounce", "placeholder"] }, { kind: "directive", type: DataSourceFilterDirective, selector: "[dataSourceFilter]", inputs: ["dataSource", "dataSourceFilter"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.DatePipe, name: "date" }, { kind: "pipe", type: EnumPipe, name: "enum" }], animations: [
5949
+ /** @nocollapse */ VdDynamicTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: VdDynamicTableComponent, selector: "vd-dynamic-table", inputs: { dataSource: "dataSource", data: "data", classType: "classType", context: "context", dataSourceFilter: "dataSourceFilter", static: "static", filterable: "filterable", paginable: "paginable", selectable: "selectable", sortActive: "sortActive", sortDirection: "sortDirection", stickyHeader: "stickyHeader", stickyFilter: "stickyFilter", rowNgClass: "rowNgClass", detailsTemplate: "detailsTemplate", readonly: "readonly", selectAllFilter: "selectAllFilter", columns: "columns", rowMenuItems: "rowMenuItems", excludedColumns: "excludedColumns", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions" }, outputs: { rowClick: "rowClick" }, host: { listeners: { "document:contextmenu": "handleContextMenuEvent($event)" } }, queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "table", first: true, predicate: ["table"], descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "detailsTemplateRef", predicate: ["detailsTemplate"], descendants: true, read: ViewContainerRef }, { propertyName: "rowContextMenuTriggers", predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<div class=\"loading-progress\" *ngIf=\"!static\">\r\n\t<mat-progress-bar mode=\"indeterminate\" *ngIf=\"dataSource?.isLoading\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- #region Data table -->\r\n<table mat-table #table [dataSource]=\"dataSource\" [dataSourceFilter]=\"dataSourceFilter\" [ngClass]=\"{'table-fixed': !detailsTemplate && !templateRef}\" [trackBy]=\"trackBy\" matSort matSortDisableClear [matSortActive]=\"sortActive||'id'\" [matSortDirection]=\"sortDirection\" multiTemplateDataRows>\r\n\t<ng-container *ngFor=\"let column of columns$ | async\">\r\n\t\t<!-- #region Column def -->\r\n\t\t<ng-container [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [hidden]=\"column.hidden\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.type == ColumnType.Checkbox || column.disabled\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None}\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">\r\n\t\t\t\t<mat-checkbox *ngIf=\"column.type == ColumnType.Checkbox\" (change)=\"$event ? dataSource.toggleSelect($event, selectAllFilter) : null\" [disabled]=\"!dataSource.paginator?.length\" [checked]=\"dataSource.selectionModel.hasValue() && dataSource.isAllSelected()\" [indeterminate]=\"dataSource.selectionModel.hasValue() && !dataSource.isAllSelected()\"></mat-checkbox>\r\n\t\t\t\t<span *ngIf=\"column.type != ColumnType.Checkbox\">{{column.header}}</span>\r\n\t\t\t</th>\r\n\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row; let rowIndex = index\" [matTooltip]=\"column.tooltip?column.tooltip(row, context):null\" [matTooltipClass]=\"column.tooltipClass\" [hidden]=\"column.hidden\" [ngClass]=\"getRowClasses(column, row)\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\">\r\n\t\t\t\t<ng-container [ngSwitch]=\"column.type\">\r\n\t\t\t\t\t<!-- #region Enum column -->\r\n\t\t\t\t\t<mat-checkbox *ngSwitchCase=\"ColumnType.Checkbox\" (click)=\"$event.stopPropagation()\" (change)=\"$event ? dataSource.selectionModel.toggle(row) : null\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" [checked]=\"dataSource.selectionModel.isSelected(row)\"></mat-checkbox>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enum column -->\r\n\t\t\t\t\t<span *ngSwitchCase=\"ColumnType.Enum\" i18n=\"@@selection\">{column.content(row) | enum:column.enumType:column.enumPrefix, select, type {type} other {{{column.content(row, context) | enum:column.enumType:column.enumPrefix}}}}</span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Toggle column -->\r\n\t\t\t\t\t<mat-slide-toggle *ngSwitchCase=\"ColumnType.Toggle\" [(ngModel)]=\"row[column.name]\" (click)=\"$event.stopPropagation();\" (ngModelChange)=\"column.event?(column.eventArgs?column.event(row,column.eventArgs):column.event(row, context)):null\" [disabled]=\"readonly || (column.disable && column.disable(row, context))\" color=\"primary\"></mat-slide-toggle>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Date column -->\r\n\t\t\t\t\t<span *ngSwitchCase=\"ColumnType.Date\">{{column.content(row, context) | date:column.shortDate?'dd.MM.yyyy':'dd.MM.yyyy HH:mm:ss'}}</span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text Input column -->\r\n\t\t\t\t\t<mat-form-field *ngSwitchCase=\"ColumnType.TextInput\" appearance=\"outline\" layout=\"column\" layout-align=\"center start\" (click)=\"$event.stopPropagation();\">\r\n\t\t\t\t\t\t<input type=\"{{column.inputType}}\" autocomplete=\"none\" matInput name=\"{{column.name}}{{rowIndex}}\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" [min]=\"column.inputMin?column.inputMin(row, context):null\" [max]=\"column.inputMax?column.inputMax(row, context):null\" (ngModelChange)=\"column.change?column.change(row, context):patch(row, [column.name], row[column.name], column.patchIncludes)\" [ngModelOptions]=\"{updateOn: 'blur'}\" (keydown.enter)=\"$event.target.blur();false\">\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text Input column -->\r\n\t\t\t\t\t<mat-form-field *ngSwitchCase=\"ColumnType.Select\" appearance=\"outline\" layout=\"column\" layout-align=\"center start\" (click)=\"$event.stopPropagation();\">\r\n\t\t\t\t\t\t<vd-select name=\"{{column.name}}{{rowIndex}}\" [enum]=\"column.enumType\" [options]=\"column.options\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" (selectionChange)=\"column.change?column.change(row, context):patch(row, [column.name], row[column.name], column.patchIncludes)\" (keydown.enter)=\"$event.target.blur();false\"></vd-select>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Action -->\r\n\t\t\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\">\r\n\t\t\t\t\t\t<div id=\"menu-{{row.id}}\" style=\"visibility: hidden; position: fixed;\" #contextMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu.matMenu\" *ngIf=\"menu?.matMenu && !row.locked && hasVisibleRowMenuItems(row, column)\"></div>\r\n\t\t\t\t\t\t<vd-dynamic-menu [items]=\"[column.menu]\" [data]=\"row\" [context]=\"context\" #menu></vd-dynamic-menu>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Menu -->\r\n\t\t\t\t\t<vd-dynamic-menu *ngSwitchCase=\"ColumnType.Menu\" [items]=\"[column.menu]\" [data]=\"row\" [context]=\"context\"></vd-dynamic-menu>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region icon button -->\r\n\t\t\t\t\t<a mat-icon-button *ngSwitchCase=\"ColumnType.IconButton\" (click)=\"$event.stopPropagation();column.iconButton?.event?column.iconButton.event(row, context):null\">\r\n\t\t\t\t\t\t<mat-icon fontSet=\"{{column.iconButton?.iconFontSet || 'material-icons-outlined'}}\" [class]=\"handleExpression(column.iconButton?.iconClass, row)\">{{handleExpression(column.iconButton?.icon, row) || 'radio_button_checked'}}</mat-icon>\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Other column types -->\r\n\t\t\t\t\t<span *ngSwitchDefault [innerHtml]=\"column.content ? column.content(row, context):''\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t</ng-container>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\t</ng-container>\r\n\r\n\t<!-- #region Filter row -->\r\n\t<ng-container *ngIf=\"dataSource && filterable\">\r\n\t\t<ng-container *ngFor=\"let column of columns$ | async\">\r\n\t\t\t<ng-container cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef [hidden]=\"column.hidden\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None}\">\r\n\t\t\t\t\t<!-- #region Select filter -->\r\n\t\t\t\t\t<span *ngIf=\"(column.endpoint || column.enumType || column.options) else notSelectFilter\" filter-select [endpoint]=\"column.endpoint\" [enum]=\"column.enumType\" [prefix]=\"column.enumPrefix\" [options]=\"column.options\" [text]=\"column.filterOptionText || 'name'\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text filter -->\r\n\t\t\t\t\t<ng-template #notSelectFilter>\r\n\t\t\t\t\t\t<span *ngIf=\"notSelectFilter && (column.type == ColumnType.Text || column.type == ColumnType.TextInput || column.type == ColumnType.Number) else notInputFilter\" filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\"></span>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Date filter -->\r\n\t\t\t\t\t<ng-template #notInputFilter>\r\n\t\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Date else notDateFilter\" filter-date></span>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Action filter (clear) -->\r\n\t\t\t\t\t<ng-template #notDateFilter>\r\n\t\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Action\" filter-clear></span>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t</th>\r\n\t\t\t</ng-container>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Details column -->\r\n\t<ng-container cdkColumnDef=\"expandedDetail\">\r\n\t\t<td mat-cell *matCellDef=\"let row; let index = index\" [attr.colspan]=\"(displayedColumns$ | async).length\">\r\n\t\t\t<div class=\"row-detail\" [@detailExpand]=\"row == expandedRow ? 'expanded' : 'collapsed'\" #detailsTemplate>\r\n\t\t\t\t<ng-container *ngIf=\"templateRef && row === expandedRow\">\r\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"templateRef; context:{row: row, index: index, context: context}\"></ng-container>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</td>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Filter header -->\r\n\t<ng-container *ngIf=\"filterable\">\r\n\t\t<tr mat-header-row *cdkHeaderRowDef=\"displayedFilterColumns$ | async\"></tr>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<tr mat-header-row *cdkHeaderRowDef=\"displayedColumns$ | async; sticky: stickyFilter\"></tr>\r\n\t<tr mat-row *cdkRowDef=\"let row; columns: displayedColumns$ | async; let index = dataIndex\" [ngClass]=\"rowNgClass?rowNgClass(row, context):null\" [class.expanded-row]=\"expandedRow === row\" (click)=\"handleRowClick(index, row)\" (contextmenu)=\"handleRowRightClick($event, row)\"></tr>\r\n\r\n\t<!-- #region Detrails row -->\r\n\t<ng-container *ngIf=\"detailsTemplate || templateRef\">\r\n\t\t<tr mat-row *cdkRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\" [ngClass]=\"rowNgClass?rowNgClass(row, context):null\"></tr>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n</table>\r\n<!-- #endregion -->\r\n\r\n<!-- #region Row shown when there is no matching data.-->\r\n<div class=\"mat-cell pad table-empty txt-italic\" *ngIf=\"!dataSource?.filteredData?.length && !dataSource?.total\" i18n=\"@@noResultsFound\">No results were found.</div>\r\n<!-- #endregion -->\r\n\r\n<div class=\"table-footer\" layout=\"row\">\r\n\t<ng-content select=\"[table-footer]\"></ng-content>\r\n\t<span flex></span>\r\n\t<mat-paginator *ngIf=\"paginable\" [pageSize]=\"pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\"></mat-paginator>\r\n</div>", styles: ["::ng-deep .mat-table .mat-row .mat-cell .mat-form-field .mat-form-field-wrapper{width:100%}@media (max-width: 389px){::ng-deep .mat-table [gt-xs],::ng-deep .mat-table .gt-xs{display:none}::ng-deep .mat-table [gt-sm],::ng-deep .mat-table .gt-sm{display:none}::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 599px){::ng-deep .mat-table [gt-sm],::ng-deep .mat-table .gt-sm{display:none}::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 959px){::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1279px){::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1919px){::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1979px){::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: VdDynamicMenuComponent, selector: "vd-dynamic-menu", inputs: ["items", "data", "context"] }, { kind: "directive", type: OnlyNumberDirective, selector: "[onlyNumber]", inputs: ["onlyNumber"] }, { kind: "component", type: VdSelectComponent, selector: "vd-select", inputs: ["multiple", "disabled", "sorted", "textPrefix", "endpoint", "params", "projection", "enum", "key", "text", "prefix", "options", "filteredOptions", "filterable", "cache", "sortBy", "mapper", "compareWith", "searchField"], outputs: ["change", "itemChange", "selected", "itemSelected", "launch"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i1$4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i12.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i2$1.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "directive", type: i2$1.CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: i2$1.CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: i2$1.CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["sticky", "cdkColumnDef", "stickyEnd"] }, { kind: "directive", type: i2$1.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "component", type: i14.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i15$1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i17.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i18.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i19.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FilterInputComponent, selector: "mat-header-cell[filter-input], [mat-header-cell][filter-input], [filter-input]", inputs: ["field", "operator", "onlyNumber", "debounce", "placeholder"] }, { kind: "component", type: FilterSelectComponent, selector: "mat-header-cell[filter-select], [mat-header-cell][filter-select], [filter-select]", inputs: ["endpoint", "params", "projection", "sortBy", "sorted", "enum", "key", "text", "prefix", "multiple", "options", "filteredOptions", "filterable", "field", "placeholder", "cache"] }, { kind: "component", type: FilterClearComponent, selector: "mat-header-cell[filter-clear], [mat-header-cell][filter-clear], [filter-clear]" }, { kind: "component", type: FilterDateComponent, selector: "mat-header-cell[filter-date], [mat-header-cell][filter-date], [filter-date]", inputs: ["field", "debounce", "placeholder"] }, { kind: "directive", type: DataSourceFilterDirective, selector: "[dataSourceFilter]", inputs: ["dataSource", "dataSourceFilter"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.DatePipe, name: "date" }, { kind: "pipe", type: EnumPipe, name: "enum" }], animations: [
5936
5950
  trigger('detailExpand', [
5937
5951
  state('collapsed', style({ height: '0px', minHeight: '0' })),
5938
5952
  state('expanded', style({ height: AUTO_STYLE })),
@@ -5947,7 +5961,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
5947
5961
  state('expanded', style({ height: AUTO_STYLE })),
5948
5962
  transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
5949
5963
  ]),
5950
- ], template: "<div class=\"loading-progress\" *ngIf=\"!static\">\r\n\t<mat-progress-bar mode=\"indeterminate\" *ngIf=\"dataSource?.isLoading\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- #region Data table -->\r\n<table mat-table #table [dataSource]=\"dataSource\" [dataSourceFilter]=\"dataSourceFilter\" [ngClass]=\"{'table-fixed': !detailsTemplate && !templateRef}\" [trackBy]=\"trackBy\" matSort matSortDisableClear [matSortActive]=\"sortActive||'id'\" [matSortDirection]=\"sortDirection\" multiTemplateDataRows>\r\n\t<ng-container *ngFor=\"let column of columns$ | async\">\r\n\t\t<!-- #region Column def -->\r\n\t\t<ng-container [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [hidden]=\"column.hidden\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.type == ColumnType.Checkbox || column.disabled\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None}\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">\r\n\t\t\t\t<mat-checkbox *ngIf=\"column.type == ColumnType.Checkbox\" (change)=\"$event ? dataSource.toggleSelect($event, selectAllFilter) : null\" [disabled]=\"!dataSource.paginator?.length\" [checked]=\"dataSource.selectionModel.hasValue() && dataSource.isAllSelected()\" [indeterminate]=\"dataSource.selectionModel.hasValue() && !dataSource.isAllSelected()\"></mat-checkbox>\r\n\t\t\t\t<span *ngIf=\"column.type != ColumnType.Checkbox\">{{column.header}}</span>\r\n\t\t\t</th>\r\n\r\n\t\t\t<!-- column.cellNgClass ? column.cellNgClass(row, context) : { 'text-right': column.arrowBefore } -->\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row; let rowIndex = index\" [matTooltip]=\"column.tooltip?column.tooltip(row, context):null\" [matTooltipClass]=\"column.tooltipClass\" [hidden]=\"column.hidden\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None }\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\">\r\n\t\t\t\t<ng-container [ngSwitch]=\"column.type\">\r\n\t\t\t\t\t<!-- #region Enum column -->\r\n\t\t\t\t\t<mat-checkbox *ngSwitchCase=\"ColumnType.Checkbox\" (click)=\"$event.stopPropagation()\" (change)=\"$event ? dataSource.selectionModel.toggle(row) : null\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" [checked]=\"dataSource.selectionModel.isSelected(row)\"></mat-checkbox>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enum column -->\r\n\t\t\t\t\t<span *ngSwitchCase=\"ColumnType.Enum\" i18n=\"@@selection\">{column.content(row) | enum:column.enumType:column.enumPrefix, select, type {type} other {{{column.content(row, context) | enum:column.enumType:column.enumPrefix}}}}</span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Toggle column -->\r\n\t\t\t\t\t<mat-slide-toggle *ngSwitchCase=\"ColumnType.Toggle\" [(ngModel)]=\"row[column.name]\" (click)=\"$event.stopPropagation();\" (ngModelChange)=\"column.event?(column.eventArgs?column.event(row,column.eventArgs):column.event(row, context)):null\" [disabled]=\"readonly || (column.disable && column.disable(row, context))\" color=\"primary\"></mat-slide-toggle>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Date column -->\r\n\t\t\t\t\t<span *ngSwitchCase=\"ColumnType.Date\">{{column.content(row, context) | date:column.shortDate?'dd.MM.yyyy':'dd.MM.yyyy HH:mm:ss'}}</span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text Input column -->\r\n\t\t\t\t\t<mat-form-field *ngSwitchCase=\"ColumnType.TextInput\" appearance=\"outline\" layout=\"column\" layout-align=\"center start\" (click)=\"$event.stopPropagation();\">\r\n\t\t\t\t\t\t<input type=\"{{column.inputType}}\" autocomplete=\"none\" matInput name=\"{{column.name}}{{rowIndex}}\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" [min]=\"column.inputMin?column.inputMin(row, context):null\" [max]=\"column.inputMax?column.inputMax(row, context):null\" (ngModelChange)=\"column.change?column.change(row, context):patch(row, [column.name], row[column.name], column.patchIncludes)\" [ngModelOptions]=\"{updateOn: 'blur'}\" (keydown.enter)=\"$event.target.blur();false\">\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text Input column -->\r\n\t\t\t\t\t<mat-form-field *ngSwitchCase=\"ColumnType.Select\" appearance=\"outline\" layout=\"column\" layout-align=\"center start\" (click)=\"$event.stopPropagation();\">\r\n\t\t\t\t\t\t<vd-select name=\"{{column.name}}{{rowIndex}}\" [enum]=\"column.enumType\" [options]=\"column.options\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" (selectionChange)=\"column.change?column.change(row, context):patch(row, [column.name], row[column.name], column.patchIncludes)\" (keydown.enter)=\"$event.target.blur();false\"></vd-select>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Action -->\r\n\t\t\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\">\r\n\t\t\t\t\t\t<div id=\"menu-{{row.id}}\" style=\"visibility: hidden; position: fixed;\" #contextMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu.matMenu\" *ngIf=\"menu?.matMenu && !row.locked && hasVisibleRowMenuItems(row, column)\"></div>\r\n\t\t\t\t\t\t<vd-dynamic-menu [items]=\"[column.menu]\" [data]=\"row\" [context]=\"context\" #menu></vd-dynamic-menu>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Menu -->\r\n\t\t\t\t\t<vd-dynamic-menu *ngSwitchCase=\"ColumnType.Menu\" [items]=\"[column.menu]\" [data]=\"row\" [context]=\"context\"></vd-dynamic-menu>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region icon button -->\r\n\t\t\t\t\t<a mat-icon-button *ngSwitchCase=\"ColumnType.IconButton\" (click)=\"$event.stopPropagation();column.iconButton?.event?column.iconButton.event(row, context):null\">\r\n\t\t\t\t\t\t<mat-icon fontSet=\"{{column.iconButton?.iconFontSet || 'material-icons-outlined'}}\" [class]=\"handleExpression(column.iconButton?.iconClass, row)\">{{handleExpression(column.iconButton?.icon, row) || 'radio_button_checked'}}</mat-icon>\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Other column types -->\r\n\t\t\t\t\t<span *ngSwitchDefault [innerHtml]=\"column.content ? column.content(row, context):''\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t</ng-container>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\t</ng-container>\r\n\r\n\t<!-- #region Filter row -->\r\n\t<ng-container *ngIf=\"dataSource && filterable\">\r\n\t\t<ng-container *ngFor=\"let column of columns$ | async\">\r\n\t\t\t<ng-container cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef [hidden]=\"column.hidden\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None}\">\r\n\t\t\t\t\t<!-- #region Text filter -->\r\n\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Text || column.type == ColumnType.TextInput || column.type == ColumnType.Number\" filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Select filter -->\r\n\t\t\t\t\t<span *ngIf=\"column.endpoint || column.enumType || column.options\" filter-select [endpoint]=\"column.endpoint\" [enum]=\"column.enumType\" [prefix]=\"column.enumPrefix\" [options]=\"column.options\" [text]=\"column.filterOptionText || 'name'\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Date filter -->\r\n\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Date\" filter-date></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Action filter (clear) -->\r\n\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Action\" filter-clear></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t</th>\r\n\t\t\t</ng-container>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Details column -->\r\n\t<ng-container cdkColumnDef=\"expandedDetail\">\r\n\t\t<td mat-cell *matCellDef=\"let row; let index = index\" [attr.colspan]=\"(displayedColumns$ | async).length\">\r\n\t\t\t<div class=\"row-detail\" [@detailExpand]=\"row == expandedRow ? 'expanded' : 'collapsed'\" #detailsTemplate>\r\n\t\t\t\t<ng-container *ngIf=\"templateRef && row === expandedRow\">\r\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"templateRef; context:{row: row, index: index, context: context}\"></ng-container>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</td>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Filter header -->\r\n\t<ng-container *ngIf=\"filterable\">\r\n\t\t<tr mat-header-row *cdkHeaderRowDef=\"displayedFilterColumns$ | async\"></tr>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<tr mat-header-row *cdkHeaderRowDef=\"displayedColumns$ | async; sticky: stickyFilter\"></tr>\r\n\t<tr mat-row *cdkRowDef=\"let row; columns: displayedColumns$ | async; let index = dataIndex\" [ngClass]=\"rowNgClass?rowNgClass(row, context):null\" [class.expanded-row]=\"expandedRow === row\" (click)=\"handleRowClick(index, row)\" (contextmenu)=\"handleRowRightClick($event, row)\"></tr>\r\n\r\n\t<!-- #region Detrails row -->\r\n\t<ng-container *ngIf=\"detailsTemplate || templateRef\">\r\n\t\t<tr mat-row *cdkRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\" [ngClass]=\"rowNgClass?rowNgClass(row, context):null\"></tr>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n</table>\r\n<!-- #endregion -->\r\n\r\n<!-- #region Row shown when there is no matching data.-->\r\n<div class=\"mat-cell pad table-empty txt-italic\" *ngIf=\"!dataSource?.filteredData?.length && !dataSource?.total\" i18n=\"@@noResultsFound\">No results were found.</div>\r\n<!-- #endregion -->\r\n\r\n<div class=\"table-footer\" layout=\"row\">\r\n\t<ng-content select=\"[table-footer]\"></ng-content>\r\n\t<span flex></span>\r\n\t<mat-paginator *ngIf=\"paginable\" [pageSize]=\"pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\"></mat-paginator>\r\n</div>", styles: ["::ng-deep .mat-table .mat-row .mat-cell .mat-form-field .mat-form-field-wrapper{width:100%}@media (max-width: 389px){::ng-deep .mat-table [gt-xs],::ng-deep .mat-table .gt-xs{display:none}::ng-deep .mat-table [gt-sm],::ng-deep .mat-table .gt-sm{display:none}::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 599px){::ng-deep .mat-table [gt-sm],::ng-deep .mat-table .gt-sm{display:none}::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 959px){::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1279px){::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1919px){::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1979px){::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}\n"] }]
5964
+ ], template: "<div class=\"loading-progress\" *ngIf=\"!static\">\r\n\t<mat-progress-bar mode=\"indeterminate\" *ngIf=\"dataSource?.isLoading\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- #region Data table -->\r\n<table mat-table #table [dataSource]=\"dataSource\" [dataSourceFilter]=\"dataSourceFilter\" [ngClass]=\"{'table-fixed': !detailsTemplate && !templateRef}\" [trackBy]=\"trackBy\" matSort matSortDisableClear [matSortActive]=\"sortActive||'id'\" [matSortDirection]=\"sortDirection\" multiTemplateDataRows>\r\n\t<ng-container *ngFor=\"let column of columns$ | async\">\r\n\t\t<!-- #region Column def -->\r\n\t\t<ng-container [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [hidden]=\"column.hidden\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.type == ColumnType.Checkbox || column.disabled\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None}\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">\r\n\t\t\t\t<mat-checkbox *ngIf=\"column.type == ColumnType.Checkbox\" (change)=\"$event ? dataSource.toggleSelect($event, selectAllFilter) : null\" [disabled]=\"!dataSource.paginator?.length\" [checked]=\"dataSource.selectionModel.hasValue() && dataSource.isAllSelected()\" [indeterminate]=\"dataSource.selectionModel.hasValue() && !dataSource.isAllSelected()\"></mat-checkbox>\r\n\t\t\t\t<span *ngIf=\"column.type != ColumnType.Checkbox\">{{column.header}}</span>\r\n\t\t\t</th>\r\n\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row; let rowIndex = index\" [matTooltip]=\"column.tooltip?column.tooltip(row, context):null\" [matTooltipClass]=\"column.tooltipClass\" [hidden]=\"column.hidden\" [ngClass]=\"getRowClasses(column, row)\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\">\r\n\t\t\t\t<ng-container [ngSwitch]=\"column.type\">\r\n\t\t\t\t\t<!-- #region Enum column -->\r\n\t\t\t\t\t<mat-checkbox *ngSwitchCase=\"ColumnType.Checkbox\" (click)=\"$event.stopPropagation()\" (change)=\"$event ? dataSource.selectionModel.toggle(row) : null\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" [checked]=\"dataSource.selectionModel.isSelected(row)\"></mat-checkbox>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Enum column -->\r\n\t\t\t\t\t<span *ngSwitchCase=\"ColumnType.Enum\" i18n=\"@@selection\">{column.content(row) | enum:column.enumType:column.enumPrefix, select, type {type} other {{{column.content(row, context) | enum:column.enumType:column.enumPrefix}}}}</span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Toggle column -->\r\n\t\t\t\t\t<mat-slide-toggle *ngSwitchCase=\"ColumnType.Toggle\" [(ngModel)]=\"row[column.name]\" (click)=\"$event.stopPropagation();\" (ngModelChange)=\"column.event?(column.eventArgs?column.event(row,column.eventArgs):column.event(row, context)):null\" [disabled]=\"readonly || (column.disable && column.disable(row, context))\" color=\"primary\"></mat-slide-toggle>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Date column -->\r\n\t\t\t\t\t<span *ngSwitchCase=\"ColumnType.Date\">{{column.content(row, context) | date:column.shortDate?'dd.MM.yyyy':'dd.MM.yyyy HH:mm:ss'}}</span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text Input column -->\r\n\t\t\t\t\t<mat-form-field *ngSwitchCase=\"ColumnType.TextInput\" appearance=\"outline\" layout=\"column\" layout-align=\"center start\" (click)=\"$event.stopPropagation();\">\r\n\t\t\t\t\t\t<input type=\"{{column.inputType}}\" autocomplete=\"none\" matInput name=\"{{column.name}}{{rowIndex}}\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" [min]=\"column.inputMin?column.inputMin(row, context):null\" [max]=\"column.inputMax?column.inputMax(row, context):null\" (ngModelChange)=\"column.change?column.change(row, context):patch(row, [column.name], row[column.name], column.patchIncludes)\" [ngModelOptions]=\"{updateOn: 'blur'}\" (keydown.enter)=\"$event.target.blur();false\">\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text Input column -->\r\n\t\t\t\t\t<mat-form-field *ngSwitchCase=\"ColumnType.Select\" appearance=\"outline\" layout=\"column\" layout-align=\"center start\" (click)=\"$event.stopPropagation();\">\r\n\t\t\t\t\t\t<vd-select name=\"{{column.name}}{{rowIndex}}\" [enum]=\"column.enumType\" [options]=\"column.options\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row, context)))\" (selectionChange)=\"column.change?column.change(row, context):patch(row, [column.name], row[column.name], column.patchIncludes)\" (keydown.enter)=\"$event.target.blur();false\"></vd-select>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Action -->\r\n\t\t\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\">\r\n\t\t\t\t\t\t<div id=\"menu-{{row.id}}\" style=\"visibility: hidden; position: fixed;\" #contextMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu.matMenu\" *ngIf=\"menu?.matMenu && !row.locked && hasVisibleRowMenuItems(row, column)\"></div>\r\n\t\t\t\t\t\t<vd-dynamic-menu [items]=\"[column.menu]\" [data]=\"row\" [context]=\"context\" #menu></vd-dynamic-menu>\r\n\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Menu -->\r\n\t\t\t\t\t<vd-dynamic-menu *ngSwitchCase=\"ColumnType.Menu\" [items]=\"[column.menu]\" [data]=\"row\" [context]=\"context\"></vd-dynamic-menu>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region icon button -->\r\n\t\t\t\t\t<a mat-icon-button *ngSwitchCase=\"ColumnType.IconButton\" (click)=\"$event.stopPropagation();column.iconButton?.event?column.iconButton.event(row, context):null\">\r\n\t\t\t\t\t\t<mat-icon fontSet=\"{{column.iconButton?.iconFontSet || 'material-icons-outlined'}}\" [class]=\"handleExpression(column.iconButton?.iconClass, row)\">{{handleExpression(column.iconButton?.icon, row) || 'radio_button_checked'}}</mat-icon>\r\n\t\t\t\t\t</a>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Other column types -->\r\n\t\t\t\t\t<span *ngSwitchDefault [innerHtml]=\"column.content ? column.content(row, context):''\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t</ng-container>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\t</ng-container>\r\n\r\n\t<!-- #region Filter row -->\r\n\t<ng-container *ngIf=\"dataSource && filterable\">\r\n\t\t<ng-container *ngFor=\"let column of columns$ | async\">\r\n\t\t\t<ng-container cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef [hidden]=\"column.hidden\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [ngClass]=\"{'gt-xs': column.display == Grid.Xs, 'gt-sm': column.display == Grid.Sm, 'gt-md': column.display == Grid.Md, 'gt-lg': column.display == Grid.Lg, 'gt-xl': column.display == Grid.Xl, 'gt-xxl': column.display == Grid.Xxl, 'hidden': column.display == Grid.None}\">\r\n\t\t\t\t\t<!-- #region Select filter -->\r\n\t\t\t\t\t<span *ngIf=\"(column.endpoint || column.enumType || column.options) else notSelectFilter\" filter-select [endpoint]=\"column.endpoint\" [enum]=\"column.enumType\" [prefix]=\"column.enumPrefix\" [options]=\"column.options\" [text]=\"column.filterOptionText || 'name'\"></span>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Text filter -->\r\n\t\t\t\t\t<ng-template #notSelectFilter>\r\n\t\t\t\t\t\t<span *ngIf=\"notSelectFilter && (column.type == ColumnType.Text || column.type == ColumnType.TextInput || column.type == ColumnType.Number) else notInputFilter\" filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\"></span>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Date filter -->\r\n\t\t\t\t\t<ng-template #notInputFilter>\r\n\t\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Date else notDateFilter\" filter-date></span>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t\t\t<!-- #region Action filter (clear) -->\r\n\t\t\t\t\t<ng-template #notDateFilter>\r\n\t\t\t\t\t\t<span *ngIf=\"column.type == ColumnType.Action\" filter-clear></span>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<!-- #endregion -->\r\n\t\t\t\t</th>\r\n\t\t\t</ng-container>\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Details column -->\r\n\t<ng-container cdkColumnDef=\"expandedDetail\">\r\n\t\t<td mat-cell *matCellDef=\"let row; let index = index\" [attr.colspan]=\"(displayedColumns$ | async).length\">\r\n\t\t\t<div class=\"row-detail\" [@detailExpand]=\"row == expandedRow ? 'expanded' : 'collapsed'\" #detailsTemplate>\r\n\t\t\t\t<ng-container *ngIf=\"templateRef && row === expandedRow\">\r\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"templateRef; context:{row: row, index: index, context: context}\"></ng-container>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</div>\r\n\t\t</td>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Filter header -->\r\n\t<ng-container *ngIf=\"filterable\">\r\n\t\t<tr mat-header-row *cdkHeaderRowDef=\"displayedFilterColumns$ | async\"></tr>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<tr mat-header-row *cdkHeaderRowDef=\"displayedColumns$ | async; sticky: stickyFilter\"></tr>\r\n\t<tr mat-row *cdkRowDef=\"let row; columns: displayedColumns$ | async; let index = dataIndex\" [ngClass]=\"rowNgClass?rowNgClass(row, context):null\" [class.expanded-row]=\"expandedRow === row\" (click)=\"handleRowClick(index, row)\" (contextmenu)=\"handleRowRightClick($event, row)\"></tr>\r\n\r\n\t<!-- #region Detrails row -->\r\n\t<ng-container *ngIf=\"detailsTemplate || templateRef\">\r\n\t\t<tr mat-row *cdkRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\" [ngClass]=\"rowNgClass?rowNgClass(row, context):null\"></tr>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n</table>\r\n<!-- #endregion -->\r\n\r\n<!-- #region Row shown when there is no matching data.-->\r\n<div class=\"mat-cell pad table-empty txt-italic\" *ngIf=\"!dataSource?.filteredData?.length && !dataSource?.total\" i18n=\"@@noResultsFound\">No results were found.</div>\r\n<!-- #endregion -->\r\n\r\n<div class=\"table-footer\" layout=\"row\">\r\n\t<ng-content select=\"[table-footer]\"></ng-content>\r\n\t<span flex></span>\r\n\t<mat-paginator *ngIf=\"paginable\" [pageSize]=\"pageSize\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\"></mat-paginator>\r\n</div>", styles: ["::ng-deep .mat-table .mat-row .mat-cell .mat-form-field .mat-form-field-wrapper{width:100%}@media (max-width: 389px){::ng-deep .mat-table [gt-xs],::ng-deep .mat-table .gt-xs{display:none}::ng-deep .mat-table [gt-sm],::ng-deep .mat-table .gt-sm{display:none}::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 599px){::ng-deep .mat-table [gt-sm],::ng-deep .mat-table .gt-sm{display:none}::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 959px){::ng-deep .mat-table [gt-md],::ng-deep .mat-table .gt-md{display:none}::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1279px){::ng-deep .mat-table [gt-lg],::ng-deep .mat-table .gt-lg{display:none}::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1919px){::ng-deep .mat-table [gt-xl],::ng-deep .mat-table .gt-xl{display:none}::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}@media (max-width: 1979px){::ng-deep .mat-table [gt-xxl],::ng-deep .mat-table .gt-xxl{display:none}}\n"] }]
5951
5965
  }], ctorParameters: function () { return [{ type: DynamicBuilder }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { table: [{
5952
5966
  type: ViewChild,
5953
5967
  args: ['table']