@rossigee/clarity-angular 18.2.1-fixed → 18.2.1

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.
Files changed (182) hide show
  1. package/fesm2022/clr-angular-accordion.mjs +355 -0
  2. package/fesm2022/clr-angular-accordion.mjs.map +1 -0
  3. package/fesm2022/clr-angular-button.mjs +713 -0
  4. package/fesm2022/clr-angular-button.mjs.map +1 -0
  5. package/fesm2022/clr-angular-collapsible-panel.mjs +201 -0
  6. package/fesm2022/clr-angular-collapsible-panel.mjs.map +1 -0
  7. package/fesm2022/clr-angular-data-datagrid.mjs +7635 -0
  8. package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -0
  9. package/fesm2022/clr-angular-data-stack-view.mjs +442 -0
  10. package/fesm2022/clr-angular-data-stack-view.mjs.map +1 -0
  11. package/fesm2022/clr-angular-data-tree-view.mjs +1106 -0
  12. package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -0
  13. package/fesm2022/clr-angular-data.mjs +40 -0
  14. package/fesm2022/clr-angular-data.mjs.map +1 -0
  15. package/fesm2022/clr-angular-emphasis-alert.mjs +624 -0
  16. package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -0
  17. package/fesm2022/clr-angular-emphasis-badge.mjs +69 -0
  18. package/fesm2022/clr-angular-emphasis-badge.mjs.map +1 -0
  19. package/fesm2022/clr-angular-emphasis-common.mjs +25 -0
  20. package/fesm2022/clr-angular-emphasis-common.mjs.map +1 -0
  21. package/fesm2022/clr-angular-emphasis-label.mjs +105 -0
  22. package/fesm2022/clr-angular-emphasis-label.mjs.map +1 -0
  23. package/fesm2022/clr-angular-emphasis.mjs +41 -0
  24. package/fesm2022/clr-angular-emphasis.mjs.map +1 -0
  25. package/fesm2022/clr-angular-forms-checkbox.mjs +270 -0
  26. package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -0
  27. package/fesm2022/clr-angular-forms-combobox.mjs +1775 -0
  28. package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -0
  29. package/fesm2022/clr-angular-forms-common.mjs +1251 -0
  30. package/fesm2022/clr-angular-forms-common.mjs.map +1 -0
  31. package/fesm2022/clr-angular-forms-datalist.mjs +263 -0
  32. package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -0
  33. package/fesm2022/clr-angular-forms-datepicker.mjs +3274 -0
  34. package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -0
  35. package/fesm2022/clr-angular-forms-file-input.mjs +826 -0
  36. package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -0
  37. package/fesm2022/clr-angular-forms-input.mjs +153 -0
  38. package/fesm2022/clr-angular-forms-input.mjs.map +1 -0
  39. package/fesm2022/clr-angular-forms-number-input.mjs +236 -0
  40. package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -0
  41. package/fesm2022/clr-angular-forms-password.mjs +233 -0
  42. package/fesm2022/clr-angular-forms-password.mjs.map +1 -0
  43. package/fesm2022/clr-angular-forms-radio.mjs +231 -0
  44. package/fesm2022/clr-angular-forms-radio.mjs.map +1 -0
  45. package/fesm2022/clr-angular-forms-range.mjs +186 -0
  46. package/fesm2022/clr-angular-forms-range.mjs.map +1 -0
  47. package/fesm2022/clr-angular-forms-select.mjs +153 -0
  48. package/fesm2022/clr-angular-forms-select.mjs.map +1 -0
  49. package/fesm2022/clr-angular-forms-textarea.mjs +136 -0
  50. package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -0
  51. package/fesm2022/clr-angular-forms.mjs +100 -0
  52. package/fesm2022/clr-angular-forms.mjs.map +1 -0
  53. package/fesm2022/clr-angular-icon.mjs +7397 -0
  54. package/fesm2022/clr-angular-icon.mjs.map +1 -0
  55. package/fesm2022/clr-angular-layout-breadcrumbs.mjs +120 -0
  56. package/fesm2022/clr-angular-layout-breadcrumbs.mjs.map +1 -0
  57. package/fesm2022/clr-angular-layout-main-container.mjs +100 -0
  58. package/fesm2022/clr-angular-layout-main-container.mjs.map +1 -0
  59. package/fesm2022/clr-angular-layout-nav.mjs +582 -0
  60. package/fesm2022/clr-angular-layout-nav.mjs.map +1 -0
  61. package/fesm2022/clr-angular-layout-tabs.mjs +807 -0
  62. package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -0
  63. package/fesm2022/clr-angular-layout-vertical-nav.mjs +507 -0
  64. package/fesm2022/clr-angular-layout-vertical-nav.mjs.map +1 -0
  65. package/fesm2022/clr-angular-layout.mjs +44 -0
  66. package/fesm2022/clr-angular-layout.mjs.map +1 -0
  67. package/fesm2022/clr-angular-modal.mjs +617 -0
  68. package/fesm2022/clr-angular-modal.mjs.map +1 -0
  69. package/fesm2022/clr-angular-popover-common.mjs +1082 -0
  70. package/fesm2022/clr-angular-popover-common.mjs.map +1 -0
  71. package/fesm2022/clr-angular-popover-dropdown.mjs +492 -0
  72. package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -0
  73. package/fesm2022/clr-angular-popover-signpost.mjs +494 -0
  74. package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -0
  75. package/fesm2022/clr-angular-popover-tooltip.mjs +293 -0
  76. package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -0
  77. package/fesm2022/clr-angular-popover.mjs +41 -0
  78. package/fesm2022/clr-angular-popover.mjs.map +1 -0
  79. package/fesm2022/clr-angular-progress-progress-bars.mjs +217 -0
  80. package/fesm2022/clr-angular-progress-progress-bars.mjs.map +1 -0
  81. package/fesm2022/clr-angular-progress-spinner.mjs +132 -0
  82. package/fesm2022/clr-angular-progress-spinner.mjs.map +1 -0
  83. package/fesm2022/clr-angular-stepper.mjs +694 -0
  84. package/fesm2022/clr-angular-stepper.mjs.map +1 -0
  85. package/fesm2022/clr-angular-timeline.mjs +316 -0
  86. package/fesm2022/clr-angular-timeline.mjs.map +1 -0
  87. package/fesm2022/clr-angular-utils-conditional.mjs +351 -0
  88. package/fesm2022/clr-angular-utils-conditional.mjs.map +1 -0
  89. package/fesm2022/clr-angular-utils-loading.mjs +107 -0
  90. package/fesm2022/clr-angular-utils-loading.mjs.map +1 -0
  91. package/fesm2022/clr-angular-utils.mjs +2079 -0
  92. package/fesm2022/clr-angular-utils.mjs.map +1 -0
  93. package/fesm2022/clr-angular-wizard.mjs +3074 -0
  94. package/fesm2022/clr-angular-wizard.mjs.map +1 -0
  95. package/fesm2022/{rossigee-clarity-angular.mjs → clr-angular.mjs} +2 -2
  96. package/fesm2022/clr-angular.mjs.map +1 -0
  97. package/package.json +105 -103
  98. package/schematics/ng-update/index.d.ts +2 -0
  99. package/schematics/ng-update/index.js +69 -0
  100. package/schematics/ng-update/index.js.map +1 -0
  101. package/schematics/ng-update/migrations/css-migration.d.ts +6 -0
  102. package/schematics/ng-update/migrations/css-migration.js +177 -0
  103. package/schematics/ng-update/migrations/css-migration.js.map +1 -0
  104. package/schematics/ng-update/migrations/import-migration.d.ts +4 -0
  105. package/schematics/ng-update/migrations/import-migration.js +187 -0
  106. package/schematics/ng-update/migrations/import-migration.js.map +1 -0
  107. package/schematics/ng-update/migrations/template-migration.d.ts +6 -0
  108. package/schematics/ng-update/migrations/template-migration.js +261 -0
  109. package/schematics/ng-update/migrations/template-migration.js.map +1 -0
  110. package/schematics/ng-update/replacements/css-replacements.d.ts +17 -0
  111. package/schematics/ng-update/replacements/css-replacements.js +74 -0
  112. package/schematics/ng-update/replacements/css-replacements.js.map +1 -0
  113. package/schematics/ng-update/replacements/import-replacements.d.ts +13 -0
  114. package/schematics/ng-update/replacements/import-replacements.js +108 -0
  115. package/schematics/ng-update/replacements/import-replacements.js.map +1 -0
  116. package/schematics/ng-update/replacements/symbol-replacements.d.ts +12 -0
  117. package/schematics/ng-update/replacements/symbol-replacements.js +67 -0
  118. package/schematics/ng-update/replacements/symbol-replacements.js.map +1 -0
  119. package/schematics/ng-update/replacements/template-replacements.d.ts +19 -0
  120. package/schematics/ng-update/replacements/template-replacements.js +57 -0
  121. package/schematics/ng-update/replacements/template-replacements.js.map +1 -0
  122. package/schematics/ng-update/tests/test-helpers.d.ts +6 -0
  123. package/schematics/ng-update/tests/test-helpers.js +34 -0
  124. package/schematics/ng-update/tests/test-helpers.js.map +1 -0
  125. package/schematics/ng-update/utils/file-visitor.d.ts +8 -0
  126. package/schematics/ng-update/utils/file-visitor.js +44 -0
  127. package/schematics/ng-update/utils/file-visitor.js.map +1 -0
  128. package/schematics/ng-update/utils/regexp-utils.d.ts +16 -0
  129. package/schematics/ng-update/utils/regexp-utils.js +34 -0
  130. package/schematics/ng-update/utils/regexp-utils.js.map +1 -0
  131. package/schematics/vitest.config.d.ts +2 -0
  132. package/schematics/vitest.config.js +17 -0
  133. package/schematics/vitest.config.js.map +1 -0
  134. package/types/clr-angular-accordion.d.ts +100 -0
  135. package/types/clr-angular-button.d.ts +169 -0
  136. package/types/clr-angular-collapsible-panel.d.ts +73 -0
  137. package/types/clr-angular-data-datagrid.d.ts +1843 -0
  138. package/types/clr-angular-data-stack-view.d.ts +87 -0
  139. package/types/clr-angular-data-tree-view.d.ts +229 -0
  140. package/types/clr-angular-data.d.ts +15 -0
  141. package/types/clr-angular-emphasis-alert.d.ts +175 -0
  142. package/types/clr-angular-emphasis-badge.d.ts +25 -0
  143. package/types/clr-angular-emphasis-common.d.ts +6 -0
  144. package/types/clr-angular-emphasis-label.d.ts +29 -0
  145. package/types/clr-angular-emphasis.d.ts +15 -0
  146. package/types/clr-angular-forms-checkbox.d.ts +69 -0
  147. package/types/clr-angular-forms-combobox.d.ts +353 -0
  148. package/types/clr-angular-forms-common.d.ts +339 -0
  149. package/types/clr-angular-forms-datalist.d.ts +59 -0
  150. package/types/clr-angular-forms-datepicker.d.ts +986 -0
  151. package/types/clr-angular-forms-file-input.d.ts +193 -0
  152. package/types/clr-angular-forms-input.d.ts +29 -0
  153. package/types/clr-angular-forms-number-input.d.ts +43 -0
  154. package/types/clr-angular-forms-password.d.ts +52 -0
  155. package/types/clr-angular-forms-radio.d.ts +50 -0
  156. package/types/clr-angular-forms-range.d.ts +37 -0
  157. package/types/clr-angular-forms-select.d.ts +36 -0
  158. package/types/clr-angular-forms-textarea.d.ts +29 -0
  159. package/types/clr-angular-forms.d.ts +36 -0
  160. package/types/clr-angular-icon.d.ts +1498 -0
  161. package/types/clr-angular-layout-breadcrumbs.d.ts +45 -0
  162. package/types/clr-angular-layout-main-container.d.ts +28 -0
  163. package/types/clr-angular-layout-nav.d.ts +142 -0
  164. package/types/clr-angular-layout-tabs.d.ts +158 -0
  165. package/types/clr-angular-layout-vertical-nav.d.ts +128 -0
  166. package/types/clr-angular-layout.d.ts +19 -0
  167. package/types/clr-angular-modal.d.ts +160 -0
  168. package/types/clr-angular-popover-common.d.ts +254 -0
  169. package/types/clr-angular-popover-dropdown.d.ts +123 -0
  170. package/types/clr-angular-popover-signpost.d.ts +157 -0
  171. package/types/clr-angular-popover-tooltip.d.ts +83 -0
  172. package/types/clr-angular-popover.d.ts +16 -0
  173. package/types/clr-angular-progress-progress-bars.d.ts +57 -0
  174. package/types/clr-angular-progress-spinner.d.ts +44 -0
  175. package/types/clr-angular-stepper.d.ts +179 -0
  176. package/types/clr-angular-timeline.d.ts +86 -0
  177. package/types/clr-angular-utils-conditional.d.ts +132 -0
  178. package/types/clr-angular-utils-loading.d.ts +38 -0
  179. package/types/clr-angular-utils.d.ts +913 -0
  180. package/types/clr-angular-wizard.d.ts +1508 -0
  181. package/fesm2022/rossigee-clarity-angular.mjs.map +0 -1
  182. /package/types/{rossigee-clarity-angular.d.ts → clr-angular.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clr-angular-data-datagrid.mjs","sources":["../../../projects/angular/data/datagrid/built-in/nested-property.ts","../../../projects/angular/data/datagrid/built-in/comparators/datagrid-property-comparator.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-property-numeric-filter.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-property-string-filter.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-string-filter-impl.ts","../../../projects/angular/data/datagrid/enums/sort-order.enum.ts","../../../projects/angular/data/datagrid/providers/custom-filter.ts","../../../projects/angular/data/datagrid/render/constants.ts","../../../projects/angular/data/datagrid/providers/state-debouncer.provider.ts","../../../projects/angular/data/datagrid/providers/page.ts","../../../projects/angular/data/datagrid/providers/filters.ts","../../../projects/angular/data/datagrid/utils/datagrid-filter-registrar.ts","../../../projects/angular/data/datagrid/wrapped-column.ts","../../../projects/angular/data/datagrid/providers/sort.ts","../../../projects/angular/data/datagrid/providers/detail.service.ts","../../../projects/angular/data/datagrid/enums/render-step.enum.ts","../../../projects/angular/data/datagrid/render/render-organizer.ts","../../../projects/angular/data/datagrid/providers/column-resizer.service.ts","../../../projects/angular/data/datagrid/providers/table-size.service.ts","../../../projects/angular/data/datagrid/datagrid-column-separator.ts","../../../projects/angular/data/datagrid/utils/key-navigation-strategies/default.ts","../../../projects/angular/data/datagrid/utils/key-navigation-strategies/expanded-row.ts","../../../projects/angular/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.ts","../../../projects/angular/data/datagrid/utils/key-navigation-utils.ts","../../../projects/angular/data/datagrid/utils/key-navigation-grid.controller.ts","../../../projects/angular/data/datagrid/datagrid-filter.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-numeric-filter.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-string-filter.ts","../../../projects/angular/data/datagrid/datagrid-column.ts","../../../projects/angular/data/datagrid/providers/items.ts","../../../projects/angular/data/datagrid/datagrid-items.ts","../../../projects/angular/data/datagrid/datagrid-placeholder.ts","../../../projects/angular/data/datagrid/wrapped-cell.ts","../../../projects/angular/data/datagrid/datagrid-cell.ts","../../../projects/angular/data/datagrid/datagrid-if-expanded.service.ts","../../../projects/angular/data/datagrid/enums/display-mode.enum.ts","../../../projects/angular/data/datagrid/enums/selection-type.ts","../../../projects/angular/data/datagrid/wrapped-row.ts","../../../projects/angular/data/datagrid/providers/selection.ts","../../../projects/angular/data/datagrid/providers/row-action-service.ts","../../../projects/angular/data/datagrid/providers/global-expandable-rows.ts","../../../projects/angular/data/datagrid/providers/display-mode.service.ts","../../../projects/angular/data/datagrid/datagrid-single-selection.directive.ts","../../../projects/angular/data/datagrid/datagrid-selection-cell.directive.ts","../../../projects/angular/data/datagrid/datagrid-row.ts","../../../projects/angular/data/datagrid/datagrid-row.html","../../../projects/angular/data/datagrid/datagrid-virtual-scroll.directive.ts","../../../projects/angular/data/datagrid/enums/column-changes.enum.ts","../../../projects/angular/data/datagrid/providers/columns.service.ts","../../../projects/angular/data/datagrid/providers/state.provider.ts","../../../projects/angular/data/datagrid/render/cell-renderer.ts","../../../projects/angular/data/datagrid/render/row-renderer.ts","../../../projects/angular/data/datagrid/chocolate/datagrid-willy-wonka.ts","../../../projects/angular/data/datagrid/chocolate/actionable-oompa-loompa.ts","../../../projects/angular/data/datagrid/chocolate/expandable-oompa-loompa.ts","../../../projects/angular/data/datagrid/datagrid.ts","../../../projects/angular/data/datagrid/datagrid.html","../../../projects/angular/data/datagrid/datagrid-action-bar.ts","../../../projects/angular/data/datagrid/datagrid-action-overflow.ts","../../../projects/angular/data/datagrid/datagrid-column-toggle-trackby.ts","../../../projects/angular/data/datagrid/datagrid-column-toggle-button.ts","../../../projects/angular/data/datagrid/datagrid-column-toggle.ts","../../../projects/angular/data/datagrid/datagrid-detail-header.ts","../../../projects/angular/data/datagrid/datagrid-detail.ts","../../../projects/angular/data/datagrid/datagrid-detail-body.ts","../../../projects/angular/data/datagrid/providers/column-state.provider.ts","../../../projects/angular/data/datagrid/datagrid-hideable-column.ts","../../../projects/angular/data/datagrid/datagrid-if-detail.ts","../../../projects/angular/data/datagrid/datagrid-row-detail.ts","../../../projects/angular/data/datagrid/datagrid-footer.ts","../../../projects/angular/data/datagrid/datagrid-page-size.ts","../../../projects/angular/data/datagrid/datagrid-pagination.ts","../../../projects/angular/data/datagrid/interfaces/state.interface.ts","../../../projects/angular/data/datagrid/interfaces/filter.interface.ts","../../../projects/angular/data/datagrid/interfaces/string-filter.interface.ts","../../../projects/angular/data/datagrid/interfaces/numeric-filter.interface.ts","../../../projects/angular/data/datagrid/interfaces/comparator.interface.ts","../../../projects/angular/data/datagrid/interfaces/virtual-scroll-data-range.interface.ts","../../../projects/angular/data/datagrid/datagrid-detail-registerer.ts","../../../projects/angular/data/datagrid/render/header-renderer.ts","../../../projects/angular/data/datagrid/render/noop-dom-adapter.ts","../../../projects/angular/data/datagrid/render/main-renderer.ts","../../../projects/angular/data/datagrid/render/row-detail-renderer.ts","../../../projects/angular/data/datagrid/datagrid.module.ts","../../../projects/angular/data/datagrid/index.ts","../../../projects/angular/data/datagrid/clr-angular-data-datagrid.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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/**\n * Generic accessor for deep object properties\n * that can be specified as simple dot-separated strings.\n */\nexport class NestedProperty<T = any> {\n private splitProp: string[];\n\n constructor(private prop: string) {\n if (prop.indexOf('.') >= 0) {\n this.splitProp = prop.split('.');\n }\n }\n\n // Safe getter for a deep object property, will not throw an error but return\n // undefined if one of the intermediate properties is null or undefined.\n getPropValue(item: T): any {\n if (this.splitProp) {\n let value = item;\n for (const nestedProp of this.splitProp) {\n if (\n value === null ||\n typeof value === 'undefined' ||\n typeof (value as Record<string, any>)[nestedProp] === 'undefined'\n ) {\n return undefined;\n }\n value = (value as Record<string, any>)[nestedProp];\n }\n return value;\n } else {\n return (item as Record<string, any>)[this.prop];\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { ClrDatagridComparatorInterface } from '../../interfaces/comparator.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyComparator<T = any> implements ClrDatagridComparatorInterface<T> {\n private nestedProp: NestedProperty<T>;\n\n constructor(public prop: string) {\n this.nestedProp = new NestedProperty(prop);\n }\n\n compare(a: T, b: T): number {\n let propA = this.nestedProp.getPropValue(a);\n let propB = this.nestedProp.getPropValue(b);\n\n if (typeof propA === 'string') {\n propA = propA.toLowerCase();\n }\n\n if (typeof propB === 'string') {\n propB = propB.toLowerCase();\n }\n\n if (typeof propA === 'undefined' || propA === null) {\n if (typeof propB === 'undefined' || propB === null) {\n return 0;\n } else {\n return 1;\n }\n } else {\n if (typeof propB === 'undefined' || propB === null) {\n return -1;\n } else if (propA < propB) {\n return -1;\n } else if (propA > propB) {\n return 1;\n } else {\n return 0;\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyNumericFilter<T = any> implements ClrDatagridNumericFilterInterface<T> {\n private nestedProp: NestedProperty<T>;\n\n constructor(\n public prop: string,\n public exact = false\n ) {\n this.nestedProp = new NestedProperty(prop);\n }\n\n accepts(item: T, low: number, high: number): boolean {\n const propValue = this.nestedProp.getPropValue(item);\n if (propValue === undefined) {\n return false;\n }\n if (low !== null && (typeof propValue !== 'number' || propValue < low)) {\n return false;\n }\n if (high !== null && (typeof propValue !== 'number' || propValue > high)) {\n return false;\n }\n return true;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Observable, Subject } from 'rxjs';\n\nimport { DatagridPropertyNumericFilter } from './datagrid-property-numeric-filter';\nimport { ClrDatagridFilterInterface } from '../../interfaces/filter.interface';\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\n\nexport class DatagridNumericFilterImpl<T = any> implements ClrDatagridFilterInterface<T> {\n /**\n * The Observable required as part of the Filter interface\n */\n private _changes = new Subject<[number, number]>();\n\n /**\n * Internal values and accessor\n */\n private _low: number | null = null;\n private _high: number | null = null;\n\n constructor(public filterFn: ClrDatagridNumericFilterInterface<T>) {}\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get changes(): Observable<[number, number]> {\n return this._changes.asObservable();\n }\n\n get value(): [number, number] {\n return [this._low, this._high];\n }\n set value(vals: [number, number]) {\n const low = vals[0];\n const high = vals[1];\n if (low !== this._low || high !== this._high) {\n this._low = low;\n this._high = high;\n this._changes.next([this._low, this._high]);\n }\n }\n\n get low() {\n return this._low;\n }\n set low(low: number) {\n if (low !== this._low) {\n this._low = low;\n this._changes.next([this._low, this._high]);\n }\n }\n\n get high() {\n return this._high;\n }\n set high(high: number) {\n if (high !== this._high) {\n this._high = high;\n this._changes.next([this._low, this._high]);\n }\n }\n\n get state() {\n if (this.filterFn instanceof DatagridPropertyNumericFilter) {\n return {\n property: this.filterFn.prop,\n low: this._low,\n high: this._high,\n };\n }\n return this;\n }\n\n /**\n * Indicates if the filter is currently active, (at least one input is set)\n */\n isActive(): boolean {\n return this._low !== null || this.high !== null;\n }\n\n /**\n * Tests if an item matches a search text\n */\n accepts(item: T): boolean {\n // We have a filter function in case someone wants to implement a numeric\n // filter that always passes nulls or similar\n return this.filterFn.accepts(item, this._low, this._high);\n }\n\n equals(other: ClrDatagridFilterInterface<T, any>): boolean {\n if (other instanceof DatagridNumericFilterImpl) {\n if (other.filterFn instanceof DatagridPropertyNumericFilter) {\n return (\n this.filterFn instanceof DatagridPropertyNumericFilter &&\n other.filterFn.prop === this.filterFn.prop &&\n other.low === this._low &&\n other.high === this._high\n );\n }\n return other === this;\n }\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyStringFilter<T = any> implements ClrDatagridStringFilterInterface<T> {\n private nestedProp: NestedProperty<T>;\n\n constructor(\n public prop: string,\n public exact = false\n ) {\n this.nestedProp = new NestedProperty(prop);\n }\n\n accepts(item: T, search: string): boolean {\n const propValue = this.nestedProp.getPropValue(item);\n if (typeof propValue === 'undefined') {\n return false;\n } else if (this.exact) {\n return ('' + propValue).toLowerCase() === search;\n } else {\n return ('' + propValue).toLowerCase().indexOf(search) >= 0;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Observable, Subject } from 'rxjs';\n\nimport { DatagridPropertyStringFilter } from './datagrid-property-string-filter';\nimport { ClrDatagridFilterInterface } from '../../interfaces/filter.interface';\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\n\nexport class DatagridStringFilterImpl<T = any> implements ClrDatagridFilterInterface<T> {\n /**\n * The Observable required as part of the Filter interface\n */\n private _changes = new Subject<string>();\n\n /**\n * Input value converted to lowercase\n */\n private _lowerCaseValue = '';\n\n /**\n * Raw input value\n */\n private _rawValue = '';\n\n constructor(public filterFn: ClrDatagridStringFilterInterface<T>) {}\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get changes(): Observable<string> {\n return this._changes.asObservable();\n }\n\n get lowerCaseValue() {\n return this._lowerCaseValue;\n }\n\n get state() {\n if (this.filterFn instanceof DatagridPropertyStringFilter) {\n return {\n property: this.filterFn.prop,\n value: this.value,\n };\n }\n return this;\n }\n\n get value(): string {\n return this._rawValue;\n }\n /**\n * Common setter for the input value\n */\n set value(value: string) {\n if (!value) {\n value = '';\n }\n if (value !== this._rawValue) {\n this._rawValue = value;\n this._lowerCaseValue = value.toLowerCase().trim();\n this._changes.next(value);\n }\n }\n\n /**\n * Indicates if the filter is currently active, meaning the input is not empty\n */\n isActive(): boolean {\n return !!this.value;\n }\n\n /**\n * Tests if an item matches a search text\n */\n accepts(item: T): boolean {\n // We always test with the lowercase value of the input, to stay case insensitive\n return this.filterFn.accepts(item, this.lowerCaseValue);\n }\n\n equals(other: ClrDatagridFilterInterface<T, any>): boolean {\n if (other instanceof DatagridStringFilterImpl) {\n if (other.filterFn instanceof DatagridPropertyStringFilter) {\n return (\n this.filterFn instanceof DatagridPropertyStringFilter &&\n other.filterFn.prop === this.filterFn.prop &&\n other.value === this.value\n );\n }\n return other === this;\n }\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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/**\n * Enumeration representing the sorting order of a datagrid column. It is a constant Enum,\n * i.e. each value needs to be treated as a `number`, starting at index 0.\n *\n * @export\n * @enum {number}\n */\nexport enum ClrDatagridSortOrder {\n UNSORTED = 0,\n ASC = 1,\n DESC = -1,\n}\n\nexport enum ClrDatagridAriaSortOrder {\n UNSORTED = 'none',\n ASC = 'ascending',\n DESC = 'descending',\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport abstract class CustomFilter {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';\nexport const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/*\n * This provider implements some form of synchronous debouncing through a lock pattern\n * to avoid emitting multiple state changes for a single user action.\n */\n@Injectable()\nexport class StateDebouncer {\n /*\n * This is the lock, to only emit once all the changes have finished processing\n */\n private nbChanges = 0;\n\n /**\n * The Observable that lets other classes subscribe to global state changes\n */\n private _change = new Subject<void>();\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<void> {\n return this._change.asObservable();\n }\n\n changeStart() {\n this.nbChanges++;\n }\n\n changeDone() {\n if (--this.nbChanges === 0) {\n this._change.next();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class Page {\n activated = false;\n\n /**\n * Page size, a value of 0 means no pagination\n */\n private _size = 0;\n\n /**\n * Total items (needed to guess the last page)\n */\n private _totalItems?: number;\n\n /**\n * Last page\n */\n private _last: number;\n\n /**\n * Current page\n */\n private _current = 1;\n\n /**\n * The Observable that lets other classes subscribe to page changes\n */\n private _change = new Subject<number>();\n\n private preventEmit = false;\n private _sizeChange = new Subject<number>();\n\n constructor(private stateDebouncer: StateDebouncer) {}\n\n get size(): number {\n return this._size;\n }\n set size(size: number) {\n const oldSize = this._size;\n if (size !== oldSize) {\n if (!this.preventEmit) {\n this.stateDebouncer.changeStart();\n }\n this._size = size;\n if (size === 0) {\n this._current = 1;\n } else {\n // Yeap. That's the formula to keep the first item from the old page still\n // displayed in the new one.\n this._current = Math.floor((oldSize / size) * (this._current - 1)) + 1;\n }\n // We always emit an event even if the current page index didn't change, because\n // the size changing means the items inside the page are different\n if (!this.preventEmit) {\n this._change.next(this._current);\n this._sizeChange.next(this._size);\n this.stateDebouncer.changeDone();\n }\n }\n this.preventEmit = false;\n }\n\n get totalItems(): number {\n return this._totalItems || 0; // remains 0 if not set to avoid breaking change\n }\n set totalItems(total: number) {\n this._totalItems = total;\n // If we have less items than before, we might need to change the current page\n if (this.current > this.last) {\n this.current = this.last;\n }\n }\n\n get last(): number {\n if (this._last) {\n return this._last;\n }\n // If the last page isn't known, we compute it from the last item's index\n if (this.size > 0 && this.totalItems) {\n return Math.ceil(this.totalItems / this.size);\n }\n return 1;\n }\n set last(page: number) {\n this._last = page;\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<number> {\n return this._change.asObservable();\n }\n\n get sizeChange(): Observable<number> {\n return this._sizeChange.asObservable();\n }\n\n get current(): number {\n return this._current;\n }\n set current(page: number) {\n if (page !== this._current) {\n this.stateDebouncer.changeStart();\n this._current = page;\n this._change.next(page);\n this.stateDebouncer.changeDone();\n }\n }\n\n /**\n * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n */\n get firstItem(): number {\n if (this._totalItems === 0) {\n return -1;\n }\n\n if (this.size === 0) {\n return 0;\n }\n return (this.current - 1) * this.size;\n }\n\n /**\n * Index of the last item displayed on the current page, starting at 0, -1 if none displayed\n */\n get lastItem(): number {\n if (this._totalItems === 0) {\n return -1;\n }\n\n if (this.size === 0) {\n return this.totalItems - 1;\n }\n let lastInPage = this.current * this.size - 1;\n if (this.totalItems) {\n lastInPage = Math.min(lastInPage, this.totalItems - 1);\n }\n return lastInPage;\n }\n\n /**\n * Moves to the previous page if it exists\n */\n previous() {\n if (this.current > 1) {\n this.current--;\n }\n }\n\n /**\n * Moves to the next page if it exists\n */\n next() {\n if (this.current < this.last) {\n this.current++;\n }\n }\n\n /**\n * Resets the page size to 0\n */\n resetPageSize(preventEmit = false): void {\n this.preventEmit = preventEmit;\n this.size = 0;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { Page } from './page';\nimport { StateDebouncer } from './state-debouncer.provider';\nimport { ClrDatagridFilterInterface } from '../interfaces/filter.interface';\n\n@Injectable()\nexport class FiltersProvider<T = any> {\n /**\n * This subject is the list of filters that changed last, not the whole list.\n * We emit a list rather than just one filter to allow batch changes to several at once.\n */\n private _change = new Subject<ClrDatagridFilterInterface<T>[]>();\n\n /**\n * List of all filters, whether they're active or not\n */\n private _all: RegisteredFilter<T, ClrDatagridFilterInterface<T>>[] = [];\n\n constructor(\n private _page: Page,\n private stateDebouncer: StateDebouncer\n ) {}\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<ClrDatagridFilterInterface<T>[]> {\n return this._change.asObservable();\n }\n\n /**\n * Tests if at least one filter is currently active\n */\n hasActiveFilters(): boolean {\n // We do not use getActiveFilters() because this function will be called much more often\n // and stopping the loop early might be relevant.\n for (const { filter } of this._all) {\n if (filter && filter.isActive()) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns a list of all currently active filters\n */\n getActiveFilters(): ClrDatagridFilterInterface<T>[] {\n const ret: ClrDatagridFilterInterface<T>[] = [];\n for (const { filter } of this._all) {\n if (filter && filter.isActive()) {\n ret.push(filter);\n }\n }\n return ret;\n }\n\n /**\n * Registers a filter, and returns a deregistration function\n */\n add<F extends ClrDatagridFilterInterface<T>>(filter: F): RegisteredFilter<T, F> {\n const subscription = filter.changes.subscribe(() => this.resetPageAndEmitFilterChange([filter]));\n let hasUnregistered = false;\n const registered = new RegisteredFilter(filter, () => {\n if (hasUnregistered) {\n return;\n }\n subscription.unsubscribe();\n const matchIndex = this._all.findIndex(item => item.filter === filter);\n if (matchIndex >= 0) {\n this._all.splice(matchIndex, 1);\n }\n if (filter.isActive()) {\n this.resetPageAndEmitFilterChange([]);\n }\n hasUnregistered = true;\n });\n this._all.push(registered);\n if (filter.isActive()) {\n this.resetPageAndEmitFilterChange([filter]);\n }\n return registered;\n }\n\n /**\n * Accepts an item if it is accepted by all currently active filters\n */\n accepts(item: T): boolean {\n for (const { filter } of this._all) {\n if (filter && filter.isActive() && !filter.accepts(item)) {\n return false;\n }\n }\n return true;\n }\n\n private resetPageAndEmitFilterChange(filters: ClrDatagridFilterInterface<T>[]) {\n this.stateDebouncer.changeStart();\n // filtering may change the page number such that current page number doesn't exist in the filtered dataset.\n // So here we always set the current page to 1 so that it'll fetch first page's data with the given filter.\n this._page.current = 1;\n this._change.next(filters);\n this.stateDebouncer.changeDone();\n }\n}\n\nexport class RegisteredFilter<T, F extends ClrDatagridFilterInterface<T>> {\n constructor(\n public filter: F,\n public unregister: () => void\n ) {}\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Directive, OnDestroy } from '@angular/core';\n\nimport { ClrDatagridFilterInterface } from '../interfaces/filter.interface';\nimport { FiltersProvider, RegisteredFilter } from '../providers/filters';\n\n@Directive()\nexport abstract class DatagridFilterRegistrar<T, F extends ClrDatagridFilterInterface<T>> implements OnDestroy {\n /**\n * @NOTEe Type `any` is set here to be able to pass templateStrictMode\n */\n registered: any;\n\n protected constructor(private filters: FiltersProvider<T>) {}\n\n get filter(): F {\n return this.registered && this.registered.filter;\n }\n\n ngOnDestroy(): void {\n this.deleteFilter();\n }\n\n setFilter(filter: F | RegisteredFilter<T, F>) {\n // If we previously had another filter, we unregister it\n this.deleteFilter();\n if (filter instanceof RegisteredFilter) {\n this.registered = filter;\n } else if (filter) {\n this.registered = this.filters.add(filter);\n }\n }\n\n deleteFilter() {\n if (this.registered) {\n this.registered.unregister();\n delete this.registered;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'dg-wrapped-column',\n template: `\n <ng-template #columnPortal>\n <ng-content></ng-content>\n </ng-template>\n `,\n standalone: false,\n})\nexport class WrappedColumn implements AfterViewInit, OnDestroy {\n @ViewChild('columnPortal') templateRef: TemplateRef<void>;\n columnView: EmbeddedViewRef<void>; // the columns projected view (in memory)\n\n ngAfterViewInit() {\n // Create the cells view in memory, not the DOM.\n this.columnView = this.templateRef.createEmbeddedView(null);\n }\n\n ngOnDestroy() {\n this.columnView.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { StateDebouncer } from './state-debouncer.provider';\nimport { ClrDatagridComparatorInterface } from '../interfaces/comparator.interface';\n\n@Injectable()\nexport class Sort<T = any> {\n /**\n * Currently active comparator\n */\n private _comparator: ClrDatagridComparatorInterface<T>;\n\n /**\n * Ascending order if false, descending if true\n */\n private _reverse = false;\n\n /**\n * The Observable that lets other classes subscribe to sort changes\n */\n private _change = new Subject<Sort<T>>();\n\n constructor(private stateDebouncer: StateDebouncer) {}\n\n get comparator(): ClrDatagridComparatorInterface<T> {\n return this._comparator;\n }\n set comparator(value: ClrDatagridComparatorInterface<T>) {\n this.stateDebouncer.changeStart();\n this._comparator = value;\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n get reverse(): boolean {\n return this._reverse;\n }\n set reverse(value: boolean) {\n this.stateDebouncer.changeStart();\n this._reverse = value;\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<Sort<T>> {\n return this._change.asObservable();\n }\n\n /**\n * Sets a comparator as the current one, or toggles reverse if the comparator is already used. The\n * optional forceReverse input parameter allows to override that toggling behavior by sorting in\n * reverse order if `true`.\n *\n * @memberof Sort\n */\n toggle(sortBy: ClrDatagridComparatorInterface<T>, forceReverse?: boolean) {\n this.stateDebouncer.changeStart();\n // We modify private properties directly, to batch the change event\n if (this.comparator === sortBy) {\n this._reverse = typeof forceReverse !== 'undefined' ? forceReverse || !this._reverse : !this._reverse;\n } else {\n this._comparator = sortBy;\n this._reverse = typeof forceReverse !== 'undefined' ? forceReverse : false;\n }\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n /**\n * Clears the current sorting order\n */\n clear() {\n this.comparator = null;\n }\n\n /**\n * Compares two objects according to the current comparator\n */\n compare(a: T, b: T): number {\n return (this.reverse ? -1 : 1) * this.comparator.compare(a, b);\n }\n\n private emitChange() {\n this._change.next(this);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { ModalStackService } from '@clr/angular/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class DetailService {\n id: string;\n\n private preventScroll = false;\n private toggleState = false;\n private cache: any;\n private button: HTMLButtonElement;\n private _enabled = false;\n private _state = new BehaviorSubject<boolean | null>(this.toggleState);\n\n constructor(private readonly modalStackService: ModalStackService) {}\n\n get enabled(): boolean {\n return this._enabled;\n }\n set enabled(state: boolean) {\n this._enabled = state;\n }\n\n get preventFocusScroll(): boolean {\n return this.preventScroll;\n }\n set preventFocusScroll(preventScroll: boolean) {\n this.preventScroll = preventScroll;\n }\n\n get state() {\n return this.cache;\n }\n\n get stateChange(): Observable<boolean | null> {\n return this._state.asObservable();\n }\n\n get isOpen() {\n return this.toggleState === true;\n }\n\n open(item: any, button?: HTMLButtonElement) {\n this.cache = item;\n this.button = button;\n this.toggleState = true;\n this._state.next(this.toggleState);\n this.modalStackService.trackModalOpen(this);\n }\n\n close() {\n this.toggleState = false;\n this.returnFocus();\n this._state.next(this.toggleState);\n this.modalStackService.trackModalClose(this);\n }\n\n returnFocus() {\n if (this.button) {\n this.button.focus({ preventScroll: this.preventFocusScroll });\n this.button = null;\n }\n }\n\n toggle(item: any, button?: HTMLButtonElement) {\n if (this.isRowOpen(item) || !item) {\n this.close();\n } else {\n this.open(item, button);\n }\n }\n\n isRowOpen(item: any) {\n return !!(this.toggleState && this.cache === item);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport enum DatagridRenderStep {\n ALIGN_COLUMNS,\n CALCULATE_MODE_ON,\n CALCULATE_MODE_OFF,\n CLEAR_WIDTHS, // Note this is listened to by both cells and columns\n COMPUTE_COLUMN_WIDTHS,\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { DatagridRenderStep } from '../enums/render-step.enum';\n\n@Injectable()\nexport class DatagridRenderOrganizer {\n protected _renderStep = new Subject<DatagridRenderStep>();\n\n private alreadySized = false;\n\n get renderStep(): Observable<DatagridRenderStep> {\n return this._renderStep.asObservable();\n }\n\n filterRenderSteps(step: DatagridRenderStep) {\n return this.renderStep.pipe(filter(testStep => step === testStep));\n }\n\n resize() {\n this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_ON);\n if (this.alreadySized) {\n this._renderStep.next(DatagridRenderStep.CLEAR_WIDTHS);\n }\n this._renderStep.next(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS);\n this._renderStep.next(DatagridRenderStep.ALIGN_COLUMNS); // NOT USED\n this.alreadySized = true;\n this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_OFF);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { ElementRef, Injectable } from '@angular/core';\nimport { DomAdapter } from '@clr/angular/utils';\n\nimport { DatagridRenderOrganizer } from '../render/render-organizer';\n\nconst MIN_COLUMN_WIDTH = 96;\n\n// This service allows DatagridHeaderRenderer and ClrDatagridColumnSeparator\n// to share column resize data with each other.\n\n@Injectable()\nexport class ColumnResizerService {\n // is it within the maximum resize range to the left\n isWithinMaxResizeRange: boolean;\n\n private widthBeforeResize: number;\n private _resizedBy = 0;\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private domAdapter: DomAdapter,\n private organizer: DatagridRenderOrganizer\n ) {}\n\n get resizedBy() {\n return this._resizedBy;\n }\n\n get minColumnWidth() {\n return this.domAdapter.minWidth(this.el.nativeElement) || MIN_COLUMN_WIDTH;\n }\n\n get maxResizeRange() {\n return this.widthBeforeResize - this.minColumnWidth;\n }\n\n get widthAfterResize(): number {\n return this.widthBeforeResize + this._resizedBy;\n }\n\n startResize(): void {\n this._resizedBy = 0;\n this.isWithinMaxResizeRange = true;\n this.widthBeforeResize = this.domAdapter.clientRect(this.el.nativeElement).width;\n }\n\n endResize(): void {\n this.organizer.resize();\n }\n\n calculateResize(resizedBy: number): void {\n // calculates the resize amount within the allowed range\n if (resizedBy < -this.maxResizeRange) {\n this._resizedBy = -this.maxResizeRange;\n this.isWithinMaxResizeRange = false;\n } else {\n this._resizedBy = resizedBy;\n this.isWithinMaxResizeRange = true;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\n/**\n * @description\n * Internal datagrid service that holds a reference to the clr-dg-table element and exposes a method to get height.\n */\n@Injectable()\nexport class TableSizeService {\n private _tableRef: HTMLElement;\n\n constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n get tableRef(): HTMLElement {\n return this._tableRef;\n }\n set tableRef(element: HTMLElement) {\n this._tableRef = element;\n }\n\n set table(table: ElementRef<HTMLElement>) {\n if (isPlatformBrowser(this.platformId) && table.nativeElement) {\n this.tableRef = table.nativeElement.querySelector('.datagrid-table');\n }\n }\n\n // Used when resizing columns to show the column border being dragged.\n getColumnDragHeight(): string {\n if (!this.tableRef) {\n return null;\n }\n return `${this.tableRef.clientHeight}px`;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n AfterViewInit,\n Component,\n DOCUMENT,\n ElementRef,\n Inject,\n NgZone,\n OnDestroy,\n Renderer2,\n ViewChild,\n} from '@angular/core';\nimport { ClrCommonStringsService, Keys, uniqueIdFactory } from '@clr/angular/utils';\n\nimport { ColumnResizerService } from './providers/column-resizer.service';\nimport { TableSizeService } from './providers/table-size.service';\n\n// Default resize length on each keyboard move event\nconst KEYBOARD_RESIZE_LENGTH = 12;\n\n@Component({\n selector: 'clr-dg-column-separator',\n template: `\n <button\n type=\"button\"\n class=\"datagrid-column-handle\"\n [attr.aria-label]=\"commonString.keys.columnSeparatorAriaLabel\"\n [attr.aria-describedby]=\"descriptionId\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n (cdkDragStarted)=\"showTracker()\"\n (cdkDragMoved)=\"moveTracker($event.distance.x)\"\n (cdkDragEnded)=\"hideTracker(); $event.source._dragRef.reset()\"\n #columnHandle\n ></button>\n <span class=\"clr-sr-only\" [attr.id]=\"descriptionId\">\n {{ commonString.keys.columnSeparatorDescription }}\n </span>\n <div class=\"datagrid-column-resize-tracker\" #resizeTracker></div>\n `,\n host: {\n '[class.datagrid-column-separator]': 'true',\n },\n standalone: false,\n})\nexport class ClrDatagridColumnSeparator implements AfterViewInit, OnDestroy {\n columnSeparatorId = uniqueIdFactory();\n\n private resizeStartedOnKeyDown = false;\n private isWithinMaxResizeRange: boolean;\n private unlisteners: (() => void)[] = [];\n\n @ViewChild('resizeTracker') private resizeTrackerRef: ElementRef<HTMLElement>;\n @ViewChild('columnHandle') private columnHandleRef: ElementRef<HTMLElement>;\n\n constructor(\n private columnResizerService: ColumnResizerService,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private tableSizeService: TableSizeService,\n public commonString: ClrCommonStringsService,\n @Inject(DOCUMENT) private document: any\n ) {}\n\n get descriptionId(): string {\n return `${this.columnSeparatorId}-aria-describedby`;\n }\n\n private get resizeTrackerEl() {\n return this.resizeTrackerRef.nativeElement;\n }\n\n private get columnHandleEl() {\n return this.columnHandleRef.nativeElement;\n }\n\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n this.unlisteners.push(\n this.renderer.listen(this.columnHandleEl, 'keydown', event => {\n this.showTrackerOnFirstKeyDown(event);\n this.moveTrackerOnKeyDown(event);\n })\n );\n this.unlisteners.push(\n this.renderer.listen(this.columnHandleEl, 'keyup', event => {\n this.hideTrackerOnKeyUp(event);\n })\n );\n });\n }\n\n ngOnDestroy() {\n this.unlisteners.forEach(unlistener => unlistener());\n }\n\n showTracker(): void {\n this.columnResizerService.startResize();\n const tableHeight = this.tableSizeService.getColumnDragHeight();\n this.renderer.setStyle(this.resizeTrackerEl, 'height', tableHeight);\n this.renderer.setStyle(this.resizeTrackerEl, 'display', 'block');\n }\n\n moveTracker(movedBy: number): void {\n this.columnResizerService.calculateResize(movedBy);\n this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(${this.columnResizerService.resizedBy}px)`);\n this.renderer.setStyle(this.document.body, 'cursor', 'col-resize');\n this.redFlagTracker();\n }\n\n hideTracker(): void {\n this.columnResizerService.endResize();\n this.renderer.setStyle(this.resizeTrackerEl, 'display', 'none');\n this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(0px)`);\n this.renderer.setStyle(this.columnHandleEl, 'transform', `translateX(0px)`);\n this.renderer.setStyle(this.document.body, 'cursor', 'auto');\n }\n\n private showTrackerOnFirstKeyDown(event: KeyboardEvent): void {\n if (!this.resizeStartedOnKeyDown && (this.isArrowLeftKeyEvent(event) || this.isArrowRightKeyEvent(event))) {\n this.resizeStartedOnKeyDown = true;\n this.renderer.addClass(this.resizeTrackerEl, 'on-arrow-key-resize');\n this.showTracker();\n }\n }\n\n private moveTrackerOnKeyDown(event: KeyboardEvent): void {\n if (this.isArrowLeftKeyEvent(event)) {\n event.stopPropagation();\n this.moveTracker(this.columnResizerService.resizedBy - KEYBOARD_RESIZE_LENGTH);\n } else if (this.isArrowRightKeyEvent(event)) {\n event.stopPropagation();\n this.moveTracker(this.columnResizerService.resizedBy + KEYBOARD_RESIZE_LENGTH);\n }\n }\n\n private hideTrackerOnKeyUp(event: KeyboardEvent): void {\n if (this.resizeStartedOnKeyDown && (this.isArrowLeftKeyEvent(event) || this.isArrowRightKeyEvent(event))) {\n this.resizeStartedOnKeyDown = false;\n this.renderer.removeClass(this.resizeTrackerEl, 'on-arrow-key-resize');\n this.hideTracker();\n this.columnHandleEl.focus();\n }\n }\n\n private redFlagTracker(): void {\n if (this.isWithinMaxResizeRange !== this.columnResizerService.isWithinMaxResizeRange) {\n this.isWithinMaxResizeRange = this.columnResizerService.isWithinMaxResizeRange;\n if (!this.isWithinMaxResizeRange) {\n this.renderer.addClass(this.resizeTrackerEl, 'exceeded-max');\n } else {\n this.renderer.removeClass(this.resizeTrackerEl, 'exceeded-max');\n }\n }\n }\n\n private isArrowLeftKeyEvent(event: KeyboardEvent) {\n return event.key === Keys.ArrowLeft;\n }\n\n private isArrowRightKeyEvent(event: KeyboardEvent) {\n return event.key === Keys.ArrowRight;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { KeyNavigationGridStrategyInterface } from '../../interfaces/key-nav-grid-strategy.interface';\nimport { CellCoordinates } from '../key-navigation-grid.controller';\nimport { KeyNavigationUtils } from '../key-navigation-utils';\n\nexport class DefaultKeyNavigationStrategy implements KeyNavigationGridStrategyInterface {\n constructor(protected utils: KeyNavigationUtils) {}\n\n keyUp(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n if (currentCellCoords.y === 0) {\n return nextCellCoords;\n }\n\n nextCellCoords.y = currentCellCoords.y - 1;\n\n const isActionCell = this.utils.isActionCell(currentCellCoords);\n\n if (\n this.utils.isSingleCellExpandedRow(nextCellCoords.y) &&\n !isActionCell &&\n this.utils.isDetailsRow(nextCellCoords.y)\n ) {\n nextCellCoords.x = 0;\n } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n if (isActionCell) {\n nextCellCoords.y = nextCellCoords.y - 1;\n } else {\n nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n }\n }\n\n return nextCellCoords;\n }\n\n keyDown(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n if (currentCellCoords.y >= numOfRows) {\n return nextCellCoords;\n }\n\n const isActionCell = this.utils.isActionCell(currentCellCoords);\n nextCellCoords.y = currentCellCoords.y + 1;\n\n if (!isActionCell && this.utils.isRowReplaced(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y + 1;\n\n nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n ? 0\n : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n }\n\n return nextCellCoords;\n }\n\n keyLeft(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n if (currentCellCoords.x === 0) {\n return nextCellCoords;\n }\n\n nextCellCoords.x = currentCellCoords.x - 1;\n\n return nextCellCoords;\n }\n\n keyRight(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n // calculate numOfColumns based on header cells.\n const numOfColumns = this.utils.rows?.length - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n nextCellCoords.x = currentCellCoords.x < numOfColumns ? nextCellCoords.x + 1 : nextCellCoords.x;\n\n return nextCellCoords;\n }\n\n keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n\n // calculate X based on header cells.\n nextCellCoords.x = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n if (ctrlKey) {\n nextCellCoords.y = numOfRows;\n\n if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = this.utils.getCellsForRow(nextCellCoords.y).length - 1;\n }\n }\n\n return nextCellCoords;\n }\n\n keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n nextCellCoords.x = 0;\n\n if (ctrlKey) {\n nextCellCoords.y = 0;\n }\n\n return nextCellCoords;\n }\n\n keyPageUp(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n const itemsPerPage = this.utils.itemsPerPage;\n\n nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;\n\n if (!this.utils.isActionCell(currentCellCoords)) {\n if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n ? 0\n : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n } else if (this.utils.isRowReplaced(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y + 1;\n\n nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n ? 0\n : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n }\n } else {\n if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y - 1;\n }\n }\n\n return nextCellCoords;\n }\n\n keyPageDown(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n const itemsPerPage = this.utils.itemsPerPage;\n\n nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;\n\n if (this.utils.isActionCell(currentCellCoords) && this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y - 1;\n } else if (this.utils.isDetailsRow(nextCellCoords.y) && this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n nextCellCoords.x = 0;\n } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n } else if (this.utils.isRowReplaced(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y + 1;\n nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n ? 0\n : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n }\n\n return nextCellCoords;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { CellCoordinates } from '../key-navigation-grid.controller';\nimport { DefaultKeyNavigationStrategy } from './default';\n\nexport class ExpandedRowKeyNavigationStrategy extends DefaultKeyNavigationStrategy {\n override keyUp(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n if (currentCellCoords.y === 0) {\n return nextCellCoords;\n }\n\n nextCellCoords.y = currentCellCoords.y - 1;\n\n if (!this.utils.isActionCell(currentCellCoords)) {\n if (this.utils.isRowReplaced(currentCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y - 1;\n }\n\n switch (true) {\n case this.utils.isDetailsRow(nextCellCoords.y):\n nextCellCoords.x = 0;\n break;\n case this.utils.isDetailsRow(currentCellCoords.y) === false:\n nextCellCoords.x = currentCellCoords.x;\n break;\n default:\n nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);\n }\n } else if (this.utils.isDetailsRow(nextCellCoords.y) && nextCellCoords.y > 0) {\n nextCellCoords.y = nextCellCoords.y - 1;\n }\n\n return nextCellCoords;\n }\n\n override keyDown(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n if (currentCellCoords.y >= numOfRows) {\n return nextCellCoords;\n }\n\n nextCellCoords.y = currentCellCoords.y + 1;\n\n if (!this.utils.isActionCell(currentCellCoords)) {\n if (this.utils.isRowReplaced(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y + 1;\n }\n\n if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = 0;\n } else {\n nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);\n }\n } else {\n nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y;\n }\n\n return nextCellCoords;\n }\n\n override keyLeft(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {\n return super.keyLeft(currentCellCoords);\n }\n\n if (currentCellCoords.x !== 0) {\n nextCellCoords.x = currentCellCoords.x - 1;\n } else if (!this.utils.isActionCell(currentCellCoords)) {\n nextCellCoords.y = currentCellCoords.y - 1;\n nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y) - 1;\n }\n\n return nextCellCoords;\n }\n\n override keyRight(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {\n return super.keyRight(currentCellCoords);\n }\n\n // calculate numOfColumns based on header cells.\n const numOfColumns = this.utils.rows?.length - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n if (currentCellCoords.x >= numOfColumns) {\n return nextCellCoords;\n }\n\n if (\n this.utils.isActionCell(currentCellCoords) &&\n currentCellCoords.x === this.utils.actionCellCount(currentCellCoords.x) - 1 &&\n this.utils.isRowReplaced(currentCellCoords.y) &&\n !this.utils.isDetailsRow(currentCellCoords.y)\n ) {\n nextCellCoords.y = currentCellCoords.y + 1;\n nextCellCoords.x = 0;\n } else {\n nextCellCoords.x = currentCellCoords.x + 1;\n }\n\n return nextCellCoords;\n }\n\n override keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n if ((!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) || ctrlKey) {\n return super.keyEnd(currentCellCoords, ctrlKey);\n }\n\n nextCellCoords.x = this.utils.getCellsForRow(currentCellCoords.y).length - 1;\n\n return nextCellCoords;\n }\n\n override keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {\n return super.keyHome(currentCellCoords, ctrlKey);\n }\n\n nextCellCoords.x = 0;\n nextCellCoords.y = currentCellCoords.y - 1;\n\n if (ctrlKey) {\n nextCellCoords.y = 0;\n }\n\n return nextCellCoords;\n }\n\n override keyPageUp(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n const itemsPerPage = this.utils.itemsPerPage;\n\n nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;\n\n if (!this.utils.isActionCell(currentCellCoords)) {\n if (this.utils.isRowReplaced(nextCellCoords.y)) {\n if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y + 1;\n nextCellCoords.x = 0;\n }\n } else if (!this.utils.isDetailsRow(currentCellCoords.y)) {\n if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = 0;\n }\n } else if (this.utils.isDetailsRow(currentCellCoords.y)) {\n if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);\n }\n }\n } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y - 1;\n }\n\n return nextCellCoords;\n }\n\n override keyPageDown(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n const itemsPerPage = this.utils.itemsPerPage;\n\n nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;\n\n if (!this.utils.isActionCell(currentCellCoords)) {\n if (this.utils.isRowReplaced(nextCellCoords.y)) {\n if (nextCellCoords.y < numOfRows && !this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y + 1;\n }\n } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = 0;\n }\n } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y - 1;\n }\n\n return nextCellCoords;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { CellCoordinates } from '../key-navigation-grid.controller';\nimport { ExpandedRowKeyNavigationStrategy } from './expanded-row';\n\nexport class ExpandedColumnsRowKeyNavigationStrategy extends ExpandedRowKeyNavigationStrategy {\n override keyUp(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n if (currentCellCoords.y === 0) {\n return nextCellCoords;\n }\n\n nextCellCoords.y = currentCellCoords.y - 1;\n\n if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n return super.keyUp(currentCellCoords);\n }\n\n const isActionCell = this.utils.isActionCell(currentCellCoords);\n\n if (isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y - 1;\n } else if (this.utils.isRowReplaced(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y - 1;\n\n if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n }\n } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n } else if (!isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n }\n\n return nextCellCoords;\n }\n\n override keyDown(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n const numOfColumns = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n if (currentCellCoords.y >= numOfRows) {\n return nextCellCoords;\n }\n\n nextCellCoords.y = currentCellCoords.y + 1;\n\n if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n return super.keyDown(currentCellCoords);\n }\n\n if (!this.utils.isActionCell(currentCellCoords)) {\n if (this.utils.isRowReplaced(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;\n } else if (this.utils.getCellsForRow(currentCellCoords.y).length > numOfColumns) {\n nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n } else {\n nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n }\n } else {\n nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;\n }\n\n return nextCellCoords;\n }\n\n override keyLeft(currentCellCoords: CellCoordinates) {\n return super.keyLeft(currentCellCoords);\n }\n\n override keyRight(currentCellCoords: CellCoordinates) {\n return super.keyRight(currentCellCoords);\n }\n\n override keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n return super.keyEnd(currentCellCoords, ctrlKey);\n }\n\n override keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n return super.keyHome(currentCellCoords, ctrlKey);\n }\n\n override keyPageUp(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n const itemsPerPage = this.utils.itemsPerPage;\n\n nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;\n\n if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n return super.keyPageUp(currentCellCoords);\n }\n\n if (!this.utils.isActionCell(currentCellCoords)) {\n if (this.utils.isRowReplaced(nextCellCoords.y)) {\n if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y + 1;\n nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n }\n } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n }\n } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y - 1;\n }\n\n return nextCellCoords;\n }\n\n override keyPageDown(currentCellCoords: CellCoordinates) {\n const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n const itemsPerPage = this.utils.itemsPerPage;\n\n nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;\n\n if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n return super.keyPageDown(currentCellCoords);\n }\n\n if (!this.utils.isActionCell(currentCellCoords)) {\n if (this.utils.isRowReplaced(nextCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n if (nextCellCoords.y < numOfRows) {\n nextCellCoords.y = nextCellCoords.y + 1;\n nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n }\n } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n }\n } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n nextCellCoords.y = nextCellCoords.y - 1;\n }\n\n return nextCellCoords;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Keys } from '@clr/angular/utils';\n\nimport { CellCoordinates, KeyNavigationGridConfig } from './key-navigation-grid.controller';\nimport { KeyNavigationGridStrategyInterface } from '../interfaces/key-nav-grid-strategy.interface';\nimport { DefaultKeyNavigationStrategy } from './key-navigation-strategies/default';\nimport { ExpandedColumnsRowKeyNavigationStrategy } from './key-navigation-strategies/expanded-columns-row';\nimport { ExpandedRowKeyNavigationStrategy } from './key-navigation-strategies/expanded-row';\n\nexport class KeyNavigationUtils {\n constructor(\n public host: HTMLElement,\n public config: KeyNavigationGridConfig\n ) {}\n\n get grid() {\n return this.host?.querySelector(this.config.keyGrid);\n }\n\n get rows() {\n return this.host?.querySelectorAll(this.config.keyGridRows) as NodeListOf<HTMLElement>;\n }\n\n get cells() {\n return this.host?.querySelectorAll(this.config.keyGridCells) as NodeListOf<HTMLElement>;\n }\n\n get currentCellCoordinates() {\n const currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;\n const currentRow: HTMLElement = currentCell ? currentCell.closest(this.config.keyGridRows) : null;\n\n const coordinates: CellCoordinates = {\n x:\n currentRow && currentCell\n ? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)\n : 0,\n y: currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0,\n };\n\n return coordinates;\n }\n\n get averageRowHeight() {\n const heightSum = Array.from(this.rows.values()).reduce((sum, row) => {\n return sum + row.clientHeight;\n }, 0);\n\n return Math.round(heightSum / this.rows.length);\n }\n\n get itemsPerPage() {\n return Math.floor(this.host?.querySelector('.datagrid').clientHeight / this.averageRowHeight) - 1 || 0;\n }\n\n setAriaRowIndexTo(cellCoords: CellCoordinates) {\n let ariaRowIndex = this.rows[cellCoords.y].getAttribute('aria-rowindex');\n\n if (!ariaRowIndex) {\n ariaRowIndex = this.rows[cellCoords.y - 1].getAttribute('aria-rowindex');\n }\n\n cellCoords.ariaRowIndex = ariaRowIndex;\n }\n\n getNextItemCoordinate(e: KeyboardEvent) {\n const currentCellCoords = this.currentCellCoordinates;\n const strategy = this.getNavStrategy(currentCellCoords);\n\n const inlineStart = this.host.dir === 'rtl' ? Keys.ArrowRight : Keys.ArrowLeft;\n const inlineEnd = this.host.dir === 'rtl' ? Keys.ArrowLeft : Keys.ArrowRight;\n\n switch (e.key) {\n case Keys.ArrowUp:\n return strategy.keyUp(currentCellCoords);\n case Keys.ArrowDown:\n return strategy.keyDown(currentCellCoords);\n case inlineStart:\n return strategy.keyLeft(currentCellCoords);\n case inlineEnd:\n return strategy.keyRight(currentCellCoords);\n case Keys.Home:\n return strategy.keyHome(currentCellCoords, e.ctrlKey);\n case Keys.End:\n return strategy.keyEnd(currentCellCoords, e.ctrlKey);\n case Keys.PageUp:\n return strategy.keyPageUp(currentCellCoords);\n case Keys.PageDown:\n return strategy.keyPageDown(currentCellCoords);\n default:\n return currentCellCoords;\n }\n }\n\n getCellsForRow(index: number) {\n return this.rows[index].querySelectorAll(this.config.keyGridCells);\n }\n\n isExpandedRow(index: number) {\n const selectedElement: HTMLElement = this.rows[index].querySelector('.datagrid-row-detail');\n\n return selectedElement ? selectedElement.style.display !== 'none' : false;\n }\n\n isDetailsRow(index: number) {\n return this.rows[index].classList.contains('datagrid-row-detail');\n }\n\n isRowReplaced(index: number) {\n return !!this.rows[index].closest('clr-dg-row.datagrid-row-replaced');\n }\n\n isSingleCellExpandedRow(index: number) {\n return this.rows[index]?.querySelectorAll(this.config.keyGridCells).length === 1;\n }\n\n actionCellCount(index: number) {\n return this.actionCellsAsArray(index).length;\n }\n\n actionCellsAsArray(index: number) {\n return Array.from(\n this.rows[index].querySelectorAll('.datagrid-row-sticky .datagrid-cell, .datagrid-row-sticky .datagrid-column')\n );\n }\n\n isActionCell(cellCoords: CellCoordinates) {\n return !!this.actionCellsAsArray(cellCoords.y)[cellCoords.x];\n }\n\n createNextCellCoords(cellCoords: CellCoordinates): CellCoordinates {\n return {\n x: cellCoords.x,\n y: cellCoords.y,\n };\n }\n\n private getNavStrategy(currentCellCoords: CellCoordinates): KeyNavigationGridStrategyInterface {\n switch (true) {\n case this.isSingleCellExpandedRow(currentCellCoords.y):\n return new ExpandedRowKeyNavigationStrategy(this);\n case this.isDetailsRow(currentCellCoords.y):\n case this.isExpandedRow(currentCellCoords.y):\n return new ExpandedColumnsRowKeyNavigationStrategy(this);\n default:\n return new DefaultKeyNavigationStrategy(this);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { EventEmitter, Injectable, NgZone, OnDestroy } from '@angular/core';\nimport { Keys } from '@clr/angular/utils';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { KeyNavigationUtils } from './key-navigation-utils';\n\nconst actionableItemSelectors = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'button:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '[contenteditable=true]',\n '[role=button]:not([disabled])',\n];\n\nexport function getTabbableItems(el: HTMLElement) {\n const tabbableItemSelectors = [...actionableItemSelectors, '[tabindex=\"0\"]:not([disabled])'];\n const tabbableSelector = tabbableItemSelectors.join(',');\n return Array.from(el.querySelectorAll(tabbableSelector)) as HTMLElement[];\n}\n\nfunction isActionableItem(el: HTMLElement) {\n const actionableSelector = actionableItemSelectors.join(',');\n return el.matches(actionableSelector);\n}\n\nexport interface KeyNavigationGridConfig {\n keyGrid: string;\n keyGridRows: string;\n keyGridCells: string;\n}\n\nexport interface CellCoordinates {\n x: number;\n y: number;\n ariaRowIndex?: string;\n}\n\n@Injectable()\nexport class KeyNavigationGridController implements OnDestroy {\n nextCellCoordsEmitter = new EventEmitter<CellCoordinates>(false);\n\n skipItemFocus = false;\n preventScrollOnFocus = false;\n\n config: KeyNavigationGridConfig = {\n keyGridRows: '[role=row]:not(.datagrid-placeholder):not([style*=\"display: none\"])',\n keyGridCells:\n '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',\n keyGrid: '[role=grid]',\n };\n private keyNavUtils: KeyNavigationUtils;\n private listenersAdded = false;\n private destroy$ = new Subject<void>();\n\n constructor(private zone: NgZone) {}\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n addListeners() {\n if (this.listenersAdded) {\n return;\n }\n\n this.zone.runOutsideAngular(() => {\n fromEvent(this.keyNavUtils.grid, 'mousedown')\n .pipe(takeUntil(this.destroy$))\n .subscribe((e: MouseEvent) => {\n // preserve right click for context menus & keyboard mouse control https://apple.stackexchange.com/questions/32715/how-do-i-open-the-context-menu-from-a-mac-keyboard\n if (e.buttons === 1 && !e.ctrlKey) {\n const activeCell = this.keyNavUtils.cells\n ? Array.from(this.keyNavUtils.cells).find(\n c => c === e.target || c === (e.target as HTMLElement).closest(this.config.keyGridCells)\n )\n : null;\n if (activeCell) {\n this.setActiveCell(activeCell);\n\n if (!isActionableItem(e.target as HTMLElement)) {\n this.focusElement(activeCell);\n }\n }\n }\n });\n\n fromEvent(this.keyNavUtils.grid, 'wheel')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.nextCellCoordsEmitter.emit(null);\n });\n\n fromEvent(this.keyNavUtils.grid, 'keydown')\n .pipe(takeUntil(this.destroy$))\n .subscribe((e: KeyboardEvent) => {\n // Skip column resize events\n if (\n (e.target as HTMLElement).classList.contains('drag-handle') &&\n (e.key === Keys.ArrowLeft || e.key === Keys.ArrowRight)\n ) {\n return;\n }\n if (\n e.key === Keys.ArrowUp ||\n e.key === Keys.ArrowDown ||\n e.key === Keys.ArrowLeft ||\n e.key === Keys.ArrowRight ||\n e.key === Keys.End ||\n e.key === Keys.Home ||\n e.key === Keys.PageUp ||\n e.key === Keys.PageDown\n ) {\n const nextCellCoords = this.keyNavUtils.getNextItemCoordinate(e);\n\n if (\n nextCellCoords.y > 0 &&\n (e.key === Keys.ArrowUp || e.key === Keys.ArrowDown || e.key === Keys.PageUp || e.key === Keys.PageDown)\n ) {\n this.keyNavUtils.setAriaRowIndexTo(nextCellCoords);\n\n this.nextCellCoordsEmitter.emit(nextCellCoords);\n }\n\n const activeItem = this.keyNavUtils.rows\n ? (Array.from(this.keyNavUtils.getCellsForRow(nextCellCoords.y))[nextCellCoords.x] as HTMLElement)\n : null;\n\n if (activeItem) {\n this.setActiveCell(activeItem);\n this.focusElement(activeItem, {\n preventScroll: this.preventScrollOnFocus && !!nextCellCoords.ariaRowIndex,\n });\n }\n\n e.preventDefault();\n }\n });\n });\n this.listenersAdded = true;\n }\n\n initializeKeyGrid(host: HTMLElement) {\n this.keyNavUtils = new KeyNavigationUtils(host, this.config);\n this.addListeners();\n this.resetKeyGrid();\n }\n\n resetKeyGrid() {\n this.keyNavUtils.cells?.forEach((i: HTMLElement) => i.setAttribute('tabindex', '-1'));\n const firstCell = this.keyNavUtils.cells ? this.keyNavUtils.cells[0] : null;\n firstCell?.setAttribute('tabindex', '0');\n }\n\n setActiveCell(activeCell: HTMLElement) {\n const prior = this.keyNavUtils.cells\n ? Array.from(this.keyNavUtils.cells).find(c => c.getAttribute('tabindex') === '0')\n : null;\n\n if (prior) {\n prior.setAttribute('tabindex', '-1');\n }\n\n activeCell.setAttribute('tabindex', '0');\n }\n\n focusElement(activeCell: HTMLElement, options: FocusOptions = { preventScroll: false }) {\n if (this.skipItemFocus) {\n return;\n }\n\n let elementToFocus: HTMLElement;\n\n if (activeCell.getAttribute('role') === 'columnheader') {\n elementToFocus = activeCell;\n } else {\n const tabbableElements = getTabbableItems(activeCell);\n elementToFocus = tabbableElements.length ? tabbableElements[0] : activeCell;\n }\n\n elementToFocus.focus(options);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n booleanAttribute,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ClrPopoverPosition, ClrPopoverService, ClrPopoverType } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, uniqueIdFactory } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagridFilterInterface } from './interfaces/filter.interface';\nimport { CustomFilter } from './providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from './providers/filters';\nimport { DatagridFilterRegistrar } from './utils/datagrid-filter-registrar';\nimport { KeyNavigationGridController } from './utils/key-navigation-grid.controller';\n\n/**\n * Custom filter that can be added in any column to override the default object property string filter.\n * The reason this is not just an input on DatagridColumn is because we need the filter's template to be projected,\n * since it can be anything (not just a text input).\n */\n@Component({\n selector: 'clr-dg-filter',\n // We register this component as a CustomFilter, for the parent column to detect it.\n providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }],\n template: `\n <button\n class=\"datagrid-filter-toggle\"\n type=\"button\"\n #anchor\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-controls]=\"popoverId\"\n clrPopoverOrigin\n clrPopoverOpenCloseButton\n [class.datagrid-filter-open]=\"open\"\n [class.datagrid-filtered]=\"active\"\n >\n <cds-icon\n [status]=\"active ? 'info' : null\"\n [shape]=\"active ? 'filter-grid-circle' : 'filter-grid'\"\n solid\n ></cds-icon>\n </button>\n\n <div\n class=\"datagrid-filter\"\n [id]=\"popoverId\"\n cdkTrapFocus\n *clrPopoverContent=\"open; at: popoverPosition; type: popoverType; outsideClickToClose: true; scrollToClose: false\"\n role=\"dialog\"\n [attr.aria-label]=\"commonStrings.keys.datagridFilterDialogAriaLabel\"\n >\n <div class=\"datagrid-filter-close-wrapper\">\n <button type=\"button\" class=\"close\" clrPopoverCloseButton>\n <cds-icon shape=\"window-close\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n </button>\n </div>\n\n <ng-content></ng-content>\n </div>\n `,\n standalone: false,\n})\nexport class ClrDatagridFilter<T = any>\n extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>>\n implements CustomFilter, OnDestroy\n{\n @Output('clrDgFilterOpenChange') openChange = new EventEmitter<boolean>(false);\n\n ariaExpanded = false;\n popoverId = uniqueIdFactory();\n\n // Smart Popover\n popoverPosition = ClrPopoverPosition.BOTTOM_RIGHT;\n popoverType = ClrPopoverType.DROPDOWN;\n\n @ViewChild('anchor', { read: ElementRef }) anchor: ElementRef<HTMLButtonElement>;\n\n private subs: Subscription[] = [];\n\n constructor(\n _filters: FiltersProvider<T>,\n public commonStrings: ClrCommonStringsService,\n private popoverService: ClrPopoverService,\n @Optional() private keyNavigation: KeyNavigationGridController\n ) {\n super(_filters);\n this.subs.push(\n popoverService.openChange.subscribe(change => {\n this.ariaExpanded = change;\n this.openChange.emit(change);\n })\n );\n }\n\n @Input({ alias: 'clrDgFilterOpen', transform: booleanAttribute })\n get open() {\n return this.popoverService.open;\n }\n set open(open: boolean) {\n if (this.popoverService.open !== open) {\n this.popoverService.open = open;\n this.openChange.emit(open);\n\n if (this.keyNavigation) {\n this.keyNavigation.skipItemFocus = open;\n }\n }\n }\n\n @Input('clrDgFilter')\n set customFilter(filter: ClrDatagridFilterInterface<T> | RegisteredFilter<T, ClrDatagridFilterInterface<T>>) {\n this.setFilter(filter);\n }\n\n /**\n * Indicates if the filter is currently active\n */\n get active() {\n return !!this.filter && this.filter.isActive();\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, NgZone, Output, ViewChild } from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, DomAdapter } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { DatagridNumericFilterImpl } from './datagrid-numeric-filter-impl';\nimport { ClrDatagridFilter } from '../../datagrid-filter';\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { CustomFilter } from '../../providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from '../../providers/filters';\nimport { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\n\n@Component({\n selector: 'clr-dg-numeric-filter',\n providers: [{ provide: CustomFilter, useExisting: DatagridNumericFilter }],\n template: `\n <clr-dg-filter [clrDgFilter]=\"registered\" [(clrDgFilterOpen)]=\"open\">\n <div class=\"datagrid-numeric-filter-form\">\n <clr-number-input-container>\n <label class=\"clr-control-label\">{{ fromLabelValue }}</label>\n <input\n clrNumberInput\n class=\"datagrid-numeric-filter-input\"\n #input_low\n type=\"number\"\n autocomplete=\"off\"\n name=\"low\"\n [(ngModel)]=\"low\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n </clr-number-input-container>\n <clr-number-input-container>\n <label class=\"clr-control-label\">{{ toLabelValue }}</label>\n <input\n clrNumberInput\n class=\"datagrid-numeric-filter-input\"\n #input_high\n type=\"number\"\n autocomplete=\"off\"\n name=\"high\"\n [(ngModel)]=\"high\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-number-input-container>\n </div>\n </clr-dg-filter>\n `,\n standalone: false,\n})\nexport class DatagridNumericFilter<T = any>\n extends DatagridFilterRegistrar<T, DatagridNumericFilterImpl<T>>\n implements CustomFilter, AfterViewInit\n{\n @Input('clrFilterMinPlaceholder') minPlaceholder: string;\n @Input('clrFilterMaxPlaceholder') maxPlaceholder: string;\n @Input('clrFilterFromLabel') fromLabel: string;\n @Input('clrFilterToLabel') toLabel: string;\n\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n /**\n * Indicates if the filter dropdown is open\n */\n open = false;\n\n /**\n * We need the actual input element to automatically focus on it\n */\n @ViewChild('input_low') input: ElementRef<HTMLInputElement>;\n\n /**\n * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n */\n @ViewChild(ClrDatagridFilter) filterContainer: ClrDatagridFilter<T>;\n\n private initFilterValues: [number, number];\n private subscriptions: Subscription[] = [];\n\n constructor(\n filters: FiltersProvider<T>,\n private domAdapter: DomAdapter,\n public commonStrings: ClrCommonStringsService,\n private popoverService: ClrPopoverService,\n private ngZone: NgZone\n ) {\n super(filters);\n }\n\n /**\n * Common setter for the input values\n */\n @Input('clrFilterValue')\n get value() {\n return [this.filter.low, this.filter.high];\n }\n set value(values: [number, number]) {\n if (this.filter && Array.isArray(values)) {\n if (values && (values[0] !== this.filter.low || values[1] !== this.filter.high)) {\n if (typeof values[0] === 'number') {\n this.filter.low = values[0];\n } else {\n this.filter.low = null;\n }\n if (typeof values[1] === 'number') {\n this.filter.high = values[1];\n } else {\n this.filter.high = null;\n }\n this.filterValueChange.emit(values);\n }\n } else {\n this.initFilterValues = values;\n }\n }\n\n /**\n * Customizable filter logic based on high and low values\n */\n @Input('clrDgNumericFilter')\n set customNumericFilter(\n value: ClrDatagridNumericFilterInterface<T> | RegisteredFilter<T, DatagridNumericFilterImpl<T>>\n ) {\n if (value instanceof RegisteredFilter) {\n this.setFilter(value);\n } else {\n this.setFilter(new DatagridNumericFilterImpl(value));\n }\n if (this.initFilterValues) {\n this.value = this.initFilterValues;\n // This initFilterValues should be used only once after the filter registration\n // So deleting this property value to prevent it from being used again\n // if this customStringFilter property is set again\n delete this.initFilterValues;\n }\n }\n\n get maxPlaceholderValue() {\n return this.maxPlaceholder || this.commonStrings.keys.maxValue;\n }\n\n get minPlaceholderValue() {\n return this.minPlaceholder || this.commonStrings.keys.minValue;\n }\n\n get fromLabelValue() {\n return this.fromLabel || this.commonStrings.keys.fromLabel;\n }\n\n get toLabelValue() {\n return this.toLabel || this.commonStrings.keys.toLabel;\n }\n\n get low() {\n if (typeof this.filter.low === 'number' && isFinite(this.filter.low)) {\n return this.filter.low;\n } else {\n // There's not a low limit\n return null;\n }\n }\n set low(low: number | string) {\n if (typeof low === 'number' && low !== this.filter.low) {\n this.filter.low = low;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n } else if (typeof low !== 'number') {\n this.filter.low = null;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n }\n }\n\n get high() {\n if (typeof this.filter.high === 'number' && isFinite(this.filter.high)) {\n return this.filter.high;\n } else {\n // There's not a high limit\n return null;\n }\n }\n set high(high: number | string) {\n if (typeof high === 'number' && high !== this.filter.high) {\n this.filter.high = high;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n } else if (typeof high !== 'number') {\n this.filter.high = null;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n }\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(\n this.popoverService.openChange.subscribe(openChange => {\n this.open = openChange;\n // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n // running change detection.\n this.ngZone.runOutsideAngular(() => {\n // The animation frame in used because when this executes, the input isn't displayed.\n // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n // Animation tasks are executed within the next rendering frame.\n requestAnimationFrame(() => {\n this.domAdapter.focus(this.input.nativeElement);\n });\n });\n })\n );\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.subscriptions.forEach(sub => {\n sub.unsubscribe();\n });\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, DomAdapter } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { DatagridStringFilterImpl } from './datagrid-string-filter-impl';\nimport { ClrDatagridFilter } from '../../datagrid-filter';\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { CustomFilter } from '../../providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from '../../providers/filters';\nimport { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\n\n@Component({\n selector: 'clr-dg-string-filter',\n providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }],\n template: `\n <clr-dg-filter [clrDgFilter]=\"registered\" [(clrDgFilterOpen)]=\"open\">\n <clr-input-container>\n <label>{{ labelValue }}</label>\n <input\n #input\n type=\"text\"\n autocomplete=\"off\"\n name=\"search\"\n [(ngModel)]=\"value\"\n clrInput\n [attr.aria-label]=\"placeholderValue\"\n [placeholder]=\"placeholderValue\"\n />\n </clr-input-container>\n </clr-dg-filter>\n `,\n standalone: false,\n})\nexport class DatagridStringFilter<T = any>\n extends DatagridFilterRegistrar<T, DatagridStringFilterImpl<T>>\n implements CustomFilter, OnChanges, OnDestroy, AfterViewInit\n{\n /**\n * Provide a way to pass external placeholder and aria-label to the filter input\n */\n @Input('clrFilterPlaceholder') placeholder: string;\n @Input('clrFilterLabel') label: string;\n\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n /**\n * Indicates if the filter dropdown is open\n */\n open = false;\n\n /**\n * We need the actual input element to automatically focus on it\n */\n @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n /**\n * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n */\n @ViewChild(ClrDatagridFilter) filterContainer: ClrDatagridFilter<T>;\n\n labelValue = '';\n private initFilterValue: string;\n private subs: Subscription[] = [];\n\n constructor(\n filters: FiltersProvider<T>,\n private domAdapter: DomAdapter,\n public commonStrings: ClrCommonStringsService,\n private popoverService: ClrPopoverService,\n private elementRef: ElementRef<HTMLElement>,\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone\n ) {\n super(filters);\n }\n\n /**\n * Customizable filter logic based on a search text\n */\n @Input('clrDgStringFilter')\n set customStringFilter(\n value: ClrDatagridStringFilterInterface<T> | RegisteredFilter<T, DatagridStringFilterImpl<T>>\n ) {\n if (value instanceof RegisteredFilter) {\n this.setFilter(value);\n } else {\n this.setFilter(new DatagridStringFilterImpl(value));\n }\n if (this.initFilterValue) {\n this.value = this.initFilterValue;\n // This initFilterValue should be used only once after the filter registration\n // So deleting this property value to prevent it from being used again\n // if this customStringFilter property is set again\n delete this.initFilterValue;\n }\n }\n\n /**\n * Common setter for the input value\n */\n @Input('clrFilterValue')\n get value() {\n return this.filter.value;\n }\n set value(value: string) {\n if (this.filter && typeof value === 'string') {\n if (!value) {\n value = '';\n }\n if (value !== this.filter.value) {\n this.filter.value = value;\n this.filterValueChange.emit(value);\n }\n } else {\n this.initFilterValue = value;\n }\n }\n\n get placeholderValue() {\n return this.placeholder || this.commonStrings.keys.filterItems;\n }\n\n ngAfterViewInit() {\n this.subs.push(\n this.popoverService.openChange.subscribe(openChange => {\n this.open = openChange;\n // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n // running change detection.\n this.ngZone.runOutsideAngular(() => {\n // The animation frame in used because when this executes, the input isn't displayed.\n // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n // Animation tasks are executed within the next rendering frame.\n requestAnimationFrame(() => {\n this.domAdapter.focus(this.input.nativeElement);\n });\n });\n })\n );\n }\n\n ngOnChanges() {\n setTimeout(() => {\n this.setFilterLabel();\n this.cdr.markForCheck();\n });\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.subs.forEach(sub => sub.unsubscribe());\n }\n\n /**\n * This is not in a getter to prevent \"expression has changed after it was checked\" errors.\n */\n private setFilterLabel() {\n if (this.label) {\n this.labelValue = this.label;\n\n return;\n }\n\n const columnElement = this.elementRef.nativeElement?.closest('clr-dg-column');\n const columnTitleElement = columnElement?.querySelector('.datagrid-column-title');\n\n this.labelValue = this.commonStrings.parse(this.commonStrings.keys.datagridFilterLabel, {\n COLUMN: columnTitleElement?.textContent.trim() || '',\n });\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ClrPopoverHostDirective } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, HostWrapper } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { DatagridPropertyComparator } from './built-in/comparators/datagrid-property-comparator';\nimport { DatagridNumericFilterImpl } from './built-in/filters/datagrid-numeric-filter-impl';\nimport { DatagridPropertyNumericFilter } from './built-in/filters/datagrid-property-numeric-filter';\nimport { DatagridPropertyStringFilter } from './built-in/filters/datagrid-property-string-filter';\nimport { DatagridStringFilterImpl } from './built-in/filters/datagrid-string-filter-impl';\nimport { ClrDatagridAriaSortOrder, ClrDatagridSortOrder } from './enums/sort-order.enum';\nimport { ClrDatagridComparatorInterface } from './interfaces/comparator.interface';\nimport { ClrDatagridFilterInterface } from './interfaces/filter.interface';\nimport { CustomFilter } from './providers/custom-filter';\nimport { DetailService } from './providers/detail.service';\nimport { FiltersProvider } from './providers/filters';\nimport { Sort } from './providers/sort';\nimport { HIDDEN_COLUMN_CLASS } from './render/constants';\nimport { DatagridFilterRegistrar } from './utils/datagrid-filter-registrar';\nimport { WrappedColumn } from './wrapped-column';\n\n@Component({\n selector: 'clr-dg-column',\n template: `\n <div class=\"datagrid-column-flex\">\n @if (sortable) {\n <button class=\"datagrid-column-title\" (click)=\"sort()\" type=\"button\" #titleContainer>\n <ng-container *ngTemplateOutlet=\"columnTitle\"></ng-container>\n <cds-icon\n [shape]=\"sortDirection ? 'arrow' : 'two-way-arrows'\"\n [direction]=\"sortDirection ? sortDirection : 'left'\"\n aria-hidden=\"true\"\n class=\"sort-icon\"\n ></cds-icon>\n </button>\n }\n <!-- I'm really not happy with that select since it's not very scalable -->\n <ng-content select=\"clr-dg-filter, clr-dg-string-filter, clr-dg-numeric-filter\"></ng-content>\n\n @if (field && !customFilter && colType == 'string') {\n <clr-dg-string-filter\n [clrFilterPlaceholder]=\"filterStringPlaceholder\"\n [clrDgStringFilter]=\"registered\"\n [(clrFilterValue)]=\"filterValue\"\n ></clr-dg-string-filter>\n }\n @if (field && !customFilter && colType == 'number') {\n <clr-dg-numeric-filter\n [clrFilterMaxPlaceholder]=\"filterNumberMaxPlaceholder\"\n [clrFilterMinPlaceholder]=\"filterNumberMinPlaceholder\"\n [clrDgNumericFilter]=\"registered\"\n [(clrFilterValue)]=\"filterValue\"\n ></clr-dg-numeric-filter>\n }\n\n <ng-template #columnTitle>\n <ng-content></ng-content>\n </ng-template>\n\n @if (!sortable) {\n <span class=\"datagrid-column-title\" #titleContainer>\n <ng-container *ngTemplateOutlet=\"columnTitle\"></ng-container>\n </span>\n }\n @if (showSeparator) {\n <clr-dg-column-separator></clr-dg-column-separator>\n }\n </div>\n `,\n hostDirectives: [ClrPopoverHostDirective],\n host: {\n '[class.datagrid-column]': 'true',\n '[attr.aria-sort]': 'ariaSort',\n role: 'columnheader',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class ClrDatagridColumn<T = any>\n extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>>\n implements OnDestroy, OnInit, OnChanges\n{\n @Input('clrFilterStringPlaceholder') filterStringPlaceholder: string;\n @Input('clrFilterNumberMaxPlaceholder') filterNumberMaxPlaceholder: string;\n @Input('clrFilterNumberMinPlaceholder') filterNumberMinPlaceholder: string;\n @Input('clrDgDisableUnsort') disableUnsort = false;\n\n @Output('clrDgSortOrderChange') sortOrderChange = new EventEmitter<ClrDatagridSortOrder>();\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n @ViewChild('titleContainer', { read: ElementRef }) titleContainer: ElementRef<HTMLElement>;\n\n /**\n * A custom filter for this column that can be provided in the projected content\n */\n customFilter = false;\n\n /*\n * What type is this column? This defaults to STRING, but can also be\n * set to NUMBER. Unsupported types default to STRING. Users can set it\n * via the [clrDgColType] input by setting it to 'string' or 'number'.\n */\n private _colType: 'string' | 'number' = 'string';\n\n /*\n * Simple object property shortcut, activates both sorting and filtering\n * based on native comparison of the specified property on the items.\n */\n private _field: string;\n\n /**\n * ClrDatagridComparatorInterface to use when sorting the column\n */\n private _sortBy: ClrDatagridComparatorInterface<T>;\n\n /**\n * Indicates how the column is currently sorted\n */\n private _sortOrder: ClrDatagridSortOrder = ClrDatagridSortOrder.UNSORTED;\n\n private _sortDirection: 'up' | 'down' | null;\n\n // This property holds filter value temporarily while this.filter property is not yet registered\n // When this.filter is registered, this property value would be used update this.filter.value\n //\n private initFilterValue: string | [number, number];\n\n private wrappedInjector: Injector;\n\n /**\n * Subscription to the sort service changes\n */\n private subscriptions: Subscription[] = [];\n\n private _showSeparator = true;\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private _sort: Sort<T>,\n filters: FiltersProvider<T>,\n private vcr: ViewContainerRef,\n private detailService: DetailService,\n private changeDetectorRef: ChangeDetectorRef,\n private commonStrings: ClrCommonStringsService\n ) {\n super(filters);\n this.subscriptions.push(this.listenForSortingChanges());\n this.subscriptions.push(this.listenForDetailPaneChanges());\n }\n\n get isHidden() {\n return this.el.nativeElement.classList.contains(HIDDEN_COLUMN_CLASS);\n }\n\n get showSeparator() {\n return this._showSeparator;\n }\n set showSeparator(value: boolean) {\n this._showSeparator = value;\n this.changeDetectorRef.markForCheck();\n }\n\n // TODO: We might want to make this an enum in the future\n @Input('clrDgColType')\n get colType() {\n return this._colType;\n }\n set colType(value: 'string' | 'number') {\n this._colType = value;\n }\n\n @Input('clrDgField')\n get field() {\n return this._field;\n }\n set field(field: string) {\n if (typeof field === 'string') {\n this._field = field;\n\n if (!this._sortBy) {\n this._sortBy = new DatagridPropertyComparator(field);\n }\n }\n }\n\n @Input('clrDgSortBy')\n get sortBy() {\n return this._sortBy;\n }\n set sortBy(comparator: ClrDatagridComparatorInterface<T> | string) {\n if (typeof comparator === 'string') {\n this._sortBy = new DatagridPropertyComparator(comparator);\n } else if (comparator) {\n this._sortBy = comparator;\n } else if (this.field) {\n this._sortBy = new DatagridPropertyComparator(this.field);\n } else {\n delete this._sortBy;\n }\n }\n\n @Input('clrDgSortOrder')\n get sortOrder() {\n return this._sortOrder;\n }\n set sortOrder(value: ClrDatagridSortOrder) {\n if (typeof value === 'undefined') {\n return;\n }\n\n // only if the incoming order is different from the current one\n if (this._sortOrder === value) {\n return;\n }\n\n switch (value) {\n case ClrDatagridSortOrder.ASC:\n this.sort(false);\n break;\n case ClrDatagridSortOrder.DESC:\n this.sort(true);\n break;\n // the Unsorted case happens when the current state is neither Asc nor Desc\n case ClrDatagridSortOrder.UNSORTED:\n default:\n this._sort.clear();\n this._sortDirection = null;\n break;\n }\n }\n\n @Input('clrFilterValue')\n set updateFilterValue(newValue: string | [number, number]) {\n if (this.filter) {\n if (this.filter instanceof DatagridStringFilterImpl) {\n if (!newValue || typeof newValue !== 'string') {\n newValue = '';\n }\n if (newValue !== this.filter.value) {\n this.filter.value = newValue;\n }\n } else if (this.filter instanceof DatagridNumericFilterImpl) {\n if (!newValue || !(newValue instanceof Array)) {\n newValue = [null, null];\n }\n if (newValue.length === 2 && (newValue[0] !== this.filter.value[0] || newValue[1] !== this.filter.value[1])) {\n this.filter.value = newValue;\n }\n }\n } else {\n this.initFilterValue = newValue;\n }\n }\n\n @ContentChild(CustomFilter)\n set projectedFilter(custom: any) {\n if (custom) {\n this.deleteFilter();\n this.customFilter = true;\n }\n }\n\n /**\n * Indicates if the column is sortable\n */\n get sortable(): boolean {\n return !!this._sortBy;\n }\n\n get ariaSort(): ClrDatagridAriaSortOrder {\n switch (this._sortOrder) {\n case ClrDatagridSortOrder.ASC:\n return ClrDatagridAriaSortOrder.ASC;\n case ClrDatagridSortOrder.DESC:\n return ClrDatagridAriaSortOrder.DESC;\n case ClrDatagridSortOrder.UNSORTED:\n default:\n return ClrDatagridAriaSortOrder.UNSORTED;\n }\n }\n\n get sortDirection(): 'up' | 'down' | null {\n return this._sortDirection;\n }\n\n /**\n * @NOTE type `any` here is to let us pass templateStrictMode, because in our code we try to handle\n * two types of filters String and Number with the same variable but both of them work with different\n * format we got an error for casting. We could not cast anything inside the template so to not mess the\n * casting, the last type is set to `any`\n *\n * Orignial types: string | [number, number]\n */\n get filterValue() {\n if (this.filter instanceof DatagridStringFilterImpl || this.filter instanceof DatagridNumericFilterImpl) {\n return this.filter.value;\n }\n return null;\n }\n set filterValue(newValue: any) {\n if (this.filter instanceof DatagridStringFilterImpl || this.filter instanceof DatagridNumericFilterImpl) {\n this.updateFilterValue = newValue;\n this.filterValueChange.emit(this.filter.value);\n }\n }\n\n get _view() {\n return this.wrappedInjector.get(WrappedColumn, this.vcr).columnView;\n }\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedColumn, this.vcr);\n }\n\n ngAfterViewInit() {\n this.setFilterToggleAriaLabel();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (\n changes.colType &&\n changes.colType.currentValue &&\n changes.colType.currentValue !== changes.colType.previousValue\n ) {\n if (!this.customFilter && !this.filter && this.colType && this.field) {\n this.setupDefaultFilter(this.field, this.colType);\n }\n }\n if (changes.field && changes.field.currentValue && changes.field.currentValue !== changes.field.previousValue) {\n if (!this.customFilter && this.colType) {\n this.setupDefaultFilter(this.field, this.colType);\n }\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * Sorts the datagrid based on this column\n */\n sort(reverse?: boolean) {\n if (!this.sortable) {\n return;\n }\n\n if (!this.disableUnsort && reverse === undefined && this.sortOrder === ClrDatagridSortOrder.DESC) {\n this._sortOrder = ClrDatagridSortOrder.UNSORTED;\n this._sort.clear();\n this._sortDirection = null;\n this.sortOrderChange.emit(this._sortOrder);\n return;\n }\n\n this._sort.toggle(this._sortBy, reverse);\n\n // setting the private variable to not retrigger the setter logic\n this._sortOrder = this._sort.reverse ? ClrDatagridSortOrder.DESC : ClrDatagridSortOrder.ASC;\n // Sets the correct icon for current sort order\n this._sortDirection = this._sortOrder === ClrDatagridSortOrder.DESC ? 'down' : 'up';\n this.sortOrderChange.emit(this._sortOrder);\n }\n\n private listenForDetailPaneChanges() {\n return this.detailService.stateChange.subscribe(state => {\n if (this.showSeparator !== !state) {\n this.showSeparator = !state;\n }\n });\n }\n\n private setFilterToggleAriaLabel() {\n const filterToggle = this.el.nativeElement.querySelector('.datagrid-filter-toggle');\n if (filterToggle) {\n filterToggle.ariaLabel = this.commonStrings.parse(this.commonStrings.keys.datagridFilterAriaLabel, {\n COLUMN: this?.titleContainer?.nativeElement.textContent.trim().toLocaleLowerCase(),\n });\n }\n }\n\n private listenForSortingChanges() {\n return this._sort.change.subscribe(sort => {\n // Need to manually mark the component to be checked\n // for both activating and deactivating sorting\n this.changeDetectorRef.markForCheck();\n // We're only listening to make sure we emit an event when the column goes from sorted to unsorted\n if (this.sortOrder !== ClrDatagridSortOrder.UNSORTED && sort.comparator !== this._sortBy) {\n this._sortOrder = ClrDatagridSortOrder.UNSORTED;\n this.sortOrderChange.emit(this._sortOrder);\n this._sortDirection = null;\n }\n });\n }\n\n private setupDefaultFilter(field: string, colType: 'string' | 'number') {\n if (colType === 'number') {\n this.setFilter(new DatagridNumericFilterImpl(new DatagridPropertyNumericFilter(field)));\n } else if (colType === 'string') {\n this.setFilter(new DatagridStringFilterImpl(new DatagridPropertyStringFilter(field)));\n }\n if (this.filter && this.initFilterValue) {\n this.updateFilterValue = this.initFilterValue;\n // This initFilterValue should be used only once after the filter registration\n // So deleting this property value to prevent it from being used again\n // if this field property is set again\n delete this.initFilterValue;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { FiltersProvider } from './filters';\nimport { Page } from './page';\nimport { Sort } from './sort';\n\nexport type ClrDatagridItemsIdentityFunction<T> = (item: T) => any;\n\n@Injectable()\nexport class Items<T = any> {\n /**\n * Indicates if the data is currently loading\n */\n loading = false;\n\n /**\n * Subscriptions to the other providers changes.\n */\n private _filtersSub: Subscription;\n private _sortSub: Subscription;\n private _pageSub: Subscription;\n\n /**\n * Whether we should use smart items for this datagrid or let the user handle\n * everything.\n */\n private _smart = false;\n\n /**\n * List of all items in the datagrid\n */\n private _all: T[];\n\n /**\n * Internal temporary step, which we preserve to avoid re-filtering or re-sorting if not necessary\n */\n private _filtered: T[];\n\n /**\n * List of items currently displayed\n */\n private _displayed: T[] = [];\n\n /**\n * The Observable that lets other classes subscribe to items changes\n */\n private _change = new Subject<T[]>();\n\n private _allChanges = new Subject<T[]>();\n\n constructor(\n private _filters: FiltersProvider<T>,\n private _sort: Sort<T>,\n private _page: Page\n ) {}\n\n get smart(): boolean {\n return this._smart;\n }\n\n get all() {\n return this._all;\n }\n set all(items: T[]) {\n this._all = items;\n this.emitAllChanges(items);\n if (this.smart) {\n this._filterItems();\n } else {\n this._displayed = items;\n this.emitChange();\n }\n }\n\n get displayed(): T[] {\n // Ideally we could return an immutable array, but we don't have it in Clarity yet.\n return this._displayed;\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<T[]> {\n return this._change.asObservable();\n }\n\n get allChanges(): Observable<T[]> {\n return this._allChanges.asObservable();\n }\n\n /**\n * Checks if we don't have data to process yet, to abort early operations\n */\n private get uninitialized() {\n return !this._all;\n }\n\n /**\n * Tracking function to identify objects.\n */\n identifyBy: ClrDatagridItemsIdentityFunction<T> = item => item;\n\n /**\n * Cleans up our subscriptions to other providers\n */\n destroy() {\n if (this._filtersSub) {\n this._filtersSub.unsubscribe();\n }\n if (this._sortSub) {\n this._sortSub.unsubscribe();\n }\n if (this._pageSub) {\n this._pageSub.unsubscribe();\n }\n }\n\n smartenDown() {\n this._smart = false;\n\n this.destroy();\n }\n\n smartenUp() {\n this._smart = true;\n /*\n * These observers trigger a chain of function: filter -> sort -> paginate\n * An observer up the chain re-triggers all the operations that follow it.\n */\n this._filtersSub = this._filters.change.subscribe(() => this._filterItems());\n this._sortSub = this._sort.change.subscribe(() => {\n // Special case, if the datagrid went from sorted to unsorted, we have to re-filter\n // to get the original order back\n if (!this._sort.comparator) {\n this._filterItems();\n } else {\n this._sortItems();\n }\n });\n this._pageSub = this._page.change.subscribe(() => this._changePage());\n }\n\n /**\n * Manually recompute the list of displayed items\n */\n refresh() {\n if (this.smart) {\n this._filterItems();\n }\n }\n\n private emitChange() {\n this._change.next(this.displayed);\n }\n\n private emitAllChanges(items: T[]): void {\n this._allChanges.next(items);\n }\n\n /**\n * FiltersProvider items from the raw list\n */\n private _filterItems() {\n if (this.uninitialized) {\n return;\n }\n if (this._filters.hasActiveFilters()) {\n this._filtered = this._all.filter(item => this._filters.accepts(item));\n } else {\n // Work on a shallow copy of the array, to not modify the user's model\n this._filtered = this._all.slice();\n }\n this._page.totalItems = this._filtered.length;\n this._sortItems();\n }\n\n /**\n * Sorts items in the filtered list\n */\n private _sortItems() {\n if (this.uninitialized) {\n return;\n }\n if (this._sort.comparator) {\n this._filtered.sort((a, b) => this._sort.compare(a, b));\n }\n this._changePage();\n }\n\n /**\n * Extracts the current page from the sorted list\n */\n private _changePage() {\n // If we know we have pagination but the page size hasn't been set yet, we wait for it.\n if (this.uninitialized || (this._page.activated && this._page.size === 0)) {\n return;\n }\n if (this._page.size > 0) {\n this._displayed = this._filtered.slice(this._page.firstItem, this._page.lastItem + 1);\n } else {\n this._displayed = this._filtered;\n }\n this.emitChange();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { NgForOf, NgForOfContext } from '@angular/common';\nimport {\n Directive,\n DoCheck,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n TemplateRef,\n TrackByFunction,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Items } from './providers/items';\n\n@Directive({\n selector: '[clrDgItems][clrDgItemsOf]',\n standalone: false,\n})\nexport class ClrDatagridItems<T> implements DoCheck, OnDestroy {\n private iterableProxy: NgForOf<T>;\n private _rawItems: T[];\n private differ: IterableDiffer<T> | null = null;\n private subscriptions: Subscription[] = [];\n\n constructor(\n public template: TemplateRef<NgForOfContext<T>>,\n private differs: IterableDiffers,\n private items: Items,\n vcr: ViewContainerRef\n ) {\n items.smartenUp();\n this.iterableProxy = new NgForOf<T>(vcr, template, differs);\n this.subscriptions.push(\n items.change.subscribe(newItems => {\n this.iterableProxy.ngForOf = newItems;\n this.iterableProxy.ngDoCheck();\n })\n );\n }\n\n @Input('clrDgItemsOf')\n set rawItems(items: T[]) {\n this._rawItems = items ? items : []; // local copy for ngOnChange diffing\n }\n\n @Input('clrDgItemsTrackBy')\n set trackBy(value: TrackByFunction<T>) {\n this.iterableProxy.ngForTrackBy = value;\n }\n\n /**\n * Asserts the correct type of the template context that the directive will render.\n * See https://angular.io/guide/structural-directives#typing-the-directives-context\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard<T>(_dir: ClrDatagridItems<T>, _ctx: unknown): _ctx is NgForOfContext<T> {\n return true;\n }\n\n ngDoCheck() {\n if (!this.differ) {\n this.differ = this.differs.find(this._rawItems).create(this.iterableProxy.ngForTrackBy);\n }\n if (this.differ) {\n const changes = this.differ.diff(this._rawItems);\n if (changes) {\n // TODO: not very efficient right now,\n // but premature optimization is the root of all evil.\n this.items.all = this._rawItems;\n }\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Component } from '@angular/core';\n\nimport { Items } from './providers/items';\n\n@Component({\n selector: 'clr-dg-placeholder',\n template: `\n <div class=\"datagrid-placeholder\" [class.datagrid-empty]=\"emptyDatagrid\">\n @if (emptyDatagrid) {\n <div class=\"datagrid-placeholder-image\"></div>\n }\n <span class=\"datagrid-placeholder-content\">\n @if (emptyDatagrid) {\n <ng-content></ng-content>\n }\n </span>\n </div>\n `,\n host: { '[class.datagrid-placeholder-container]': 'true' },\n standalone: false,\n})\nexport class ClrDatagridPlaceholder<T = any> {\n constructor(private items: Items<T>) {}\n\n /**\n * Tests if the datagrid is empty, meaning it doesn't contain any items\n */\n get emptyDatagrid() {\n return !this.items.loading && (!this.items.displayed || this.items.displayed.length === 0);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'dg-wrapped-cell',\n template: `\n <ng-template #cellPortal>\n <ng-content></ng-content>\n </ng-template>\n `,\n standalone: false,\n})\nexport class WrappedCell implements AfterViewInit, OnDestroy {\n @ViewChild('cellPortal') templateRef: TemplateRef<void>;\n cellView: EmbeddedViewRef<void>; // the cells projected view\n\n ngAfterViewInit() {\n this.cellView = this.templateRef.createEmbeddedView(null);\n }\n\n ngOnDestroy() {\n this.cellView.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Component, ContentChildren, Injector, OnInit, QueryList, ViewContainerRef } from '@angular/core';\nimport { ClrSignpost } from '@clr/angular/popover/signpost';\nimport { HostWrapper } from '@clr/angular/utils';\n\nimport { WrappedCell } from './wrapped-cell';\n\n@Component({\n selector: 'clr-dg-cell',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.datagrid-cell]': 'true',\n '[class.datagrid-signpost-trigger]': 'signpost.length > 0',\n role: 'gridcell',\n },\n standalone: false,\n})\nexport class ClrDatagridCell implements OnInit {\n /*********\n * @property signpost\n *\n * @description\n * @ContentChild is used to detect the presence of a Signpost in the projected content.\n * On the host, we set the .datagrid-signpost-trigger class on the cell when signpost.length is greater than 0.\n *\n */\n @ContentChildren(ClrSignpost) signpost: QueryList<ClrSignpost>;\n\n private wrappedInjector: Injector;\n\n constructor(private vcr: ViewContainerRef) {}\n\n get _view() {\n return this.wrappedInjector.get(WrappedCell, this.vcr).cellView;\n }\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedCell, this.vcr);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { ClrLoadingState, IfExpandService } from '@clr/angular/utils';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nlet nbRow = 0;\n\n@Injectable()\nexport class DatagridIfExpandService extends IfExpandService {\n expandableId = '';\n\n private _replace = new BehaviorSubject(false);\n private _animate = new Subject<void>();\n\n constructor() {\n super();\n nbRow++;\n this.expandableId = 'clr-dg-expandable-row-' + nbRow;\n }\n // due to the es5 spec if the set is overridden on base class the getter must also be overridden\n override get expanded(): boolean {\n return this._expanded;\n }\n override set expanded(value: boolean) {\n value = !!value;\n if (value !== this._expanded) {\n this._expanded = value;\n this._animate.next();\n this._expandChange.next(value);\n }\n }\n\n get replace(): Observable<boolean> {\n return this._replace.asObservable();\n }\n\n get animate(): Observable<void> {\n return this._animate.asObservable();\n }\n\n override loadingStateChange(state: ClrLoadingState) {\n super.loadingStateChange(state);\n if (state !== ClrLoadingState.LOADING) {\n this._animate.next();\n }\n }\n\n setReplace(replaceValue: boolean) {\n this._replace.next(replaceValue);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport enum DatagridDisplayMode {\n DISPLAY,\n CALCULATE,\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport enum SelectionType {\n /**\n * User cannot select any row in the Datagrid\n */\n None = 'none',\n\n /**\n * User can select only one row at a time in the Datagrid.\n */\n Single = 'single',\n\n /**\n * User can select any number of rows in the Datagrid.\n */\n Multi = 'multi',\n}\n\nconst SELECTION_TYPE_VALUES = new Set<string>(Object.values(SelectionType));\n\nexport function selectionTypeAttribute(value: SelectionType | string): SelectionType {\n if (SELECTION_TYPE_VALUES.has(value as string)) {\n return value as SelectionType;\n }\n throw new Error(`Invalid SelectionType: \"${value}\". Expected one of: ${[...SELECTION_TYPE_VALUES].join(', ')}`);\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'dg-wrapped-row',\n template: `\n <ng-template #rowPortal>\n <ng-content></ng-content>\n </ng-template>\n `,\n standalone: false,\n})\nexport class WrappedRow implements AfterViewInit, OnDestroy {\n @ViewChild('rowPortal') templateRef: TemplateRef<void>;\n rowView: EmbeddedViewRef<void>; // the rows projected view (in memory)\n\n ngAfterViewInit() {\n // Create the cells view in memory, not the DOM.\n this.rowView = this.templateRef.createEmbeddedView(null);\n }\n\n ngOnDestroy() {\n this.rowView.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable, IterableDiffer, IterableDiffers, TrackByFunction } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, delay } from 'rxjs/operators';\n\nimport { FiltersProvider } from './filters';\nimport { ClrDatagridItemsIdentityFunction, Items } from './items';\nimport { SelectionType } from '../enums/selection-type';\n\nlet nbSelection = 0;\n\n@Injectable()\nexport class Selection<T = any> {\n id: string;\n preserveSelection = false;\n\n /**\n * Last selection, for use in range selection.\n */\n rangeStart: T;\n\n /**\n * Shift key state, for use in range selection.\n */\n shiftPressed = false;\n\n /** @deprecated since 2.0, remove in 3.0 */\n rowSelectionMode = false;\n\n private lockedRefs: T[] = []; // Ref of locked items\n private _currentSelectionRefs: T[] = [];\n private valueCollector = new Subject<T[]>();\n private _selectionType: SelectionType = SelectionType.None;\n\n /**\n * The current selection\n */\n private _current: T[];\n\n /**\n * The Observable that lets other classes subscribe to selection changes\n */\n private _change = new Subject<T[]>();\n\n /**\n * Subscriptions to the other providers changes.\n */\n private subscriptions: Subscription[] = [];\n\n /**\n * Differ to track changes of multi selection.\n */\n private _differ!: IterableDiffer<T>;\n private identifyBy: ClrDatagridItemsIdentityFunction<T>;\n\n constructor(\n private _items: Items<T>,\n filters: FiltersProvider<T>,\n differs: IterableDiffers\n ) {\n this.id = 'clr-dg-selection' + nbSelection++;\n this.identifyBy = _items.identifyBy;\n this._differ = differs.find(this._current || []).create<T>(this.identifyBy as TrackByFunction<T>);\n\n this.subscriptions.push(\n filters.change.subscribe(() => {\n if (!this.selectable || this.preserveSelection) {\n return;\n }\n this.clearSelection();\n })\n );\n\n this.subscriptions.push(\n _items.allChanges.pipe(delay(0)).subscribe(updatedItems => {\n // Reset the lockedRefs;\n const updateLockedRef: T[] = [];\n\n switch (this.selectionType) {\n case SelectionType.None: {\n break;\n }\n\n case SelectionType.Single: {\n let newSingle: any;\n let selectionUpdated = false;\n\n updatedItems.forEach(item => {\n if (item === null || item === undefined) {\n // Virtual scroll may emit a dense array of undefined slot placeholders. Those must\n // never match the empty single-selection ref (see virtual-scroll + Single).\n return;\n }\n const ref = _items.identifyBy(item);\n // If one of the updated items is the previously selectedSingle, set it as the new one\n if (this.currentSelectionRefs[0] === ref) {\n newSingle = item;\n selectionUpdated = true;\n }\n if (this.lockedRefs.indexOf(ref) > -1) {\n updateLockedRef.push(ref);\n }\n });\n\n if (selectionUpdated) {\n this.current = [newSingle];\n }\n break;\n }\n\n case SelectionType.Multi: {\n let leftOver: any[] = this.current.slice();\n let selectionUpdated = false;\n\n // Duplicate loop, when the issue is issue#2342 is revisited keep in mind that\n // we need to go over every updated item and check to see if there are valid to be\n // locked or not and update it. When only add items that are found in the lockedRefs back.\n //\n // The both loops below that goes over updatedItems could be combined into one.\n updatedItems.forEach(item => {\n if (item === null || item === undefined) {\n return;\n }\n const ref = _items.identifyBy(item);\n if (this.lockedRefs.indexOf(ref) > -1) {\n updateLockedRef.push(ref);\n }\n });\n\n // TODO: revisit this when we work on https://github.com/vmware/clarity/issues/2342\n // currently, the selection is cleared when filter is applied, so the logic inside\n // the if statement below results in broken behavior.\n if (leftOver.length > 0) {\n updatedItems.forEach(item => {\n if (item === null || item === undefined) {\n return;\n }\n const ref = _items.identifyBy(item);\n // Look in current selected refs array if item is selected, and update actual value\n const selectedIndex = this.currentSelectionRefs.indexOf(ref);\n if (selectedIndex > -1) {\n leftOver[selectedIndex] = item;\n selectionUpdated = true;\n }\n });\n\n // Filter out any unmatched items if we're using smart datagrids where we expect all items to be\n // present\n if (_items.smart) {\n leftOver = leftOver.filter(selected => updatedItems.indexOf(selected) > -1);\n if (this.current.length !== leftOver.length) {\n selectionUpdated = true;\n }\n }\n\n if (selectionUpdated) {\n this.current = leftOver;\n }\n }\n break;\n }\n\n default: {\n break;\n }\n }\n // Sync locked items\n this.lockedRefs = updateLockedRef;\n })\n );\n\n this.subscriptions.push(this.valueCollector.pipe(debounceTime(0)).subscribe(() => this.emitChange()));\n }\n\n get selectionType(): SelectionType {\n return this._selectionType;\n }\n set selectionType(value: SelectionType) {\n if (value === this.selectionType) {\n return;\n }\n\n this._selectionType = value ?? SelectionType.None;\n\n if (!this._current && this._selectionType !== SelectionType.None) {\n this._current = [];\n }\n }\n\n get current(): T[] {\n return this._current;\n }\n set current(value: T[]) {\n this.updateCurrent(value, true);\n this.updateCurrentSelectionRefs();\n }\n\n get currentSingle(): T {\n return this._current?.length ? this._current[0] : undefined;\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<T[]> {\n return this._change.asObservable();\n }\n\n get selectable(): boolean {\n return this._selectionType !== SelectionType.None;\n }\n\n // Refs of currently selected items\n private get currentSelectionRefs(): T[] {\n return this._currentSelectionRefs;\n }\n\n checkForChanges(): void {\n const changes = this._differ.diff(this._current);\n // @TODO move the identifyBy from items to selection as it's used only here and is not needed in items\n if (this.identifyBy !== this._items.identifyBy) {\n this.identifyBy = this._items.identifyBy;\n }\n if (changes) {\n this.updateCurrentSelectionRefs();\n }\n }\n\n clearSelection(): void {\n this._current = [];\n this._currentSelectionRefs = [];\n this.emitChange();\n }\n\n /**\n * Cleans up our subscriptions to other providers\n */\n destroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n updateCurrent(value: T[], emit: boolean) {\n this._current = value;\n if (emit) {\n this.valueCollector.next(value);\n }\n }\n\n /**\n * Checks if an item is currently selected\n */\n isSelected(item: T): boolean {\n const refIndex = this.currentSelectionRefs.indexOf(this._items.identifyBy(item));\n if (this._selectionType === SelectionType.Single) {\n return refIndex === 0;\n } else if (this._selectionType === SelectionType.Multi) {\n return refIndex >= 0;\n }\n\n return false;\n }\n\n /**\n * Selects or deselects an item\n */\n setSelected(item: T, selected: boolean) {\n const ref = this._items.identifyBy(item);\n const index = this.currentSelectionRefs ? this.currentSelectionRefs.indexOf(ref) : -1;\n\n switch (this._selectionType) {\n case SelectionType.None:\n break;\n case SelectionType.Single:\n if (selected) {\n this.current = [item];\n }\n // in single selection, set currentSingle method should be used\n break;\n case SelectionType.Multi:\n if (index >= 0 && !selected) {\n this.deselectItem(index);\n } else if (index < 0 && selected) {\n this.selectItem(item);\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * Checks if all currently displayed items are selected\n */\n isAllSelected(): boolean {\n if (this._selectionType !== SelectionType.Multi || !this._items.displayed) {\n return false;\n }\n // make sure to exclude the locked items from the list when counting\n const displayedItems: T[] = this._items.displayed.filter(item => {\n return this.isLocked(item) === false;\n });\n\n const nbDisplayed = displayedItems.length;\n if (nbDisplayed < 1) {\n return false;\n }\n const temp: T[] = displayedItems.filter(item => {\n const ref = this._items.identifyBy(item);\n return this.currentSelectionRefs.indexOf(ref) > -1;\n });\n return temp.length === displayedItems.length;\n }\n\n /**\n * Lock and unlock item\n */\n lockItem(item: T, lock: boolean) {\n if (this.canItBeLocked()) {\n const ref = this._items.identifyBy(item);\n if (lock === true) {\n // Add to lockedRef\n this.lockedRefs.push(ref);\n } else {\n // Remove from lockedRef\n this.lockedRefs = this.lockedRefs.filter(lockedItem => ref !== lockedItem);\n }\n }\n }\n\n /**\n * Check is item locked or not by searching into lockedRefs for entry\n */\n isLocked(item: T): boolean {\n /**\n * The check for selectionType will boost the performance by NOT searching\n * into the array when there is no need for that.\n */\n if (this.canItBeLocked()) {\n const ref = this._items.identifyBy(item);\n return this.lockedRefs.indexOf(ref) > -1;\n }\n\n return false;\n }\n\n /**\n * Selects or deselects all currently displayed items\n */\n toggleAll() {\n if (this._selectionType === SelectionType.None || this._selectionType === SelectionType.Single) {\n return;\n }\n /**\n * If every currently displayed item is already selected, we clear them.\n * If at least one item isn't selected, we select every currently displayed item.\n */\n if (this.isAllSelected()) {\n this._items.displayed.forEach(item => {\n const ref = this._items.identifyBy(item);\n const currentIndex = this.currentSelectionRefs.indexOf(ref);\n if (currentIndex > -1 && this.isLocked(item) === false) {\n this.deselectItem(currentIndex);\n }\n });\n } else {\n this._items.displayed.forEach(item => {\n if (!this.isSelected(item) && this.isLocked(item) === false) {\n this.selectItem(item);\n }\n });\n }\n }\n\n /**\n * Selects an item\n */\n private selectItem(item: T): void {\n this.current = this.current.concat(item);\n }\n\n /**\n * Deselects an item\n */\n private deselectItem(indexOfItem: number): void {\n this.current = this.current.slice(0, indexOfItem).concat(this.current.slice(indexOfItem + 1));\n if (indexOfItem < this.currentSelectionRefs.length) {\n // Keep selected refs array in sync\n const removedItems = this.currentSelectionRefs[indexOfItem];\n // locked reference is no longer needed (if any)\n this.lockedRefs = this.lockedRefs.filter(locked => locked !== removedItems[0]);\n }\n }\n\n /**\n * Make sure that it could be locked\n */\n private canItBeLocked(): boolean {\n return this._selectionType !== SelectionType.None;\n }\n\n private emitChange() {\n this._change.next(this.current);\n }\n\n private updateCurrentSelectionRefs() {\n this._currentSelectionRefs = this._current?.map(item => this._items.identifyBy(item)) || [];\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class RowActionService {\n private actionableCount = 0;\n\n /**\n * false means no rows with action\n */\n get hasActionableRow(): boolean {\n return this.actionableCount > 0;\n }\n\n register() {\n this.actionableCount++;\n }\n\n unregister() {\n this.actionableCount--;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\n\nimport { DetailService } from './detail.service';\n\n@Injectable()\nexport class ExpandableRowsCount {\n private expandableCount = 0;\n\n constructor(private detailService: DetailService) {}\n\n /**\n * false means no rows with action\n * check if details are on, and disable rows entirely\n */\n get hasExpandableRow(): boolean {\n return !this.detailService.enabled && this.expandableCount > 0;\n }\n\n register() {\n this.expandableCount++;\n }\n\n unregister() {\n this.expandableCount--;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { DatagridDisplayMode } from '../enums/display-mode.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { DatagridRenderOrganizer } from '../render/render-organizer';\n\n@Injectable()\nexport class DisplayModeService implements OnDestroy {\n protected _view = new BehaviorSubject(DatagridDisplayMode.DISPLAY);\n\n private subscriptions: Subscription[] = [];\n\n constructor(renderOrganizer: DatagridRenderOrganizer) {\n this.subscriptions.push(\n renderOrganizer\n .filterRenderSteps(DatagridRenderStep.CALCULATE_MODE_ON)\n .subscribe(() => this._view.next(DatagridDisplayMode.CALCULATE))\n );\n\n this.subscriptions.push(\n renderOrganizer\n .filterRenderSteps(DatagridRenderStep.CALCULATE_MODE_OFF)\n .subscribe(() => this._view.next(DatagridDisplayMode.DISPLAY))\n );\n }\n\n get view(): Observable<DatagridDisplayMode> {\n return this._view.asObservable();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Directive, ElementRef, forwardRef, Input, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: 'input[type=radio][clrDgSingleSelectionRadio]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ClrDatagridSingleSelectionValueAccessor),\n multi: true,\n },\n ],\n host: {\n '(change)': 'onChange(value)',\n '(blur)': 'onTouched()',\n },\n})\nexport class ClrDatagridSingleSelectionValueAccessor implements ControlValueAccessor {\n @Input() value;\n @Input() clrDgIdentityFn!: (value: any) => unknown;\n\n private state: any;\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef<HTMLInputElement>\n ) {}\n\n onChange: (value: any) => void = () => {};\n\n onTouched: () => void = () => {};\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n }\n\n writeValue(value: any): void {\n this.state = value;\n this.updateChecked();\n }\n\n private keyOf(value: any): unknown {\n if (value && this.clrDgIdentityFn) {\n return this.clrDgIdentityFn(value);\n }\n return value;\n }\n\n private updateChecked(): void {\n // Never mark the radio as checked when there is no real selection (state is null/undefined)\n // or the row item itself is a virtual-scroll placeholder slot (value is null/undefined).\n // Otherwise keyOf(undefined) === keyOf(undefined) would falsely check the radio.\n if (this.state === null || this.state === undefined || this.value === null || this.value === undefined) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', false);\n return;\n }\n const state = this.keyOf(this.state);\n const value = this.keyOf(this.value);\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', state === value);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Directive, HostListener } from '@angular/core';\n\nimport { Selection } from './providers/selection';\n\n@Directive({\n selector: '.datagrid-select',\n standalone: false,\n})\nexport class ClrDatagridSelectionCellDirective {\n constructor(private readonly selection: Selection) {}\n\n @HostListener('click', ['$event'])\n private onSelectionCellClick(event: MouseEvent & { target: HTMLElement }) {\n // We want to effectively expand the selection click target to the entire selection cell.\n\n // If row selection is enabled, do nothing because the entire selection cell is already clickable.\n if (this.selection.rowSelectionMode) {\n return;\n }\n\n // If click was outside the label/input, forward the click to the input.\n if (event.target.tagName !== 'LABEL' && event.target.tagName !== 'INPUT') {\n event.target.querySelector('input')?.click();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n DOCUMENT,\n ElementRef,\n EventEmitter,\n Inject,\n Injector,\n Input,\n Output,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ClrCommonStringsService,\n ClrExpandableAnimationDirective,\n HostWrapper,\n IfExpandService,\n LoadingListener,\n} from '@clr/angular/utils';\nimport { combineLatest, ReplaySubject, Subscription } from 'rxjs';\n\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { DatagridDisplayMode } from './enums/display-mode.enum';\nimport { SelectionType } from './enums/selection-type';\nimport { DetailService } from './providers/detail.service';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { Items } from './providers/items';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { WrappedRow } from './wrapped-row';\n\nlet nbRow = 0;\n\n@Component({\n selector: 'clr-dg-row',\n templateUrl: './datagrid-row.html',\n host: {\n '[class.datagrid-row]': 'true',\n '[class.datagrid-row-skeleton]': 'skeletonLoading',\n '[class.datagrid-selected]': 'selected',\n '[attr.aria-owns]': 'id',\n role: 'rowgroup',\n },\n providers: [\n DatagridIfExpandService,\n { provide: IfExpandService, useExisting: DatagridIfExpandService },\n { provide: LoadingListener, useExisting: DatagridIfExpandService },\n ],\n standalone: false,\n})\nexport class ClrDatagridRow<T = any> implements AfterContentInit, AfterViewInit {\n @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<boolean>(false);\n @Output('clrDgExpandedChange') expandedChange = new EventEmitter<boolean>(false);\n @Input('clrDgDetailDisabled') detailDisabled = false;\n @Input('clrDgDetailHidden') detailHidden = false;\n @Input('clrDgSkeletonLoading') skeletonLoading = false;\n\n id: string;\n radioId: string;\n checkboxId: string;\n expandableId: string;\n replaced: boolean;\n displayCells = false;\n expandAnimationTrigger = false;\n\n /* reference to the enum so that template can access */\n SELECTION_TYPE = SelectionType;\n\n /**\n * @internal\n */\n itemChanges = new ReplaySubject<T>(1);\n\n /*****\n * property dgCells\n *\n * @description\n * A Query List of the ClrDatagrid cells in this row.\n *\n */\n @ContentChildren(ClrDatagridCell) dgCells: QueryList<ClrDatagridCell>;\n\n @ViewChild(ClrExpandableAnimationDirective) expandAnimation: ClrExpandableAnimationDirective;\n @ViewChild('detailButton') detailButton: ElementRef<HTMLButtonElement>;\n @ViewChild('stickyCells', { read: ViewContainerRef }) _stickyCells: ViewContainerRef;\n @ViewChild('scrollableCells', { read: ViewContainerRef }) _scrollableCells: ViewContainerRef;\n @ViewChild('calculatedCells', { read: ViewContainerRef }) _calculatedCells: ViewContainerRef;\n @ViewChild('fixedCellTemplate') _fixedCellTemplate: TemplateRef<any>;\n\n private _item: T;\n private _selected = false;\n private _detailOpenLabel = '';\n private _detailCloseLabel = '';\n private _rowSelectionLabel = '';\n private wrappedInjector: Injector;\n private subscriptions: Subscription[] = [];\n\n // By default, every item is selectable; it becomes not selectable only if it's explicitly set to false\n private _selectable: boolean | string = true;\n\n constructor(\n public selection: Selection<T>,\n public rowActionService: RowActionService,\n public globalExpandable: ExpandableRowsCount,\n public expand: DatagridIfExpandService,\n public detailService: DetailService,\n private displayMode: DisplayModeService,\n private vcr: ViewContainerRef,\n renderer: Renderer2,\n public el: ElementRef<HTMLElement>,\n public commonStrings: ClrCommonStringsService,\n private items: Items,\n @Inject(DOCUMENT) private document: any\n ) {\n nbRow++;\n this.id = 'clr-dg-row' + nbRow;\n this.radioId = 'clr-dg-row-rd' + nbRow;\n this.checkboxId = 'clr-dg-row-cb' + nbRow;\n this.expandableId = expand.expandableId;\n\n this.subscriptions.push(\n combineLatest(expand.replace, expand.expandChange).subscribe(([expandReplaceValue, expandChangeValue]) => {\n if (expandReplaceValue && expandChangeValue) {\n // replaced and expanding\n this.replaced = true;\n renderer.addClass(el.nativeElement, 'datagrid-row-replaced');\n } else {\n this.replaced = false;\n // Handles these cases: not replaced and collapsing & replaced and\n // collapsing and not replaced and expanding.\n renderer.removeClass(el.nativeElement, 'datagrid-row-replaced');\n }\n })\n );\n }\n\n /**\n * Model of the row, to use for selection\n */\n @Input('clrDgItem')\n get item(): T {\n return this._item;\n }\n set item(item: T) {\n this._item = item;\n this.itemChanges.next(item);\n this.clrDgSelectable = this._selectable;\n }\n\n @Input('clrDgSelectable')\n get clrDgSelectable() {\n return !this.selection.isLocked(this.item);\n }\n set clrDgSelectable(value: boolean | string) {\n if (this.item) {\n this.selection.lockItem(this.item, value === 'false' || value === false);\n }\n // Store this value locally, to be initialized when item is initialized\n this._selectable = value;\n }\n\n /**\n * Indicates if the row is selected\n */\n @Input('clrDgSelected')\n get selected() {\n if (this.selection.selectionType === SelectionType.None) {\n return this._selected;\n } else {\n return this.selection.isSelected(this.item);\n }\n }\n set selected(value: boolean | string) {\n if (this.selection.selectionType === SelectionType.None) {\n this._selected = value as boolean;\n } else {\n if (value && this.selection.selectionType === SelectionType.Multi) {\n this.rangeSelect();\n } else {\n this.selection.rangeStart = null;\n }\n this.selection.setSelected(this.item, value as boolean);\n }\n }\n\n @Input('clrDgExpanded')\n get expanded() {\n return this.expand.expanded;\n }\n set expanded(value: boolean | string) {\n this.expand.expanded = value as boolean;\n }\n\n @Input()\n get clrDgDetailOpenLabel(): string {\n return this._detailOpenLabel ? this._detailOpenLabel : this.commonStrings.keys.open;\n }\n set clrDgDetailOpenLabel(label: string) {\n this._detailOpenLabel = label;\n }\n\n @Input()\n get clrDgDetailCloseLabel(): string {\n return this._detailCloseLabel ? this._detailCloseLabel : this.commonStrings.keys.close;\n }\n set clrDgDetailCloseLabel(label: string) {\n this._detailCloseLabel = label;\n }\n\n // CDE-151: Rename this field to clrDgRowSelectionLabel in v16\n @Input()\n get clrDgRowSelectionLabel(): string {\n return this._rowSelectionLabel ? this._rowSelectionLabel : this.commonStrings.keys.select;\n }\n set clrDgRowSelectionLabel(label: string) {\n this._rowSelectionLabel = label;\n }\n\n get _view() {\n return this.wrappedInjector.get(WrappedRow, this.vcr).rowView;\n }\n\n get identifyBy() {\n return this.items.identifyBy;\n }\n\n openDetails(event: MouseEvent, detailButton: HTMLButtonElement) {\n event.stopPropagation();\n\n this.detailService.toggle(this.item, detailButton);\n }\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedRow, this.vcr);\n this.selection.lockItem(this.item, this.clrDgSelectable === false);\n }\n\n ngAfterContentInit() {\n this.dgCells.changes.subscribe(() => {\n this.dgCells.forEach(cell => {\n if (!cell._view.destroyed) {\n this._scrollableCells.insert(cell._view);\n }\n });\n });\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(\n this.displayMode.view.subscribe(viewChange => {\n // Listen for view changes and move cells around depending on the current displayType\n // remove cell views from display view\n for (let i = this._scrollableCells.length; i > 0; i--) {\n this._scrollableCells.detach();\n }\n // remove cell views from calculated view\n for (let i = this._calculatedCells.length; i > 0; i--) {\n this._calculatedCells.detach();\n }\n if (viewChange === DatagridDisplayMode.CALCULATE) {\n this.displayCells = false;\n // Inserts a fixed cell if any of these conditions are true.\n const fixedCellConditions = [\n this.selection.selectionType !== this.SELECTION_TYPE.None,\n this.rowActionService.hasActionableRow,\n this.globalExpandable.hasExpandableRow,\n this.detailService.enabled,\n ];\n fixedCellConditions\n .filter(Boolean)\n .forEach(() => this._calculatedCells.insert(this._fixedCellTemplate.createEmbeddedView(null)));\n this.dgCells.forEach(cell => {\n if (!cell._view.destroyed) {\n this._calculatedCells.insert(cell._view);\n }\n });\n } else {\n this.displayCells = true;\n this.dgCells.forEach(cell => {\n if (!cell._view.destroyed) {\n this._scrollableCells.insert(cell._view);\n }\n });\n }\n }),\n this.expand.animate.subscribe(() => {\n this.expandAnimationTrigger = !this.expandAnimationTrigger;\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n toggle(selected = !this.selected) {\n if (selected !== this.selected) {\n this.selected = selected;\n this.selectedChanged.emit(selected);\n }\n }\n\n toggleExpand(event: MouseEvent) {\n event.stopPropagation();\n\n if (this.expand.expandable) {\n this.expandAnimation.updateStartHeight();\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n }\n\n /**\n * The default behavior in Chrome and Firefox for shift-clicking on a label is to perform text-selection.\n * This prevents our intended range-selection, because this text-selection overrides our shift-click event.\n * We need to clear the stored selection range when shift-clicking. This will override the mostly unused shift-click\n * selection browser functionality, which is inconsistently implemented in browsers anyway.\n */\n clearRanges(event: MouseEvent) {\n if (this.selection.rowSelectionMode && event.shiftKey) {\n this.document.getSelection().removeAllRanges();\n // Firefox is too persistent about its text-selection behaviour. So we need to add a preventDefault();\n // We should not try to enforce this on the other browsers, though, because their toggle cycle does not get canceled by\n // the preventDefault() and they toggle the checkbox second time, effectively retrurning it to not-selected.\n if (window.navigator.userAgent.indexOf('Firefox') !== -1) {\n event.preventDefault();\n this.toggle(true);\n }\n }\n }\n\n /**\n * @deprecated related to clrDgRowSelection, which is deprecated\n */\n protected selectRow(selected = !this.selected, $event) {\n // The label also captures clicks that bubble up to the row event listener, causing\n // this handler to run twice. This exits early to prevent toggling the checkbox twice.\n if (!this.selection.rowSelectionMode || $event.target.tagName === 'LABEL' || !this._selectable) {\n return;\n }\n if (this.selection.selectionType === this.SELECTION_TYPE.Single) {\n this.selection.current = [this.item];\n } else {\n this.toggle(selected);\n }\n }\n\n private rangeSelect() {\n const items = this.items.displayed;\n if (!items) {\n return;\n }\n const startIx = items.indexOf(this.selection.rangeStart);\n if (\n this.selection.rangeStart &&\n this.selection.current.includes(this.selection.rangeStart) &&\n this.selection.shiftPressed &&\n startIx !== -1\n ) {\n const endIx = items.indexOf(this.item);\n // Using Set to remove duplicates\n const newSelection = new Set(\n this.selection.current.concat(items.slice(Math.min(startIx, endIx), Math.max(startIx, endIx) + 1))\n );\n this.selection.current = [...newSelection];\n } else {\n // page number has changed or\n // no Shift was pressed or\n // rangeStart not yet set\n this.selection.rangeStart = this.item;\n }\n }\n}\n","<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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<div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [clrExpandableAnimation]=\"expandAnimationTrigger\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\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 @if (selection.selectionType === SELECTION_TYPE.Multi) {\n <div\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 tabindex=\"-1\"\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 />\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\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n </label>\n </div>\n </div>\n } @if (selection.selectionType === SELECTION_TYPE.Single) {\n <div\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n tabindex=\"-1\"\n type=\"radio\"\n clrRadio\n clrDgSingleSelectionRadio\n [clrDgIdentityFn]=\"identifyBy\"\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [ngModel]=\"selection.currentSingle\"\n (ngModelChange)=\"selection.current = [$event]\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n } @if (rowActionService.hasActionableRow) {\n <div class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n } @if (globalExpandable.hasExpandableRow) {\n <div class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (expand.expandable) { @if (!expand.loading) {\n <button\n tabindex=\"-1\"\n (click)=\"toggleExpand($event)\"\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]=\"expand.hasExpandTemplate && !expand.expanded ? null : expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n } @if (expand.loading) {\n <clr-spinner clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n } }\n </div>\n } @if (detailService.enabled) {\n <div class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n @if (!detailHidden) {\n <button\n tabindex=\"-1\"\n (click)=\"openDetails($event, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [disabled]=\"detailDisabled\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [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 }\n </div>\n }\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 @if (replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n } @if (!replaced && !expand.loading) {\n <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n }\n </div>\n</div>\n<!--\nWe need the \"project into template\" hacks because we need this in 2 different places\ndepending 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-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ListRange } from '@angular/cdk/collections';\nimport {\n CDK_VIRTUAL_SCROLL_VIEWPORT,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualForOfContext,\n CdkVirtualScrollable,\n CdkVirtualScrollableElement,\n CdkVirtualScrollViewport,\n FixedSizeVirtualScrollStrategy,\n ScrollDispatcher,\n ViewportRuler,\n VIRTUAL_SCROLL_STRATEGY,\n VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n DoCheck,\n ElementRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n EventEmitter,\n forwardRef,\n Inject,\n inject,\n Injector,\n Input,\n IterableDiffers,\n NgZone,\n OnDestroy,\n Output,\n Renderer2,\n runInInjectionContext,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagrid } from './datagrid';\nimport { ClrDatagridVirtualScrollRangeInterface } from './interfaces/virtual-scroll-data-range.interface';\nimport { Items } from './providers/items';\n\ntype CdkVirtualForInputKey =\n | 'cdkVirtualForOf'\n | 'cdkVirtualForTrackBy'\n | 'cdkVirtualForTemplate'\n | 'cdkVirtualForTemplateCacheSize';\n\ntype CdkVirtualForInputs<T> = Partial<Pick<CdkVirtualForOf<T>, CdkVirtualForInputKey>>;\n\ntype CdkFixedSizeVirtualScrollInputs = Pick<CdkFixedSizeVirtualScroll, 'itemSize' | 'minBufferPx' | 'maxBufferPx'>;\n\n@Directive({\n selector: '[clrVirtualScroll],[ClrVirtualScroll]',\n providers: [Items],\n standalone: false,\n})\nexport class ClrDatagridVirtualScrollDirective<T> implements AfterViewInit, DoCheck, OnDestroy {\n @Output() renderedRangeChange = new EventEmitter<ListRange>();\n @Input('clrVirtualPersistItems') persistItems = true;\n\n private _isUserProvidedItemSize = false;\n private _itemSize = 33;\n private _minBufferPx = 200;\n private _maxBufferPx = 400;\n\n private shouldUpdateAriaRowIndexes = false;\n\n private readonly datagridElementRef: ElementRef<HTMLElement>;\n\n private gridRoleElement: HTMLElement | null | undefined;\n private readonly virtualScrollStrategy: FixedSizeVirtualScrollStrategy;\n private virtualScrollViewport: CdkVirtualScrollViewport;\n private cdkVirtualFor: CdkVirtualForOf<T>;\n private subscriptions: Subscription[] = [];\n private topIndex = 0;\n\n // @deprecated remove the mutation observer when `datagrid-compact` class is deleted\n private mutationChanges: MutationObserver = new MutationObserver((mutations: MutationRecord[]) => {\n mutations.forEach((mutation: MutationRecord) => {\n // it is possible this to be called twice because the old class is removed and the new added\n if (\n !this._isUserProvidedItemSize &&\n (mutation.target as HTMLElement).classList.contains('datagrid-compact') &&\n this.itemSize > 25\n ) {\n this.updateItemSize(25);\n }\n });\n });\n\n private cdkVirtualForInputs: CdkVirtualForInputs<T> = {\n cdkVirtualForTrackBy: index => index,\n };\n private _totalItems: number;\n\n constructor(\n private readonly changeDetectorRef: ChangeDetectorRef,\n private iterableDiffers: IterableDiffers,\n private items: Items<T>,\n private readonly ngZone: NgZone,\n private readonly renderer2: Renderer2,\n private readonly templateRef: TemplateRef<CdkVirtualForOfContext<T>>,\n private readonly viewContainerRef: ViewContainerRef,\n private readonly directionality: Directionality,\n private readonly scrollDispatcher: ScrollDispatcher,\n private readonly viewportRuler: ViewportRuler,\n @Inject(forwardRef(() => ClrDatagrid)) private readonly datagrid: ClrDatagrid,\n private readonly injector: EnvironmentInjector\n ) {\n items.smartenUp();\n datagrid.detailService.preventFocusScroll = true;\n\n this.datagridElementRef = datagrid.el;\n\n // default\n this.cdkVirtualForTemplateCacheSize = 20;\n\n const cellHeightToken = window.getComputedStyle(document.body).getPropertyValue('--clr-table-cell-height');\n const cellHeightValue = +/calc\\(([0-9]+) \\* calc\\(\\(1rem \\/ 20\\) \\* 1\\)\\)/.exec(cellHeightToken)?.[1];\n\n const borderWidthToken = window.getComputedStyle(document.body).getPropertyValue('--clr-table-borderwidth');\n const borderWidthValue = +/calc\\(([0-9]+) \\* \\(1rem \\/ 20\\)\\)/.exec(borderWidthToken)?.[1];\n\n // initially rowHeightValue is calculated based on `--clr-table-row-height` that had a discreet value.\n // currently `--clr-table-row-height` is calculated based on `--clr-table-cell-height` + `--clr-table-borderwidth`\n const rowHeightValue = cellHeightValue + borderWidthValue;\n\n if (rowHeightValue && this.itemSize > rowHeightValue) {\n this.updateItemSize(rowHeightValue);\n }\n\n this.mutationChanges.observe(this.datagridElementRef.nativeElement, {\n attributeFilter: ['class'],\n attributeOldValue: true,\n });\n\n this.virtualScrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n\n get totalContentHeight() {\n return this.virtualScrollViewport?._totalContentHeight() || '';\n }\n\n @Input('clrVirtualRowsOf')\n get cdkVirtualForOf() {\n return this.cdkVirtualForInputs.cdkVirtualForOf;\n }\n set cdkVirtualForOf(value: CdkVirtualForInputs<T>['cdkVirtualForOf']) {\n this.cdkVirtualForInputs.cdkVirtualForOf = value;\n this.items.all = value as T[];\n this.updateCdkVirtualForInputs();\n }\n\n @Input('clrVirtualRowsTrackBy')\n get cdkVirtualForTrackBy() {\n return this.cdkVirtualForInputs.cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(value: CdkVirtualForInputs<T>['cdkVirtualForTrackBy']) {\n this.cdkVirtualForInputs.cdkVirtualForTrackBy = value;\n this.updateCdkVirtualForInputs();\n }\n\n @Input('clrVirtualRowsTemplate')\n get cdkVirtualForTemplate() {\n return this?.cdkVirtualForInputs?.cdkVirtualForTemplate;\n }\n set cdkVirtualForTemplate(value: CdkVirtualForInputs<T>['cdkVirtualForTemplate']) {\n this.cdkVirtualForInputs.cdkVirtualForTemplate = value;\n this.updateCdkVirtualForInputs();\n }\n\n @Input('clrVirtualRowsTemplateCacheSize')\n get cdkVirtualForTemplateCacheSize() {\n return this.cdkVirtualForInputs.cdkVirtualForTemplateCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(value: CdkVirtualForInputs<T>['cdkVirtualForTemplateCacheSize']) {\n this.cdkVirtualForInputs.cdkVirtualForTemplateCacheSize = coerceNumberProperty(value);\n this.updateCdkVirtualForInputs();\n }\n\n @Input('clrVirtualRowsItemSize')\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value: CdkFixedSizeVirtualScrollInputs['itemSize']) {\n this._isUserProvidedItemSize = true;\n this.updateItemSize(value);\n }\n\n @Input('clrVirtualRowsMinBufferPx')\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value: CdkFixedSizeVirtualScrollInputs['minBufferPx']) {\n this._minBufferPx = coerceNumberProperty(value);\n this.updateFixedSizeVirtualScrollInputs();\n }\n\n @Input('clrVirtualRowsMaxBufferPx')\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value: CdkFixedSizeVirtualScrollInputs['maxBufferPx']) {\n this._maxBufferPx = coerceNumberProperty(value);\n this.updateFixedSizeVirtualScrollInputs();\n }\n\n @Input('clrVirtualDataRange')\n set dataRange(range: ClrDatagridVirtualScrollRangeInterface<T>) {\n if (!range) {\n return;\n }\n\n if (this.items.smart) {\n this.items.smartenDown();\n }\n\n this.totalItems = range.total;\n\n this.updateDataRange(range.skip, range.data);\n }\n\n get totalItems() {\n return this._totalItems;\n }\n\n private set totalItems(value: number) {\n this._totalItems = value;\n }\n\n ngAfterViewInit() {\n runInInjectionContext(this.injector, () => {\n this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(\n this.changeDetectorRef,\n this.ngZone,\n this.renderer2,\n this.directionality,\n this.scrollDispatcher,\n this.viewportRuler,\n this.datagridElementRef,\n this.virtualScrollStrategy\n );\n\n this.cdkVirtualFor = createCdkVirtualForOfDirective(\n this.viewContainerRef,\n this.templateRef,\n this.iterableDiffers,\n this.virtualScrollViewport,\n this.ngZone\n );\n\n this.virtualScrollViewport.ngOnInit();\n });\n\n this.gridRoleElement = this.datagridElementRef.nativeElement.querySelector<HTMLElement>('[role=\"grid\"]');\n\n this.updateCdkVirtualForInputs();\n\n this.subscriptions.push(\n this.items.change.subscribe(newItems => {\n if (this.items.smart) {\n this.cdkVirtualFor.cdkVirtualForOf = newItems;\n }\n this.shouldUpdateAriaRowIndexes = true;\n }),\n this.cdkVirtualFor.dataStream.subscribe(data => {\n this.updateAriaRowCount(data.length);\n }),\n this.virtualScrollViewport.scrolledIndexChange.subscribe(index => {\n this.topIndex = index;\n }),\n this.virtualScrollViewport.renderedRangeStream.subscribe(renderedRange => {\n this.renderedRangeChange.emit(renderedRange);\n this.shouldUpdateAriaRowIndexes = true;\n }),\n this.datagrid.refresh.subscribe(datagridState => {\n if (datagridState.filters) {\n this.scrollToIndex(0);\n }\n })\n );\n }\n\n ngDoCheck() {\n this.cdkVirtualFor?.ngDoCheck();\n if (this.shouldUpdateAriaRowIndexes) {\n this.updateAriaRowIndexes();\n\n this.shouldUpdateAriaRowIndexes = false;\n }\n }\n\n ngOnDestroy() {\n this.cdkVirtualFor?.ngOnDestroy();\n this.virtualScrollViewport?.ngOnDestroy();\n this.mutationChanges?.disconnect();\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n\n scrollUp(offset: number, behavior: ScrollBehavior = 'auto') {\n this.scrollToIndex(this.topIndex - offset, behavior);\n }\n\n scrollDown(offset: number, behavior: ScrollBehavior = 'auto') {\n this.scrollToIndex(this.topIndex + offset, behavior);\n }\n\n scrollToIndex(index: number, behavior: ScrollBehavior = 'auto') {\n this.virtualScrollViewport?.scrollToIndex(index, behavior);\n }\n\n private updateDataRange(skip: number, data: T[]) {\n let items = this.cdkVirtualForOf as T[];\n\n if (!this.persistItems || !items || items?.length !== this.totalItems) {\n items = Array(this.totalItems);\n }\n\n items.splice(skip, data.length, ...data);\n\n this.cdkVirtualForOf = Array.from(items);\n }\n\n private updateItemSize(value: CdkFixedSizeVirtualScrollInputs['itemSize']) {\n this._itemSize = coerceNumberProperty(value);\n this.updateFixedSizeVirtualScrollInputs();\n }\n\n private updateCdkVirtualForInputs() {\n if (this.cdkVirtualFor) {\n for (const cdkVirtualForInputKey of Object.keys(this.cdkVirtualForInputs) as CdkVirtualForInputKey[]) {\n if (this.cdkVirtualFor[cdkVirtualForInputKey] !== this.cdkVirtualForInputs[cdkVirtualForInputKey]) {\n (this.cdkVirtualFor as any)[cdkVirtualForInputKey] = this.cdkVirtualForInputs[cdkVirtualForInputKey];\n }\n }\n }\n }\n\n private updateFixedSizeVirtualScrollInputs() {\n if (this.virtualScrollStrategy) {\n this.virtualScrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n }\n\n private updateAriaRowCount(rowCount: number) {\n this.gridRoleElement?.setAttribute('aria-rowcount', rowCount.toString());\n }\n\n private updateAriaRowIndexes() {\n for (let i = 0; i < this.viewContainerRef.length; i++) {\n const viewRef = this.viewContainerRef.get(i) as EmbeddedViewRef<CdkVirtualForOfContext<T>>;\n\n const rootElements: HTMLElement[] = viewRef.rootNodes;\n const datagridRowElement = rootElements.find(rowElement => rowElement.tagName === 'CLR-DG-ROW');\n const rowRoleElement = datagridRowElement?.querySelector('[role=\"row\"]');\n\n const newAriaRowIndex = (viewRef.context.index + 1).toString();\n if (rowRoleElement?.getAttribute('aria-rowindex') !== newAriaRowIndex) {\n // aria-rowindex should start with one, not zero, so we have to add one to the zero-based index\n rowRoleElement?.setAttribute('aria-rowindex', newAriaRowIndex);\n }\n }\n }\n\n private createVirtualScrollViewportForDatagrid(\n changeDetectorRef: ChangeDetectorRef,\n ngZone: NgZone,\n renderer2: Renderer2,\n directionality: Directionality,\n scrollDispatcher: ScrollDispatcher,\n viewportRuler: ViewportRuler,\n datagridElementRef: ElementRef<HTMLElement>,\n virtualScrollStrategy: FixedSizeVirtualScrollStrategy\n ) {\n const datagridContentElement = datagridElementRef.nativeElement.querySelector<HTMLElement>('.datagrid-content');\n const datagridRowsElement = datagridElementRef.nativeElement.querySelector<HTMLElement>('.datagrid-rows');\n\n const virtualScrollViewport = createCdkVirtualScrollViewport(\n new ElementRef(datagridContentElement),\n new ElementRef(datagridRowsElement),\n changeDetectorRef,\n ngZone,\n renderer2,\n virtualScrollStrategy,\n directionality,\n scrollDispatcher,\n viewportRuler,\n null as any as CdkVirtualScrollableElement\n );\n\n return virtualScrollViewport;\n }\n}\n\nfunction createCdkVirtualScrollViewport(\n datagridDivElementRef: ElementRef<HTMLElement>,\n contentWrapper: ElementRef<HTMLElement>,\n changeDetectorRef: ChangeDetectorRef,\n ngZone: NgZone,\n renderer2: Renderer2,\n virtualScrollStrategy: VirtualScrollStrategy,\n directionality: Directionality,\n scrollDispatcher: ScrollDispatcher,\n viewportRuler: ViewportRuler,\n scrollable: CdkVirtualScrollable\n) {\n const virtualScrollViewportInjector = Injector.create({\n parent: inject(EnvironmentInjector),\n providers: [\n { provide: ElementRef, useValue: datagridDivElementRef },\n { provide: ChangeDetectorRef, useValue: changeDetectorRef },\n { provide: NgZone, useValue: ngZone },\n { provide: Renderer2, useValue: renderer2 },\n { provide: VIRTUAL_SCROLL_STRATEGY, useValue: virtualScrollStrategy },\n { provide: Directionality, useValue: directionality },\n { provide: ScrollDispatcher, useValue: scrollDispatcher },\n { provide: ViewportRuler, useValue: viewportRuler },\n { provide: CdkVirtualScrollable, useValue: scrollable },\n { provide: CdkVirtualScrollViewport, useClass: CdkVirtualScrollViewport },\n ],\n });\n const viewPort = virtualScrollViewportInjector.get(CdkVirtualScrollViewport);\n viewPort._contentWrapper = contentWrapper;\n return viewPort;\n}\n\nfunction createCdkVirtualForOfDirective<T>(\n viewContainerRef: ViewContainerRef,\n templateRef: TemplateRef<CdkVirtualForOfContext<T>>,\n iterableDiffers: IterableDiffers,\n virtualScrollViewport: CdkVirtualScrollViewport,\n ngZone: NgZone\n) {\n const virtualScrollViewportInjector = Injector.create({\n parent: inject(EnvironmentInjector),\n providers: [{ provide: CDK_VIRTUAL_SCROLL_VIEWPORT, useValue: virtualScrollViewport }],\n });\n\n const cdkVirtualForInjector = Injector.create({\n parent: virtualScrollViewportInjector,\n providers: [\n { provide: ViewContainerRef, useValue: viewContainerRef },\n { provide: TemplateRef, useValue: templateRef },\n { provide: IterableDiffers, useValue: iterableDiffers },\n { provide: NgZone, useValue: ngZone },\n { provide: CdkVirtualForOf, useClass: CdkVirtualForOf },\n ],\n });\n\n return cdkVirtualForInjector.get(CdkVirtualForOf);\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport enum DatagridColumnChanges {\n WIDTH,\n HIDDEN,\n INITIALIZE,\n}\n\nexport const ALL_COLUMN_CHANGES: DatagridColumnChanges[] = Object.keys(DatagridColumnChanges)\n .map(key => (DatagridColumnChanges as Record<string, any>)[key])\n .filter(key => key === parseInt(key, 10) && key !== DatagridColumnChanges.INITIALIZE); // extracts only integer keys\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ALL_COLUMN_CHANGES } from '../enums/column-changes.enum';\nimport { ColumnState, ColumnStateDiff } from '../interfaces/column-state.interface';\n\n@Injectable()\nexport class ColumnsService {\n columns: BehaviorSubject<ColumnState>[] = [];\n columnsStateChange: BehaviorSubject<ColumnState> = new BehaviorSubject(null);\n\n private _cache: ColumnState[] = [];\n\n get columnStates(): ColumnState[] {\n return this.columns.map(column => column.value);\n }\n\n get hasHideableColumns(): boolean {\n return this.columnStates.filter(state => state.hideable).length > 0;\n }\n\n get visibleColumns(): ColumnState[] {\n return this.columnStates.filter(state => !state.hidden);\n }\n\n cache() {\n this._cache = this.columns.map(subject => {\n const value = { ...subject.value };\n delete value.changes;\n return value;\n });\n }\n\n hasCache() {\n return !!this._cache.length;\n }\n\n resetToLastCache() {\n this._cache.forEach((state, index) => {\n // Just emit the exact value from the cache\n const cachedState = { ...state, changes: ALL_COLUMN_CHANGES };\n this.columns[index].next(cachedState);\n this.columnsStateChange.next(cachedState);\n });\n this._cache = [];\n }\n\n // Helper method to emit a change to a column only when there is an actual diff to process for that column\n emitStateChangeAt(columnIndex: number, diff: ColumnStateDiff) {\n if (!this.columns[columnIndex]) {\n return;\n }\n this.emitStateChange(this.columns[columnIndex], diff);\n }\n\n emitStateChange(column: BehaviorSubject<ColumnState>, diff: ColumnStateDiff) {\n const changedState = { ...column.value, ...diff };\n column.next(changedState);\n this.columnsStateChange.next(changedState);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { FiltersProvider } from './filters';\nimport { Page } from './page';\nimport { Sort } from './sort';\nimport { StateDebouncer } from './state-debouncer.provider';\nimport { DatagridPropertyComparator } from '../built-in/comparators/datagrid-property-comparator';\nimport { ClrDatagridStateInterface } from '../interfaces/state.interface';\n\n/**\n * This provider aggregates state changes from the various providers of the Datagrid\n */\n@Injectable()\nexport class StateProvider<T> {\n /**\n * The Observable that lets other classes subscribe to global state changes\n */\n change: Observable<ClrDatagridStateInterface<T>> = this.debouncer.change.pipe(map(() => this.state));\n\n constructor(\n private filters: FiltersProvider<T>,\n private sort: Sort<T>,\n private page: Page,\n private debouncer: StateDebouncer\n ) {}\n\n /*\n * By making this a getter, we open the possibility for a setter in the future.\n * It's been requested a couple times.\n */\n get state(): ClrDatagridStateInterface<T> {\n const state: ClrDatagridStateInterface<T> = {};\n if (this.page.size > 0) {\n state.page = {\n from: this.page.firstItem,\n to: this.page.lastItem,\n size: this.page.size,\n current: this.page.current,\n };\n }\n if (this.sort.comparator) {\n if (this.sort.comparator instanceof DatagridPropertyComparator) {\n /*\n * Special case for the default object property comparator,\n * we give the property name instead of the actual comparator.\n */\n state.sort = { by: (this.sort.comparator as DatagridPropertyComparator<T>).prop, reverse: this.sort.reverse };\n } else {\n state.sort = { by: this.sort.comparator, reverse: this.sort.reverse };\n }\n }\n\n const activeFilters = this.filters.getActiveFilters();\n if (activeFilters.length > 0) {\n state.filters = [];\n for (const filter of activeFilters) {\n if (filter.state) {\n state.filters.push(filter.state);\n } else {\n state.filters.push(filter);\n }\n }\n }\n return state;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Directive, ElementRef, OnDestroy, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState } from '../interfaces/column-state.interface';\n\n@Directive({\n selector: 'clr-dg-cell',\n standalone: false,\n})\nexport class DatagridCellRenderer implements OnDestroy {\n private stateSubscription: Subscription;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n organizer: DatagridRenderOrganizer\n ) {\n this.subscriptions.push(\n organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n }\n\n resetState(state: ColumnState) {\n this.setWidth(state);\n this.setHidden(state);\n }\n\n setWidth(state: ColumnState) {\n if (state.strictWidth) {\n this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n } else {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n }\n this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n }\n\n setHidden(state: ColumnState) {\n if (state.hidden) {\n this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n } else {\n this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n }\n }\n\n private clearWidth() {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n this.renderer.setStyle(this.el.nativeElement, 'width', null);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n AfterContentInit,\n afterNextRender,\n ContentChildren,\n Directive,\n ElementRef,\n OnDestroy,\n QueryList,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DatagridCellRenderer } from './cell-renderer';\nimport { DatagridRowDetailRenderer } from './row-detail-renderer';\nimport { ColumnsService } from '../providers/columns.service';\n\n@Directive({\n selector: 'clr-dg-row',\n standalone: false,\n})\nexport class DatagridRowRenderer implements AfterContentInit, OnDestroy {\n @ContentChildren(DatagridCellRenderer) cells: QueryList<DatagridCellRenderer>;\n expandableRows: DatagridRowDetailRenderer[] = [];\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private columnsService: ColumnsService,\n private el: ElementRef<HTMLElement>\n ) {\n afterNextRender(() => this.addDetachedRowsColumnStateChangesListener());\n }\n\n ngAfterContentInit() {\n this.setCellsState(); // case #3 and #4\n this.subscriptions.push(\n this.cells.changes.subscribe(() => {\n this.setCellsState(); // case #2\n // Note on case #2: In the case of dynamic columns, when one column (header/cell together) gets deleted,\n // this.cells.changes emits before this.columnsService.columns gets updated in MainRenderer\n // when this.headers.changes emits as well. So that means there will be n+1 column state providers\n // when this.cells.changes emits. Hence, we should quit earlier there. But this method will be called\n // right after again when this.headers.changes emits. By then, there will be the same number of column state\n // providers as column headers.\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n setCellsState() {\n // This method runs in four cases:\n // 1. When the initial rows appear on the first page.\n // In this case, the method will be called in DatagridMainRenderer.\n // 2. When columns (corresponding header/cells) get added and deleted.\n // In this case, the method will be called in DatagridMainRenderer. (Read the note on this case above).\n // 3. When rows load asynchronously.\n // In this case, the method will be called in this class.\n // 4. When rows load after switching pages.\n // In this case, the method will be called in this class (Basically, same as the case 3).\n if (this.cells.length === this.columnsService.columns.length) {\n this.cells.forEach((cell, index) => {\n if (this.columnsService.columns[index]) {\n cell.resetState(this.columnsService.columns[index].value);\n }\n });\n }\n }\n\n private addDetachedRowsColumnStateChangesListener() {\n this.subscriptions.push(\n // Active rows are already handled by DatagridMainRenderer.columnStateChanged via @ContentChildren.\n // Rows sitting in CDK virtual scroll's template cache for example are detached from the document\n // (element.isConnected = false) and invisible to @ContentChildren, so they miss column state\n // changes. This subscription self-updates the row only when it is detached state.\n this.columnsService.columnsStateChange.subscribe(() => {\n if (!this.el.nativeElement.isConnected) {\n this.setCellsState();\n }\n })\n );\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Directive } from '@angular/core';\nimport { WillyWonka } from '@clr/angular/utils';\n\n@Directive({\n selector: 'clr-datagrid',\n standalone: false,\n})\nexport class DatagridWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\nimport { OompaLoompa } from '@clr/angular/utils';\n\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\nimport { RowActionService } from '../providers/row-action-service';\n\n@Directive({\n selector: 'clr-datagrid, clr-dg-row',\n standalone: false,\n})\nexport class ActionableOompaLoompa extends OompaLoompa {\n private rowActions: RowActionService;\n\n constructor(cdr: ChangeDetectorRef, @Optional() willyWonka: DatagridWillyWonka, rowActions: RowActionService) {\n if (!willyWonka) {\n throw new Error('clr-dg-row should only be used inside of a clr-datagrid');\n }\n super(cdr, willyWonka);\n this.rowActions = rowActions;\n }\n\n get flavor() {\n return this.rowActions.hasActionableRow;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\nimport { OompaLoompa } from '@clr/angular/utils';\n\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\nimport { ExpandableRowsCount } from '../providers/global-expandable-rows';\n\n@Directive({\n selector: 'clr-datagrid, clr-dg-row',\n standalone: false,\n})\nexport class ExpandableOompaLoompa extends OompaLoompa {\n private expandableCount: ExpandableRowsCount;\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional() willyWonka: DatagridWillyWonka,\n expandableCount: ExpandableRowsCount\n ) {\n if (!willyWonka) {\n throw new Error('clr-dg-row should only be used inside of a clr-datagrid');\n }\n super(cdr, willyWonka);\n this.expandableCount = expandableCount;\n }\n\n get flavor() {\n return this.expandableCount.hasExpandableRow;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n DOCUMENT,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n} from '@angular/core';\nimport { ClrCommonStringsService, uniqueIdFactory } from '@clr/angular/utils';\nimport { combineLatest, fromEvent, merge, of, Subscription } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\n\nimport { ClrDatagridColumn } from './datagrid-column';\nimport { ClrDatagridItems } from './datagrid-items';\nimport { ClrDatagridPlaceholder } from './datagrid-placeholder';\nimport { ClrDatagridRow } from './datagrid-row';\nimport { ClrDatagridVirtualScrollDirective } from './datagrid-virtual-scroll.directive';\nimport { DatagridDisplayMode } from './enums/display-mode.enum';\nimport { SelectionType, selectionTypeAttribute } from './enums/selection-type';\nimport { ClrDatagridStateInterface } from './interfaces/state.interface';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { FiltersProvider } from './providers/filters';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { ClrDatagridItemsIdentityFunction, Items } from './providers/items';\nimport { Page } from './providers/page';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { Sort } from './providers/sort';\nimport { StateDebouncer } from './providers/state-debouncer.provider';\nimport { StateProvider } from './providers/state.provider';\nimport { TableSizeService } from './providers/table-size.service';\nimport { DatagridRenderOrganizer } from './render/render-organizer';\nimport { CellCoordinates, KeyNavigationGridController } from './utils/key-navigation-grid.controller';\n\n@Component({\n selector: 'clr-datagrid',\n templateUrl: './datagrid.html',\n providers: [\n Selection,\n Sort,\n FiltersProvider,\n Page,\n Items,\n DatagridRenderOrganizer,\n RowActionService,\n ExpandableRowsCount,\n StateDebouncer,\n DetailService,\n StateProvider,\n TableSizeService,\n ColumnsService,\n DisplayModeService,\n KeyNavigationGridController,\n ],\n host: {\n '[class.datagrid-host]': 'true',\n '[class.datagrid-detail-open]': 'detailService.isOpen',\n '[class.datagrid-virtual-scroll]': '!!virtualScroll',\n },\n standalone: false,\n})\nexport class ClrDatagrid<T = any> implements AfterContentInit, AfterViewInit, OnDestroy, DoCheck {\n @Input('clrLoadingMoreItems') loadingMoreItems: boolean;\n\n @Input() clrDgSingleSelectionAriaLabel: string = this.commonStrings.keys.singleSelectionAriaLabel;\n @Input() clrDgSingleActionableAriaLabel: string = this.commonStrings.keys.singleActionableAriaLabel;\n @Input() clrDetailExpandableAriaLabel: string = this.commonStrings.keys.detailExpandableAriaLabel;\n\n // Allows disabling of the auto focus on page/state changes (excludes focus management inside of popups)\n @Input() clrDgDisablePageFocus = false;\n\n @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<T[]>(false);\n\n /**\n * Output emitted whenever the data needs to be refreshed, based on user action or external ones\n */\n @Output('clrDgRefresh') refresh = new EventEmitter<ClrDatagridStateInterface<T>>(false);\n\n /**\n * The application can provide custom select all logic.\n */\n @Input('clrDgCustomSelectAllEnabled') customSelectAllEnabled = false;\n @Input('clrDgSelectAllDisabled') selectAllDisabled = false;\n @Output('clrDgCustomSelectAll') customSelectAll = new EventEmitter<boolean>();\n\n /**\n * Expose virtual scroll directive for applications to access its public methods\n */\n @ContentChildren(forwardRef(() => ClrDatagridVirtualScrollDirective)) _virtualScroll: QueryList<\n ClrDatagridVirtualScrollDirective<any>\n >;\n /**\n * We grab the smart iterator from projected content\n */\n @ContentChild(ClrDatagridItems) iterator: ClrDatagridItems<T>;\n\n /**\n * Custom placeholder detection\n */\n @ContentChild(ClrDatagridPlaceholder) placeholder: ClrDatagridPlaceholder<T>;\n\n /**\n * Hideable Column data source / detection.\n */\n @ContentChildren(ClrDatagridColumn) columns: QueryList<ClrDatagridColumn<T>>;\n\n /**\n * When the datagrid is user-managed without the smart iterator, we get the items displayed\n * by querying the projected content. This is needed to keep track of the models currently\n * displayed, typically for selection.\n */\n @ContentChildren(ClrDatagridRow, { emitDistinctChangesOnly: false }) rows: QueryList<ClrDatagridRow<T>>;\n\n @ViewChild('datagrid', { read: ElementRef }) datagrid: ElementRef<HTMLElement>;\n @ViewChild('datagridTable', { read: ElementRef }) datagridTable: ElementRef<HTMLElement>;\n @ViewChild('datagridHeader', { read: ElementRef }) datagridHeader: ElementRef<HTMLElement>;\n @ViewChild('contentWrapper', { read: ElementRef, static: true }) contentWrapper: ElementRef<HTMLElement>;\n @ViewChild('rowsWrapper', { read: ElementRef, static: true }) rowsWrapper: ElementRef<HTMLElement>;\n @ViewChild('scrollableColumns', { read: ViewContainerRef }) scrollableColumns: ViewContainerRef;\n @ViewChild('projectedDisplayColumns', { read: ViewContainerRef }) _projectedDisplayColumns: ViewContainerRef;\n @ViewChild('projectedCalculationColumns', { read: ViewContainerRef }) _projectedCalculationColumns: ViewContainerRef;\n @ViewChild('displayedRows', { read: ViewContainerRef }) _displayedRows: ViewContainerRef;\n @ViewChild('calculationRows', { read: ViewContainerRef }) _calculationRows: ViewContainerRef;\n @ViewChild('fixedColumnTemplate') _fixedColumnTemplate: TemplateRef<any>;\n @ViewChildren('stickyHeader', { emitDistinctChangesOnly: true }) stickyHeaders: QueryList<ElementRef>;\n\n selectAllId: string;\n activeCellCoords: CellCoordinates;\n\n /* reference to the enum so that template can access */\n SELECTION_TYPE = SelectionType;\n\n @ViewChild('selectAllCheckbox') private selectAllCheckbox: ElementRef<HTMLInputElement>;\n\n /**\n * Subscriptions to all the services and queries changes\n */\n private _subscriptions: Subscription[] = [];\n private _virtualScrollSubscriptions: Subscription[] = [];\n\n private cachedRowsHeight = 0;\n private cachedContentHeight = 0;\n private resizeObserver: ResizeObserver = new ResizeObserver(entries => {\n requestAnimationFrame(() => {\n this.handleResizeChanges(entries);\n });\n });\n\n constructor(\n private organizer: DatagridRenderOrganizer,\n public items: Items<T>,\n public expandableRows: ExpandableRowsCount,\n public selection: Selection<T>,\n public rowActionService: RowActionService,\n private stateProvider: StateProvider<T>,\n private displayMode: DisplayModeService,\n private renderer: Renderer2,\n public detailService: DetailService,\n @Inject(DOCUMENT) private document: any,\n public el: ElementRef<HTMLElement>,\n private page: Page,\n public commonStrings: ClrCommonStringsService,\n public keyNavigation: KeyNavigationGridController,\n private zone: NgZone\n ) {\n const datagridId = uniqueIdFactory();\n\n this.selectAllId = 'clr-dg-select-all-' + datagridId;\n detailService.id = datagridId;\n }\n\n /**\n * Freezes the datagrid while data is loading\n */\n @Input('clrDgLoading')\n get loading(): boolean {\n return this.items.loading;\n }\n set loading(value: boolean) {\n this.items.loading = value;\n }\n\n /**\n * Selection type\n * - `None`: No rows are selectable.\n * - `Single`: Only one row can be selected at a time.\n * - `Multi`: Multiple rows can be selected.\n *\n * Defaults to `None`.\n */\n @Input({ alias: 'clrDgSelectionType', transform: selectionTypeAttribute })\n get selectionType(): SelectionType {\n return this.selection.selectionType;\n }\n set selectionType(value: SelectionType) {\n this.selection.selectionType = value;\n }\n\n /**\n * Array of all selected items\n */\n @Input('clrDgSelected')\n set selected(value: T[]) {\n value = value || [];\n\n if (value === this.selection.current) {\n return;\n }\n\n this.selection.updateCurrent(value, false);\n }\n\n @Input()\n set clrDgPreserveSelection(state: boolean) {\n this.selection.preserveSelection = state;\n }\n\n /**\n * @deprecated since 2.0, remove in 3.0\n *\n * Selection/Deselection on row click mode\n */\n @Input('clrDgRowSelection')\n set rowSelectionMode(value: boolean) {\n this.selection.rowSelectionMode = value;\n }\n\n @Input('clrDgItemsIdentityFn')\n set identityFn(value: ClrDatagridItemsIdentityFunction<T>) {\n this.items.identifyBy = value;\n }\n\n /**\n * Indicates if all currently displayed items are selected\n */\n get allSelected() {\n return this.selection.isAllSelected();\n }\n set allSelected(value: boolean) {\n if (this.customSelectAllEnabled) {\n this.customSelectAll.emit(value);\n } else {\n /**\n * This is a setter but we ignore the value.\n * It's strange, but it lets us have an indeterminate state where only\n * some of the items are selected.\n */\n this.selection.toggleAll();\n }\n }\n\n get virtualScroll(): ClrDatagridVirtualScrollDirective<any> {\n return this._virtualScroll?.get(0);\n }\n\n ngAfterContentInit() {\n if (!this.items.smart) {\n this.items.all = this.rows.map((row: ClrDatagridRow<T>) => row.item);\n }\n\n const rowItemsChanges = this.rows.changes.pipe(\n switchMap((rows: ClrDatagridRow<T>[]) =>\n merge(\n // immediate update\n of(rows.map(row => row.item)),\n // subsequent updates once per tick\n combineLatest(rows.map(row => row.itemChanges)).pipe(debounceTime(0))\n )\n )\n );\n\n this._subscriptions.push(\n rowItemsChanges.subscribe(all => {\n if (!this.items.smart) {\n this.items.all = all;\n }\n }),\n this._virtualScroll.changes.subscribe(() => {\n this.toggleVirtualScrollSubscriptions();\n }),\n this.rows.changes.subscribe(() => {\n // Remove any projected rows from the displayedRows container\n // Necessary with Ivy off. See https://github.com/vmware/clarity/issues/4692\n for (let i = this._displayedRows.length - 1; i >= 0; i--) {\n if (this._displayedRows.get(i).destroyed) {\n this._displayedRows.remove(i);\n }\n }\n this.rows.forEach(row => {\n this._displayedRows.insert(row._view);\n });\n this.updateDetailState();\n\n // retain active cell when navigating with Up/Down Arrows, PageUp and PageDown buttons in virtual scroller\n if (this.virtualScroll && this.activeCellCoords) {\n this.zone.runOutsideAngular(() => {\n const row = Array.from(this.rows).find(row => {\n return row.el.nativeElement.children[0].ariaRowIndex === this.activeCellCoords.ariaRowIndex;\n });\n\n if (!row) {\n return;\n }\n\n const activeCell = row.el.nativeElement.querySelectorAll(this.keyNavigation.config.keyGridCells)[\n this.activeCellCoords.x\n ] as HTMLElement;\n\n this.keyNavigation.setActiveCell(activeCell);\n this.keyNavigation.focusElement(activeCell, { preventScroll: true });\n });\n }\n })\n );\n }\n\n /**\n * Our setup happens in the view of some of our components, so we wait for it to be done before starting\n */\n ngAfterViewInit() {\n this.keyNavigation.initializeKeyGrid(this.el.nativeElement);\n\n this.updateDetailState();\n\n // Emit the state only if it is not an empty object.\n // Default state of `ClrDatagridStateInterface` is an empty object.\n // The refresh emit is needed in Server-driven datagrid when pagination is set, but the data is still not requested.\n // The refresh emit should trigger the data request based on the state provided.\n // Alternately because pagination might not be set on initialization emit an empty state will trigger a refresh.\n if (Object.keys(this.stateProvider.state).length > 0) {\n this.refresh.emit(this.stateProvider.state);\n }\n\n this._subscriptions.push(\n this.stickyHeaders.changes.subscribe(() => this.resize()),\n this.stateProvider.change.subscribe(state => this.refresh.emit(state)),\n this.selection.change.subscribe(selection => {\n if (this.selection.selectable) {\n this.selectedChanged.emit(selection);\n }\n }),\n // Reinitialize arrow key navigation on page changes\n this.page.change.subscribe(() => {\n this.keyNavigation.resetKeyGrid();\n if (!this.clrDgDisablePageFocus) {\n this.datagridTable.nativeElement.focus();\n }\n }),\n // A subscription that listens for displayMode changes on the datagrid\n this.displayMode.view.subscribe(viewChange => {\n // Remove any projected columns from the projectedDisplayColumns container\n for (let i = this._projectedDisplayColumns.length; i > 0; i--) {\n this._projectedDisplayColumns.detach();\n }\n // Remove any projected columns from the projectedCalculationColumns container\n for (let i = this._projectedCalculationColumns.length; i > 0; i--) {\n this._projectedCalculationColumns.detach();\n }\n // Remove any projected rows from the calculationRows container\n for (let i = this._calculationRows.length; i > 0; i--) {\n this._calculationRows.detach();\n }\n // Remove any projected rows from the displayedRows container\n for (let i = this._displayedRows.length; i > 0; i--) {\n this._displayedRows.detach();\n }\n if (viewChange === DatagridDisplayMode.DISPLAY) {\n // Set state, style for the datagrid to DISPLAY and insert row & columns into containers\n this.renderer.removeClass(this.el.nativeElement, 'datagrid-calculate-mode');\n this.columns.forEach(column => {\n this._projectedDisplayColumns.insert(column._view);\n });\n this.rows.forEach(row => {\n this._displayedRows.insert(row._view);\n });\n } else {\n // Set state, style for the datagrid to CALCULATE and insert row & columns into containers\n this.renderer.addClass(this.el.nativeElement, 'datagrid-calculate-mode');\n // Inserts a fixed column if any of these conditions are true.\n const fixedColumnConditions = [\n this.rowActionService.hasActionableRow,\n this.selection.selectionType !== this.SELECTION_TYPE.None,\n this.expandableRows.hasExpandableRow || this.detailService.enabled,\n ];\n fixedColumnConditions\n .filter(Boolean)\n .forEach(() =>\n this._projectedCalculationColumns.insert(this._fixedColumnTemplate.createEmbeddedView(null))\n );\n this.columns.forEach(column => {\n this._projectedCalculationColumns.insert(column._view);\n });\n this.rows.forEach(row => {\n this._calculationRows.insert(row._view);\n });\n }\n })\n );\n\n if (this.virtualScroll) {\n this.toggleVirtualScrollSubscriptions();\n }\n\n // We need to preserve shift state, so it can be used on selection change, regardless of the input event\n // that triggered the change. This helps us to easily resolve the k/b only case together with the mouse selection case.\n this.zone.runOutsideAngular(() => {\n this._subscriptions.push(\n fromEvent(this.document.body, 'keydown').subscribe((event: KeyboardEvent) => {\n if (event.key === 'Shift') {\n this.selection.shiftPressed = true;\n }\n }),\n fromEvent(this.document.body, 'keyup').subscribe((event: KeyboardEvent) => {\n if (event.key === 'Shift') {\n this.selection.shiftPressed = false;\n }\n })\n );\n });\n }\n\n ngDoCheck() {\n // we track for changes on selection.current because it can happen with pushing items\n // instead of overriding the variable\n this.selection.checkForChanges();\n }\n\n ngOnDestroy() {\n this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n this._virtualScrollSubscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n this.resizeObserver.disconnect();\n }\n\n toggleAllSelected($event: any) {\n $event.preventDefault();\n this.selectAllCheckbox?.nativeElement.click();\n }\n\n resize(): void {\n this.organizer.resize();\n }\n\n /**\n * Checks the state of detail panel and if it's opened then\n * find the matching row and trigger the detail panel\n */\n updateDetailState() {\n // Try to update only when there is something cached and its open.\n if (this.detailService.state && this.detailService.isOpen) {\n const row = this.rows.find(\n row => this.items.identifyBy(row.item) === this.items.identifyBy(this.detailService.state)\n );\n\n /**\n * Reopen updated row or close it\n */\n if (row) {\n this.detailService.open(row.item, row.detailButton.nativeElement);\n // always keep open when virtual scroll is available otherwise close it\n } else if (!this.virtualScroll) {\n // Using setTimeout to make sure the inner cycles in rows are done\n setTimeout(() => {\n this.detailService.close();\n });\n }\n }\n }\n\n /**\n * Public method to re-trigger the computation of displayed items manually\n */\n dataChanged() {\n this.items.refresh();\n }\n\n private toggleVirtualScrollSubscriptions() {\n const hasVirtualScroll = !!this.virtualScroll;\n\n // the virtual scroll will handle the scrolling\n this.keyNavigation.preventScrollOnFocus = hasVirtualScroll;\n\n if (hasVirtualScroll && this._virtualScrollSubscriptions.length === 0) {\n // TODO: use `resizeObserver` for all datagrid variants\n this.resizeObserver.observe(this.contentWrapper.nativeElement);\n this.resizeObserver.observe(this.rowsWrapper.nativeElement);\n\n this._virtualScrollSubscriptions.push(\n fromEvent(this.contentWrapper.nativeElement, 'scroll').subscribe(() => {\n if (this.datagridHeader.nativeElement.scrollLeft !== this.contentWrapper.nativeElement.scrollLeft) {\n this.datagridHeader.nativeElement.scrollLeft = this.contentWrapper.nativeElement.scrollLeft;\n }\n }),\n fromEvent(this.datagridHeader.nativeElement, 'scroll').subscribe(() => {\n if (this.datagridHeader.nativeElement.scrollLeft !== this.contentWrapper.nativeElement.scrollLeft) {\n this.contentWrapper.nativeElement.scrollLeft = this.datagridHeader.nativeElement.scrollLeft;\n }\n }),\n this.keyNavigation.nextCellCoordsEmitter.subscribe(cellCoords => {\n if (!cellCoords?.ariaRowIndex) {\n this.activeCellCoords = null;\n return;\n }\n\n if (cellCoords.ariaRowIndex === this.activeCellCoords?.ariaRowIndex) {\n this.activeCellCoords = cellCoords;\n return;\n }\n\n this.activeCellCoords = cellCoords;\n\n // aria-rowindex is always + 1. Check virtual scroller updateAriaRowIndexes method.\n const rowIndex = Number(cellCoords.ariaRowIndex) - 1;\n\n this.virtualScroll.scrollToIndex(rowIndex);\n })\n );\n } else if (!hasVirtualScroll) {\n this.resizeObserver.disconnect();\n this._virtualScrollSubscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n this._virtualScrollSubscriptions = [];\n }\n }\n\n private handleResizeChanges(entries: ResizeObserverEntry[]) {\n const rowsWrapper = this.rowsWrapper.nativeElement;\n\n for (const entry of entries) {\n if (entry.target === this.contentWrapper.nativeElement) {\n this.cachedContentHeight = entry.contentRect.height;\n }\n if (entry.target === rowsWrapper) {\n this.cachedRowsHeight = entry.contentRect.height;\n }\n }\n\n const scrollClass = 'datagrid-scrollbar-visible';\n\n if (this.cachedRowsHeight > this.cachedContentHeight) {\n this.renderer.addClass(rowsWrapper, scrollClass);\n } else {\n this.renderer.removeClass(rowsWrapper, scrollClass);\n }\n }\n}\n","<!--\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\" #datagridHeader>\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n @if (selection.selectionType === SELECTION_TYPE.Multi) {\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n (keydown.space)=\"toggleAllSelected($event)\"\n >\n @if (!virtualScroll || customSelectAllEnabled) {\n <div class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n #selectAllCheckbox\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n [attr.disabled]=\"selectAllDisabled ? true : null\"\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]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n }\n <div class=\"datagrid-column-separator\"></div>\n </div>\n }\n <!-- header for datagrid where you can select one row only -->\n @if (selection.selectionType === SELECTION_TYPE.Single) {\n <div #stickyHeader role=\"columnheader\" class=\"datagrid-column datagrid-select datagrid-fixed-column\">\n <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n }\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n @if (rowActionService.hasActionableRow) {\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n >\n <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n }\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n @if (expandableRows.hasExpandableRow || detailService.enabled) {\n <div\n #stickyHeader\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n >\n <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n <div class=\"datagrid-column-separator\"></div>\n </div>\n }\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n @if (virtualScroll) {\n <div class=\"datagrid-row-sticky datagrid-row-sticky-scroll\">\n <div class=\"datagrid-column\"></div>\n </div>\n }\n </div>\n </div>\n </div>\n\n <div class=\"datagrid-content\" [class.datagrid-content-virtual]=\"virtualScroll\" #contentWrapper>\n @if (virtualScroll) {\n <div class=\"datagrid-content-virtual-spacer\" [style.height]=\"virtualScroll?.totalContentHeight\"></div>\n }\n <div role=\"presentation\" #rowsWrapper class=\"datagrid-rows\">\n @if (loadingMoreItems) {\n <clr-dg-row class=\"datagrid-row-loading\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n }\n\n <ng-container #displayedRows></ng-container>\n\n @if (loadingMoreItems) {\n <clr-dg-row class=\"datagrid-row-loading\">\n <clr-dg-cell>\n <clr-spinner clrMedium></clr-spinner>\n <span>{{ commonStrings.keys.loading }}</span>\n </clr-dg-cell>\n </clr-dg-row>\n }\n\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n @if (!placeholder) {\n <clr-dg-placeholder></clr-dg-placeholder>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n @if (loading) {\n <div class=\"datagrid-spinner\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n }\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n\n<ng-template #fixedColumnTemplate>\n <div class=\"datagrid-column datagrid-fixed-column\"></div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-dg-action-bar',\n template: `<ng-content></ng-content>`,\n host: { '[class.datagrid-action-bar]': 'true' },\n standalone: false,\n})\nexport class ClrDatagridActionBar {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { isPlatformBrowser } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, OnDestroy, Output, PLATFORM_ID, ViewChild } from '@angular/core';\nimport {\n ClrPopoverHostDirective,\n ClrPopoverPosition,\n ClrPopoverService,\n ClrPopoverType,\n mapPopoverKeyToPosition,\n} from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, ClrKeyFocus, uniqueIdFactory } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { RowActionService } from './providers/row-action-service';\n\nlet clrDgActionId = 0;\n\n@Component({\n selector: 'clr-dg-action-overflow',\n hostDirectives: [ClrPopoverHostDirective],\n template: `\n <button\n tabindex=\"-1\"\n class=\"datagrid-action-toggle\"\n type=\"button\"\n role=\"button\"\n aria-haspopup=\"true\"\n #anchor\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"buttonLabel || commonStrings.keys.rowActions\"\n clrPopoverOrigin\n clrPopoverOpenCloseButton\n (click)=\"$event.stopPropagation()\"\n >\n <cds-icon shape=\"ellipsis-vertical\" [attr.title]=\"buttonLabel || commonStrings.keys.rowActions\"></cds-icon>\n </button>\n\n <div\n class=\"datagrid-action-overflow\"\n [id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n [attr.id]=\"popoverId\"\n clrKeyFocus\n cdkTrapFocus\n (click)=\"closeOverflowContent($event)\"\n *clrPopoverContent=\"\n open;\n at: smartPosition;\n availablePositions: positions;\n outsideClickToClose: true;\n scrollToClose: true\n \"\n >\n <ng-content></ng-content>\n </div>\n `,\n standalone: false,\n})\nexport class ClrDatagridActionOverflow implements OnDestroy {\n @Input('clrDgActionOverflowButtonLabel') buttonLabel: string;\n\n @Output('clrDgActionOverflowOpenChange') openChange = new EventEmitter<boolean>(false);\n\n popoverId = uniqueIdFactory();\n\n smartPosition = ClrPopoverPosition.RIGHT_MIDDLE;\n protected positions = [\n mapPopoverKeyToPosition(ClrPopoverPosition.RIGHT_BOTTOM, ClrPopoverType.DROPDOWN),\n mapPopoverKeyToPosition(ClrPopoverPosition.RIGHT_TOP, ClrPopoverType.DROPDOWN),\n ];\n\n @ViewChild(ClrKeyFocus) private readonly keyFocus: ClrKeyFocus;\n\n private _open = false;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private rowActionService: RowActionService,\n public commonStrings: ClrCommonStringsService,\n @Inject(PLATFORM_ID) private platformId: any,\n private popoverService: ClrPopoverService\n ) {\n rowActionService.register();\n this.subscriptions.push(\n popoverService.openChange.subscribe(openState => {\n this.open = openState;\n }),\n popoverService.popoverVisible.subscribe(visible => {\n if (visible) {\n this.initializeFocus();\n }\n })\n );\n this.popoverId = 'clr-action-menu' + clrDgActionId++;\n }\n\n @Input('clrDgActionOverflowOpen')\n get open() {\n return this._open;\n }\n set open(open: boolean) {\n const openState = !!open;\n if (!!openState !== this.open) {\n // prevents chocolate mess\n this.popoverService.open = openState;\n this.openChange.emit(openState);\n this._open = openState;\n }\n }\n\n ngOnDestroy() {\n this.rowActionService.unregister();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n closeOverflowContent(event: Event): void {\n this.popoverService.toggleWithEvent(event);\n }\n\n private initializeFocus(): void {\n if (isPlatformBrowser(this.platformId)) {\n const buttons = Array.from(document.querySelectorAll<HTMLButtonElement>('button.action-item'));\n\n if (buttons.length) {\n this.keyFocus.current = 0;\n this.keyFocus.focusableItems = buttons;\n\n this.keyFocus.focusCurrent();\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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/**\n * This file prevents an import cycle.\n */\n\nimport { TrackByFunction } from '@angular/core';\n\nimport { ColumnState } from './interfaces/column-state.interface';\n\nexport const columnToggleTrackByFn: TrackByFunction<ColumnState> = index => index;\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Component, EventEmitter, Output } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { ColumnsService } from './providers/columns.service';\n\n@Component({\n selector: 'clr-dg-column-toggle-button',\n template: `\n <button\n class=\"btn btn-sm btn-link switch-button\"\n (click)=\"selectAll()\"\n [disabled]=\"allHideablesVisible\"\n type=\"button\"\n >\n {{ commonStrings.keys.selectAll }}\n </button>\n `,\n standalone: false,\n})\nexport class ClrDatagridColumnToggleButton {\n private allSelected: Subject<boolean> = new EventEmitter();\n\n constructor(\n public commonStrings: ClrCommonStringsService,\n private columnsService: ColumnsService\n ) {}\n\n @Output('clrAllSelected')\n get clrAllSelected(): Observable<boolean> {\n return this.allSelected.asObservable();\n }\n\n get allHideablesVisible() {\n return this.hideableColumns().filter(column => column.value.hidden).length === 0;\n }\n\n selectAll() {\n this.hideableColumns().forEach(hideableColumn =>\n this.columnsService.emitStateChange(hideableColumn, {\n hidden: false,\n changes: [DatagridColumnChanges.HIDDEN],\n })\n );\n this.allSelected.next(true);\n }\n\n private hideableColumns(): BehaviorSubject<ColumnState>[] {\n return this.columnsService.columns.filter(column => column.value.hideable);\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\nimport {\n ClrPopoverHostDirective,\n ClrPopoverPosition,\n ClrPopoverService,\n ClrPopoverType,\n} from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, uniqueIdFactory } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { columnToggleTrackByFn } from './datagrid-column-toggle-trackby';\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { ColumnsService } from './providers/columns.service';\n\n@Component({\n selector: 'clr-dg-column-toggle',\n template: `\n <button\n role=\"button\"\n type=\"button\"\n class=\"btn btn-sm column-toggle-action\"\n clrPopoverOrigin\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-haspopup]=\"'menu'\"\n >\n {{ commonStrings.keys.pickColumns }}\n </button>\n <div\n class=\"column-switch\"\n role=\"dialog\"\n [attr.aria-label]=\"commonStrings.keys.showColumnsMenuDescription\"\n [id]=\"popoverId\"\n cdkTrapFocus\n cdkTrapFocusAutoCapture\n *clrPopoverContent=\"\n openState;\n at: popoverPosition;\n type: popoverType;\n outsideClickToClose: true;\n scrollToClose: true\n \"\n >\n <div class=\"switch-header\">\n <div class=\"clr-sr-only\" tabindex=\"-1\" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>\n <h2>{{ commonStrings.keys.showColumns }}</h2>\n <button\n class=\"btn btn-sm btn-link-neutral toggle-switch-close-button\"\n clrPopoverCloseButton\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n >\n <cds-icon shape=\"window-close\" aria-hidden=\"true\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ commonStrings.keys.close }}</span>\n </button>\n </div>\n <ul class=\"switch-content list-unstyled\">\n @for (columnState of hideableColumnStates; track trackByFn($index, columnState)) {\n <li>\n <clr-checkbox-wrapper>\n <input\n clrCheckbox\n type=\"checkbox\"\n [disabled]=\"hasOnlyOneVisibleColumn && !columnState.hidden\"\n [ngModel]=\"!columnState.hidden\"\n (ngModelChange)=\"toggleColumnState(columnState, !$event)\"\n />\n <label>\n <ng-template [ngTemplateOutlet]=\"columnState.titleTemplateRef\"></ng-template>\n </label>\n </clr-checkbox-wrapper>\n </li>\n }\n </ul>\n <div class=\"switch-footer\">\n <clr-dg-column-toggle-button (clrAllSelected)=\"allColumnsSelected()\"></clr-dg-column-toggle-button>\n </div>\n </div>\n `,\n host: { '[class.column-switch-wrapper]': 'true', '[class.active]': 'openState' },\n hostDirectives: [ClrPopoverHostDirective],\n standalone: false,\n})\nexport class ClrDatagridColumnToggle implements OnDestroy {\n popoverId = uniqueIdFactory();\n openState = false;\n\n // Smart Popover\n popoverPosition = ClrPopoverPosition.TOP_LEFT;\n popoverType = ClrPopoverType.DROPDOWN;\n\n // Without tracking the checkboxes get rerendered on model update, which leads\n // to loss of focus after checkbox toggle.\n readonly trackByFn = columnToggleTrackByFn;\n\n private _allColumnsVisible: boolean;\n private subscription: Subscription;\n\n @ViewChild('allSelected', { read: ElementRef }) private allSelectedElement: ElementRef<HTMLElement>;\n\n constructor(\n public commonStrings: ClrCommonStringsService,\n private columnsService: ColumnsService,\n popoverService: ClrPopoverService\n ) {\n this.subscription = popoverService.openChange.subscribe(change => (this.openState = change));\n }\n\n get allColumnsVisible(): boolean {\n return this._allColumnsVisible;\n }\n set allColumnsVisible(value: boolean) {\n this._allColumnsVisible = value;\n }\n\n get hideableColumnStates(): ColumnState[] {\n const hideables = this.columnsService.columns.filter(column => column.value.hideable);\n return hideables.map(column => column.value);\n }\n\n get hasOnlyOneVisibleColumn(): boolean {\n const nbNonHideableColumns = this.columnsService.columns.length - this.hideableColumnStates.length;\n // this should only return true when there is no non-hideable columns.\n return (\n nbNonHideableColumns === 0 && this.hideableColumnStates.filter(columnState => !columnState.hidden).length === 1\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n toggleColumnState(columnState: ColumnState, event: boolean) {\n const columnToToggle = this.columnsService.columns.filter(column => column.value === columnState)[0];\n this.columnsService.emitStateChange(columnToToggle, {\n hidden: event,\n changes: [DatagridColumnChanges.HIDDEN],\n });\n }\n\n toggleSwitchPanel() {\n this.openState = !this.openState;\n }\n\n allColumnsSelected() {\n this.allSelectedElement.nativeElement.focus();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n selector: 'clr-dg-detail-header',\n host: {\n '[class.datagrid-detail-header]': 'true',\n },\n template: `\n <div #title class=\"datagrid-detail-header-title\" tabindex=\"-1\" [id]=\"titleId\">\n <ng-content></ng-content>\n </div>\n <div class=\"datagrid-detail-pane-close\">\n <button\n type=\"button\"\n class=\"btn btn-icon btn-link\"\n (click)=\"detailService.close()\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n >\n <cds-icon shape=\"times\"></cds-icon>\n </button>\n </div>\n `,\n standalone: false,\n})\nexport class ClrDatagridDetailHeader implements AfterViewInit {\n @ViewChild('title') title: ElementRef<HTMLElement>;\n\n constructor(\n public detailService: DetailService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get titleId() {\n return `${this.detailService.id}-title`;\n }\n\n ngAfterViewInit(): void {\n this.title.nativeElement.focus();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Component, ContentChild, Input } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n selector: 'clr-dg-detail',\n host: {\n '[class.datagrid-detail-pane]': 'true',\n },\n // We put the @if on the cdkTrapFocus so it doesn't always exist on the page\n // have to test for presence of header for aria-describedby because it was causing unit tests to crash\n template: `\n @if (detailService.isOpen) {\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"!header\"\n class=\"datagrid-detail-pane-content\"\n role=\"dialog\"\n [id]=\"detailService.id\"\n aria-modal=\"true\"\n [attr.aria-labelledby]=\"labelledBy\"\n [attr.aria-label]=\"label\"\n >\n <div class=\"clr-sr-only\">{{ commonStrings.keys.detailPaneStart }}</div>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\">{{ commonStrings.keys.detailPaneEnd }}</div>\n </div>\n }\n `,\n standalone: false,\n})\nexport class ClrDatagridDetail {\n @Input('clrDetailAriaLabelledBy') ariaLabelledBy: string;\n @Input('clrDetailAriaLabel') ariaLabel: string;\n\n @ContentChild(ClrDatagridDetailHeader) header: ClrDatagridDetailHeader;\n\n constructor(\n public detailService: DetailService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get labelledBy(): string {\n if (this.ariaLabelledBy) {\n return this.header ? `${this.header.titleId} ${this.ariaLabelledBy}` : this.ariaLabelledBy;\n } else if (this.ariaLabel) {\n // If aria-label is set by the end user, do not set aria-labelledby\n return null;\n } else {\n return this.header?.titleId || '';\n }\n }\n\n get label(): string {\n if (!this.ariaLabelledBy) {\n return this.ariaLabel || null;\n } else {\n return null;\n }\n }\n\n close(): void {\n this.detailService.close();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-dg-detail-body',\n template: `\n <div class=\"clr-dg-detail-body-wrapper\">\n <ng-content></ng-content>\n </div>\n `,\n host: {\n '[class.datagrid-detail-body]': 'true',\n },\n standalone: false,\n})\nexport class ClrDatagridDetailBody {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ColumnState } from '../interfaces/column-state.interface';\n\nexport const COLUMN_STATE = new InjectionToken<ColumnState>('COLUMN_STATE');\n\nexport function columnStateFactory() {\n return new BehaviorSubject<ColumnState>({\n changes: [],\n });\n}\n\nexport const COLUMN_STATE_PROVIDER = {\n provide: COLUMN_STATE,\n useFactory: columnStateFactory,\n};\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n Directive,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { COLUMN_STATE } from './providers/column-state.provider';\nimport { ColumnsService } from './providers/columns.service';\n\n@Directive({\n selector: '[clrDgHideableColumn]',\n standalone: false,\n})\n\n/**\n *\n * @description\n * A structural directive meant to be used inside a clr-dg-column component.\n *\n * <clr-dg-column>\n * <ng-container *clrDgHideableColumn=\"{ hidden: true }\">\n * User ID\n * </ng-container>\n * </clr-dg-column>\n *\n * It sets up state and properties so that columns can be manges for hide/show by a service and an internal\n * datagrid toggle component.\n *\n */\nexport class ClrDatagridHideableColumn implements OnDestroy {\n @Output('clrDgHiddenChange') hiddenChange = new EventEmitter<boolean>();\n\n /**\n *\n * @description\n * Used to initialize the column with either hidden or visible state.\n *\n */\n private _hidden: boolean;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private titleTemplateRef: TemplateRef<any>,\n viewContainerRef: ViewContainerRef,\n private columnsService: ColumnsService,\n @Optional()\n @Inject(COLUMN_STATE)\n private columnState: BehaviorSubject<ColumnState>\n ) {\n viewContainerRef.createEmbeddedView(titleTemplateRef);\n\n if (!columnState) {\n throw new Error('The *clrDgHideableColumn directive can only be used inside of a clr-dg-column component.');\n }\n }\n\n /**\n *\n * @description\n * Setter fn for the @Input with the same name as this structural directive.\n * It allows the user to pre-configure the column's hide/show state. { hidden: true }\n * It's more verbose but has more Clarity.\n *\n * @example\n * *clrDgHideableColumn\n * *clrDgHideableColumn={hidden: false}\n * *clrDgHideableColumn={hidden: true}\n *\n */\n @Input('clrDgHideableColumn')\n set clrDgHideableColumn(value: { hidden: boolean } | string) {\n if (typeof value === 'string') {\n this.clrDgHidden = false;\n return;\n }\n this.clrDgHidden = value && value.hidden ? value.hidden : false;\n }\n\n @Input('clrDgHidden')\n set clrDgHidden(hidden: boolean) {\n this._hidden = hidden ? hidden : false;\n this.columnsService.emitStateChange(this.columnState, {\n hidden: this._hidden,\n changes: [DatagridColumnChanges.HIDDEN],\n });\n }\n\n ngOnInit() {\n this.columnsService.emitStateChange(this.columnState, {\n hideable: true,\n titleTemplateRef: this.titleTemplateRef,\n hidden: this._hidden,\n changes: [DatagridColumnChanges.HIDDEN],\n });\n\n this.subscriptions.push(\n this.columnState.subscribe((state: ColumnState) => {\n if (state.changes && state.changes.indexOf(DatagridColumnChanges.HIDDEN) > -1) {\n this.hiddenChange.emit(state.hidden); // Can emit through @Output when desugared syntax is used\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DetailService } from './providers/detail.service';\n\n@Directive({\n selector: '[clrIfDetail]',\n standalone: false,\n})\nexport class ClrIfDetail implements OnInit, OnDestroy {\n @Output('clrIfDetailChange') stateChange = new EventEmitter<any>(null);\n\n private subscriptions: Subscription[] = [];\n private skip = false; // This keeps us from resetting the input and calling the toggle twice\n private embeddedViewRef: EmbeddedViewRef<any>;\n\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n private detailService: DetailService\n ) {\n detailService.enabled = true;\n }\n\n @Input('clrIfDetail')\n set state(model: any) {\n if (!this.skip) {\n this.detailService.toggle(model);\n }\n this.skip = false;\n }\n\n get viewContext() {\n return { $implicit: this.detailService.state };\n }\n\n ngOnInit() {\n this.subscriptions.push(\n this.detailService.stateChange.subscribe(state => {\n if (state === true) {\n this.togglePanel(true);\n } else {\n this.togglePanel(false);\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private togglePanel(showPanel: boolean) {\n let stateChangeParams = null;\n\n if (showPanel === true) {\n if (!this.embeddedViewRef) {\n // Create a context forward `Proxy` that will always bind to the user-specified context,\n // without having to re-assign it whenever changes.\n const viewContext = this._createContextForwardProxy();\n this.embeddedViewRef = this.viewContainer.createEmbeddedView(this.templateRef, viewContext);\n }\n\n this.skip = true;\n stateChangeParams = this.detailService.state;\n } else {\n this.viewContainer.clear();\n this.embeddedViewRef = null;\n }\n\n this.stateChange.emit(stateChangeParams);\n }\n\n /**\n * For a given outlet instance, we create a proxy object that delegates\n * to the user-specified context. This allows changing, or swapping out\n * the context object completely without having to destroy/re-create the view.\n */\n private _createContextForwardProxy() {\n return new Proxy(\n {},\n {\n set: (_target, prop, newValue) => {\n if (!this.viewContext) {\n return false;\n }\n return Reflect.set(this.viewContext, prop, newValue);\n },\n get: (_target, prop, receiver) => {\n if (!this.viewContext) {\n return undefined;\n }\n return Reflect.get(this.viewContext, prop, receiver);\n },\n }\n );\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { AfterContentInit, Component, ContentChildren, Input, OnDestroy, QueryList } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { SelectionType } from './enums/selection-type';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\n\n/**\n * Generic bland container serving various purposes for Datagrid.\n * For instance, it can help span a text over multiple rows in detail view.\n */\n@Component({\n selector: 'clr-dg-row-detail',\n template: `\n <div class=\"clr-sr-only\">\n {{ beginningOfExpandableContentAriaText }}\n {{ commonStrings.keys.datagridExpandableRowsHelperText }}\n </div>\n @if (this.cells?.length > 0) {\n <ng-container [ngTemplateOutlet]=\"noCells\"></ng-container>\n }\n @if (this.cells?.length === 0) {\n <clr-dg-cell class=\"datagrid-container\">\n <ng-container [ngTemplateOutlet]=\"noCells\"></ng-container>\n </clr-dg-cell>\n }\n\n <ng-template #noCells>\n <ng-content></ng-content>\n </ng-template>\n <div class=\"clr-sr-only\">{{ endOfExpandableContentAriaText }}</div>\n `,\n host: {\n '[class.datagrid-row-flex]': 'true',\n '[class.datagrid-row-detail]': 'true',\n '[attr.id]': 'expand.expandableId',\n role: 'row',\n },\n standalone: false,\n})\nexport class ClrDatagridRowDetail implements AfterContentInit, OnDestroy {\n @Input('clrRowDetailBeginningAriaText') _beginningOfExpandableContentAriaText: string;\n @Input('clrRowDetailEndAriaText') _endOfExpandableContentAriaText: string;\n\n replacedRow = false;\n\n /* reference to the enum so that template can access it */\n SELECTION_TYPE = SelectionType;\n\n @ContentChildren(ClrDatagridCell) cells: QueryList<ClrDatagridCell>;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n public selection: Selection,\n public rowActionService: RowActionService,\n public expand: DatagridIfExpandService,\n public expandableRows: ExpandableRowsCount,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n @Input('clrDgReplace')\n set replace(value: boolean) {\n this.expand.setReplace(!!value);\n }\n\n get beginningOfExpandableContentAriaText() {\n return (\n this._beginningOfExpandableContentAriaText ||\n `${this.commonStrings.keys.datagridExpandableBeginningOf} ${this.commonStrings.keys.datagridExpandableRowContent}`\n );\n }\n\n get endOfExpandableContentAriaText() {\n return (\n this._endOfExpandableContentAriaText ||\n `${this.commonStrings.keys.datagridExpandableEndOf} ${this.commonStrings.keys.datagridExpandableRowContent}`\n );\n }\n\n ngAfterContentInit() {\n this.subscriptions.push(\n this.expand.replace.subscribe(replaceChange => {\n this.replacedRow = replaceChange;\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Component } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { SelectionType } from './enums/selection-type';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\nimport { Selection } from './providers/selection';\n\n@Component({\n selector: 'clr-dg-footer',\n template: `\n @if (selection.selectionType === SELECTION_TYPE.Multi && selection.current?.length > 0) {\n <div class=\"clr-form-control-disabled\">\n <clr-checkbox-wrapper class=\"datagrid-footer-select\">\n <input clrCheckbox type=\"checkbox\" checked=\"checked\" disabled />\n <label>{{ selection.current.length }}</label>\n <span class=\"clr-sr-only\">{{ commonStrings.keys.selectedRows }}</span>\n </clr-checkbox-wrapper>\n </div>\n }\n @if (!detailService.isOpen) {\n @if (hasHideableColumns) {\n <clr-dg-column-toggle></clr-dg-column-toggle>\n }\n <div class=\"datagrid-footer-description\">\n <ng-content></ng-content>\n </div>\n }\n <ng-content select=\"clr-dg-pagination\"></ng-content>\n `,\n host: {\n '[class.datagrid-footer]': 'true',\n },\n standalone: false,\n})\nexport class ClrDatagridFooter<T = any> {\n /* reference to the enum so that template can access */\n SELECTION_TYPE = SelectionType;\n\n constructor(\n public selection: Selection<T>,\n public detailService: DetailService,\n private columnsService: ColumnsService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get hasHideableColumns(): boolean {\n return this.columnsService.hasHideableColumns;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Component, Input, ViewChild } from '@angular/core';\nimport { ClrControlLabel } from '@clr/angular/forms/common';\nimport { uniqueIdFactory } from '@clr/angular/utils';\n\nimport { Page } from './providers/page';\n\n@Component({\n selector: 'clr-dg-page-size',\n template: `\n <label [for]=\"pageSizeOptionsId\"><ng-content></ng-content></label>\n <div class=\"clr-select-wrapper\">\n <select [id]=\"pageSizeOptionsId\" [class.clr-page-size-select]=\"true\" [(ngModel)]=\"page.size\">\n @for (option of pageSizeOptions; track option) {\n <option [ngValue]=\"option\">{{ option }}</option>\n }\n </select>\n </div>\n `,\n standalone: false,\n})\nexport class ClrDatagridPageSize {\n @Input('clrPageSizeOptions') pageSizeOptions: number[];\n @Input('clrPageSizeOptionsId') pageSizeOptionsId = uniqueIdFactory();\n\n constructor(public page: Page) {}\n\n @ViewChild(ClrControlLabel, { static: true })\n set label(label: ClrControlLabel) {\n if (label) {\n label.disableGrid();\n }\n }\n\n ngOnInit() {\n if (!this.pageSizeOptions || this.pageSizeOptions.length === 0) {\n this.pageSizeOptions = [this.page.size];\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { DetailService } from './providers/detail.service';\nimport { Page } from './providers/page';\n\n@Component({\n selector: 'clr-dg-pagination',\n template: `\n @if (!detailService.isOpen) {\n @if (_pageSizeComponent) {\n <div class=\"pagination-size\">\n <ng-content select=\"clr-dg-page-size\"></ng-content>\n </div>\n }\n <div class=\"pagination-description\">\n <ng-content></ng-content>\n </div>\n @if (page.last > 1) {\n <div class=\"pagination-list\">\n <button\n type=\"button\"\n class=\"pagination-first\"\n [disabled]=\"page.current <= 1\"\n (click)=\"page.current = 1\"\n [attr.aria-label]=\"commonStrings.keys.firstPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.firstPage }}</span>\n <cds-icon shape=\"step-forward-2\" direction=\"down\"></cds-icon>\n </button>\n <button\n type=\"button\"\n class=\"pagination-previous\"\n [disabled]=\"page.current <= 1\"\n (click)=\"page.current = page.current - 1\"\n [attr.aria-label]=\"commonStrings.keys.previousPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.previousPage }}</span>\n <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n </button>\n <div class=\"pagination-pages\">\n @if (!disableCurrentPageInput) {\n <input\n #currentPageInput\n type=\"text\"\n class=\"pagination-current clr-input\"\n [size]=\"page.last.toString().length\"\n [value]=\"page.current\"\n (keydown.enter)=\"updateCurrentPage($event)\"\n (blur)=\"verifyCurrentPage($event)\"\n [attr.aria-label]=\"commonStrings.keys.currentPage\"\n />\n } @else {\n <span>{{ page.current }}</span>\n }\n &nbsp;/&nbsp;<span [attr.aria-label]=\"commonStrings.keys.totalPages\">{{ page.last }}</span>\n </div>\n <button\n type=\"button\"\n class=\"pagination-next\"\n [disabled]=\"page.current >= page.last\"\n (click)=\"page.current = page.current + 1\"\n [attr.aria-label]=\"commonStrings.keys.nextPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.nextPage }}</span>\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n <button\n type=\"button\"\n class=\"pagination-last\"\n [disabled]=\"page.current >= page.last\"\n (click)=\"page.current = page.last\"\n [attr.aria-label]=\"commonStrings.keys.lastPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.lastPage }}</span>\n <cds-icon shape=\"step-forward-2\" direction=\"up\"></cds-icon>\n </button>\n </div>\n }\n }\n @if (detailService.isOpen) {\n <div class=\"pagination-description-compact\">\n {{ page.firstItem + 1 }}-{{ page.lastItem + 1 }} / {{ page.totalItems }}\n </div>\n <div class=\"pagination-list\">\n <button\n type=\"button\"\n class=\"pagination-previous\"\n [disabled]=\"page.current <= 1\"\n (click)=\"page.current = page.current - 1\"\n [attr.aria-label]=\"commonStrings.keys.previousPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.previousPage }}</span>\n <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n </button>\n <span>{{ page.current }}</span>\n <button\n type=\"button\"\n class=\"pagination-next\"\n [disabled]=\"page.current >= page.last\"\n (click)=\"page.current = page.current + 1\"\n [attr.aria-label]=\"commonStrings.keys.nextPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.nextPage }}</span>\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n </div>\n }\n `,\n host: { '[class.pagination]': 'true' },\n standalone: false,\n})\nexport class ClrDatagridPagination implements OnDestroy, OnInit {\n @Input('clrDgPageInputDisabled') disableCurrentPageInput: boolean;\n\n @Output('clrDgPageChange') currentChanged = new EventEmitter<number>(false);\n\n @ContentChild(ClrDatagridPageSize) _pageSizeComponent: ClrDatagridPageSize;\n\n @ViewChild('currentPageInput') currentPageInputRef: ElementRef<HTMLInputElement>;\n\n /**\n * Subscription to the page service changes\n */\n private _pageSubscription: Subscription;\n\n constructor(\n public page: Page,\n public commonStrings: ClrCommonStringsService,\n public detailService: DetailService\n ) {\n page.activated = true;\n }\n\n /**\n * Page size\n */\n @Input('clrDgPageSize')\n get pageSize(): number {\n return this.page.size;\n }\n set pageSize(size: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof size === 'number') {\n this.page.size = size;\n }\n }\n\n /**\n * Total items (needed to guess the last page)\n */\n @Input('clrDgTotalItems')\n get totalItems(): number {\n return this.page.totalItems;\n }\n set totalItems(total: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof total === 'number') {\n this.page.totalItems = total;\n }\n }\n\n /**\n * Last page\n */\n @Input('clrDgLastPage')\n get lastPage(): number {\n return this.page.last;\n }\n set lastPage(last: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof last === 'number') {\n this.page.last = last;\n }\n }\n\n /**\n * Current page\n */\n @Input('clrDgPage')\n get currentPage(): number {\n return this.page.current;\n }\n set currentPage(page: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof page === 'number') {\n this.page.current = page;\n }\n }\n\n /**\n * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n */\n get firstItem(): number {\n return this.page.firstItem;\n }\n\n /**\n * Index of the last item displayed on the current page, starting at 0, -1 if none displayed\n */\n get lastItem(): number {\n return this.page.lastItem;\n }\n\n /**\n * Conditionally adds page numbers before and after the current page\n */\n get middlePages(): number[] {\n const middlePages: number[] = [];\n if (this.page.current > 1) {\n middlePages.push(this.page.current - 1);\n }\n middlePages.push(this.page.current);\n if (this.page.current < this.page.last) {\n middlePages.push(this.page.current + 1);\n }\n return middlePages;\n }\n\n /**********\n * Subscription to the Page service for page changes.\n * Note: this only emits after the datagrid is initialized/stabalized and the page changes.\n */\n ngOnInit() {\n /*\n * Default page size is 10.\n * The reason we set it here and not in the provider itself is because\n * we don't want pagination if this component isn't present in the datagrid.\n */\n if (!this.page.size) {\n this.page.size = 10;\n }\n this._pageSubscription = this.page.change.subscribe(current => this.currentChanged.emit(current));\n }\n\n ngOnDestroy() {\n this.page.resetPageSize(true);\n if (this._pageSubscription) {\n this._pageSubscription.unsubscribe();\n }\n }\n\n /**\n * Moves to the previous page if it exists\n */\n previous() {\n this.page.previous();\n }\n\n /**\n * Moves to the next page if it exists\n */\n next() {\n this.page.next();\n }\n\n verifyCurrentPage(event: any): void {\n const parsed = parseInt(event.target.value, 10);\n if (parsed !== this.page.current) {\n event.target.value = this.page.current;\n }\n }\n\n /**\n * We only update the pagination's current page on enter.\n */\n updateCurrentPage(event: any): void {\n const parsed = parseInt(event.target.value, 10);\n\n // if the input value, is not a number, we don't update the page\n if (!isNaN(parsed)) {\n if (parsed < 1) {\n this.page.current = 1;\n } else if (parsed > this.page.last) {\n this.page.current = this.page.last;\n } else {\n this.page.current = parsed;\n }\n }\n\n /**\n * Set the input's value to the new current page. This is needed because the code\n * above may have changed the value from what the user entered in.\n */\n this.currentPageInputRef.nativeElement.value = this.page.current.toString();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { ClrDatagridComparatorInterface } from './comparator.interface';\n\nexport interface ClrDatagridStateInterface<T = any> {\n page?: { from?: number; to?: number; size?: number; current?: number };\n sort?: { by: string | ClrDatagridComparatorInterface<T>; reverse: boolean };\n filters?: any[];\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Observable } from 'rxjs';\n\nexport interface ClrDatagridFilterInterface<T, S = any> {\n readonly state?: S;\n\n changes: Observable<any>;\n\n isActive(): boolean;\n\n accepts(item: T): boolean;\n\n equals?(other: ClrDatagridFilterInterface<T, any>): boolean;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport interface ClrDatagridStringFilterInterface<T> {\n accepts(item: T, search: string): boolean;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport interface ClrDatagridNumericFilterInterface<T> {\n accepts(item: T, low: number, high: number): boolean;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport interface ClrDatagridComparatorInterface<T> {\n compare(a: T, b: T): number;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport interface ClrDatagridVirtualScrollRangeInterface<T> {\n total: number;\n skip: number;\n data: T[];\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Directive, Optional } from '@angular/core';\n\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\n\n/*\n * I don't think this deserves to be in IfExpanded itself,\n * so I'm adding a second directive on the same selector for now just for the datagrid\n */\n@Directive({\n selector: '[clrIfExpanded]',\n standalone: false,\n})\nexport class DatagridDetailRegisterer {\n constructor(@Optional() private expandableRowsCount: ExpandableRowsCount) {\n if (expandableRowsCount) {\n expandableRowsCount.register();\n }\n }\n\n ngOnDestroy() {\n if (this.expandableRowsCount) {\n this.expandableRowsCount.unregister();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Directive, ElementRef, EventEmitter, Inject, OnDestroy, Output, Renderer2 } from '@angular/core';\nimport { DomAdapter } from '@clr/angular/utils';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState } from '../interfaces/column-state.interface';\nimport { ColumnResizerService } from '../providers/column-resizer.service';\nimport { COLUMN_STATE, COLUMN_STATE_PROVIDER } from '../providers/column-state.provider';\nimport { ColumnsService } from '../providers/columns.service';\n\n@Directive({\n selector: 'clr-dg-column',\n providers: [ColumnResizerService, COLUMN_STATE_PROVIDER],\n standalone: false,\n})\nexport class DatagridHeaderRenderer implements OnDestroy {\n @Output('clrDgColumnResize') resizeEmitter = new EventEmitter<number>();\n\n /**\n * Indicates if the column has a strict width, so it doesn't shrink or expand based on the content.\n */\n private widthSet = false;\n private autoSet = false;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n organizer: DatagridRenderOrganizer,\n private domAdapter: DomAdapter,\n private columnResizerService: ColumnResizerService,\n private columnsService: ColumnsService,\n @Inject(COLUMN_STATE) private columnState: BehaviorSubject<ColumnState>\n ) {\n this.subscriptions.push(\n organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n getColumnWidthState(): Partial<ColumnState> {\n const strictWidth = this.detectStrictWidth();\n return {\n width: this.computeWidth(strictWidth),\n strictWidth: strictWidth,\n };\n }\n\n setColumnState(index: number) {\n this.columnsService.columns[index] = this.columnState;\n }\n\n setWidth(state: ColumnState) {\n if (state.strictWidth) {\n if (this.columnResizerService.resizedBy) {\n this.resizeEmitter.emit(state.width);\n this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n this.widthSet = false;\n }\n // Don't set width if there is a user-defined one. Just add the strict width class.\n this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n this.autoSet = false;\n } else {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n this.widthSet = true;\n this.autoSet = true;\n }\n }\n\n setHidden(state: ColumnState) {\n if (state.hidden) {\n this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n } else {\n this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n }\n }\n\n private clearWidth() {\n // remove the width only if we set it, and it is not changed by dragging.\n if (this.widthSet && !this.columnResizerService.resizedBy) {\n this.renderer.setStyle(this.el.nativeElement, 'width', null);\n }\n if (this.autoSet) {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n }\n }\n\n private detectStrictWidth(): number {\n if (this.columnResizerService.resizedBy) {\n return this.columnResizerService.widthAfterResize;\n } else if (this.autoSet) {\n return 0;\n } else {\n return this.domAdapter.userDefinedWidth(this.el.nativeElement);\n }\n }\n\n private computeWidth(strictWidth: number): number {\n let width: number = strictWidth;\n if (!width) {\n width = this.domAdapter.scrollWidth(this.el.nativeElement);\n }\n return width;\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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/*\n * This version of the DomAdapter is for use on non-browser platforms, where there are no\n * nativeElements to use for calculations.\n */\n\nimport { Injectable } from '@angular/core';\nimport { DomAdapter } from '@clr/angular/utils';\n\n@Injectable()\nexport class NoopDomAdapter implements DomAdapter {\n userDefinedWidth(_element: any): number {\n return 0;\n }\n\n scrollBarWidth(_element: any) {\n return 0;\n }\n\n scrollWidth(_element: any) {\n return 0;\n }\n\n computedHeight(_element: any): number {\n return 0;\n }\n\n clientRect(_element: any): DOMRect {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0,\n } as DOMRect;\n }\n\n minWidth(_element: any): number {\n return 0;\n }\n\n focus(_element: any): void {\n // Do nothing\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n ContentChildren,\n Directive,\n ElementRef,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport { DomAdapter } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagrid } from '../datagrid';\nimport { DatagridHeaderRenderer } from './header-renderer';\nimport { NoopDomAdapter } from './noop-dom-adapter';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { DatagridRowRenderer } from './row-renderer';\nimport { DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState, ColumnStateDiff } from '../interfaces/column-state.interface';\nimport { ColumnsService } from '../providers/columns.service';\nimport { DetailService } from '../providers/detail.service';\nimport { Items } from '../providers/items';\nimport { Page } from '../providers/page';\nimport { TableSizeService } from '../providers/table-size.service';\nimport { KeyNavigationGridController } from '../utils/key-navigation-grid.controller';\n\n// Fixes build error\n// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)\nexport const domAdapterFactory = (platformId: any) => {\n if (isPlatformBrowser(platformId)) {\n return new DomAdapter();\n } else {\n return new NoopDomAdapter();\n }\n};\n\n// Fixes build error\n// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)\n@Directive({\n selector: 'clr-datagrid',\n providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],\n standalone: false,\n})\nexport class DatagridMainRenderer implements AfterContentInit, AfterViewInit, AfterViewChecked, OnDestroy {\n @ContentChildren(DatagridHeaderRenderer) private headers: QueryList<DatagridHeaderRenderer>;\n @ContentChildren(DatagridRowRenderer) private rows: QueryList<DatagridRowRenderer>;\n\n private _heightSet = false;\n private shouldStabilizeColumns = true;\n private subscriptions: Subscription[] = [];\n private intersectionObserver: IntersectionObserver = null;\n\n /**\n * Indicates if we want to re-compute columns width. This should only happen:\n * 1) When headers change, with columns being added or removed\n * 2) When rows are lazily loaded for the first time\n */\n private columnsSizesStable = false;\n\n constructor(\n private datagrid: ClrDatagrid,\n private organizer: DatagridRenderOrganizer,\n private items: Items,\n private page: Page,\n private el: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n detailService: DetailService,\n private tableSizeService: TableSizeService,\n private columnsService: ColumnsService,\n private ngZone: NgZone,\n private keyNavigation: KeyNavigationGridController,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n this.subscriptions.push(\n organizer.filterRenderSteps(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS).subscribe(() => this.computeHeadersWidth())\n );\n\n this.subscriptions.push(\n page.sizeChange.subscribe(() => {\n if (this._heightSet) {\n this.resetDatagridHeight();\n }\n })\n );\n this.subscriptions.push(detailService.stateChange.subscribe(state => this.toggleDetailPane(state)));\n this.subscriptions.push(items.change.subscribe(() => (this.shouldStabilizeColumns = true)));\n }\n\n ngOnInit() {\n this.columnsService.columnsStateChange.subscribe(change => this.columnStateChanged(change));\n // Datagrid used in other components like Accordion, Tabs or wrapped in onPush component which have their content\n // hidden by default gets initialised without being visible and breakes rendering cycle.\n // Should run only the first time if the datagrid is not visible on first initialization.\n if (this.el.nativeElement.offsetParent === null) {\n this.intersectionObserver = new IntersectionObserver(([entry]) => {\n if ((this.el.nativeElement.offsetParent || entry.isIntersecting) && this.columnsSizesStable) {\n this.columnsSizesStable = false;\n this.changeDetectorRef.markForCheck();\n this.intersectionObserver.disconnect();\n }\n });\n this.intersectionObserver.observe(this.el.nativeElement);\n }\n }\n\n ngAfterContentInit() {\n this.setupColumns();\n\n this.subscriptions.push(\n this.headers.changes.subscribe(() => {\n // TODO: only re-stabilize if a column was added or removed. Reordering is fine.\n // Need to setup columns before stabalizing them\n this.setupColumns();\n this.columnsSizesStable = false;\n this.stabilizeColumns();\n })\n );\n }\n\n // Initialize and set Table width for horizontal scrolling here.\n ngAfterViewInit() {\n this.tableSizeService.table = this.el;\n }\n\n ngAfterViewChecked() {\n if (this.shouldStabilizeColumns) {\n this.stabilizeColumns();\n }\n\n if (this.shouldComputeHeight()) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.computeDatagridHeight();\n });\n });\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.intersectionObserver?.disconnect();\n }\n\n toggleDetailPane(state: boolean) {\n if (this.headers) {\n if (state && !this.columnsService.hasCache()) {\n this.columnsService.cache();\n this.columnsService.visibleColumns.forEach((header, index) => {\n if (index > 0) {\n this.columnsService.emitStateChangeAt(header.columnIndex, {\n changes: [DatagridColumnChanges.HIDDEN],\n hidden: state,\n });\n }\n });\n } else if (!state) {\n this.columnsService.resetToLastCache();\n }\n }\n }\n\n private setupColumns() {\n this.headers.forEach((header, index) => header.setColumnState(index));\n this.columnsService.columns.splice(this.headers.length); // Trim any old columns\n // Sets columnIndex for each column\n this.columnsService.columns.forEach((column, index) => {\n this.columnsService.emitStateChange(column, { changes: [DatagridColumnChanges.INITIALIZE], columnIndex: index });\n });\n }\n\n private shouldComputeHeight(): boolean {\n if (!this._heightSet && this.page.size > 0) {\n if (this.items.displayed.length === this.page.size) {\n return true;\n }\n }\n return false;\n }\n\n private computeDatagridHeight() {\n const height = window.getComputedStyle(this.el.nativeElement).height;\n this.renderer.setStyle(this.el.nativeElement, 'height', height);\n this._heightSet = true;\n }\n\n private resetDatagridHeight() {\n this.renderer.setStyle(this.el.nativeElement, 'height', '');\n this._heightSet = false;\n }\n\n /**\n * Makes each header compute its width.\n */\n private computeHeadersWidth() {\n const nbColumns: number = this.headers.length;\n const headerWidths = this.headers.map(header => {\n return header.getColumnWidthState();\n });\n let allStrict = true;\n this.headers.forEach((header, index) => {\n // On the last header column check whether all columns have strict widths.\n // If all columns have strict widths, remove the strict width from the last column and make it the column's\n // minimum width so that when all previous columns shrink, it will get a flexible width and cover the empty\n // gap in the Datagrid.\n const state: ColumnStateDiff = {\n changes: [DatagridColumnChanges.WIDTH],\n ...headerWidths[index],\n };\n\n if (!state.strictWidth) {\n allStrict = false;\n }\n\n if (nbColumns === index + 1 && allStrict) {\n state.strictWidth = 0;\n }\n\n this.columnsService.emitStateChangeAt(index, state);\n });\n }\n\n private columnStateChanged(state: ColumnState) {\n // eslint-disable-next-line eqeqeq\n if (!this.headers || state.columnIndex == null) {\n return;\n }\n const columnIndex = state.columnIndex;\n if (state.changes && state.changes.length) {\n state.changes.forEach(change => {\n switch (change) {\n case DatagridColumnChanges.WIDTH:\n this.headers.get(columnIndex).setWidth(state);\n this.rows.forEach(row => {\n if (row?.cells.length === this.columnsService.columns.length) {\n row.cells.get(columnIndex).setWidth(state);\n row.expandableRows.forEach(expandableRow => {\n expandableRow.cells.get(columnIndex)?.setWidth(state);\n });\n }\n });\n break;\n case DatagridColumnChanges.HIDDEN:\n this.headers.get(columnIndex).setHidden(state);\n this.rows.forEach(row => {\n if (row.cells && row.cells.length) {\n row.cells.get(columnIndex).setHidden(state);\n\n row.expandableRows.forEach(expandableRow => {\n expandableRow.cells.get(columnIndex)?.setHidden(state);\n });\n }\n });\n this.updateColumnSeparatorsVisibility();\n this.keyNavigation.resetKeyGrid();\n break;\n case DatagridColumnChanges.INITIALIZE:\n if (state.hideable && state.hidden) {\n this.headers.get(columnIndex).setHidden(state);\n this.rows.forEach(row => {\n row.setCellsState();\n row.expandableRows.forEach(expandableRow => {\n expandableRow.setCellsState();\n });\n });\n }\n break;\n default:\n break;\n }\n });\n }\n }\n\n /**\n * Triggers a whole re-rendring cycle to set column sizes, if needed.\n */\n private stabilizeColumns() {\n if (this.columnsSizesStable) {\n // Nothing to do.\n return;\n }\n // Resize when the rows are loaded.\n if (this.items.displayed.length > 0) {\n this.organizer.resize();\n this.columnsSizesStable = true;\n }\n }\n\n private updateColumnSeparatorsVisibility() {\n const visibleColumns = this.datagrid.columns.filter(column => !column.isHidden);\n visibleColumns.forEach((column, index) => {\n if (index === visibleColumns.length - 1) {\n column.showSeparator = false;\n } else if (!column.showSeparator) {\n column.showSeparator = true;\n }\n });\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { Directive, ElementRef, OnDestroy } from '@angular/core';\n\nimport { DatagridRowRenderer } from './row-renderer';\nimport { ColumnsService } from '../providers/columns.service';\n\n@Directive({\n selector: 'clr-dg-row-detail',\n standalone: false,\n})\nexport class DatagridRowDetailRenderer extends DatagridRowRenderer implements OnDestroy {\n constructor(\n private parentRow: DatagridRowRenderer,\n columnsService: ColumnsService,\n el: ElementRef<HTMLElement>\n ) {\n super(columnsService, el);\n\n parentRow.expandableRows.push(this);\n }\n\n override ngOnDestroy() {\n this.parentRow.expandableRows = [];\n super.ngOnDestroy();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ClrCheckboxModule } from '@clr/angular/forms/checkbox';\nimport { ClrInputModule } from '@clr/angular/forms/input';\nimport { ClrNumberInputModule } from '@clr/angular/forms/number-input';\nimport { ClrRadioModule } from '@clr/angular/forms/radio';\nimport { ClrSelectModule } from '@clr/angular/forms/select';\nimport {\n angleDoubleIcon,\n arrowIcon,\n ClarityIcons,\n ClrIcon,\n ellipsisVerticalIcon,\n filterGridCircleIcon,\n filterGridIcon,\n stepForward2Icon,\n timesIcon,\n twoWayArrowsIcon,\n viewColumnsIcon,\n windowCloseIcon,\n} from '@clr/angular/icon';\nimport { ClrPopoverModuleNext } from '@clr/angular/popover/common';\nimport { ClrSpinnerModule } from '@clr/angular/progress/spinner';\nimport {\n CdkDragModule,\n CdkTrapFocusModule,\n ClrConditionalModule,\n ClrExpandableAnimationModule,\n ClrIfExpanded,\n ClrKeyFocusModule,\n ClrLoadingModule,\n ClrOutsideClickModule,\n} from '@clr/angular/utils';\n\nimport { DatagridNumericFilter } from './built-in/filters/datagrid-numeric-filter';\nimport { DatagridStringFilter } from './built-in/filters/datagrid-string-filter';\nimport { ActionableOompaLoompa } from './chocolate/actionable-oompa-loompa';\nimport { DatagridWillyWonka } from './chocolate/datagrid-willy-wonka';\nimport { ExpandableOompaLoompa } from './chocolate/expandable-oompa-loompa';\nimport { ClrDatagrid } from './datagrid';\nimport { ClrDatagridActionBar } from './datagrid-action-bar';\nimport { ClrDatagridActionOverflow } from './datagrid-action-overflow';\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { ClrDatagridColumn } from './datagrid-column';\nimport { ClrDatagridColumnSeparator } from './datagrid-column-separator';\nimport { ClrDatagridColumnToggle } from './datagrid-column-toggle';\nimport { ClrDatagridColumnToggleButton } from './datagrid-column-toggle-button';\nimport { ClrDatagridDetail } from './datagrid-detail';\nimport { ClrDatagridDetailBody } from './datagrid-detail-body';\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\nimport { DatagridDetailRegisterer } from './datagrid-detail-registerer';\nimport { ClrDatagridFilter } from './datagrid-filter';\nimport { ClrDatagridFooter } from './datagrid-footer';\nimport { ClrDatagridHideableColumn } from './datagrid-hideable-column';\nimport { ClrIfDetail } from './datagrid-if-detail';\nimport { ClrDatagridItems } from './datagrid-items';\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { ClrDatagridPagination } from './datagrid-pagination';\nimport { ClrDatagridPlaceholder } from './datagrid-placeholder';\nimport { ClrDatagridRow } from './datagrid-row';\nimport { ClrDatagridRowDetail } from './datagrid-row-detail';\nimport { ClrDatagridSelectionCellDirective } from './datagrid-selection-cell.directive';\nimport { ClrDatagridSingleSelectionValueAccessor } from './datagrid-single-selection.directive';\nimport { ClrDatagridVirtualScrollDirective } from './datagrid-virtual-scroll.directive';\nimport { DatagridCellRenderer } from './render/cell-renderer';\nimport { DatagridHeaderRenderer } from './render/header-renderer';\nimport { DatagridMainRenderer } from './render/main-renderer';\nimport { DatagridRowDetailRenderer } from './render/row-detail-renderer';\nimport { DatagridRowRenderer } from './render/row-renderer';\nimport { WrappedCell } from './wrapped-cell';\nimport { WrappedColumn } from './wrapped-column';\nimport { WrappedRow } from './wrapped-row';\n\nexport const CLR_DATAGRID_DIRECTIVES: Type<any>[] = [\n // Core\n ClrDatagrid,\n ClrDatagridActionBar,\n ClrDatagridActionOverflow,\n ClrDatagridCell,\n ClrDatagridColumn,\n ClrDatagridColumnSeparator,\n ClrDatagridDetail,\n ClrDatagridDetailBody,\n ClrDatagridDetailHeader,\n ClrDatagridFilter,\n ClrDatagridFooter,\n ClrDatagridHideableColumn,\n ClrDatagridItems,\n ClrDatagridPageSize,\n ClrDatagridPagination,\n ClrDatagridPlaceholder,\n ClrDatagridRow,\n ClrDatagridRowDetail,\n ClrDatagridSelectionCellDirective,\n ClrDatagridVirtualScrollDirective,\n ClrIfDetail,\n DatagridDetailRegisterer,\n WrappedCell,\n WrappedColumn,\n WrappedRow,\n\n // Renderers\n DatagridCellRenderer,\n DatagridHeaderRenderer,\n DatagridMainRenderer,\n DatagridRowDetailRenderer,\n DatagridRowRenderer,\n\n // Chocolate\n ActionableOompaLoompa,\n DatagridWillyWonka,\n ExpandableOompaLoompa,\n\n // Built-in shortcuts\n DatagridNumericFilter,\n DatagridStringFilter,\n];\n\nconst CLR_DATAGRID_INTERNAL_DIRECTIVES = [ClrDatagridColumnToggle, ClrDatagridColumnToggleButton];\nconst CLR_DATAGRID_STANDALONE_DIRECTIVES = [ClrDatagridSingleSelectionValueAccessor];\nconst CLR_DATAGRID_SHARED_DIRECTIVES = [ClrIfExpanded];\n\n@NgModule({\n imports: [\n CommonModule,\n CdkDragModule,\n CdkTrapFocusModule,\n ClrIcon,\n ClrInputModule,\n ClrRadioModule,\n ClrCheckboxModule,\n ClrNumberInputModule,\n ClrSelectModule,\n FormsModule,\n ClrLoadingModule,\n ClrConditionalModule,\n ClrOutsideClickModule,\n ClrExpandableAnimationModule,\n ClrSpinnerModule,\n ClrPopoverModuleNext,\n ClrKeyFocusModule,\n CLR_DATAGRID_STANDALONE_DIRECTIVES,\n CLR_DATAGRID_SHARED_DIRECTIVES,\n ],\n declarations: [CLR_DATAGRID_DIRECTIVES, CLR_DATAGRID_INTERNAL_DIRECTIVES],\n exports: [CLR_DATAGRID_DIRECTIVES, CLR_DATAGRID_STANDALONE_DIRECTIVES, CLR_DATAGRID_SHARED_DIRECTIVES],\n})\nexport class ClrDatagridModule {\n constructor() {\n ClarityIcons.addIcons(\n ellipsisVerticalIcon,\n viewColumnsIcon,\n windowCloseIcon,\n arrowIcon,\n timesIcon,\n twoWayArrowsIcon,\n stepForward2Icon,\n angleDoubleIcon,\n filterGridCircleIcon,\n filterGridIcon\n );\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\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\nexport * from './datagrid';\nexport * from './datagrid-action-bar';\nexport * from './datagrid-action-overflow';\nexport * from './datagrid-column';\nexport * from './datagrid-column-toggle';\nexport * from './datagrid-column-toggle-button';\nexport * from './datagrid-column-separator';\nexport * from './datagrid-detail';\nexport * from './datagrid-detail-body';\nexport * from './datagrid-detail-header';\nexport * from './datagrid-hideable-column';\nexport * from './datagrid-filter';\nexport * from './datagrid-if-detail';\nexport * from './datagrid-items';\nexport * from './datagrid-row';\nexport * from './datagrid-row-detail';\nexport * from './datagrid-cell';\nexport * from './datagrid-footer';\nexport * from './datagrid-page-size';\nexport * from './datagrid-pagination';\nexport * from './datagrid-placeholder';\n\nexport * from './interfaces/state.interface';\nexport * from './enums/sort-order.enum';\nexport * from './enums/selection-type';\nexport * from './interfaces/filter.interface';\nexport * from './interfaces/string-filter.interface';\nexport * from './interfaces/numeric-filter.interface';\nexport * from './interfaces/comparator.interface';\nexport * from './interfaces/virtual-scroll-data-range.interface';\n\nexport * from './built-in/filters/datagrid-string-filter';\nexport * from './built-in/filters/datagrid-numeric-filter';\nexport * from './built-in/filters/datagrid-property-string-filter';\nexport * from './built-in/filters/datagrid-property-numeric-filter';\nexport * from './built-in/comparators/datagrid-property-comparator';\n\nexport * from './chocolate/expandable-oompa-loompa';\nexport * from './chocolate/actionable-oompa-loompa';\nexport * from './chocolate/datagrid-willy-wonka';\n\nexport * from './datagrid.module';\n\nexport { Selection } from './providers/selection'; // exported specifically for appfx datagrid;\nexport { ClrDatagridItemsIdentityFunction } from './providers/items';\nexport { ClrDatagridSelectionCellDirective } from './datagrid-selection-cell.directive';\nexport { ClrDatagridVirtualScrollDirective } from './datagrid-virtual-scroll.directive';\nexport { ClrDatagridSingleSelectionValueAccessor } from './datagrid-single-selection.directive';\nexport { DatagridDetailRegisterer } from './datagrid-detail-registerer';\nexport { WrappedCell } from './wrapped-cell';\nexport { WrappedColumn } from './wrapped-column';\nexport { WrappedRow } from './wrapped-row';\nexport { DatagridMainRenderer } from './render/main-renderer';\nexport { DatagridHeaderRenderer } from './render/header-renderer';\nexport { DatagridCellRenderer } from './render/cell-renderer';\nexport { DatagridRowRenderer } from './render/row-renderer';\nexport { DatagridRowDetailRenderer } from './render/row-detail-renderer';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.StateDebouncer","i1.Page","i2.StateDebouncer","i1.FiltersProvider","i1","i2.DatagridRenderOrganizer","i3","i4.KeyNavigationGridController","i5","i6","i7.ClrDatagridFilter","i1.Sort","i2.FiltersProvider","i3.DetailService","i4","i7","i8.ClrDatagridColumnSeparator","i9.DatagridNumericFilter","i10.DatagridStringFilter","i2.Sort","i3.Page","i1.Items","nbRow","i1.DetailService","i1.DatagridRenderOrganizer","i1.Selection","i10","i11","i15.ClrDatagridSingleSelectionValueAccessor","i16.ClrDatagridSelectionCellDirective","i4.StateDebouncer","i1.ColumnsService","i1.DatagridWillyWonka","i2.RowActionService","i2.ExpandableRowsCount","i9.Page","i11.KeyNavigationGridController","i12","i15.ClrDatagridCell","i16.ClrDatagridPlaceholder","i17.ClrDatagridRow","i18.ClrDatagridSelectionCellDirective","i19.DatagridCellRenderer","i20.DatagridRowRenderer","i21.ActionableOompaLoompa","i22.ExpandableOompaLoompa","i2.ColumnsService","i8","i9.ClrDatagridColumnToggleButton","i3.DatagridIfExpandService","i4.ExpandableRowsCount","i7.ClrDatagridCell","i8.DatagridCellRenderer","i2.DetailService","i3.ColumnsService","i7.ClrDatagridColumnToggle","i2","i1.ExpandableRowsCount","i1.ClrDatagrid","i3.Items","i4.Page","i5.DetailService","i6.TableSizeService","i7.ColumnsService","i8.KeyNavigationGridController","i1.DatagridRowRenderer"],"mappings":"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"}