@clr/angular 13.16.0 → 13.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,4 +4,4 @@
4
4
  * The full license information can be found in LICENSE in the root directory of this project.
5
5
  */
6
6
  export {};
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXN0cmluZ3MuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMyBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBDbHJDb21tb25TdHJpbmdzIHtcbiAgLyoqXG4gICAqIE9wZW4gYnV0dG9uXG4gICAqL1xuICBvcGVuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDbG9zZSBidXR0b25cbiAgICovXG4gIGNsb3NlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTaG93IGJ1dHRvblxuICAgKi9cbiAgc2hvdzogc3RyaW5nO1xuICAvKipcbiAgICogSGlkZSBidXR0b25cbiAgICovXG4gIGhpZGU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlbGV0ZSBidXR0b25cbiAgICovXG4gIGRlbGV0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cGFuZGFibGUgY29tcG9uZW50czogZXhwYW5kIGNhcmV0XG4gICAqL1xuICBleHBhbmQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cGFuZGFibGUgY29tcG9uZW50czogY29sbGFwc2UgY2FyZXRcbiAgICovXG4gIGNvbGxhcHNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPdmVyZmxvdyBtZW51czogZWxsaXBzaXMgYnV0dG9uXG4gICAqL1xuICBtb3JlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZWxlY3RhYmxlIGNvbXBvbmVudHM6IGNoZWNrYm94IG9yIHJhZGlvXG4gICAqL1xuICBzZWxlY3Q6IHN0cmluZztcbiAgLyoqXG4gICAqIFNlbGVjdGFibGUgY29tcG9uZW50czogY2hlY2tib3ggdG8gc2VsZWN0IGFsbFxuICAgKi9cbiAgc2VsZWN0QWxsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZWxlY3RlZCBpdGVtKHMpOiBjb21ib2JveFxuICAgKi9cbiAgc2VsZWN0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogUGFnaW5hdGlvbjogcHJldmlvdXMgYnV0dG9uXG4gICAqL1xuICBwcmV2aW91czogc3RyaW5nO1xuICAvKipcbiAgICogUGFnaW5hdGlvbjogbmV4dCBidXR0b25cbiAgICovXG4gIG5leHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhZ2luYXRpb246IGdvIHRvIGN1cnJlbnRcbiAgICovXG4gIGN1cnJlbnQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEFsZXJ0IGxldmVsczogaW5mb1xuICAgKi9cbiAgaW5mbzogc3RyaW5nO1xuICAvKipcbiAgICogQWxlcnQgbGV2ZWxzOiBzdWNjZXNzXG4gICAqL1xuICBzdWNjZXNzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGVydCBsZXZlbHM6IHdhcm5pbmdcbiAgICovXG4gIHdhcm5pbmc6IHN0cmluZztcbiAgLyoqXG4gICAqIEFsZXJ0IGxldmVsczogZGFuZ2VyXG4gICAqL1xuICBkYW5nZXI6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkOiByb3cgYWN0aW9uc1xuICAgKi9cbiAgcm93QWN0aW9uczogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQ6IHBpY2sgY29sdW1uc1xuICAgKi9cbiAgcGlja0NvbHVtbnM6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkOiBzaG93IGNvbHVtbnNcbiAgICovXG4gIHNob3dDb2x1bW5zOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogc29ydCBvZiBjb2x1bW5zXG4gICAqL1xuICBzb3J0Q29sdW1uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogZmlyc3QgcGFnZVxuICAgKi9cbiAgZmlyc3RQYWdlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogbGFzdCBwYWdlXG4gICAqL1xuICBsYXN0UGFnZTogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQ6IG5leHQgcGFnZVxuICAgKi9cbiAgbmV4dFBhZ2U6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkOiBwcmV2aW91cyBwYWdlXG4gICAqL1xuICBwcmV2aW91c1BhZ2U6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkOiBwcmV2aW91cyBwYWdlXG4gICAqL1xuICBjdXJyZW50UGFnZTogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdpcmQ6IHRvdGFsIHBhZ2VzXG4gICAqL1xuICB0b3RhbFBhZ2VzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZCBzdHJpbmcgZmlsdGVyOiBmaWx0ZXIgaXRlbXNcbiAgICovXG4gIGZpbHRlckl0ZW1zOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZCBudW1lcmljIGZpbHRlcjogbWluXG4gICAqL1xuICBtaW5WYWx1ZTogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQgbnVtZXJpYyBmaWx0ZXI6IG1heFxuICAgKi9cbiAgbWF4VmFsdWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkIGZpbHRlciB0b2dnbGUgYnV0dG9uXG4gICAqL1xuICBkYXRhZ3JpZEZpbHRlckFyaWFMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkIGZpbHRlciBkaWFsb2dcbiAgICovXG4gIGRhdGFncmlkRmlsdGVyRGlhbG9nQXJpYUxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQgY29sdW1uIGhhbmRsZXIgc3RyaW5nXG4gICAqL1xuICBjb2x1bW5TZXBhcmF0b3JBcmlhTGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZCBjb2x1bW4gcmVzaXplIGhhbmRsZXIgc3RyaW5nXG4gICAqL1xuICBjb2x1bW5TZXBhcmF0b3JEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIE1vZGFsIHN0YXJ0IG9mIGNvbnRlbnRcbiAgICovXG4gIG1vZGFsQ29udGVudFN0YXJ0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNb2RhbCBlbmQgb2YgY29udGVudFxuICAgKi9cbiAgbW9kYWxDb250ZW50RW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGFncmlkIFNob3cgY29sdW1ucyBtZW51IGRlc2NyaXB0aW9uXG4gICAqL1xuICBzaG93Q29sdW1uc01lbnVEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQgU2hvdyBjb2x1bW5zIC8gQWxsIGNvbHVtbnMgc2VsZWN0ZWQgY29uZmlybWF0aW9uXG4gICAqL1xuICBhbGxDb2x1bW5zU2VsZWN0ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFNpZ25wb3N0IFRvZ2dsZSBCdXR0b25cbiAgICovXG4gIHNpZ25wb3N0VG9nZ2xlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTaWducG9zdCBDbG9zZSBCdXR0b25cbiAgICogKHVzZWQgaW5zaWRlIHNpZ25wb3N0IGNvbnRlbnQgY29tcG9uZW50cylcbiAgICovXG4gIHNpZ25wb3N0Q2xvc2U6IHN0cmluZztcbiAgLypcbiAgICogTG9hZGVycy9TcGlubmVyc1xuICAgKi9cbiAgbG9hZGluZzogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQ6IGRldGFpbCBwYW5lIHN0YXJ0IGNvbnRlbnQgZm9yIHNjcmVlbiByZWFkZXJcbiAgICovXG4gIGRldGFpbFBhbmVTdGFydDogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQ6IGRldGFpbCBwYW5lIGVuZCBjb250ZW50IGZvciBzY3JlZW4gcmVhZGVyXG4gICAqL1xuICBkZXRhaWxQYW5lRW5kOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogU2luZ2xlIHNlbGVjdGlvbiBoZWFkZXJcbiAgICovXG4gIHNpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogU2luZ2xlIGFjdGlvbmFibGUgaGVhZGVyXG4gICAqL1xuICBzaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGFncmlkOiBFeHBhbmRhYmxlIHJvd1xuICAgKi9cbiAgZGV0YWlsRXhwYW5kYWJsZUFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGVydDogQ2xvc2UgYWxlcnQgYnV0dG9uXG4gICAqL1xuICBhbGVydENsb3NlQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGVwaWNrZXIgVUkgbGFiZWxzXG4gICAqL1xuICBkYXRlcGlja2VyRGlhbG9nTGFiZWw6IHN0cmluZztcbiAgZGF0ZXBpY2tlclRvZ2dsZTogc3RyaW5nO1xuICBkYXRlcGlja2VyVG9nZ2xlQ2hvb3NlRGF0ZUxhYmVsOiBzdHJpbmc7XG4gIGRhdGVwaWNrZXJUb2dnbGVDaGFuZ2VEYXRlTGFiZWw6IHN0cmluZztcbiAgZGF0ZXBpY2tlclByZXZpb3VzTW9udGg6IHN0cmluZztcbiAgZGF0ZXBpY2tlckN1cnJlbnRNb250aDogc3RyaW5nO1xuICBkYXRlcGlja2VyTmV4dE1vbnRoOiBzdHJpbmc7XG4gIGRhdGVwaWNrZXJQcmV2aW91c0RlY2FkZTogc3RyaW5nO1xuICBkYXRlcGlja2VyTmV4dERlY2FkZTogc3RyaW5nO1xuICBkYXRlcGlja2VyQ3VycmVudERlY2FkZTogc3RyaW5nO1xuICBkYXRlcGlja2VyU2VsZWN0TW9udGhUZXh0OiBzdHJpbmc7XG4gIGRhdGVwaWNrZXJTZWxlY3RZZWFyVGV4dDogc3RyaW5nO1xuICBkYXRlcGlja2VyU2VsZWN0ZWRMYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogU3RhY2sgVmlldzogUmVjb3JkIGhhcyBjaGFuZ2VkXG4gICAqL1xuICBzdGFja1ZpZXdDaGFuZ2VkOiBzdHJpbmc7XG4gIC8vIFJlc3BvbnNpdmUgTmF2XG4gIHJlc3BvbnNpdmVOYXZUb2dnbGVPcGVuOiBzdHJpbmc7XG4gIHJlc3BvbnNpdmVOYXZUb2dnbGVDbG9zZTogc3RyaW5nO1xuICByZXNwb25zaXZlTmF2T3ZlcmZsb3dPcGVuOiBzdHJpbmc7XG4gIHJlc3BvbnNpdmVOYXZPdmVyZmxvd0Nsb3NlOiBzdHJpbmc7XG4gIC8vIFZlcnRpY2FsIE5hdlxuICB2ZXJ0aWNhbE5hdlRvZ2dsZTogc3RyaW5nO1xuICB2ZXJ0aWNhbE5hdkdyb3VwVG9nZ2xlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaW1lbGluZSBTdGVwc1xuICAgKi9cbiAgdGltZWxpbmVTdGVwTm90U3RhcnRlZDogc3RyaW5nO1xuICB0aW1lbGluZVN0ZXBDdXJyZW50OiBzdHJpbmc7XG4gIHRpbWVsaW5lU3RlcFN1Y2Nlc3M6IHN0cmluZztcbiAgdGltZWxpbmVTdGVwRXJyb3I6IHN0cmluZztcbiAgdGltZWxpbmVTdGVwUHJvY2Vzc2luZzogc3RyaW5nO1xuXG4gIC8vIERhdGFncmlkIEhlbHBlciB0ZXh0IGZvciBleHBhbmRhYmxlIHJvd3NcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNob3VsZCBiZSByZW1vdmVkIGluIHYxNFxuICAgKi9cbiAgZGF0ZWdyaWRFeHBhbmRhYmxlQmVnaW5uaW5nT2Y/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaG91bGQgYmUgcmVtb3ZlZCBpbiB2MTRcbiAgICovXG4gIGRhdGVncmlkRXhwYW5kYWJsZUVuZE9mPzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2hvdWxkIGJlIHJlbW92ZWQgaW4gdjE0XG4gICAqL1xuICBkYXRlZ3JpZEV4cGFuZGFibGVSb3dDb250ZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2hvdWxkIGJlIHJlbW92ZWQgaW4gdjE0XG4gICAqL1xuICBkYXRlZ3JpZEV4cGFuZGFibGVSb3dzSGVscGVyVGV4dD86IHN0cmluZztcbiAgZGF0YWdyaWRFeHBhbmRhYmxlQmVnaW5uaW5nT2Y/OiBzdHJpbmc7XG4gIGRhdGFncmlkRXhwYW5kYWJsZUVuZE9mPzogc3RyaW5nO1xuICBkYXRhZ3JpZEV4cGFuZGFibGVSb3dDb250ZW50Pzogc3RyaW5nO1xuICBkYXRhZ3JpZEV4cGFuZGFibGVSb3dzSGVscGVyVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQ29tYm9ib3ggU2VhcmNoaW5nIFRleHRcbiAgICovXG4gIGNvbWJvYm94U2VhcmNoaW5nOiBzdHJpbmc7XG4gIGNvbWJvYm94RGVsZXRlOiBzdHJpbmc7XG4gIGNvbWJvYm94U2VsZWN0aW9uOiBzdHJpbmc7XG4gIGNvbWJvYm94U2VsZWN0ZWQ6IHN0cmluZztcbiAgY29tYm9ib3hOb1Jlc3VsdHM6IHN0cmluZztcbiAgY29tYm9ib3hPcGVuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdpemFyZDogU2NyZWVuLXJlYWRlciB0ZXh0IGZvciBjb21wbGV0ZWQgc3RlcC5cbiAgICovXG4gIHdpemFyZFN0ZXBTdWNjZXNzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdpemFyZDogU2NyZWVuLXJlYWRlciB0ZXh0IGZvciBzdGVwIHdpdGggZXJyb3IuXG4gICAqL1xuICB3aXphcmRTdGVwRXJyb3I6IHN0cmluZztcblxuICAvKipcbiAgICogUGFzc3dvcmQgSW5wdXRcbiAgICogU2NyZWVuLXJlYWRlciB0ZXh0IGZvciB0aGUgaGlkZS9zaG93IHBhc3N3b3JkIGZpZWxkIGJ1dHRvbi5cbiAgICovXG4gIHBhc3N3b3JkSGlkZTogc3RyaW5nO1xuICBwYXNzd29yZFNob3c6IHN0cmluZztcblxuICAvKipcbiAgICogRGF0YWdyaWQgZm9vdGVyOyBzci1vbmx5IHRleHQgYWZ0ZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCByb3dzLlxuICAgKi9cbiAgc2VsZWN0ZWRSb3dzOiBzdHJpbmc7XG59XG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXN0cmluZ3MuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMyBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBDbHJDb21tb25TdHJpbmdzIHtcbiAgLyoqXG4gICAqIE9wZW4gYnV0dG9uXG4gICAqL1xuICBvcGVuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDbG9zZSBidXR0b25cbiAgICovXG4gIGNsb3NlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTaG93IGJ1dHRvblxuICAgKi9cbiAgc2hvdzogc3RyaW5nO1xuICAvKipcbiAgICogSGlkZSBidXR0b25cbiAgICovXG4gIGhpZGU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlbGV0ZSBidXR0b25cbiAgICovXG4gIGRlbGV0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cGFuZGFibGUgY29tcG9uZW50czogZXhwYW5kIGNhcmV0XG4gICAqL1xuICBleHBhbmQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEV4cGFuZGFibGUgY29tcG9uZW50czogY29sbGFwc2UgY2FyZXRcbiAgICovXG4gIGNvbGxhcHNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPdmVyZmxvdyBtZW51czogZWxsaXBzaXMgYnV0dG9uXG4gICAqL1xuICBtb3JlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZWxlY3RhYmxlIGNvbXBvbmVudHM6IGNoZWNrYm94IG9yIHJhZGlvXG4gICAqL1xuICBzZWxlY3Q6IHN0cmluZztcbiAgLyoqXG4gICAqIFNlbGVjdGFibGUgY29tcG9uZW50czogY2hlY2tib3ggdG8gc2VsZWN0IGFsbFxuICAgKi9cbiAgc2VsZWN0QWxsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZWxlY3RlZCBpdGVtKHMpOiBjb21ib2JveFxuICAgKi9cbiAgc2VsZWN0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogUGFnaW5hdGlvbjogcHJldmlvdXMgYnV0dG9uXG4gICAqL1xuICBwcmV2aW91czogc3RyaW5nO1xuICAvKipcbiAgICogUGFnaW5hdGlvbjogbmV4dCBidXR0b25cbiAgICovXG4gIG5leHQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFBhZ2luYXRpb246IGdvIHRvIGN1cnJlbnRcbiAgICovXG4gIGN1cnJlbnQ6IHN0cmluZztcbiAgLyoqXG4gICAqIEFsZXJ0IGxldmVsczogaW5mb1xuICAgKi9cbiAgaW5mbzogc3RyaW5nO1xuICAvKipcbiAgICogQWxlcnQgbGV2ZWxzOiBzdWNjZXNzXG4gICAqL1xuICBzdWNjZXNzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGVydCBsZXZlbHM6IHdhcm5pbmdcbiAgICovXG4gIHdhcm5pbmc6IHN0cmluZztcbiAgLyoqXG4gICAqIEFsZXJ0IGxldmVsczogZGFuZ2VyXG4gICAqL1xuICBkYW5nZXI6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkOiByb3cgYWN0aW9uc1xuICAgKi9cbiAgcm93QWN0aW9uczogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQ6IHBpY2sgY29sdW1uc1xuICAgKi9cbiAgcGlja0NvbHVtbnM6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkOiBzaG93IGNvbHVtbnNcbiAgICovXG4gIHNob3dDb2x1bW5zOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogc29ydCBvZiBjb2x1bW5zXG4gICAqL1xuICBzb3J0Q29sdW1uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogZmlyc3QgcGFnZVxuICAgKi9cbiAgZmlyc3RQYWdlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogbGFzdCBwYWdlXG4gICAqL1xuICBsYXN0UGFnZTogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQ6IG5leHQgcGFnZVxuICAgKi9cbiAgbmV4dFBhZ2U6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkOiBwcmV2aW91cyBwYWdlXG4gICAqL1xuICBwcmV2aW91c1BhZ2U6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkOiBwcmV2aW91cyBwYWdlXG4gICAqL1xuICBjdXJyZW50UGFnZTogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdpcmQ6IHRvdGFsIHBhZ2VzXG4gICAqL1xuICB0b3RhbFBhZ2VzOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZCBzdHJpbmcgZmlsdGVyOiBmaWx0ZXIgaXRlbXNcbiAgICovXG4gIGZpbHRlckl0ZW1zOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZCBudW1lcmljIGZpbHRlcjogbWluXG4gICAqL1xuICBtaW5WYWx1ZTogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQgbnVtZXJpYyBmaWx0ZXI6IG1heFxuICAgKi9cbiAgbWF4VmFsdWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkIGZpbHRlciB0b2dnbGUgYnV0dG9uXG4gICAqL1xuICBkYXRhZ3JpZEZpbHRlckFyaWFMYWJlbD86IHN0cmluZztcbiAgLyoqXG4gICAqIERhdGFncmlkIGZpbHRlciBkaWFsb2dcbiAgICovXG4gIGRhdGFncmlkRmlsdGVyRGlhbG9nQXJpYUxhYmVsPzogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQgY29sdW1uIGhhbmRsZXIgc3RyaW5nXG4gICAqL1xuICBjb2x1bW5TZXBhcmF0b3JBcmlhTGFiZWw/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZCBjb2x1bW4gcmVzaXplIGhhbmRsZXIgc3RyaW5nXG4gICAqL1xuICBjb2x1bW5TZXBhcmF0b3JEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIE1vZGFsIHN0YXJ0IG9mIGNvbnRlbnRcbiAgICovXG4gIG1vZGFsQ29udGVudFN0YXJ0OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNb2RhbCBlbmQgb2YgY29udGVudFxuICAgKi9cbiAgbW9kYWxDb250ZW50RW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGFncmlkIFNob3cgY29sdW1ucyBtZW51IGRlc2NyaXB0aW9uXG4gICAqL1xuICBzaG93Q29sdW1uc01lbnVEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQgU2hvdyBjb2x1bW5zIC8gQWxsIGNvbHVtbnMgc2VsZWN0ZWQgY29uZmlybWF0aW9uXG4gICAqL1xuICBhbGxDb2x1bW5zU2VsZWN0ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFNpZ25wb3N0IFRvZ2dsZSBCdXR0b25cbiAgICovXG4gIHNpZ25wb3N0VG9nZ2xlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTaWducG9zdCBDbG9zZSBCdXR0b25cbiAgICogKHVzZWQgaW5zaWRlIHNpZ25wb3N0IGNvbnRlbnQgY29tcG9uZW50cylcbiAgICovXG4gIHNpZ25wb3N0Q2xvc2U6IHN0cmluZztcbiAgLypcbiAgICogTG9hZGVycy9TcGlubmVyc1xuICAgKi9cbiAgbG9hZGluZzogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQ6IGRldGFpbCBwYW5lIHN0YXJ0IGNvbnRlbnQgZm9yIHNjcmVlbiByZWFkZXJcbiAgICovXG4gIGRldGFpbFBhbmVTdGFydDogc3RyaW5nO1xuICAvKipcbiAgICogRGF0YWdyaWQ6IGRldGFpbCBwYW5lIGVuZCBjb250ZW50IGZvciBzY3JlZW4gcmVhZGVyXG4gICAqL1xuICBkZXRhaWxQYW5lRW5kOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogU2luZ2xlIHNlbGVjdGlvbiBoZWFkZXJcbiAgICovXG4gIHNpbmdsZVNlbGVjdGlvbkFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEYXRhZ3JpZDogU2luZ2xlIGFjdGlvbmFibGUgaGVhZGVyXG4gICAqL1xuICBzaW5nbGVBY3Rpb25hYmxlQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGFncmlkOiBFeHBhbmRhYmxlIHJvd1xuICAgKi9cbiAgZGV0YWlsRXhwYW5kYWJsZUFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbGVydDogQ2xvc2UgYWxlcnQgYnV0dG9uXG4gICAqL1xuICBhbGVydENsb3NlQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsZXJ0OiBOZXh0IEFsZXJ0IGJ1dHRvblxuICAgKi9cbiAgYWxlcnROZXh0QWxlcnRBcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQWxlcnQ6IFByZXZpb3VzIEFsZXJ0IGJ1dHRvblxuICAgKi9cbiAgYWxlcnRQcmV2aW91c0FsZXJ0QXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERhdGVwaWNrZXIgVUkgbGFiZWxzXG4gICAqL1xuICBkYXRlcGlja2VyRGlhbG9nTGFiZWw6IHN0cmluZztcbiAgZGF0ZXBpY2tlclRvZ2dsZTogc3RyaW5nO1xuICBkYXRlcGlja2VyVG9nZ2xlQ2hvb3NlRGF0ZUxhYmVsOiBzdHJpbmc7XG4gIGRhdGVwaWNrZXJUb2dnbGVDaGFuZ2VEYXRlTGFiZWw6IHN0cmluZztcbiAgZGF0ZXBpY2tlclByZXZpb3VzTW9udGg6IHN0cmluZztcbiAgZGF0ZXBpY2tlckN1cnJlbnRNb250aDogc3RyaW5nO1xuICBkYXRlcGlja2VyTmV4dE1vbnRoOiBzdHJpbmc7XG4gIGRhdGVwaWNrZXJQcmV2aW91c0RlY2FkZTogc3RyaW5nO1xuICBkYXRlcGlja2VyTmV4dERlY2FkZTogc3RyaW5nO1xuICBkYXRlcGlja2VyQ3VycmVudERlY2FkZTogc3RyaW5nO1xuICBkYXRlcGlja2VyU2VsZWN0TW9udGhUZXh0OiBzdHJpbmc7XG4gIGRhdGVwaWNrZXJTZWxlY3RZZWFyVGV4dDogc3RyaW5nO1xuICBkYXRlcGlja2VyU2VsZWN0ZWRMYWJlbDogc3RyaW5nO1xuICAvKipcbiAgICogU3RhY2sgVmlldzogUmVjb3JkIGhhcyBjaGFuZ2VkXG4gICAqL1xuICBzdGFja1ZpZXdDaGFuZ2VkOiBzdHJpbmc7XG4gIC8vIFJlc3BvbnNpdmUgTmF2XG4gIHJlc3BvbnNpdmVOYXZUb2dnbGVPcGVuOiBzdHJpbmc7XG4gIHJlc3BvbnNpdmVOYXZUb2dnbGVDbG9zZTogc3RyaW5nO1xuICByZXNwb25zaXZlTmF2T3ZlcmZsb3dPcGVuOiBzdHJpbmc7XG4gIHJlc3BvbnNpdmVOYXZPdmVyZmxvd0Nsb3NlOiBzdHJpbmc7XG4gIC8vIFZlcnRpY2FsIE5hdlxuICB2ZXJ0aWNhbE5hdlRvZ2dsZTogc3RyaW5nO1xuICB2ZXJ0aWNhbE5hdkdyb3VwVG9nZ2xlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaW1lbGluZSBTdGVwc1xuICAgKi9cbiAgdGltZWxpbmVTdGVwTm90U3RhcnRlZDogc3RyaW5nO1xuICB0aW1lbGluZVN0ZXBDdXJyZW50OiBzdHJpbmc7XG4gIHRpbWVsaW5lU3RlcFN1Y2Nlc3M6IHN0cmluZztcbiAgdGltZWxpbmVTdGVwRXJyb3I6IHN0cmluZztcbiAgdGltZWxpbmVTdGVwUHJvY2Vzc2luZzogc3RyaW5nO1xuXG4gIC8vIERhdGFncmlkIEhlbHBlciB0ZXh0IGZvciBleHBhbmRhYmxlIHJvd3NcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFNob3VsZCBiZSByZW1vdmVkIGluIHYxNFxuICAgKi9cbiAgZGF0ZWdyaWRFeHBhbmRhYmxlQmVnaW5uaW5nT2Y/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTaG91bGQgYmUgcmVtb3ZlZCBpbiB2MTRcbiAgICovXG4gIGRhdGVncmlkRXhwYW5kYWJsZUVuZE9mPzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2hvdWxkIGJlIHJlbW92ZWQgaW4gdjE0XG4gICAqL1xuICBkYXRlZ3JpZEV4cGFuZGFibGVSb3dDb250ZW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgU2hvdWxkIGJlIHJlbW92ZWQgaW4gdjE0XG4gICAqL1xuICBkYXRlZ3JpZEV4cGFuZGFibGVSb3dzSGVscGVyVGV4dD86IHN0cmluZztcbiAgZGF0YWdyaWRFeHBhbmRhYmxlQmVnaW5uaW5nT2Y/OiBzdHJpbmc7XG4gIGRhdGFncmlkRXhwYW5kYWJsZUVuZE9mPzogc3RyaW5nO1xuICBkYXRhZ3JpZEV4cGFuZGFibGVSb3dDb250ZW50Pzogc3RyaW5nO1xuICBkYXRhZ3JpZEV4cGFuZGFibGVSb3dzSGVscGVyVGV4dD86IHN0cmluZztcblxuICAvKipcbiAgICogQ29tYm9ib3ggU2VhcmNoaW5nIFRleHRcbiAgICovXG4gIGNvbWJvYm94U2VhcmNoaW5nOiBzdHJpbmc7XG4gIGNvbWJvYm94RGVsZXRlOiBzdHJpbmc7XG4gIGNvbWJvYm94U2VsZWN0aW9uOiBzdHJpbmc7XG4gIGNvbWJvYm94U2VsZWN0ZWQ6IHN0cmluZztcbiAgY29tYm9ib3hOb1Jlc3VsdHM6IHN0cmluZztcbiAgY29tYm9ib3hPcGVuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdpemFyZDogU2NyZWVuLXJlYWRlciB0ZXh0IGZvciBjb21wbGV0ZWQgc3RlcC5cbiAgICovXG4gIHdpemFyZFN0ZXBTdWNjZXNzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdpemFyZDogU2NyZWVuLXJlYWRlciB0ZXh0IGZvciBzdGVwIHdpdGggZXJyb3IuXG4gICAqL1xuICB3aXphcmRTdGVwRXJyb3I6IHN0cmluZztcblxuICAvKipcbiAgICogUGFzc3dvcmQgSW5wdXRcbiAgICogU2NyZWVuLXJlYWRlciB0ZXh0IGZvciB0aGUgaGlkZS9zaG93IHBhc3N3b3JkIGZpZWxkIGJ1dHRvbi5cbiAgICovXG4gIHBhc3N3b3JkSGlkZTogc3RyaW5nO1xuICBwYXNzd29yZFNob3c6IHN0cmluZztcblxuICAvKipcbiAgICogRGF0YWdyaWQgZm9vdGVyOyBzci1vbmx5IHRleHQgYWZ0ZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCByb3dzLlxuICAgKi9cbiAgc2VsZWN0ZWRSb3dzOiBzdHJpbmc7XG59XG4iXX0=
@@ -312,6 +312,8 @@ const commonStringsDefault = {
312
312
  columnSeparatorDescription: 'Use left or right key to resize the column',
313
313
  // Alert
314
314
  alertCloseButtonAriaLabel: 'Close alert',
315
+ alertNextAlertAriaLabel: 'Next alert message, {CURRENT} of {COUNT}',
316
+ alertPreviousAlertAriaLabel: 'Previous alert message, {CURRENT} of {COUNT}',
315
317
  // Date Picker
316
318
  datepickerDialogLabel: 'Choose date',
317
319
  datepickerToggle: 'Toggle datepicker',
@@ -2843,10 +2845,10 @@ class ClrExpandableAnimation {
2843
2845
  }
2844
2846
  }
2845
2847
  ClrExpandableAnimation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrExpandableAnimation, deps: [{ token: i0.ElementRef }, { token: DomAdapter }], target: i0.ɵɵFactoryTarget.Component });
2846
- ClrExpandableAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: { clrExpandTrigger: "clrExpandTrigger" }, host: { listeners: { "@expandAnimation.done": "animationDone()" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [
2848
+ ClrExpandableAnimation.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: { clrExpandTrigger: "clrExpandTrigger" }, host: { listeners: { "@expandAnimation.done": "animationDone()" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block;overflow:hidden}\n"], animations: [
2847
2849
  trigger('expandAnimation', [
2848
2850
  transition('true <=> false', [
2849
- style({ height: '{{startHeight}}px', overflow: 'hidden' }),
2851
+ style({ height: '{{startHeight}}px' }),
2850
2852
  animate('0.2s ease-in-out', style({ height: '*' })),
2851
2853
  ]),
2852
2854
  ]),
@@ -2860,13 +2862,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
2860
2862
  `
2861
2863
  :host {
2862
2864
  display: block;
2865
+ overflow: hidden;
2863
2866
  }
2864
2867
  `,
2865
2868
  ],
2866
2869
  animations: [
2867
2870
  trigger('expandAnimation', [
2868
2871
  transition('true <=> false', [
2869
- style({ height: '{{startHeight}}px', overflow: 'hidden' }),
2872
+ style({ height: '{{startHeight}}px' }),
2870
2873
  animate('0.2s ease-in-out', style({ height: '*' })),
2871
2874
  ]),
2872
2875
  ]),
@@ -15772,6 +15775,17 @@ class ClrDatagridRow {
15772
15775
  this.selectedChanged.emit(selected);
15773
15776
  }
15774
15777
  }
15778
+ /**
15779
+ * @deprecated related to clrDgRowSelection, which is deprecated
15780
+ */
15781
+ selectRow(selected = !this.selected) {
15782
+ if (this.selection.selectionType === this.SELECTION_TYPE.Single) {
15783
+ this.selection.currentSingle = this.item;
15784
+ }
15785
+ else {
15786
+ this.toggle(selected);
15787
+ }
15788
+ }
15775
15789
  get expanded() {
15776
15790
  return this.expand.expanded;
15777
15791
  }
@@ -15882,7 +15896,7 @@ ClrDatagridRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version
15882
15896
  DatagridIfExpandService,
15883
15897
  { provide: IfExpandService, useExisting: DatagridIfExpandService },
15884
15898
  { provide: LoadingListener, useExisting: DatagridIfExpandService },
15885
- ], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<label class=\"datagrid-row-clickable clr-col-null\" *ngIf=\"selection.rowSelectionMode\" (mousedown)=\"clearRanges($event)\">\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</label>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n", components: [{ type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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]" }, { type: ClrRadio, selector: "[clrRadio]" }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
15899
+ ], queries: [{ propertyName: "dgCells", predicate: ClrDatagridCell }], viewQueries: [{ propertyName: "expandAnimation", first: true, predicate: ClrExpandableAnimation, descendants: true }, { propertyName: "detailButton", first: true, predicate: ["detailButton"], descendants: true }, { propertyName: "_stickyCells", first: true, predicate: ["stickyCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_scrollableCells", first: true, predicate: ["scrollableCells"], descendants: true, read: ViewContainerRef }, { propertyName: "_calculatedCells", first: true, predicate: ["calculatedCells"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n", components: [{ type: ClrExpandableAnimation, selector: "clr-expandable-animation", inputs: ["clrExpandTrigger"] }, { type: ClrSpinner, selector: "clr-spinner", inputs: ["clrInline", "clrInverse", "clrSmall", "clrMedium"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: ClrDatagridSelectionCellDirective, selector: ".datagrid-select" }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: ClrLabel, selector: "label", inputs: ["for"] }, { type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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]" }, { type: ClrRadio, selector: "[clrRadio]" }, { type: CdsIconCustomTag, selector: "cds-icon" }] });
15886
15900
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrDatagridRow, decorators: [{
15887
15901
  type: Component,
15888
15902
  args: [{ selector: 'clr-dg-row', host: {
@@ -15894,7 +15908,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
15894
15908
  DatagridIfExpandService,
15895
15909
  { provide: IfExpandService, useExisting: DatagridIfExpandService },
15896
15910
  { provide: LoadingListener, useExisting: DatagridIfExpandService },
15897
- ], template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<label class=\"datagrid-row-clickable clr-col-null\" *ngIf=\"selection.rowSelectionMode\" (mousedown)=\"clearRanges($event)\">\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</label>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n" }]
15911
+ ], template: "<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <input\n type=\"checkbox\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <!-- TODO: it would be better if in addition to the generic \"Select\" label, we could add aria-labelledby\n to label the radio by the first cell in the row (typically an id or name).\n It's pretty easy to label it with the whole row since we already have an id for it, but in most\n cases the row is far too long to serve as a label, the screenreader reads every single cell content. -->\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-label]=\"clrDgRowAriaLabel\"\n />\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div *ngIf=\"detailService.enabled\" class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\">\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n" }]
15898
15912
  }], ctorParameters: function () {
15899
15913
  return [{ type: Selection }, { type: RowActionService }, { type: ExpandableRowsCount }, { type: DatagridIfExpandService }, { type: DetailService }, { type: DisplayModeService }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: ClrCommonStringsService }, { type: Items }, { type: undefined, decorators: [{
15900
15914
  type: Inject,
@@ -21685,6 +21699,20 @@ class ClrAlertsPager {
21685
21699
  get currentAlertIndex() {
21686
21700
  return this.multiAlertService.current;
21687
21701
  }
21702
+ get previousAlertAriaLabel() {
21703
+ const CURRENT = this.currentAlertIndex + 1;
21704
+ return this.commonStrings.parse(this.commonStrings.keys.alertPreviousAlertAriaLabel, {
21705
+ CURRENT: (CURRENT === 1 ? this.multiAlertService.count : CURRENT - 1).toString(),
21706
+ COUNT: this.multiAlertService.count.toString(),
21707
+ });
21708
+ }
21709
+ get nextAlertAriaLabel() {
21710
+ const CURRENT = this.currentAlertIndex + 1;
21711
+ return this.commonStrings.parse(this.commonStrings.keys.alertNextAlertAriaLabel, {
21712
+ CURRENT: (CURRENT === this.multiAlertService.count ? 1 : CURRENT + 1).toString(),
21713
+ COUNT: this.multiAlertService.count.toString(),
21714
+ });
21715
+ }
21688
21716
  ngOnInit() {
21689
21717
  this.multiAlertServiceChanges = this.multiAlertService.changes.subscribe(index => {
21690
21718
  this.currentAlertIndexChange.emit(index);
@@ -21702,10 +21730,10 @@ class ClrAlertsPager {
21702
21730
  }
21703
21731
  }
21704
21732
  ClrAlertsPager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrAlertsPager, deps: [{ token: MultiAlertService }, { token: ClrCommonStringsService }], target: i0.ɵɵFactoryTarget.Component });
21705
- ClrAlertsPager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrAlertsPager, selector: "clr-alerts-pager", inputs: { currentAlert: ["clrCurrentAlert", "currentAlert"], currentAlertIndex: ["clrCurrentAlertIndex", "currentAlertIndex"] }, outputs: { currentAlertChange: "clrCurrentAlertChange", currentAlertIndexChange: "clrCurrentAlertIndexChange" }, host: { properties: { "class.alerts-pager": "true" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div class=\"alerts-pager-control\">\n <div class=\"alerts-page-down\">\n <button class=\"alerts-pager-button\" (click)=\"pageDown()\">\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.previous\"></cds-icon>\n </button>\n </div>\n <div class=\"alerts-pager-text\">{{this.multiAlertService.current+1}} / {{this.multiAlertService.count}}</div>\n <div class=\"alerts-page-up\">\n <button class=\"alerts-pager-button\" (click)=\"pageUp()\">\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.next\"></cds-icon>\n </button>\n </div>\n</div>\n", directives: [{ type: CdsIconCustomTag, selector: "cds-icon" }] });
21733
+ ClrAlertsPager.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ClrAlertsPager, selector: "clr-alerts-pager", inputs: { currentAlert: ["clrCurrentAlert", "currentAlert"], currentAlertIndex: ["clrCurrentAlertIndex", "currentAlertIndex"] }, outputs: { currentAlertChange: "clrCurrentAlertChange", currentAlertIndexChange: "clrCurrentAlertIndexChange" }, host: { properties: { "class.alerts-pager": "true" } }, ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div class=\"alerts-pager-control\">\n <div class=\"alerts-page-down\">\n <button class=\"alerts-pager-button\" type=\"button\" (click)=\"pageDown()\" [attr.aria-label]=\"previousAlertAriaLabel\">\n <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n </button>\n </div>\n <div class=\"alerts-pager-text\">{{this.multiAlertService.current+1}} / {{this.multiAlertService.count}}</div>\n <div class=\"alerts-page-up\">\n <button class=\"alerts-pager-button\" type=\"button\" (click)=\"pageUp()\" [attr.aria-label]=\"nextAlertAriaLabel\">\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n </div>\n</div>\n", directives: [{ type: CdsIconCustomTag, selector: "cds-icon" }] });
21706
21734
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ClrAlertsPager, decorators: [{
21707
21735
  type: Component,
21708
- args: [{ selector: 'clr-alerts-pager', host: { '[class.alerts-pager]': 'true' }, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div class=\"alerts-pager-control\">\n <div class=\"alerts-page-down\">\n <button class=\"alerts-pager-button\" (click)=\"pageDown()\">\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.previous\"></cds-icon>\n </button>\n </div>\n <div class=\"alerts-pager-text\">{{this.multiAlertService.current+1}} / {{this.multiAlertService.count}}</div>\n <div class=\"alerts-page-up\">\n <button class=\"alerts-pager-button\" (click)=\"pageUp()\">\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.next\"></cds-icon>\n </button>\n </div>\n</div>\n" }]
21736
+ args: [{ selector: 'clr-alerts-pager', host: { '[class.alerts-pager]': 'true' }, template: "<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div class=\"alerts-pager-control\">\n <div class=\"alerts-page-down\">\n <button class=\"alerts-pager-button\" type=\"button\" (click)=\"pageDown()\" [attr.aria-label]=\"previousAlertAriaLabel\">\n <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n </button>\n </div>\n <div class=\"alerts-pager-text\">{{this.multiAlertService.current+1}} / {{this.multiAlertService.count}}</div>\n <div class=\"alerts-page-up\">\n <button class=\"alerts-pager-button\" type=\"button\" (click)=\"pageUp()\" [attr.aria-label]=\"nextAlertAriaLabel\">\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n </div>\n</div>\n" }]
21709
21737
  }], ctorParameters: function () { return [{ type: MultiAlertService }, { type: ClrCommonStringsService }]; }, propDecorators: { currentAlert: [{
21710
21738
  type: Input,
21711
21739
  args: ['clrCurrentAlert']