1import { 2 InputHelper 3} from "./chunk-BFRN4NOY.js"; 4import { 5 LayoutMetaState 6} from "./chunk-HVZEQCYB.js"; 7import { 8 MatIcon, 9 MatIconModule 10} from "./chunk-GZUTVBUJ.js"; 11import { 12 MatCheckbox, 13 MatCheckboxModule 14} from "./chunk-VPAA64CA.js"; 15import { 16 MatTooltip, 17 MatTooltipModule 18} from "./chunk-5LVJELEX.js"; 19import { 20 MatButton, 21 MatButtonModule, 22 MatIconButton, 23 Store, 24 TranslateModule, 25 TranslatePipe, 26 Utils, 27 takeUntilDestroyed 28} from "./chunk-D4PEJ7VH.js"; 29import { 30 AsyncPipe, 31 BehaviorSubject, 32 ChangeDetectionStrategy, 33 ChangeDetectorRef, 34 CommonModule, 35 Component, 36 ContentChild, 37 ContentChildren, 38 DOCUMENT, 39 DestroyRef, 40 Directive, 41 ElementRef, 42 EventEmitter, 43 HostBinding, 44 HostListener, 45 Inject, 46 Injectable, 47 Input, 48 KeyValueDiffers, 49 NgClass, 50 NgForOf, 51 NgIf, 52 NgModule, 53 NgStyle, 54 NgTemplateOutlet, 55 NgZone, 56 Optional, 57 Output, 58 Renderer2, 59 SkipSelf, 60 Subject, 61 TemplateRef, 62 ViewChild, 63 ViewContainerRef, 64 ViewEncapsulation$1, 65 __decorate, 66 fromEvent, 67 inject, 68 setClassMetadata, 69 takeUntil, 70 ɵsetClassDebugInfo, 71 ɵɵNgOnChangesFeature, 72 ɵɵStandaloneFeature, 73 ɵɵadvance, 74 ɵɵattribute, 75 ɵɵclassMap, 76 ɵɵclassMapInterpolate1, 77 ɵɵclassProp, 78 ɵɵcontentQuery, 79 ɵɵdefineComponent, 80 ɵɵdefineDirective, 81 ɵɵdefineInjectable, 82 ɵɵdefineInjector, 83 ɵɵdefineNgModule, 84 ɵɵdirectiveInject, 85 ɵɵelement, 86 ɵɵelementContainerEnd, 87 ɵɵelementContainerStart, 88 ɵɵelementEnd, 89 ɵɵelementStart, 90 ɵɵgetCurrentView, 91 ɵɵinject, 92 ɵɵlistener, 93 ɵɵloadQuery, 94 ɵɵnamespaceHTML, 95 ɵɵnamespaceSVG, 96 ɵɵnextContext, 97 ɵɵpipe, 98 ɵɵpipeBind1, 99 ɵɵprojection, 100 ɵɵprojectionDef, 101 ɵɵproperty, 102 ɵɵpropertyInterpolate, 103 ɵɵpureFunction0, 104 ɵɵpureFunction1, 105 ɵɵpureFunction4, 106 ɵɵpureFunction5, 107 ɵɵqueryRefresh, 108 ɵɵreference, 109 ɵɵresetView, 110 ɵɵresolveWindow, 111 ɵɵrestoreView, 112 ɵɵsanitizeHtml, 113 ɵɵsanitizeUrl, 114 ɵɵstyleProp, 115 ɵɵtemplate, 116 ɵɵtemplateRefExtractor, 117 ɵɵtext, 118 ɵɵtextInterpolate, 119 ɵɵtextInterpolate1, 120 ɵɵtextInterpolate2, 121 ɵɵviewQuery 122} from "./chunk-CG6MKYWD.js"; 123import { 124 __spreadProps, 125 __spreadValues 126} from "./chunk-GBXUKA3S.js"; 127
vendor: 234,110 bytes, lines 128-7231
128// node_modules/@swimlane/ngx-datatable/fesm2020/swimlane-ngx-datatable.mjs 129var _c0 = ["*"]; 130var _c1 = ["cellTemplate"]; 131var _c2 = (a0) => ({ 132 cellContext: a0 133}); 134function DataTableBodyCellComponent_label_1_Template(rf, ctx) { 135 if (rf & 1) { 136 const _r1 = \u0275\u0275getCurrentView(); 137 \u0275\u0275elementStart(0, "label", 5)(1, "input", 6); 138 \u0275\u0275listener("click", function DataTableBodyCellComponent_label_1_Template_input_click_1_listener($event) { 139 \u0275\u0275restoreView(_r1); 140 const ctx_r1 = \u0275\u0275nextContext(); 141 return \u0275\u0275resetView(ctx_r1.onCheckboxChange($event)); 142 }); 143 \u0275\u0275elementEnd()(); 144 } 145 if (rf & 2) { 146 const ctx_r1 = \u0275\u0275nextContext(); 147 \u0275\u0275advance(); 148 \u0275\u0275property("checked", ctx_r1.isSelected); 149 } 150} 151function DataTableBodyCellComponent_ng_container_2_button_1_i_2_Template(rf, ctx) { 152 if (rf & 1) { 153 \u0275\u0275element(0, "i", 12); 154 } 155} 156function DataTableBodyCellComponent_ng_container_2_button_1_i_3_Template(rf, ctx) { 157 if (rf & 1) { 158 \u0275\u0275element(0, "i", 13); 159 } 160} 161function DataTableBodyCellComponent_ng_container_2_button_1_i_4_Template(rf, ctx) { 162 if (rf & 1) { 163 \u0275\u0275element(0, "i", 14); 164 } 165} 166function DataTableBodyCellComponent_ng_container_2_button_1_Template(rf, ctx) { 167 if (rf & 1) { 168 const _r3 = \u0275\u0275getCurrentView(); 169 \u0275\u0275elementStart(0, "button", 8); 170 \u0275\u0275listener("click", function DataTableBodyCellComponent_ng_container_2_button_1_Template_button_click_0_listener() { 171 \u0275\u0275restoreView(_r3); 172 const ctx_r1 = \u0275\u0275nextContext(2); 173 return \u0275\u0275resetView(ctx_r1.onTreeAction()); 174 }); 175 \u0275\u0275elementStart(1, "span"); 176 \u0275\u0275template(2, DataTableBodyCellComponent_ng_container_2_button_1_i_2_Template, 1, 0, "i", 9)(3, DataTableBodyCellComponent_ng_container_2_button_1_i_3_Template, 1, 0, "i", 10)(4, DataTableBodyCellComponent_ng_container_2_button_1_i_4_Template, 1, 0, "i", 11); 177 \u0275\u0275elementEnd()(); 178 } 179 if (rf & 2) { 180 const ctx_r1 = \u0275\u0275nextContext(2); 181 \u0275\u0275property("disabled", ctx_r1.treeStatus === "disabled"); 182 \u0275\u0275advance(2); 183 \u0275\u0275property("ngIf", ctx_r1.treeStatus === "loading"); 184 \u0275\u0275advance(); 185 \u0275\u0275property("ngIf", ctx_r1.treeStatus === "collapsed"); 186 \u0275\u0275advance(); 187 \u0275\u0275property("ngIf", ctx_r1.treeStatus === "expanded" || ctx_r1.treeStatus === "disabled"); 188 } 189} 190function DataTableBodyCellComponent_ng_container_2_2_ng_template_0_Template(rf, ctx) { 191} 192function DataTableBodyCellComponent_ng_container_2_2_Template(rf, ctx) { 193 if (rf & 1) { 194 \u0275\u0275template(0, DataTableBodyCellComponent_ng_container_2_2_ng_template_0_Template, 0, 0, "ng-template", 15); 195 } 196 if (rf & 2) { 197 const ctx_r1 = \u0275\u0275nextContext(2); 198 \u0275\u0275property("ngTemplateOutlet", ctx_r1.column.treeToggleTemplate)("ngTemplateOutletContext", \u0275\u0275pureFunction1(2, _c2, ctx_r1.cellContext)); 199 } 200} 201function DataTableBodyCellComponent_ng_container_2_Template(rf, ctx) { 202 if (rf & 1) { 203 \u0275\u0275elementContainerStart(0); 204 \u0275\u0275template(1, DataTableBodyCellComponent_ng_container_2_button_1_Template, 5, 4, "button", 7)(2, DataTableBodyCellComponent_ng_container_2_2_Template, 1, 4, null, 3); 205 \u0275\u0275elementContainerEnd(); 206 } 207 if (rf & 2) { 208 const ctx_r1 = \u0275\u0275nextContext(); 209 \u0275\u0275advance(); 210 \u0275\u0275property("ngIf", !ctx_r1.column.treeToggleTemplate); 211 \u0275\u0275advance(); 212 \u0275\u0275property("ngIf", ctx_r1.column.treeToggleTemplate); 213 } 214} 215function DataTableBodyCellComponent_span_3_Template(rf, ctx) { 216 if (rf & 1) { 217 \u0275\u0275element(0, "span", 16); 218 } 219 if (rf & 2) { 220 const ctx_r1 = \u0275\u0275nextContext(); 221 \u0275\u0275property("title", ctx_r1.sanitizedValue)("innerHTML", ctx_r1.value, \u0275\u0275sanitizeHtml); 222 } 223} 224function DataTableBodyCellComponent_4_ng_template_0_Template(rf, ctx) { 225} 226function DataTableBodyCellComponent_4_Template(rf, ctx) { 227 if (rf & 1) { 228 \u0275\u0275template(0, DataTableBodyCellComponent_4_ng_template_0_Template, 0, 0, "ng-template", 15, 0, \u0275\u0275templateRefExtractor); 229 } 230 if (rf & 2) { 231 const ctx_r1 = \u0275\u0275nextContext(); 232 \u0275\u0275property("ngTemplateOutlet", ctx_r1.column.cellTemplate)("ngTemplateOutletContext", ctx_r1.cellContext); 233 } 234} 235function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template(rf, ctx) { 236 if (rf & 1) { 237 const _r1 = \u0275\u0275getCurrentView(); 238 \u0275\u0275elementStart(0, "datatable-body-cell", 3); 239 \u0275\u0275listener("activate", function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template_datatable_body_cell_activate_0_listener($event) { 240 const ii_r2 = \u0275\u0275restoreView(_r1).index; 241 const ctx_r2 = \u0275\u0275nextContext(2); 242 return \u0275\u0275resetView(ctx_r2.onActivate($event, ii_r2)); 243 })("treeAction", function DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template_datatable_body_cell_treeAction_0_listener() { 244 \u0275\u0275restoreView(_r1); 245 const ctx_r2 = \u0275\u0275nextContext(2); 246 return \u0275\u0275resetView(ctx_r2.onTreeAction()); 247 }); 248 \u0275\u0275elementEnd(); 249 } 250 if (rf & 2) { 251 const column_r4 = ctx.$implicit; 252 const ctx_r2 = \u0275\u0275nextContext(2); 253 \u0275\u0275property("row", ctx_r2.row)("group", ctx_r2.group)("expanded", ctx_r2.expanded)("isSelected", ctx_r2.isSelected)("rowIndex", ctx_r2.rowIndex)("column", column_r4)("rowHeight", ctx_r2.rowHeight)("displayCheck", ctx_r2.displayCheck)("treeStatus", ctx_r2.treeStatus); 254 } 255} 256function DataTableBodyRowComponent_div_0_Template(rf, ctx) { 257 if (rf & 1) { 258 \u0275\u0275elementStart(0, "div", 1); 259 \u0275\u0275template(1, DataTableBodyRowComponent_div_0_datatable_body_cell_1_Template, 1, 9, "datatable-body-cell", 2); 260 \u0275\u0275elementEnd(); 261 } 262 if (rf & 2) { 263 const colGroup_r5 = ctx.$implicit; 264 const ctx_r2 = \u0275\u0275nextContext(); 265 \u0275\u0275classMapInterpolate1("datatable-row-", colGroup_r5.type, " datatable-row-group"); 266 \u0275\u0275property("ngStyle", ctx_r2._groupStyles[colGroup_r5.type]); 267 \u0275\u0275advance(); 268 \u0275\u0275property("ngForOf", colGroup_r5.columns)("ngForTrackBy", ctx_r2.columnTrackingFn); 269 } 270} 271function DataTableSummaryRowComponent_datatable_body_row_0_Template(rf, ctx) { 272 if (rf & 1) { 273 \u0275\u0275element(0, "datatable-body-row", 1); 274 } 275 if (rf & 2) { 276 const ctx_r0 = \u0275\u0275nextContext(); 277 \u0275\u0275property("innerWidth", ctx_r0.innerWidth)("offsetX", ctx_r0.offsetX)("columns", ctx_r0._internalColumns)("rowHeight", ctx_r0.rowHeight)("row", ctx_r0.summaryRow)("rowIndex", -1); 278 } 279} 280function DataTableRowWrapperComponent_div_0_1_ng_template_0_Template(rf, ctx) { 281} 282function DataTableRowWrapperComponent_div_0_1_Template(rf, ctx) { 283 if (rf & 1) { 284 \u0275\u0275template(0, DataTableRowWrapperComponent_div_0_1_ng_template_0_Template, 0, 0, "ng-template", 4); 285 } 286 if (rf & 2) { 287 const ctx_r0 = \u0275\u0275nextContext(2); 288 \u0275\u0275property("ngTemplateOutlet", ctx_r0.groupHeader.template)("ngTemplateOutletContext", ctx_r0.groupContext); 289 } 290} 291function DataTableRowWrapperComponent_div_0_Template(rf, ctx) { 292 if (rf & 1) { 293 \u0275\u0275elementStart(0, "div", 3); 294 \u0275\u0275template(1, DataTableRowWrapperComponent_div_0_1_Template, 1, 2, null, 1); 295 \u0275\u0275elementEnd(); 296 } 297 if (rf & 2) { 298 const ctx_r0 = \u0275\u0275nextContext(); 299 \u0275\u0275property("ngStyle", ctx_r0.getGroupHeaderStyle()); 300 \u0275\u0275advance(); 301 \u0275\u0275property("ngIf", ctx_r0.groupHeader && ctx_r0.groupHeader.template); 302 } 303} 304function DataTableRowWrapperComponent_ng_content_1_Template(rf, ctx) { 305 if (rf & 1) { 306 \u0275\u0275projection(0, 0, ["*ngIf", "(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template"]); 307 } 308} 309function DataTableRowWrapperComponent_div_2_1_ng_template_0_Template(rf, ctx) { 310} 311function DataTableRowWrapperComponent_div_2_1_Template(rf, ctx) { 312 if (rf & 1) { 313 \u0275\u0275template(0, DataTableRowWrapperComponent_div_2_1_ng_template_0_Template, 0, 0, "ng-template", 4); 314 } 315 if (rf & 2) { 316 const ctx_r0 = \u0275\u0275nextContext(2); 317 \u0275\u0275property("ngTemplateOutlet", ctx_r0.rowDetail.template)("ngTemplateOutletContext", ctx_r0.rowContext); 318 } 319} 320function DataTableRowWrapperComponent_div_2_Template(rf, ctx) { 321 if (rf & 1) { 322 \u0275\u0275elementStart(0, "div", 5); 323 \u0275\u0275template(1, DataTableRowWrapperComponent_div_2_1_Template, 1, 2, null, 1); 324 \u0275\u0275elementEnd(); 325 } 326 if (rf & 2) { 327 const ctx_r0 = \u0275\u0275nextContext(); 328 \u0275\u0275styleProp("height", ctx_r0.detailRowHeight, "px"); 329 \u0275\u0275advance(); 330 \u0275\u0275property("ngIf", ctx_r0.rowDetail && ctx_r0.rowDetail.template); 331 } 332} 333function DataTableBodyComponent_datatable_progress_0_Template(rf, ctx) { 334 if (rf & 1) { 335 \u0275\u0275element(0, "datatable-progress"); 336 } 337} 338function DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_1_Template(rf, ctx) { 339 if (rf & 1) { 340 \u0275\u0275element(0, "datatable-summary-row", 10); 341 } 342 if (rf & 2) { 343 const ctx_r2 = \u0275\u0275nextContext(2); 344 \u0275\u0275property("rowHeight", ctx_r2.summaryHeight)("offsetX", ctx_r2.offsetX)("innerWidth", ctx_r2.innerWidth)("rows", ctx_r2.rows)("columns", ctx_r2.columns); 345 } 346} 347function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template(rf, ctx) { 348 if (rf & 1) { 349 const _r5 = \u0275\u0275getCurrentView(); 350 \u0275\u0275elementStart(0, "datatable-body-row", 13); 351 \u0275\u0275listener("treeAction", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template_datatable_body_row_treeAction_0_listener() { 352 \u0275\u0275restoreView(_r5); 353 const group_r6 = \u0275\u0275nextContext().$implicit; 354 const ctx_r2 = \u0275\u0275nextContext(2); 355 return \u0275\u0275resetView(ctx_r2.onTreeAction(group_r6)); 356 })("activate", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template_datatable_body_row_activate_0_listener($event) { 357 \u0275\u0275restoreView(_r5); 358 const i_r7 = \u0275\u0275nextContext().index; 359 const ctx_r2 = \u0275\u0275nextContext(2); 360 const selector_r8 = \u0275\u0275reference(2); 361 return \u0275\u0275resetView(selector_r8.onActivate($event, ctx_r2.indexes.first + i_r7)); 362 }); 363 \u0275\u0275elementEnd(); 364 } 365 if (rf & 2) { 366 const group_r6 = \u0275\u0275nextContext().$implicit; 367 const ctx_r2 = \u0275\u0275nextContext(2); 368 const selector_r8 = \u0275\u0275reference(2); 369 \u0275\u0275property("isSelected", selector_r8.getRowSelected(group_r6))("innerWidth", ctx_r2.innerWidth)("offsetX", ctx_r2.offsetX)("columns", ctx_r2.columns)("rowHeight", ctx_r2.getRowHeight(group_r6))("row", group_r6)("rowIndex", ctx_r2.getRowIndex(group_r6))("expanded", ctx_r2.getRowExpanded(group_r6))("rowClass", ctx_r2.rowClass)("displayCheck", ctx_r2.displayCheck)("treeStatus", group_r6 && group_r6.treeStatus); 370 } 371} 372function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template(rf, ctx) { 373 if (rf & 1) { 374 const _r9 = \u0275\u0275getCurrentView(); 375 \u0275\u0275elementStart(0, "datatable-body-row", 15); 376 \u0275\u0275listener("activate", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template_datatable_body_row_activate_0_listener($event) { 377 const i_r10 = \u0275\u0275restoreView(_r9).index; 378 \u0275\u0275nextContext(4); 379 const selector_r8 = \u0275\u0275reference(2); 380 return \u0275\u0275resetView(selector_r8.onActivate($event, i_r10)); 381 }); 382 \u0275\u0275elementEnd(); 383 } 384 if (rf & 2) { 385 const row_r11 = ctx.$implicit; 386 const group_r6 = \u0275\u0275nextContext(2).$implicit; 387 const ctx_r2 = \u0275\u0275nextContext(2); 388 const selector_r8 = \u0275\u0275reference(2); 389 \u0275\u0275property("isSelected", selector_r8.getRowSelected(row_r11))("innerWidth", ctx_r2.innerWidth)("offsetX", ctx_r2.offsetX)("columns", ctx_r2.columns)("rowHeight", ctx_r2.getRowHeight(row_r11))("row", row_r11)("group", group_r6.value)("rowIndex", ctx_r2.getRowIndex(row_r11))("expanded", ctx_r2.getRowExpanded(row_r11))("rowClass", ctx_r2.rowClass); 390 } 391} 392function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_Template(rf, ctx) { 393 if (rf & 1) { 394 \u0275\u0275template(0, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_datatable_body_row_0_Template, 1, 10, "datatable-body-row", 14); 395 } 396 if (rf & 2) { 397 const group_r6 = \u0275\u0275nextContext().$implicit; 398 const ctx_r2 = \u0275\u0275nextContext(2); 399 \u0275\u0275property("ngForOf", group_r6.value)("ngForTrackBy", ctx_r2.rowTrackingFn); 400 } 401} 402function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template(rf, ctx) { 403 if (rf & 1) { 404 const _r4 = \u0275\u0275getCurrentView(); 405 \u0275\u0275elementStart(0, "datatable-row-wrapper", 11); 406 \u0275\u0275listener("rowContextmenu", function DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template_datatable_row_wrapper_rowContextmenu_0_listener($event) { 407 \u0275\u0275restoreView(_r4); 408 const ctx_r2 = \u0275\u0275nextContext(2); 409 return \u0275\u0275resetView(ctx_r2.rowContextmenu.emit($event)); 410 }); 411 \u0275\u0275template(1, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_datatable_body_row_1_Template, 1, 11, "datatable-body-row", 12)(2, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_ng_template_2_Template, 1, 2, "ng-template", null, 1, \u0275\u0275templateRefExtractor); 412 \u0275\u0275elementEnd(); 413 } 414 if (rf & 2) { 415 const group_r6 = ctx.$implicit; 416 const i_r7 = ctx.index; 417 const groupedRowsTemplate_r12 = \u0275\u0275reference(3); 418 const ctx_r2 = \u0275\u0275nextContext(2); 419 \u0275\u0275property("groupedRows", ctx_r2.groupedRows)("innerWidth", ctx_r2.innerWidth)("ngStyle", ctx_r2.getRowsStyles(group_r6))("rowDetail", ctx_r2.rowDetail)("groupHeader", ctx_r2.groupHeader)("offsetX", ctx_r2.offsetX)("detailRowHeight", ctx_r2.getDetailRowHeight(group_r6 && group_r6[i_r7], i_r7))("row", group_r6)("expanded", ctx_r2.getRowExpanded(group_r6))("rowIndex", ctx_r2.getRowIndex(group_r6 && group_r6[i_r7])); 420 \u0275\u0275advance(); 421 \u0275\u0275property("ngIf", !ctx_r2.groupedRows)("ngIfElse", groupedRowsTemplate_r12); 422 } 423} 424function DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_3_Template(rf, ctx) { 425 if (rf & 1) { 426 \u0275\u0275element(0, "datatable-summary-row", 16); 427 } 428 if (rf & 2) { 429 const ctx_r2 = \u0275\u0275nextContext(2); 430 \u0275\u0275property("ngStyle", ctx_r2.getBottomSummaryRowStyles())("rowHeight", ctx_r2.summaryHeight)("offsetX", ctx_r2.offsetX)("innerWidth", ctx_r2.innerWidth)("rows", ctx_r2.rows)("columns", ctx_r2.columns); 431 } 432} 433function DataTableBodyComponent_datatable_scroller_3_Template(rf, ctx) { 434 if (rf & 1) { 435 const _r2 = \u0275\u0275getCurrentView(); 436 \u0275\u0275elementStart(0, "datatable-scroller", 6); 437 \u0275\u0275listener("scroll", function DataTableBodyComponent_datatable_scroller_3_Template_datatable_scroller_scroll_0_listener($event) { 438 \u0275\u0275restoreView(_r2); 439 const ctx_r2 = \u0275\u0275nextContext(); 440 return \u0275\u0275resetView(ctx_r2.onBodyScroll($event)); 441 }); 442 \u0275\u0275template(1, DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_1_Template, 1, 5, "datatable-summary-row", 7)(2, DataTableBodyComponent_datatable_scroller_3_datatable_row_wrapper_2_Template, 4, 12, "datatable-row-wrapper", 8)(3, DataTableBodyComponent_datatable_scroller_3_datatable_summary_row_3_Template, 1, 6, "datatable-summary-row", 9); 443 \u0275\u0275elementEnd(); 444 } 445 if (rf & 2) { 446 const ctx_r2 = \u0275\u0275nextContext(); 447 \u0275\u0275property("scrollbarV", ctx_r2.scrollbarV)("scrollbarH", ctx_r2.scrollbarH)("scrollHeight", ctx_r2.scrollHeight)("scrollWidth", ctx_r2.columnGroupWidths == null ? null : ctx_r2.columnGroupWidths.total); 448 \u0275\u0275advance(); 449 \u0275\u0275property("ngIf", ctx_r2.summaryRow && ctx_r2.summaryPosition === "top"); 450 \u0275\u0275advance(); 451 \u0275\u0275property("ngForOf", ctx_r2.temp)("ngForTrackBy", ctx_r2.rowTrackingFn); 452 \u0275\u0275advance(); 453 \u0275\u0275property("ngIf", ctx_r2.summaryRow && ctx_r2.summaryPosition === "bottom"); 454 } 455} 456function DataTableBodyComponent_div_4_Template(rf, ctx) { 457 if (rf & 1) { 458 \u0275\u0275element(0, "div", 17); 459 } 460 if (rf & 2) { 461 const ctx_r2 = \u0275\u0275nextContext(); 462 \u0275\u0275property("innerHTML", ctx_r2.emptyMessage, \u0275\u0275sanitizeHtml); 463 } 464} 465function DataTableHeaderCellComponent_1_ng_template_0_Template(rf, ctx) { 466} 467function DataTableHeaderCellComponent_1_Template(rf, ctx) { 468 if (rf & 1) { 469 \u0275\u0275template(0, DataTableHeaderCellComponent_1_ng_template_0_Template, 0, 0, "ng-template", 5); 470 } 471 if (rf & 2) { 472 const ctx_r0 = \u0275\u0275nextContext(); 473 \u0275\u0275property("ngTemplateOutlet", ctx_r0.targetMarkerTemplate)("ngTemplateOutletContext", ctx_r0.targetMarkerContext); 474 } 475} 476function DataTableHeaderCellComponent_label_2_Template(rf, ctx) { 477 if (rf & 1) { 478 const _r2 = \u0275\u0275getCurrentView(); 479 \u0275\u0275elementStart(0, "label", 6)(1, "input", 7); 480 \u0275\u0275listener("change", function DataTableHeaderCellComponent_label_2_Template_input_change_1_listener() { 481 \u0275\u0275restoreView(_r2); 482 const ctx_r0 = \u0275\u0275nextContext(); 483 return \u0275\u0275resetView(ctx_r0.select.emit(!ctx_r0.allRowsSelected)); 484 }); 485 \u0275\u0275elementEnd()(); 486 } 487 if (rf & 2) { 488 const ctx_r0 = \u0275\u0275nextContext(); 489 \u0275\u0275advance(); 490 \u0275\u0275property("checked", ctx_r0.allRowsSelected); 491 } 492} 493function DataTableHeaderCellComponent_span_3_Template(rf, ctx) { 494 if (rf & 1) { 495 const _r3 = \u0275\u0275getCurrentView(); 496 \u0275\u0275elementStart(0, "span", 8)(1, "span", 9); 497 \u0275\u0275listener("click", function DataTableHeaderCellComponent_span_3_Template_span_click_1_listener() { 498 \u0275\u0275restoreView(_r3); 499 const ctx_r0 = \u0275\u0275nextContext(); 500 return \u0275\u0275resetView(ctx_r0.onSort()); 501 }); 502 \u0275\u0275elementEnd()(); 503 } 504 if (rf & 2) { 505 const ctx_r0 = \u0275\u0275nextContext(); 506 \u0275\u0275advance(); 507 \u0275\u0275property("innerHTML", ctx_r0.name, \u0275\u0275sanitizeHtml); 508 } 509} 510function DataTableHeaderCellComponent_4_ng_template_0_Template(rf, ctx) { 511} 512function DataTableHeaderCellComponent_4_Template(rf, ctx) { 513 if (rf & 1) { 514 \u0275\u0275template(0, DataTableHeaderCellComponent_4_ng_template_0_Template, 0, 0, "ng-template", 5); 515 } 516 if (rf & 2) { 517 const ctx_r0 = \u0275\u0275nextContext(); 518 \u0275\u0275property("ngTemplateOutlet", ctx_r0.column.headerTemplate)("ngTemplateOutletContext", ctx_r0.cellContext); 519 } 520} 521function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template(rf, ctx) { 522 if (rf & 1) { 523 const _r1 = \u0275\u0275getCurrentView(); 524 \u0275\u0275elementStart(0, "datatable-header-cell", 4); 525 \u0275\u0275listener("resize", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_resize_0_listener($event) { 526 const column_r2 = \u0275\u0275restoreView(_r1).$implicit; 527 const ctx_r2 = \u0275\u0275nextContext(2); 528 return \u0275\u0275resetView(ctx_r2.onColumnResized($event, column_r2)); 529 })("longPressStart", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_longPressStart_0_listener($event) { 530 \u0275\u0275restoreView(_r1); 531 const ctx_r2 = \u0275\u0275nextContext(2); 532 return \u0275\u0275resetView(ctx_r2.onLongPressStart($event)); 533 })("longPressEnd", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_longPressEnd_0_listener($event) { 534 \u0275\u0275restoreView(_r1); 535 const ctx_r2 = \u0275\u0275nextContext(2); 536 return \u0275\u0275resetView(ctx_r2.onLongPressEnd($event)); 537 })("sort", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_sort_0_listener($event) { 538 \u0275\u0275restoreView(_r1); 539 const ctx_r2 = \u0275\u0275nextContext(2); 540 return \u0275\u0275resetView(ctx_r2.onSort($event)); 541 })("select", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_select_0_listener($event) { 542 \u0275\u0275restoreView(_r1); 543 const ctx_r2 = \u0275\u0275nextContext(2); 544 return \u0275\u0275resetView(ctx_r2.select.emit($event)); 545 })("columnContextmenu", function DataTableHeaderComponent_div_1_datatable_header_cell_1_Template_datatable_header_cell_columnContextmenu_0_listener($event) { 546 \u0275\u0275restoreView(_r1); 547 const ctx_r2 = \u0275\u0275nextContext(2); 548 return \u0275\u0275resetView(ctx_r2.columnContextmenu.emit($event)); 549 }); 550 \u0275\u0275elementEnd(); 551 } 552 if (rf & 2) { 553 const column_r2 = ctx.$implicit; 554 const ctx_r2 = \u0275\u0275nextContext(2); 555 \u0275\u0275property("resizeEnabled", column_r2.resizeable)("pressModel", column_r2)("pressEnabled", ctx_r2.reorderable && column_r2.draggable)("dragX", ctx_r2.reorderable && column_r2.draggable && column_r2.dragging)("dragY", false)("dragModel", column_r2)("dragEventTarget", ctx_r2.dragEventTarget)("headerHeight", ctx_r2.headerHeight)("isTarget", column_r2.isTarget)("targetMarkerTemplate", ctx_r2.targetMarkerTemplate)("targetMarkerContext", column_r2.targetMarkerContext)("column", column_r2)("sortType", ctx_r2.sortType)("sorts", ctx_r2.sorts)("selectionType", ctx_r2.selectionType)("sortAscendingIcon", ctx_r2.sortAscendingIcon)("sortDescendingIcon", ctx_r2.sortDescendingIcon)("sortUnsetIcon", ctx_r2.sortUnsetIcon)("allRowsSelected", ctx_r2.allRowsSelected); 556 } 557} 558function DataTableHeaderComponent_div_1_Template(rf, ctx) { 559 if (rf & 1) { 560 \u0275\u0275elementStart(0, "div", 2); 561 \u0275\u0275template(1, DataTableHeaderComponent_div_1_datatable_header_cell_1_Template, 1, 19, "datatable-header-cell", 3); 562 \u0275\u0275elementEnd(); 563 } 564 if (rf & 2) { 565 const colGroup_r4 = ctx.$implicit; 566 const ctx_r2 = \u0275\u0275nextContext(); 567 \u0275\u0275classMap("datatable-row-" + colGroup_r4.type); 568 \u0275\u0275property("ngStyle", ctx_r2._styleByGroup[colGroup_r4.type]); 569 \u0275\u0275advance(); 570 \u0275\u0275property("ngForOf", colGroup_r4.columns)("ngForTrackBy", ctx_r2.columnTrackingFn); 571 } 572} 573function DataTablePagerComponent_li_7_Template(rf, ctx) { 574 if (rf & 1) { 575 const _r1 = \u0275\u0275getCurrentView(); 576 \u0275\u0275elementStart(0, "li", 6)(1, "a", 7); 577 \u0275\u0275listener("click", function DataTablePagerComponent_li_7_Template_a_click_1_listener() { 578 const pg_r2 = \u0275\u0275restoreView(_r1).$implicit; 579 const ctx_r2 = \u0275\u0275nextContext(); 580 return \u0275\u0275resetView(ctx_r2.selectPage(pg_r2.number)); 581 }); 582 \u0275\u0275text(2); 583 \u0275\u0275elementEnd()(); 584 } 585 if (rf & 2) { 586 const pg_r2 = ctx.$implicit; 587 const ctx_r2 = \u0275\u0275nextContext(); 588 \u0275\u0275classProp("active", pg_r2.number === ctx_r2.page); 589 \u0275\u0275attribute("aria-label", "page " + pg_r2.number); 590 \u0275\u0275advance(2); 591 \u0275\u0275textInterpolate1(" ", pg_r2.text, " "); 592 } 593} 594var _c3 = (a0) => ({ 595 "selected-count": a0 596}); 597var _c4 = (a0, a1, a2, a3, a4) => ({ 598 rowCount: a0, 599 pageSize: a1, 600 selectedCount: a2, 601 curPage: a3, 602 offset: a4 603}); 604function DataTableFooterComponent_1_ng_template_0_Template(rf, ctx) { 605} 606function DataTableFooterComponent_1_Template(rf, ctx) { 607 if (rf & 1) { 608 \u0275\u0275template(0, DataTableFooterComponent_1_ng_template_0_Template, 0, 0, "ng-template", 4); 609 } 610 if (rf & 2) { 611 const ctx_r0 = \u0275\u0275nextContext(); 612 \u0275\u0275property("ngTemplateOutlet", ctx_r0.footerTemplate.template)("ngTemplateOutletContext", \u0275\u0275pureFunction5(2, _c4, ctx_r0.rowCount, ctx_r0.pageSize, ctx_r0.selectedCount, ctx_r0.curPage, ctx_r0.offset)); 613 } 614} 615function DataTableFooterComponent_div_2_span_1_Template(rf, ctx) { 616 if (rf & 1) { 617 \u0275\u0275elementStart(0, "span"); 618 \u0275\u0275text(1); 619 \u0275\u0275elementEnd(); 620 } 621 if (rf & 2) { 622 const ctx_r0 = \u0275\u0275nextContext(2); 623 \u0275\u0275advance(); 624 \u0275\u0275textInterpolate2(" ", ctx_r0.selectedCount == null ? null : ctx_r0.selectedCount.toLocaleString(), " ", ctx_r0.selectedMessage, " / "); 625 } 626} 627function DataTableFooterComponent_div_2_Template(rf, ctx) { 628 if (rf & 1) { 629 \u0275\u0275elementStart(0, "div", 5); 630 \u0275\u0275template(1, DataTableFooterComponent_div_2_span_1_Template, 2, 2, "span", 1); 631 \u0275\u0275text(2); 632 \u0275\u0275elementEnd(); 633 } 634 if (rf & 2) { 635 const ctx_r0 = \u0275\u0275nextContext(); 636 \u0275\u0275advance(); 637 \u0275\u0275property("ngIf", ctx_r0.selectedMessage); 638 \u0275\u0275advance(); 639 \u0275\u0275textInterpolate2(" ", ctx_r0.rowCount == null ? null : ctx_r0.rowCount.toLocaleString(), " ", ctx_r0.totalMessage, " "); 640 } 641} 642function DataTableFooterComponent_datatable_pager_3_Template(rf, ctx) { 643 if (rf & 1) { 644 const _r2 = \u0275\u0275getCurrentView(); 645 \u0275\u0275elementStart(0, "datatable-pager", 6); 646 \u0275\u0275listener("change", function DataTableFooterComponent_datatable_pager_3_Template_datatable_pager_change_0_listener($event) { 647 \u0275\u0275restoreView(_r2); 648 const ctx_r0 = \u0275\u0275nextContext(); 649 return \u0275\u0275resetView(ctx_r0.page.emit($event)); 650 }); 651 \u0275\u0275elementEnd(); 652 } 653 if (rf & 2) { 654 const ctx_r0 = \u0275\u0275nextContext(); 655 \u0275\u0275property("pagerLeftArrowIcon", ctx_r0.pagerLeftArrowIcon)("pagerRightArrowIcon", ctx_r0.pagerRightArrowIcon)("pagerPreviousIcon", ctx_r0.pagerPreviousIcon)("pagerNextIcon", ctx_r0.pagerNextIcon)("page", ctx_r0.curPage)("size", ctx_r0.pageSize)("count", ctx_r0.rowCount)("hidden", !ctx_r0.isVisible); 656 } 657} 658function DatatableComponent_datatable_header_1_Template(rf, ctx) { 659 if (rf & 1) { 660 const _r1 = \u0275\u0275getCurrentView(); 661 \u0275\u0275elementStart(0, "datatable-header", 4); 662 \u0275\u0275pipe(1, "async"); 663 \u0275\u0275listener("sort", function DatatableComponent_datatable_header_1_Template_datatable_header_sort_0_listener($event) { 664 \u0275\u0275restoreView(_r1); 665 const ctx_r1 = \u0275\u0275nextContext(); 666 return \u0275\u0275resetView(ctx_r1.onColumnSort($event)); 667 })("resize", function DatatableComponent_datatable_header_1_Template_datatable_header_resize_0_listener($event) { 668 \u0275\u0275restoreView(_r1); 669 const ctx_r1 = \u0275\u0275nextContext(); 670 return \u0275\u0275resetView(ctx_r1.onColumnResize($event)); 671 })("reorder", function DatatableComponent_datatable_header_1_Template_datatable_header_reorder_0_listener($event) { 672 \u0275\u0275restoreView(_r1); 673 const ctx_r1 = \u0275\u0275nextContext(); 674 return \u0275\u0275resetView(ctx_r1.onColumnReorder($event)); 675 })("select", function DatatableComponent_datatable_header_1_Template_datatable_header_select_0_listener($event) { 676 \u0275\u0275restoreView(_r1); 677 const ctx_r1 = \u0275\u0275nextContext(); 678 return \u0275\u0275resetView(ctx_r1.onHeaderSelect($event)); 679 })("columnContextmenu", function DatatableComponent_datatable_header_1_Template_datatable_header_columnContextmenu_0_listener($event) { 680 \u0275\u0275restoreView(_r1); 681 const ctx_r1 = \u0275\u0275nextContext(); 682 return \u0275\u0275resetView(ctx_r1.onColumnContextmenu($event)); 683 }); 684 \u0275\u0275elementEnd(); 685 } 686 if (rf & 2) { 687 const ctx_r1 = \u0275\u0275nextContext(); 688 \u0275\u0275property("sorts", ctx_r1.sorts)("sortType", ctx_r1.sortType)("scrollbarH", ctx_r1.scrollbarH)("innerWidth", ctx_r1._innerWidth)("offsetX", \u0275\u0275pipeBind1(1, 15, ctx_r1._offsetX))("dealsWithGroup", ctx_r1.groupedRows !== void 0)("columns", ctx_r1._internalColumns)("headerHeight", ctx_r1.headerHeight)("reorderable", ctx_r1.reorderable)("targetMarkerTemplate", ctx_r1.targetMarkerTemplate)("sortAscendingIcon", ctx_r1.cssClasses.sortAscending)("sortDescendingIcon", ctx_r1.cssClasses.sortDescending)("sortUnsetIcon", ctx_r1.cssClasses.sortUnset)("allRowsSelected", ctx_r1.allRowsSelected)("selectionType", ctx_r1.selectionType); 689 } 690} 691function DatatableComponent_datatable_footer_4_Template(rf, ctx) { 692 if (rf & 1) { 693 const _r3 = \u0275\u0275getCurrentView(); 694 \u0275\u0275elementStart(0, "datatable-footer", 5); 695 \u0275\u0275listener("page", function DatatableComponent_datatable_footer_4_Template_datatable_footer_page_0_listener($event) { 696 \u0275\u0275restoreView(_r3); 697 const ctx_r1 = \u0275\u0275nextContext(); 698 return \u0275\u0275resetView(ctx_r1.onFooterPage($event)); 699 }); 700 \u0275\u0275elementEnd(); 701 } 702 if (rf & 2) { 703 const ctx_r1 = \u0275\u0275nextContext(); 704 \u0275\u0275property("rowCount", ctx_r1.rowCount)("pageSize", ctx_r1.pageSize)("offset", ctx_r1.offset)("footerHeight", ctx_r1.footerHeight)("footerTemplate", ctx_r1.footer)("totalMessage", ctx_r1.messages.totalMessage)("pagerLeftArrowIcon", ctx_r1.cssClasses.pagerLeftArrow)("pagerRightArrowIcon", ctx_r1.cssClasses.pagerRightArrow)("pagerPreviousIcon", ctx_r1.cssClasses.pagerPrevious)("selectedCount", ctx_r1.selected.length)("selectedMessage", !!ctx_r1.selectionType && ctx_r1.messages.selectedMessage)("pagerNextIcon", ctx_r1.cssClasses.pagerNext); 705 } 706} 707var ScrollbarHelper = class { 708 constructor(document2) { 709 this.document = document2; 710 this.width = this.getWidth(); 711 } 712 getWidth() { 713 const outer = this.document.createElement("div"); 714 outer.style.visibility = "hidden"; 715 outer.style.width = "100px"; 716 outer.style.msOverflowStyle = "scrollbar"; 717 this.document.body.appendChild(outer); 718 const widthNoScroll = outer.offsetWidth; 719 outer.style.overflow = "scroll"; 720 const inner = this.document.createElement("div"); 721 inner.style.width = "100%"; 722 outer.appendChild(inner); 723 const widthWithScroll = inner.offsetWidth; 724 outer.parentNode.removeChild(outer); 725 return widthNoScroll - widthWithScroll; 726 } 727}; 728ScrollbarHelper.\u0275fac = function ScrollbarHelper_Factory(__ngFactoryType__) { 729 return new (__ngFactoryType__ || ScrollbarHelper)(\u0275\u0275inject(DOCUMENT)); 730}; 731ScrollbarHelper.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ 732 token: ScrollbarHelper, 733 factory: ScrollbarHelper.\u0275fac 734}); 735(() => { 736 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ScrollbarHelper, [{ 737 type: Injectable 738 }], function() { 739 return [{ 740 type: void 0, 741 decorators: [{ 742 type: Inject, 743 args: [DOCUMENT] 744 }] 745 }]; 746 }, null); 747})(); 748var DimensionsHelper = class { 749 getDimensions(element) { 750 return element.getBoundingClientRect(); 751 } 752}; 753DimensionsHelper.\u0275fac = function DimensionsHelper_Factory(__ngFactoryType__) { 754 return new (__ngFactoryType__ || DimensionsHelper)(); 755}; 756DimensionsHelper.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ 757 token: DimensionsHelper, 758 factory: DimensionsHelper.\u0275fac 759}); 760(() => { 761 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DimensionsHelper, [{ 762 type: Injectable 763 }], null, null); 764})(); 765var ColumnChangesService = class { 766 constructor() { 767 this.columnInputChanges = new Subject(); 768 } 769 get columnInputChanges$() { 770 return this.columnInputChanges.asObservable(); 771 } 772 onInputChange() { 773 this.columnInputChanges.next(); 774 } 775}; 776ColumnChangesService.\u0275fac = function ColumnChangesService_Factory(__ngFactoryType__) { 777 return new (__ngFactoryType__ || ColumnChangesService)(); 778}; 779ColumnChangesService.\u0275prov = /* @__PURE__ */ \u0275\u0275defineInjectable({ 780 token: ColumnChangesService, 781 factory: ColumnChangesService.\u0275fac 782}); 783(() => { 784 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ColumnChangesService, [{ 785 type: Injectable 786 }], null, null); 787})(); 788var DataTableFooterTemplateDirective = class { 789 constructor(template) { 790 this.template = template; 791 } 792}; 793DataTableFooterTemplateDirective.\u0275fac = function DataTableFooterTemplateDirective_Factory(__ngFactoryType__) { 794 return new (__ngFactoryType__ || DataTableFooterTemplateDirective)(\u0275\u0275directiveInject(TemplateRef)); 795}; 796DataTableFooterTemplateDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 797 type: DataTableFooterTemplateDirective, 798 selectors: [["", "ngx-datatable-footer-template", ""]] 799}); 800(() => { 801 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableFooterTemplateDirective, [{ 802 type: Directive, 803 args: [{ 804 selector: "[ngx-datatable-footer-template]" 805 }] 806 }], function() { 807 return [{ 808 type: TemplateRef 809 }]; 810 }, null); 811})(); 812var VisibilityDirective = class { 813 constructor(element, zone) { 814 this.element = element; 815 this.zone = zone; 816 this.isVisible = false; 817 this.visible = new EventEmitter(); 818 } 819 ngOnInit() { 820 this.runCheck(); 821 } 822 ngOnDestroy() { 823 clearTimeout(this.timeout); 824 } 825 onVisibilityChange() { 826 this.zone.run(() => { 827 this.isVisible = true; 828 this.visible.emit(true); 829 }); 830 } 831 runCheck() { 832 const check = () => { 833 const { 834 offsetHeight, 835 offsetWidth 836 } = this.element.nativeElement; 837 if (offsetHeight && offsetWidth) { 838 clearTimeout(this.timeout); 839 this.onVisibilityChange(); 840 } else { 841 clearTimeout(this.timeout); 842 this.zone.runOutsideAngular(() => { 843 this.timeout = setTimeout(() => check(), 50); 844 }); 845 } 846 }; 847 this.timeout = setTimeout(() => check()); 848 } 849}; 850VisibilityDirective.\u0275fac = function VisibilityDirective_Factory(__ngFactoryType__) { 851 return new (__ngFactoryType__ || VisibilityDirective)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(NgZone)); 852}; 853VisibilityDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 854 type: VisibilityDirective, 855 selectors: [["", "visibilityObserver", ""]], 856 hostVars: 2, 857 hostBindings: function VisibilityDirective_HostBindings(rf, ctx) { 858 if (rf & 2) { 859 \u0275\u0275classProp("visible", ctx.isVisible); 860 } 861 }, 862 outputs: { 863 visible: "visible" 864 } 865}); 866(() => { 867 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(VisibilityDirective, [{ 868 type: Directive, 869 args: [{ 870 selector: "[visibilityObserver]" 871 }] 872 }], function() { 873 return [{ 874 type: ElementRef 875 }, { 876 type: NgZone 877 }]; 878 }, { 879 isVisible: [{ 880 type: HostBinding, 881 args: ["class.visible"] 882 }], 883 visible: [{ 884 type: Output 885 }] 886 }); 887})(); 888var DraggableDirective = class { 889 constructor(element) { 890 this.dragX = true; 891 this.dragY = true; 892 this.dragStart = new EventEmitter(); 893 this.dragging = new EventEmitter(); 894 this.dragEnd = new EventEmitter(); 895 this.isDragging = false; 896 this.element = element.nativeElement; 897 } 898 ngOnChanges(changes) { 899 if (changes["dragEventTarget"] && changes["dragEventTarget"].currentValue && this.dragModel.dragging) { 900 this.onMousedown(changes["dragEventTarget"].currentValue); 901 } 902 } 903 ngOnDestroy() { 904 this._destroySubscription(); 905 } 906 onMouseup(event) { 907 if (!this.isDragging) return; 908 this.isDragging = false; 909 this.element.classList.remove("dragging"); 910 if (this.subscription) { 911 this._destroySubscription(); 912 this.dragEnd.emit({ 913 event, 914 element: this.element, 915 model: this.dragModel 916 }); 917 } 918 } 919 onMousedown(event) { 920 const isDragElm = event.target.classList.contains("draggable"); 921 if (isDragElm && (this.dragX || this.dragY)) { 922 event.preventDefault(); 923 this.isDragging = true; 924 const mouseDownPos = { 925 x: event.clientX, 926 y: event.clientY 927 }; 928 const mouseup = fromEvent(document, "mouseup"); 929 this.subscription = mouseup.subscribe((ev) => this.onMouseup(ev)); 930 const mouseMoveSub = fromEvent(document, "mousemove").pipe(takeUntil(mouseup)).subscribe((ev) => this.move(ev, mouseDownPos)); 931 this.subscription.add(mouseMoveSub); 932 this.dragStart.emit({ 933 event, 934 element: this.element, 935 model: this.dragModel 936 }); 937 } 938 } 939 move(event, mouseDownPos) { 940 if (!this.isDragging) return; 941 const x = event.clientX - mouseDownPos.x; 942 const y = event.clientY - mouseDownPos.y; 943 if (this.dragX) this.element.style.left = `${x}px`; 944 if (this.dragY) this.element.style.top = `${y}px`; 945 this.element.classList.add("dragging"); 946 this.dragging.emit({ 947 event, 948 element: this.element, 949 model: this.dragModel 950 }); 951 } 952 _destroySubscription() { 953 if (this.subscription) { 954 this.subscription.unsubscribe(); 955 this.subscription = void 0; 956 } 957 } 958}; 959DraggableDirective.\u0275fac = function DraggableDirective_Factory(__ngFactoryType__) { 960 return new (__ngFactoryType__ || DraggableDirective)(\u0275\u0275directiveInject(ElementRef)); 961}; 962DraggableDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 963 type: DraggableDirective, 964 selectors: [["", "draggable", ""]], 965 inputs: { 966 dragEventTarget: "dragEventTarget", 967 dragModel: "dragModel", 968 dragX: "dragX", 969 dragY: "dragY" 970 }, 971 outputs: { 972 dragStart: "dragStart", 973 dragging: "dragging", 974 dragEnd: "dragEnd" 975 }, 976 features: [\u0275\u0275NgOnChangesFeature] 977}); 978(() => { 979 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DraggableDirective, [{ 980 type: Directive, 981 args: [{ 982 selector: "[draggable]" 983 }] 984 }], function() { 985 return [{ 986 type: ElementRef 987 }]; 988 }, { 989 dragEventTarget: [{ 990 type: Input 991 }], 992 dragModel: [{ 993 type: Input 994 }], 995 dragX: [{ 996 type: Input 997 }], 998 dragY: [{ 999 type: Input 1000 }], 1001 dragStart: [{ 1002 type: Output 1003 }], 1004 dragging: [{ 1005 type: Output 1006 }], 1007 dragEnd: [{ 1008 type: Output 1009 }] 1010 }); 1011})(); 1012var ResizeableDirective = class { 1013 constructor(element, renderer) { 1014 this.renderer = renderer; 1015 this.resizeEnabled = true; 1016 this.resize = new EventEmitter(); 1017 this.resizing = false; 1018 this.element = element.nativeElement; 1019 } 1020 ngAfterViewInit() { 1021 const renderer2 = this.renderer; 1022 this.resizeHandle = renderer2.createElement("span"); 1023 if (this.resizeEnabled) { 1024 renderer2.addClass(this.resizeHandle, "resize-handle"); 1025 } else { 1026 renderer2.addClass(this.resizeHandle, "resize-handle--not-resizable"); 1027 } 1028 renderer2.appendChild(this.element, this.resizeHandle); 1029 } 1030 ngOnDestroy() { 1031 this._destroySubscription(); 1032 if (this.renderer.destroyNode) { 1033 this.renderer.destroyNode(this.resizeHandle); 1034 } else if (this.resizeHandle) { 1035 this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle), this.resizeHandle); 1036 } 1037 } 1038 onMouseup() { 1039 this.resizing = false; 1040 if (this.subscription && !this.subscription.closed) { 1041 this._destroySubscription(); 1042 this.resize.emit(this.element.clientWidth); 1043 } 1044 } 1045 onMousedown(event) { 1046 const isHandle = event.target.classList.contains("resize-handle"); 1047 const initialWidth = this.element.clientWidth; 1048 const mouseDownScreenX = event.screenX; 1049 if (isHandle) { 1050 event.stopPropagation(); 1051 this.resizing = true; 1052 const mouseup = fromEvent(document, "mouseup"); 1053 this.subscription = mouseup.subscribe((ev) => this.onMouseup()); 1054 const mouseMoveSub = fromEvent(document, "mousemove").pipe(takeUntil(mouseup)).subscribe((e) => this.move(e, initialWidth, mouseDownScreenX)); 1055 this.subscription.add(mouseMoveSub); 1056 } 1057 } 1058 move(event, initialWidth, mouseDownScreenX) { 1059 const movementX = event.screenX - mouseDownScreenX; 1060 const newWidth = initialWidth + movementX; 1061 const overMinWidth = !this.minWidth || newWidth >= this.minWidth; 1062 const underMaxWidth = !this.maxWidth || newWidth <= this.maxWidth; 1063 if (overMinWidth && underMaxWidth) { 1064 this.element.style.width = `${newWidth}px`; 1065 } 1066 } 1067 _destroySubscription() { 1068 if (this.subscription) { 1069 this.subscription.unsubscribe(); 1070 this.subscription = void 0; 1071 } 1072 } 1073}; 1074ResizeableDirective.\u0275fac = function ResizeableDirective_Factory(__ngFactoryType__) { 1075 return new (__ngFactoryType__ || ResizeableDirective)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(Renderer2)); 1076}; 1077ResizeableDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 1078 type: ResizeableDirective, 1079 selectors: [["", "resizeable", ""]], 1080 hostVars: 2, 1081 hostBindings: function ResizeableDirective_HostBindings(rf, ctx) { 1082 if (rf & 1) { 1083 \u0275\u0275listener("mousedown", function ResizeableDirective_mousedown_HostBindingHandler($event) { 1084 return ctx.onMousedown($event); 1085 }); 1086 } 1087 if (rf & 2) { 1088 \u0275\u0275classProp("resizeable", ctx.resizeEnabled); 1089 } 1090 }, 1091 inputs: { 1092 resizeEnabled: "resizeEnabled", 1093 minWidth: "minWidth", 1094 maxWidth: "maxWidth" 1095 }, 1096 outputs: { 1097 resize: "resize" 1098 } 1099}); 1100(() => { 1101 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ResizeableDirective, [{ 1102 type: Directive, 1103 args: [{ 1104 selector: "[resizeable]", 1105 host: { 1106 "[class.resizeable]": "resizeEnabled" 1107 } 1108 }] 1109 }], function() { 1110 return [{ 1111 type: ElementRef 1112 }, { 1113 type: Renderer2 1114 }]; 1115 }, { 1116 resizeEnabled: [{ 1117 type: Input 1118 }], 1119 minWidth: [{ 1120 type: Input 1121 }], 1122 maxWidth: [{ 1123 type: Input 1124 }], 1125 resize: [{ 1126 type: Output 1127 }], 1128 onMousedown: [{ 1129 type: HostListener, 1130 args: ["mousedown", ["$event"]] 1131 }] 1132 }); 1133})(); 1134var OrderableDirective = class { 1135 constructor(differs, document2) { 1136 this.document = document2; 1137 this.reorder = new EventEmitter(); 1138 this.targetChanged = new EventEmitter(); 1139 this.differ = differs.find({}).create(); 1140 } 1141 ngAfterContentInit() { 1142 this.updateSubscriptions(); 1143 this.draggables.changes.subscribe(this.updateSubscriptions.bind(this)); 1144 } 1145 ngOnDestroy() { 1146 this.draggables.forEach((d) => { 1147 d.dragStart.unsubscribe(); 1148 d.dragging.unsubscribe(); 1149 d.dragEnd.unsubscribe(); 1150 }); 1151 } 1152 updateSubscriptions() { 1153 const diffs = this.differ.diff(this.createMapDiffs()); 1154 if (diffs) { 1155 const subscribe = ({ 1156 currentValue, 1157 previousValue 1158 }) => { 1159 unsubscribe({ 1160 previousValue 1161 }); 1162 if (currentValue) { 1163 currentValue.dragStart.subscribe(this.onDragStart.bind(this)); 1164 currentValue.dragging.subscribe(this.onDragging.bind(this)); 1165 currentValue.dragEnd.subscribe(this.onDragEnd.bind(this)); 1166 } 1167 }; 1168 const unsubscribe = ({ 1169 previousValue 1170 }) => { 1171 if (previousValue) { 1172 previousValue.dragStart.unsubscribe(); 1173 previousValue.dragging.unsubscribe(); 1174 previousValue.dragEnd.unsubscribe(); 1175 } 1176 }; 1177 diffs.forEachAddedItem(subscribe); 1178 diffs.forEachRemovedItem(unsubscribe); 1179 } 1180 } 1181 onDragStart() { 1182 this.positions = {}; 1183 let i = 0; 1184 for (const dragger of this.draggables.toArray()) { 1185 const elm = dragger.element; 1186 const left = parseInt(elm.offsetLeft.toString(), 0); 1187 this.positions[dragger.dragModel.prop] = { 1188 left, 1189 right: left + parseInt(elm.offsetWidth.toString(), 0), 1190 index: i++, 1191 element: elm 1192 }; 1193 } 1194 } 1195 onDragging({ 1196 element, 1197 model, 1198 event 1199 }) { 1200 const prevPos = this.positions[model.prop]; 1201 const target = this.isTarget(model, event); 1202 if (target) { 1203 if (this.lastDraggingIndex !== target.i) { 1204 this.targetChanged.emit({ 1205 prevIndex: this.lastDraggingIndex, 1206 newIndex: target.i, 1207 initialIndex: prevPos.index 1208 }); 1209 this.lastDraggingIndex = target.i; 1210 } 1211 } else if (this.lastDraggingIndex !== prevPos.index) { 1212 this.targetChanged.emit({ 1213 prevIndex: this.lastDraggingIndex, 1214 initialIndex: prevPos.index 1215 }); 1216 this.lastDraggingIndex = prevPos.index; 1217 } 1218 } 1219 onDragEnd({ 1220 element, 1221 model, 1222 event 1223 }) { 1224 const prevPos = this.positions[model.prop]; 1225 const target = this.isTarget(model, event); 1226 if (target) { 1227 this.reorder.emit({ 1228 prevIndex: prevPos.index, 1229 newIndex: target.i, 1230 model 1231 }); 1232 } 1233 this.lastDraggingIndex = void 0; 1234 element.style.left = "auto"; 1235 } 1236 isTarget(model, event) { 1237 let i = 0; 1238 const x = event.x || event.clientX; 1239 const y = event.y || event.clientY; 1240 const targets = this.document.elementsFromPoint(x, y); 1241 for (const prop in this.positions) { 1242 const pos = this.positions[prop]; 1243 if (model.prop !== prop && targets.find((el) => el === pos.element)) { 1244 return { 1245 pos, 1246 i 1247 }; 1248 } 1249 i++; 1250 } 1251 } 1252 createMapDiffs() { 1253 return this.draggables.toArray().reduce((acc, curr) => { 1254 acc[curr.dragModel.$$id] = curr; 1255 return acc; 1256 }, {}); 1257 } 1258}; 1259OrderableDirective.\u0275fac = function OrderableDirective_Factory(__ngFactoryType__) { 1260 return new (__ngFactoryType__ || OrderableDirective)(\u0275\u0275directiveInject(KeyValueDiffers), \u0275\u0275directiveInject(DOCUMENT)); 1261}; 1262OrderableDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 1263 type: OrderableDirective, 1264 selectors: [["", "orderable", ""]], 1265 contentQueries: function OrderableDirective_ContentQueries(rf, ctx, dirIndex) { 1266 if (rf & 1) { 1267 \u0275\u0275contentQuery(dirIndex, DraggableDirective, 5); 1268 } 1269 if (rf & 2) { 1270 let _t; 1271 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.draggables = _t); 1272 } 1273 }, 1274 outputs: { 1275 reorder: "reorder", 1276 targetChanged: "targetChanged" 1277 } 1278}); 1279(() => { 1280 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(OrderableDirective, [{ 1281 type: Directive, 1282 args: [{ 1283 selector: "[orderable]" 1284 }] 1285 }], function() { 1286 return [{ 1287 type: KeyValueDiffers 1288 }, { 1289 type: void 0, 1290 decorators: [{ 1291 type: Inject, 1292 args: [DOCUMENT] 1293 }] 1294 }]; 1295 }, { 1296 reorder: [{ 1297 type: Output 1298 }], 1299 targetChanged: [{ 1300 type: Output 1301 }], 1302 draggables: [{ 1303 type: ContentChildren, 1304 args: [DraggableDirective, { 1305 descendants: true 1306 }] 1307 }] 1308 }); 1309})(); 1310var LongPressDirective = class { 1311 constructor() { 1312 this.pressEnabled = true; 1313 this.duration = 500; 1314 this.longPressStart = new EventEmitter(); 1315 this.longPressing = new EventEmitter(); 1316 this.longPressEnd = new EventEmitter(); 1317 this.mouseX = 0; 1318 this.mouseY = 0; 1319 } 1320 get press() { 1321 return this.pressing; 1322 } 1323 get isLongPress() { 1324 return this.isLongPressing; 1325 } 1326 onMouseDown(event) { 1327 if (event.which !== 1 || !this.pressEnabled) return; 1328 const target = event.target; 1329 if (target.classList.contains("resize-handle")) return; 1330 this.mouseX = event.clientX; 1331 this.mouseY = event.clientY; 1332 this.pressing = true; 1333 this.isLongPressing = false; 1334 const mouseup = fromEvent(document, "mouseup"); 1335 this.subscription = mouseup.subscribe((ev) => this.onMouseup()); 1336 this.timeout = setTimeout(() => { 1337 this.isLongPressing = true; 1338 this.longPressStart.emit({ 1339 event, 1340 model: this.pressModel 1341 }); 1342 this.subscription.add(fromEvent(document, "mousemove").pipe(takeUntil(mouseup)).subscribe((mouseEvent) => this.onMouseMove(mouseEvent))); 1343 this.loop(event); 1344 }, this.duration); 1345 this.loop(event); 1346 } 1347 onMouseMove(event) { 1348 if (this.pressing && !this.isLongPressing) { 1349 const xThres = Math.abs(event.clientX - this.mouseX) > 10; 1350 const yThres = Math.abs(event.clientY - this.mouseY) > 10; 1351 if (xThres || yThres) { 1352 this.endPress(); 1353 } 1354 } 1355 } 1356 loop(event) { 1357 if (this.isLongPressing) { 1358 this.timeout = setTimeout(() => { 1359 this.longPressing.emit({ 1360 event, 1361 model: this.pressModel 1362 }); 1363 this.loop(event); 1364 }, 50); 1365 } 1366 } 1367 endPress() { 1368 clearTimeout(this.timeout); 1369 this.isLongPressing = false; 1370 this.pressing = false; 1371 this._destroySubscription(); 1372 this.longPressEnd.emit({ 1373 model: this.pressModel 1374 }); 1375 } 1376 onMouseup() { 1377 this.endPress(); 1378 } 1379 ngOnDestroy() { 1380 this._destroySubscription(); 1381 } 1382 _destroySubscription() { 1383 if (this.subscription) { 1384 this.subscription.unsubscribe(); 1385 this.subscription = void 0; 1386 } 1387 } 1388}; 1389LongPressDirective.\u0275fac = function LongPressDirective_Factory(__ngFactoryType__) { 1390 return new (__ngFactoryType__ || LongPressDirective)(); 1391}; 1392LongPressDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 1393 type: LongPressDirective, 1394 selectors: [["", "long-press", ""]], 1395 hostVars: 4, 1396 hostBindings: function LongPressDirective_HostBindings(rf, ctx) { 1397 if (rf & 1) { 1398 \u0275\u0275listener("mousedown", function LongPressDirective_mousedown_HostBindingHandler($event) { 1399 return ctx.onMouseDown($event); 1400 }); 1401 } 1402 if (rf & 2) { 1403 \u0275\u0275classProp("press", ctx.press)("longpress", ctx.isLongPress); 1404 } 1405 }, 1406 inputs: { 1407 pressEnabled: "pressEnabled", 1408 pressModel: "pressModel", 1409 duration: "duration" 1410 }, 1411 outputs: { 1412 longPressStart: "longPressStart", 1413 longPressing: "longPressing", 1414 longPressEnd: "longPressEnd" 1415 } 1416}); 1417(() => { 1418 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(LongPressDirective, [{ 1419 type: Directive, 1420 args: [{ 1421 selector: "[long-press]" 1422 }] 1423 }], null, { 1424 pressEnabled: [{ 1425 type: Input 1426 }], 1427 pressModel: [{ 1428 type: Input 1429 }], 1430 duration: [{ 1431 type: Input 1432 }], 1433 longPressStart: [{ 1434 type: Output 1435 }], 1436 longPressing: [{ 1437 type: Output 1438 }], 1439 longPressEnd: [{ 1440 type: Output 1441 }], 1442 press: [{ 1443 type: HostBinding, 1444 args: ["class.press"] 1445 }], 1446 isLongPress: [{ 1447 type: HostBinding, 1448 args: ["class.longpress"] 1449 }], 1450 onMouseDown: [{ 1451 type: HostListener, 1452 args: ["mousedown", ["$event"]] 1453 }] 1454 }); 1455})(); 1456var ScrollerComponent = class { 1457 constructor(ngZone, element, renderer) { 1458 this.ngZone = ngZone; 1459 this.renderer = renderer; 1460 this.scrollbarV = false; 1461 this.scrollbarH = false; 1462 this.scroll = new EventEmitter(); 1463 this.scrollYPos = 0; 1464 this.scrollXPos = 0; 1465 this.prevScrollYPos = 0; 1466 this.prevScrollXPos = 0; 1467 this._scrollEventListener = null; 1468 this.element = element.nativeElement; 1469 } 1470 ngOnInit() { 1471 if (this.scrollbarV || this.scrollbarH) { 1472 const renderer = this.renderer; 1473 this.parentElement = renderer.parentNode(renderer.parentNode(this.element)); 1474 this._scrollEventListener = this.onScrolled.bind(this); 1475 this.parentElement.addEventListener("scroll", this._scrollEventListener); 1476 } 1477 } 1478 ngOnDestroy() { 1479 if (this._scrollEventListener) { 1480 this.parentElement.removeEventListener("scroll", this._scrollEventListener); 1481 this._scrollEventListener = null; 1482 } 1483 } 1484 setOffset(offsetY) { 1485 if (this.parentElement) { 1486 this.parentElement.scrollTop = offsetY; 1487 } 1488 } 1489 onScrolled(event) { 1490 const dom = event.currentTarget; 1491 requestAnimationFrame(() => { 1492 this.scrollYPos = dom.scrollTop; 1493 this.scrollXPos = dom.scrollLeft; 1494 this.updateOffset(); 1495 }); 1496 } 1497 updateOffset() { 1498 let direction; 1499 if (this.scrollYPos < this.prevScrollYPos) { 1500 direction = "down"; 1501 } else if (this.scrollYPos > this.prevScrollYPos) { 1502 direction = "up"; 1503 } 1504 this.scroll.emit({ 1505 direction, 1506 scrollYPos: this.scrollYPos, 1507 scrollXPos: this.scrollXPos 1508 }); 1509 this.prevScrollYPos = this.scrollYPos; 1510 this.prevScrollXPos = this.scrollXPos; 1511 } 1512}; 1513ScrollerComponent.\u0275fac = function ScrollerComponent_Factory(__ngFactoryType__) { 1514 return new (__ngFactoryType__ || ScrollerComponent)(\u0275\u0275directiveInject(NgZone), \u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(Renderer2)); 1515}; 1516ScrollerComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 1517 type: ScrollerComponent, 1518 selectors: [["datatable-scroller"]], 1519 hostAttrs: [1, "datatable-scroll"], 1520 hostVars: 4, 1521 hostBindings: function ScrollerComponent_HostBindings(rf, ctx) { 1522 if (rf & 2) { 1523 \u0275\u0275styleProp("height", ctx.scrollHeight, "px")("width", ctx.scrollWidth, "px"); 1524 } 1525 }, 1526 inputs: { 1527 scrollbarV: "scrollbarV", 1528 scrollbarH: "scrollbarH", 1529 scrollHeight: "scrollHeight", 1530 scrollWidth: "scrollWidth" 1531 }, 1532 outputs: { 1533 scroll: "scroll" 1534 }, 1535 ngContentSelectors: _c0, 1536 decls: 1, 1537 vars: 0, 1538 template: function ScrollerComponent_Template(rf, ctx) { 1539 if (rf & 1) { 1540 \u0275\u0275projectionDef(); 1541 \u0275\u0275projection(0); 1542 } 1543 }, 1544 encapsulation: 2, 1545 changeDetection: 0 1546}); 1547(() => { 1548 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ScrollerComponent, [{ 1549 type: Component, 1550 args: [{ 1551 selector: "datatable-scroller", 1552 template: ` <ng-content></ng-content> `, 1553 host: { 1554 class: "datatable-scroll" 1555 }, 1556 changeDetection: ChangeDetectionStrategy.OnPush 1557 }] 1558 }], function() { 1559 return [{ 1560 type: NgZone 1561 }, { 1562 type: ElementRef 1563 }, { 1564 type: Renderer2 1565 }]; 1566 }, { 1567 scrollbarV: [{ 1568 type: Input 1569 }], 1570 scrollbarH: [{ 1571 type: Input 1572 }], 1573 scrollHeight: [{ 1574 type: HostBinding, 1575 args: ["style.height.px"] 1576 }, { 1577 type: Input 1578 }], 1579 scrollWidth: [{ 1580 type: HostBinding, 1581 args: ["style.width.px"] 1582 }, { 1583 type: Input 1584 }], 1585 scroll: [{ 1586 type: Output 1587 }] 1588 }); 1589})(); 1590var DatatableGroupHeaderTemplateDirective = class { 1591 constructor(template) { 1592 this.template = template; 1593 } 1594}; 1595DatatableGroupHeaderTemplateDirective.\u0275fac = function DatatableGroupHeaderTemplateDirective_Factory(__ngFactoryType__) { 1596 return new (__ngFactoryType__ || DatatableGroupHeaderTemplateDirective)(\u0275\u0275directiveInject(TemplateRef)); 1597}; 1598DatatableGroupHeaderTemplateDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 1599 type: DatatableGroupHeaderTemplateDirective, 1600 selectors: [["", "ngx-datatable-group-header-template", ""]] 1601}); 1602(() => { 1603 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableGroupHeaderTemplateDirective, [{ 1604 type: Directive, 1605 args: [{ 1606 selector: "[ngx-datatable-group-header-template]" 1607 }] 1608 }], function() { 1609 return [{ 1610 type: TemplateRef 1611 }]; 1612 }, null); 1613})(); 1614var DatatableGroupHeaderDirective = class { 1615 constructor() { 1616 this.rowHeight = 0; 1617 this.toggle = new EventEmitter(); 1618 } 1619 get template() { 1620 return this._templateInput || this._templateQuery; 1621 } 1622 /** 1623 * Toggle the expansion of a group 1624 */ 1625 toggleExpandGroup(group) { 1626 this.toggle.emit({ 1627 type: "group", 1628 value: group 1629 }); 1630 } 1631 /** 1632 * Expand all groups 1633 */ 1634 expandAllGroups() { 1635 this.toggle.emit({ 1636 type: "all", 1637 value: true 1638 }); 1639 } 1640 /** 1641 * Collapse all groups 1642 */ 1643 collapseAllGroups() { 1644 this.toggle.emit({ 1645 type: "all", 1646 value: false 1647 }); 1648 } 1649}; 1650DatatableGroupHeaderDirective.\u0275fac = function DatatableGroupHeaderDirective_Factory(__ngFactoryType__) { 1651 return new (__ngFactoryType__ || DatatableGroupHeaderDirective)(); 1652}; 1653DatatableGroupHeaderDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 1654 type: DatatableGroupHeaderDirective, 1655 selectors: [["ngx-datatable-group-header"]], 1656 contentQueries: function DatatableGroupHeaderDirective_ContentQueries(rf, ctx, dirIndex) { 1657 if (rf & 1) { 1658 \u0275\u0275contentQuery(dirIndex, DatatableGroupHeaderTemplateDirective, 7, TemplateRef); 1659 } 1660 if (rf & 2) { 1661 let _t; 1662 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._templateQuery = _t.first); 1663 } 1664 }, 1665 inputs: { 1666 rowHeight: "rowHeight", 1667 _templateInput: [0, "template", "_templateInput"] 1668 }, 1669 outputs: { 1670 toggle: "toggle" 1671 } 1672}); 1673(() => { 1674 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableGroupHeaderDirective, [{ 1675 type: Directive, 1676 args: [{ 1677 selector: "ngx-datatable-group-header" 1678 }] 1679 }], null, { 1680 rowHeight: [{ 1681 type: Input 1682 }], 1683 _templateInput: [{ 1684 type: Input, 1685 args: ["template"] 1686 }], 1687 _templateQuery: [{ 1688 type: ContentChild, 1689 args: [DatatableGroupHeaderTemplateDirective, { 1690 read: TemplateRef, 1691 static: true 1692 }] 1693 }], 1694 toggle: [{ 1695 type: Output 1696 }] 1697 }); 1698})(); 1699function emptyStringGetter() { 1700 return ""; 1701} 1702function getterForProp(prop) { 1703 if (prop == null) { 1704 return emptyStringGetter; 1705 } 1706 if (typeof prop === "number") { 1707 return numericIndexGetter; 1708 } else { 1709 if (prop.indexOf(".") !== -1) { 1710 return deepValueGetter; 1711 } else { 1712 return shallowValueGetter; 1713 } 1714 } 1715} 1716function numericIndexGetter(row, index) { 1717 if (row == null) { 1718 return ""; 1719 } 1720 if (!row || index == null) { 1721 return row; 1722 } 1723 const value = row[index]; 1724 if (value == null) { 1725 return ""; 1726 } 1727 return value; 1728} 1729function shallowValueGetter(obj, fieldName) { 1730 if (obj == null) { 1731 return ""; 1732 } 1733 if (!obj || !fieldName) { 1734 return obj; 1735 } 1736 const value = obj[fieldName]; 1737 if (value == null) { 1738 return ""; 1739 } 1740 return value; 1741} 1742function deepValueGetter(obj, path) { 1743 if (obj == null) { 1744 return ""; 1745 } 1746 if (!obj || !path) { 1747 return obj; 1748 } 1749 let current = obj[path]; 1750 if (current !== void 0) { 1751 return current; 1752 } 1753 current = obj; 1754 const split = path.split("."); 1755 if (split.length) { 1756 for (let i = 0; i < split.length; i++) { 1757 current = current[split[i]]; 1758 if (current === void 0 || current === null) { 1759 return ""; 1760 } 1761 } 1762 } 1763 return current; 1764} 1765function optionalGetterForProp(prop) { 1766 return prop && ((row) => getterForProp(prop)(row, prop)); 1767} 1768function groupRowsByParents(rows, from, to) { 1769 if (from && to) { 1770 const nodeById = {}; 1771 const l = rows.length; 1772 let node = null; 1773 nodeById[0] = new TreeNode(); 1774 const uniqIDs = rows.reduce((arr, item) => { 1775 const toValue = to(item); 1776 if (arr.indexOf(toValue) === -1) { 1777 arr.push(toValue); 1778 } 1779 return arr; 1780 }, []); 1781 for (let i = 0; i < l; i++) { 1782 nodeById[to(rows[i])] = new TreeNode(rows[i]); 1783 } 1784 for (let i = 0; i < l; i++) { 1785 node = nodeById[to(rows[i])]; 1786 let parent = 0; 1787 const fromValue = from(node.row); 1788 if (!!fromValue && uniqIDs.indexOf(fromValue) > -1) { 1789 parent = fromValue; 1790 } 1791 node.parent = nodeById[parent]; 1792 node.row["level"] = node.parent.row["level"] + 1; 1793 node.parent.children.push(node); 1794 } 1795 let resolvedRows = []; 1796 nodeById[0].flatten(function() { 1797 resolvedRows = [...resolvedRows, this.row]; 1798 }, true); 1799 return resolvedRows; 1800 } else { 1801 return rows; 1802 } 1803} 1804var TreeNode = class { 1805 constructor(row = null) { 1806 if (!row) { 1807 row = { 1808 level: -1, 1809 treeStatus: "expanded" 1810 }; 1811 } 1812 this.row = row; 1813 this.parent = null; 1814 this.children = []; 1815 } 1816 flatten(f, recursive) { 1817 if (this.row["treeStatus"] === "expanded") { 1818 for (let i = 0, l = this.children.length; i < l; i++) { 1819 const child = this.children[i]; 1820 f.apply(child, Array.prototype.slice.call(arguments, 2)); 1821 if (recursive) child.flatten.apply(child, arguments); 1822 } 1823 } 1824 } 1825}; 1826function camelCase(str) { 1827 str = str.replace(/[^a-zA-Z0-9 ]/g, " "); 1828 str = str.replace(/([a-z](?=[A-Z]))/g, "$1 "); 1829 str = str.replace(/([^a-zA-Z0-9 ])|^[0-9]+/g, "").trim().toLowerCase(); 1830 str = str.replace(/([ 0-9]+)([a-zA-Z])/g, function(a, b, c) { 1831 return b.trim() + c.toUpperCase(); 1832 }); 1833 return str; 1834} 1835function deCamelCase(str) { 1836 return str.replace(/([A-Z])/g, (match) => ` ${match}`).replace(/^./, (match) => match.toUpperCase()); 1837} 1838function id() { 1839 return ("0000" + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4); 1840} 1841function setColumnDefaults(columns) { 1842 if (!columns) return; 1843 let treeColumnFound = false; 1844 for (const column of columns) { 1845 if (!column.$$id) { 1846 column.$$id = id(); 1847 } 1848 if (isNullOrUndefined(column.prop) && column.name) { 1849 column.prop = camelCase(column.name); 1850 } 1851 if (!column.$$valueGetter) { 1852 column.$$valueGetter = getterForProp(column.prop); 1853 } 1854 if (!isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) { 1855 column.name = deCamelCase(String(column.prop)); 1856 } 1857 if (isNullOrUndefined(column.prop) && isNullOrUndefined(column.name)) { 1858 column.name = ""; 1859 } 1860 if (!column.hasOwnProperty("resizeable")) { 1861 column.resizeable = true; 1862 } 1863 if (!column.hasOwnProperty("sortable")) { 1864 column.sortable = true; 1865 } 1866 if (!column.hasOwnProperty("draggable")) { 1867 column.draggable = true; 1868 } 1869 if (!column.hasOwnProperty("canAutoResize")) { 1870 column.canAutoResize = true; 1871 } 1872 if (!column.hasOwnProperty("width")) { 1873 column.width = 150; 1874 } 1875 if (!column.hasOwnProperty("isTreeColumn")) { 1876 column.isTreeColumn = false; 1877 } else { 1878 if (column.isTreeColumn && !treeColumnFound) { 1879 treeColumnFound = true; 1880 } else { 1881 column.isTreeColumn = false; 1882 } 1883 } 1884 } 1885} 1886function isNullOrUndefined(value) { 1887 return value === null || value === void 0; 1888} 1889function translateTemplates(templates) { 1890 const result = []; 1891 for (const temp of templates) { 1892 const col = {}; 1893 const props = Object.getOwnPropertyNames(temp); 1894 for (const prop of props) { 1895 col[prop] = temp[prop]; 1896 } 1897 if (temp.headerTemplate) { 1898 col.headerTemplate = temp.headerTemplate; 1899 } 1900 if (temp.cellTemplate) { 1901 col.cellTemplate = temp.cellTemplate; 1902 } 1903 if (temp.summaryFunc) { 1904 col.summaryFunc = temp.summaryFunc; 1905 } 1906 if (temp.summaryTemplate) { 1907 col.summaryTemplate = temp.summaryTemplate; 1908 } 1909 result.push(col); 1910 } 1911 return result; 1912} 1913var ColumnMode; 1914(function(ColumnMode2) { 1915 ColumnMode2["standard"] = "standard"; 1916 ColumnMode2["flex"] = "flex"; 1917 ColumnMode2["force"] = "force"; 1918})(ColumnMode || (ColumnMode = {})); 1919var SelectionType; 1920(function(SelectionType2) { 1921 SelectionType2["single"] = "single"; 1922 SelectionType2["multi"] = "multi"; 1923 SelectionType2["multiClick"] = "multiClick"; 1924 SelectionType2["cell"] = "cell"; 1925 SelectionType2["checkbox"] = "checkbox"; 1926})(SelectionType || (SelectionType = {})); 1927var SortType; 1928(function(SortType2) { 1929 SortType2["single"] = "single"; 1930 SortType2["multi"] = "multi"; 1931})(SortType || (SortType = {})); 1932var ContextmenuType; 1933(function(ContextmenuType2) { 1934 ContextmenuType2["header"] = "header"; 1935 ContextmenuType2["body"] = "body"; 1936})(ContextmenuType || (ContextmenuType = {})); 1937var DataTableColumnHeaderDirective = class { 1938 constructor(template) { 1939 this.template = template; 1940 } 1941}; 1942DataTableColumnHeaderDirective.\u0275fac = function DataTableColumnHeaderDirective_Factory(__ngFactoryType__) { 1943 return new (__ngFactoryType__ || DataTableColumnHeaderDirective)(\u0275\u0275directiveInject(TemplateRef)); 1944}; 1945DataTableColumnHeaderDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 1946 type: DataTableColumnHeaderDirective, 1947 selectors: [["", "ngx-datatable-header-template", ""]] 1948}); 1949(() => { 1950 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableColumnHeaderDirective, [{ 1951 type: Directive, 1952 args: [{ 1953 selector: "[ngx-datatable-header-template]" 1954 }] 1955 }], function() { 1956 return [{ 1957 type: TemplateRef 1958 }]; 1959 }, null); 1960})(); 1961var DataTableColumnCellDirective = class { 1962 constructor(template) { 1963 this.template = template; 1964 } 1965}; 1966DataTableColumnCellDirective.\u0275fac = function DataTableColumnCellDirective_Factory(__ngFactoryType__) { 1967 return new (__ngFactoryType__ || DataTableColumnCellDirective)(\u0275\u0275directiveInject(TemplateRef)); 1968}; 1969DataTableColumnCellDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 1970 type: DataTableColumnCellDirective, 1971 selectors: [["", "ngx-datatable-cell-template", ""]] 1972}); 1973(() => { 1974 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableColumnCellDirective, [{ 1975 type: Directive, 1976 args: [{ 1977 selector: "[ngx-datatable-cell-template]" 1978 }] 1979 }], function() { 1980 return [{ 1981 type: TemplateRef 1982 }]; 1983 }, null); 1984})(); 1985var DataTableColumnCellTreeToggle = class { 1986 constructor(template) { 1987 this.template = template; 1988 } 1989}; 1990DataTableColumnCellTreeToggle.\u0275fac = function DataTableColumnCellTreeToggle_Factory(__ngFactoryType__) { 1991 return new (__ngFactoryType__ || DataTableColumnCellTreeToggle)(\u0275\u0275directiveInject(TemplateRef)); 1992}; 1993DataTableColumnCellTreeToggle.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 1994 type: DataTableColumnCellTreeToggle, 1995 selectors: [["", "ngx-datatable-tree-toggle", ""]] 1996}); 1997(() => { 1998 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableColumnCellTreeToggle, [{ 1999 type: Directive, 2000 args: [{ 2001 selector: "[ngx-datatable-tree-toggle]" 2002 }] 2003 }], function() { 2004 return [{ 2005 type: TemplateRef 2006 }]; 2007 }, null); 2008})(); 2009var DataTableColumnDirective = class { 2010 constructor(columnChangesService) { 2011 this.columnChangesService = columnChangesService; 2012 this.isFirstChange = true; 2013 } 2014 get cellTemplate() { 2015 return this._cellTemplateInput || this._cellTemplateQuery; 2016 } 2017 get headerTemplate() { 2018 return this._headerTemplateInput || this._headerTemplateQuery; 2019 } 2020 get treeToggleTemplate() { 2021 return this._treeToggleTemplateInput || this._treeToggleTemplateQuery; 2022 } 2023 ngOnChanges() { 2024 if (this.isFirstChange) { 2025 this.isFirstChange = false; 2026 } else { 2027 this.columnChangesService.onInputChange(); 2028 } 2029 } 2030}; 2031DataTableColumnDirective.\u0275fac = function DataTableColumnDirective_Factory(__ngFactoryType__) { 2032 return new (__ngFactoryType__ || DataTableColumnDirective)(\u0275\u0275directiveInject(ColumnChangesService)); 2033}; 2034DataTableColumnDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 2035 type: DataTableColumnDirective, 2036 selectors: [["ngx-datatable-column"]], 2037 contentQueries: function DataTableColumnDirective_ContentQueries(rf, ctx, dirIndex) { 2038 if (rf & 1) { 2039 \u0275\u0275contentQuery(dirIndex, DataTableColumnCellDirective, 7, TemplateRef); 2040 \u0275\u0275contentQuery(dirIndex, DataTableColumnHeaderDirective, 7, TemplateRef); 2041 \u0275\u0275contentQuery(dirIndex, DataTableColumnCellTreeToggle, 7, TemplateRef); 2042 } 2043 if (rf & 2) { 2044 let _t; 2045 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._cellTemplateQuery = _t.first); 2046 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._headerTemplateQuery = _t.first); 2047 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._treeToggleTemplateQuery = _t.first); 2048 } 2049 }, 2050 inputs: { 2051 name: "name", 2052 prop: "prop", 2053 frozenLeft: "frozenLeft", 2054 frozenRight: "frozenRight", 2055 flexGrow: "flexGrow", 2056 resizeable: "resizeable", 2057 comparator: "comparator", 2058 pipe: "pipe", 2059 sortable: "sortable", 2060 draggable: "draggable", 2061 canAutoResize: "canAutoResize", 2062 minWidth: "minWidth", 2063 width: "width", 2064 maxWidth: "maxWidth", 2065 checkboxable: "checkboxable", 2066 headerCheckboxable: "headerCheckboxable", 2067 headerClass: "headerClass", 2068 cellClass: "cellClass", 2069 isTreeColumn: "isTreeColumn", 2070 treeLevelIndent: "treeLevelIndent", 2071 summaryFunc: "summaryFunc", 2072 summaryTemplate: "summaryTemplate", 2073 _cellTemplateInput: [0, "cellTemplate", "_cellTemplateInput"], 2074 _headerTemplateInput: [0, "headerTemplate", "_headerTemplateInput"], 2075 _treeToggleTemplateInput: [0, "treeToggleTemplate", "_treeToggleTemplateInput"] 2076 }, 2077 features: [\u0275\u0275NgOnChangesFeature] 2078}); 2079(() => { 2080 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableColumnDirective, [{ 2081 type: Directive, 2082 args: [{ 2083 selector: "ngx-datatable-column" 2084 }] 2085 }], function() { 2086 return [{ 2087 type: ColumnChangesService 2088 }]; 2089 }, { 2090 name: [{ 2091 type: Input 2092 }], 2093 prop: [{ 2094 type: Input 2095 }], 2096 frozenLeft: [{ 2097 type: Input 2098 }], 2099 frozenRight: [{ 2100 type: Input 2101 }], 2102 flexGrow: [{ 2103 type: Input 2104 }], 2105 resizeable: [{ 2106 type: Input 2107 }], 2108 comparator: [{ 2109 type: Input 2110 }], 2111 pipe: [{ 2112 type: Input 2113 }], 2114 sortable: [{ 2115 type: Input 2116 }], 2117 draggable: [{ 2118 type: Input 2119 }], 2120 canAutoResize: [{ 2121 type: Input 2122 }], 2123 minWidth: [{ 2124 type: Input 2125 }], 2126 width: [{ 2127 type: Input 2128 }], 2129 maxWidth: [{ 2130 type: Input 2131 }], 2132 checkboxable: [{ 2133 type: Input 2134 }], 2135 headerCheckboxable: [{ 2136 type: Input 2137 }], 2138 headerClass: [{ 2139 type: Input 2140 }], 2141 cellClass: [{ 2142 type: Input 2143 }], 2144 isTreeColumn: [{ 2145 type: Input 2146 }], 2147 treeLevelIndent: [{ 2148 type: Input 2149 }], 2150 summaryFunc: [{ 2151 type: Input 2152 }], 2153 summaryTemplate: [{ 2154 type: Input 2155 }], 2156 _cellTemplateInput: [{ 2157 type: Input, 2158 args: ["cellTemplate"] 2159 }], 2160 _cellTemplateQuery: [{ 2161 type: ContentChild, 2162 args: [DataTableColumnCellDirective, { 2163 read: TemplateRef, 2164 static: true 2165 }] 2166 }], 2167 _headerTemplateInput: [{ 2168 type: Input, 2169 args: ["headerTemplate"] 2170 }], 2171 _headerTemplateQuery: [{ 2172 type: ContentChild, 2173 args: [DataTableColumnHeaderDirective, { 2174 read: TemplateRef, 2175 static: true 2176 }] 2177 }], 2178 _treeToggleTemplateInput: [{ 2179 type: Input, 2180 args: ["treeToggleTemplate"] 2181 }], 2182 _treeToggleTemplateQuery: [{ 2183 type: ContentChild, 2184 args: [DataTableColumnCellTreeToggle, { 2185 read: TemplateRef, 2186 static: true 2187 }] 2188 }] 2189 }); 2190})(); 2191var DatatableRowDetailTemplateDirective = class { 2192 constructor(template) { 2193 this.template = template; 2194 } 2195}; 2196DatatableRowDetailTemplateDirective.\u0275fac = function DatatableRowDetailTemplateDirective_Factory(__ngFactoryType__) { 2197 return new (__ngFactoryType__ || DatatableRowDetailTemplateDirective)(\u0275\u0275directiveInject(TemplateRef)); 2198}; 2199DatatableRowDetailTemplateDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 2200 type: DatatableRowDetailTemplateDirective, 2201 selectors: [["", "ngx-datatable-row-detail-template", ""]] 2202}); 2203(() => { 2204 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableRowDetailTemplateDirective, [{ 2205 type: Directive, 2206 args: [{ 2207 selector: "[ngx-datatable-row-detail-template]" 2208 }] 2209 }], function() { 2210 return [{ 2211 type: TemplateRef 2212 }]; 2213 }, null); 2214})(); 2215var DatatableRowDetailDirective = class { 2216 constructor() { 2217 this.rowHeight = 0; 2218 this.toggle = new EventEmitter(); 2219 } 2220 get template() { 2221 return this._templateInput || this._templateQuery; 2222 } 2223 /** 2224 * Toggle the expansion of the row 2225 */ 2226 toggleExpandRow(row) { 2227 this.toggle.emit({ 2228 type: "row", 2229 value: row 2230 }); 2231 } 2232 /** 2233 * API method to expand all the rows. 2234 */ 2235 expandAllRows() { 2236 this.toggle.emit({ 2237 type: "all", 2238 value: true 2239 }); 2240 } 2241 /** 2242 * API method to collapse all the rows. 2243 */ 2244 collapseAllRows() { 2245 this.toggle.emit({ 2246 type: "all", 2247 value: false 2248 }); 2249 } 2250}; 2251DatatableRowDetailDirective.\u0275fac = function DatatableRowDetailDirective_Factory(__ngFactoryType__) { 2252 return new (__ngFactoryType__ || DatatableRowDetailDirective)(); 2253}; 2254DatatableRowDetailDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 2255 type: DatatableRowDetailDirective, 2256 selectors: [["ngx-datatable-row-detail"]], 2257 contentQueries: function DatatableRowDetailDirective_ContentQueries(rf, ctx, dirIndex) { 2258 if (rf & 1) { 2259 \u0275\u0275contentQuery(dirIndex, DatatableRowDetailTemplateDirective, 7, TemplateRef); 2260 } 2261 if (rf & 2) { 2262 let _t; 2263 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._templateQuery = _t.first); 2264 } 2265 }, 2266 inputs: { 2267 rowHeight: "rowHeight", 2268 _templateInput: [0, "template", "_templateInput"] 2269 }, 2270 outputs: { 2271 toggle: "toggle" 2272 } 2273}); 2274(() => { 2275 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableRowDetailDirective, [{ 2276 type: Directive, 2277 args: [{ 2278 selector: "ngx-datatable-row-detail" 2279 }] 2280 }], null, { 2281 rowHeight: [{ 2282 type: Input 2283 }], 2284 _templateInput: [{ 2285 type: Input, 2286 args: ["template"] 2287 }], 2288 _templateQuery: [{ 2289 type: ContentChild, 2290 args: [DatatableRowDetailTemplateDirective, { 2291 read: TemplateRef, 2292 static: true 2293 }] 2294 }], 2295 toggle: [{ 2296 type: Output 2297 }] 2298 }); 2299})(); 2300var DatatableFooterDirective = class { 2301 get template() { 2302 return this._templateInput || this._templateQuery; 2303 } 2304}; 2305DatatableFooterDirective.\u0275fac = function DatatableFooterDirective_Factory(__ngFactoryType__) { 2306 return new (__ngFactoryType__ || DatatableFooterDirective)(); 2307}; 2308DatatableFooterDirective.\u0275dir = /* @__PURE__ */ \u0275\u0275defineDirective({ 2309 type: DatatableFooterDirective, 2310 selectors: [["ngx-datatable-footer"]], 2311 contentQueries: function DatatableFooterDirective_ContentQueries(rf, ctx, dirIndex) { 2312 if (rf & 1) { 2313 \u0275\u0275contentQuery(dirIndex, DataTableFooterTemplateDirective, 5, TemplateRef); 2314 } 2315 if (rf & 2) { 2316 let _t; 2317 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx._templateQuery = _t.first); 2318 } 2319 }, 2320 inputs: { 2321 footerHeight: "footerHeight", 2322 totalMessage: "totalMessage", 2323 selectedMessage: "selectedMessage", 2324 pagerLeftArrowIcon: "pagerLeftArrowIcon", 2325 pagerRightArrowIcon: "pagerRightArrowIcon", 2326 pagerPreviousIcon: "pagerPreviousIcon", 2327 pagerNextIcon: "pagerNextIcon", 2328 _templateInput: [0, "template", "_templateInput"] 2329 } 2330}); 2331(() => { 2332 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableFooterDirective, [{ 2333 type: Directive, 2334 args: [{ 2335 selector: "ngx-datatable-footer" 2336 }] 2337 }], null, { 2338 footerHeight: [{ 2339 type: Input 2340 }], 2341 totalMessage: [{ 2342 type: Input 2343 }], 2344 selectedMessage: [{ 2345 type: Input 2346 }], 2347 pagerLeftArrowIcon: [{ 2348 type: Input 2349 }], 2350 pagerRightArrowIcon: [{ 2351 type: Input 2352 }], 2353 pagerPreviousIcon: [{ 2354 type: Input 2355 }], 2356 pagerNextIcon: [{ 2357 type: Input 2358 }], 2359 _templateInput: [{ 2360 type: Input, 2361 args: ["template"] 2362 }], 2363 _templateQuery: [{ 2364 type: ContentChild, 2365 args: [DataTableFooterTemplateDirective, { 2366 read: TemplateRef 2367 }] 2368 }] 2369 }); 2370})(); 2371function columnsByPin(cols) { 2372 const ret = { 2373 left: [], 2374 center: [], 2375 right: [] 2376 }; 2377 if (cols) { 2378 for (const col of cols) { 2379 if (col.frozenLeft) { 2380 ret.left.push(col); 2381 } else if (col.frozenRight) { 2382 ret.right.push(col); 2383 } else { 2384 ret.center.push(col); 2385 } 2386 } 2387 } 2388 return ret; 2389} 2390function columnGroupWidths(groups, all) { 2391 return { 2392 left: columnTotalWidth(groups.left), 2393 center: columnTotalWidth(groups.center), 2394 right: columnTotalWidth(groups.right), 2395 total: Math.floor(columnTotalWidth(all)) 2396 }; 2397} 2398function columnTotalWidth(columns, prop) { 2399 let totalWidth = 0; 2400 if (columns) { 2401 for (const c of columns) { 2402 const has = prop && c[prop]; 2403 const width = has ? c[prop] : c.width; 2404 totalWidth = totalWidth + parseFloat(width); 2405 } 2406 } 2407 return totalWidth; 2408} 2409function columnsTotalWidth(columns, prop) { 2410 let totalWidth = 0; 2411 for (const column of columns) { 2412 const has = prop && column[prop]; 2413 totalWidth = totalWidth + (has ? column[prop] : column.width); 2414 } 2415 return totalWidth; 2416} 2417function columnsByPinArr(val) { 2418 const colsByPinArr = []; 2419 const colsByPin = columnsByPin(val); 2420 colsByPinArr.push({ 2421 type: "left", 2422 columns: colsByPin["left"] 2423 }); 2424 colsByPinArr.push({ 2425 type: "center", 2426 columns: colsByPin["center"] 2427 }); 2428 colsByPinArr.push({ 2429 type: "right", 2430 columns: colsByPin["right"] 2431 }); 2432 return colsByPinArr; 2433} 2434var RowHeightCache = class { 2435 constructor() { 2436 this.treeArray = []; 2437 } 2438 /** 2439 * Clear the Tree array. 2440 */ 2441 clearCache() { 2442 this.treeArray = []; 2443 } 2444 /** 2445 * Initialize the Fenwick tree with row Heights. 2446 * 2447 * @param rows The array of rows which contain the expanded status. 2448 * @param rowHeight The row height. 2449 * @param detailRowHeight The detail row height. 2450 */ 2451 initCache(details) { 2452 const { 2453 rows, 2454 rowHeight, 2455 detailRowHeight, 2456 externalVirtual, 2457 rowCount, 2458 rowIndexes, 2459 rowExpansions 2460 } = details; 2461 const isFn = typeof rowHeight === "function"; 2462 const isDetailFn = typeof detailRowHeight === "function"; 2463 if (!isFn && isNaN(rowHeight)) { 2464 throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a 2465 valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`); 2466 } 2467 if (!isDetailFn && isNaN(detailRowHeight)) { 2468 throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a 2469 valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`); 2470 } 2471 const n = externalVirtual ? rowCount : rows.length; 2472 this.treeArray = new Array(n); 2473 for (let i = 0; i < n; ++i) { 2474 this.treeArray[i] = 0; 2475 } 2476 for (let i = 0; i < n; ++i) { 2477 const row = rows[i]; 2478 let currentRowHeight = rowHeight; 2479 if (isFn) { 2480 currentRowHeight = rowHeight(row); 2481 } 2482 const expanded = rowExpansions.has(row); 2483 if (row && expanded) { 2484 if (isDetailFn) { 2485 const index = rowIndexes.get(row); 2486 currentRowHeight += detailRowHeight(row, index); 2487 } else { 2488 currentRowHeight += detailRowHeight; 2489 } 2490 } 2491 this.update(i, currentRowHeight); 2492 } 2493 } 2494 /** 2495 * Given the ScrollY position i.e. sum, provide the rowIndex 2496 * that is present in the current view port. Below handles edge cases. 2497 */ 2498 getRowIndex(scrollY) { 2499 if (scrollY === 0) return 0; 2500 return this.calcRowIndex(scrollY); 2501 } 2502 /** 2503 * When a row is expanded or rowHeight is changed, update the height. This can 2504 * be utilized in future when Angular Data table supports dynamic row heights. 2505 */ 2506 update(atRowIndex, byRowHeight) { 2507 if (!this.treeArray.length) { 2508 throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed: 2509 Row Height cache not initialized.`); 2510 } 2511 const n = this.treeArray.length; 2512 atRowIndex |= 0; 2513 while (atRowIndex < n) { 2514 this.treeArray[atRowIndex] += byRowHeight; 2515 atRowIndex |= atRowIndex + 1; 2516 } 2517 } 2518 /** 2519 * Range Sum query from 1 to the rowIndex 2520 */ 2521 query(atIndex) { 2522 if (!this.treeArray.length) { 2523 throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`); 2524 } 2525 let sum = 0; 2526 atIndex |= 0; 2527 while (atIndex >= 0) { 2528 sum += this.treeArray[atIndex]; 2529 atIndex = (atIndex & atIndex + 1) - 1; 2530 } 2531 return sum; 2532 } 2533 /** 2534 * Find the total height between 2 row indexes 2535 */ 2536 queryBetween(atIndexA, atIndexB) { 2537 return this.query(atIndexB) - this.query(atIndexA - 1); 2538 } 2539 /** 2540 * Given the ScrollY position i.e. sum, provide the rowIndex 2541 * that is present in the current view port. 2542 */ 2543 calcRowIndex(sum) { 2544 if (!this.treeArray.length) return 0; 2545 let pos = -1; 2546 const dataLength = this.treeArray.length; 2547 const highestBit = Math.pow(2, dataLength.toString(2).length - 1); 2548 for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) { 2549 const nextPos = pos + blockSize; 2550 if (nextPos < dataLength && sum >= this.treeArray[nextPos]) { 2551 sum -= this.treeArray[nextPos]; 2552 pos = nextPos; 2553 } 2554 } 2555 return pos + 1; 2556 } 2557}; 2558var cache = {}; 2559var testStyle = typeof document !== "undefined" ? document.createElement("div").style : void 0; 2560var prefix = function() { 2561 const styles = typeof window !== "undefined" ? window.getComputedStyle(document.documentElement, "") : void 0; 2562 const match = typeof styles !== "undefined" ? Array.prototype.slice.call(styles).join("").match(/-(moz|webkit|ms)-/) : null; 2563 const pre = match !== null ? match[1] : void 0; 2564 const dom = typeof pre !== "undefined" ? "WebKit|Moz|MS|O".match(new RegExp("(" + pre + ")", "i"))[1] : void 0; 2565 return dom ? { 2566 dom, 2567 lowercase: pre, 2568 css: `-${pre}-`, 2569 js: pre[0].toUpperCase() + pre.substr(1) 2570 } : void 0; 2571}(); 2572function getVendorPrefixedName(property) { 2573 const name = camelCase(property); 2574 if (!cache[name]) { 2575 if (prefix !== void 0 && testStyle[prefix.css + property] !== void 0) { 2576 cache[name] = prefix.css + property; 2577 } else if (testStyle[property] !== void 0) { 2578 cache[name] = property; 2579 } 2580 } 2581 return cache[name]; 2582} 2583var transform = typeof window !== "undefined" ? getVendorPrefixedName("transform") : void 0; 2584var backfaceVisibility = typeof window !== "undefined" ? getVendorPrefixedName("backfaceVisibility") : void 0; 2585var hasCSSTransforms = typeof window !== "undefined" ? !!getVendorPrefixedName("transform") : void 0; 2586var hasCSS3DTransforms = typeof window !== "undefined" ? !!getVendorPrefixedName("perspective") : void 0; 2587var ua = typeof window !== "undefined" ? window.navigator.userAgent : "Chrome"; 2588var isSafari = /Safari\//.test(ua) && !/Chrome\//.test(ua); 2589function translateXY(styles, x, y) { 2590 if (typeof transform !== "undefined" && hasCSSTransforms) { 2591 if (!isSafari && hasCSS3DTransforms) { 2592 styles[transform] = `translate3d(${x}px, ${y}px, 0)`; 2593 styles[backfaceVisibility] = "hidden"; 2594 } else { 2595 styles[camelCase(transform)] = `translate(${x}px, ${y}px)`; 2596 } 2597 } else { 2598 styles.top = `${y}px`; 2599 styles.left = `${x}px`; 2600 } 2601} 2602var ProgressBarComponent = class { 2603}; 2604ProgressBarComponent.\u0275fac = function ProgressBarComponent_Factory(__ngFactoryType__) { 2605 return new (__ngFactoryType__ || ProgressBarComponent)(); 2606}; 2607ProgressBarComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 2608 type: ProgressBarComponent, 2609 selectors: [["datatable-progress"]], 2610 decls: 3, 2611 vars: 0, 2612 consts: [["role", "progressbar", 1, "progress-linear"], [1, "container"], [1, "bar"]], 2613 template: function ProgressBarComponent_Template(rf, ctx) { 2614 if (rf & 1) { 2615 \u0275\u0275elementStart(0, "div", 0)(1, "div", 1); 2616 \u0275\u0275element(2, "div", 2); 2617 \u0275\u0275elementEnd()(); 2618 } 2619 }, 2620 encapsulation: 2, 2621 changeDetection: 0 2622}); 2623(() => { 2624 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ProgressBarComponent, [{ 2625 type: Component, 2626 args: [{ 2627 selector: "datatable-progress", 2628 template: ` 2629 <div class="progress-linear" role="progressbar"> 2630 <div class="container"> 2631 <div class="bar"></div> 2632 </div> 2633 </div> 2634 `, 2635 changeDetection: ChangeDetectionStrategy.OnPush 2636 }] 2637 }], null, null); 2638})(); 2639function selectRows(selected, row, comparefn) { 2640 const selectedIndex = comparefn(row, selected); 2641 if (selectedIndex > -1) { 2642 selected.splice(selectedIndex, 1); 2643 } else { 2644 selected.push(row); 2645 } 2646 return selected; 2647} 2648function selectRowsBetween(selected, rows, index, prevIndex, comparefn) { 2649 const reverse = index < prevIndex; 2650 for (let i = 0; i < rows.length; i++) { 2651 const row = rows[i]; 2652 const greater = i >= prevIndex && i <= index; 2653 const lesser = i <= prevIndex && i >= index; 2654 let range = { 2655 start: 0, 2656 end: 0 2657 }; 2658 if (reverse) { 2659 range = { 2660 start: index, 2661 end: prevIndex 2662 }; 2663 } else { 2664 range = { 2665 start: prevIndex, 2666 end: index + 1 2667 }; 2668 } 2669 if (reverse && lesser || !reverse && greater) { 2670 if (i >= range.start && i <= range.end) { 2671 selected.push(row); 2672 } 2673 } 2674 } 2675 return selected; 2676} 2677var Keys; 2678(function(Keys2) { 2679 Keys2[Keys2["up"] = 38] = "up"; 2680 Keys2[Keys2["down"] = 40] = "down"; 2681 Keys2[Keys2["return"] = 13] = "return"; 2682 Keys2[Keys2["escape"] = 27] = "escape"; 2683 Keys2[Keys2["left"] = 37] = "left"; 2684 Keys2[Keys2["right"] = 39] = "right"; 2685})(Keys || (Keys = {})); 2686var DataTableSelectionComponent = class { 2687 constructor() { 2688 this.activate = new EventEmitter(); 2689 this.select = new EventEmitter(); 2690 } 2691 selectRow(event, index, row) { 2692 if (!this.selectEnabled) return; 2693 const chkbox = this.selectionType === SelectionType.checkbox; 2694 const multi = this.selectionType === SelectionType.multi; 2695 const multiClick = this.selectionType === SelectionType.multiClick; 2696 let selected = []; 2697 if (multi || chkbox || multiClick) { 2698 if (event.shiftKey) { 2699 selected = selectRowsBetween([], this.rows, index, this.prevIndex, this.getRowSelectedIdx.bind(this)); 2700 } else if (event.ctrlKey || event.metaKey || multiClick || chkbox) { 2701 selected = selectRows([...this.selected], row, this.getRowSelectedIdx.bind(this)); 2702 } else { 2703 selected = selectRows([], row, this.getRowSelectedIdx.bind(this)); 2704 } 2705 } else { 2706 selected = selectRows([], row, this.getRowSelectedIdx.bind(this)); 2707 } 2708 if (typeof this.selectCheck === "function") { 2709 selected = selected.filter(this.selectCheck.bind(this)); 2710 } 2711 this.selected.splice(0, this.selected.length); 2712 this.selected.push(...selected); 2713 this.prevIndex = index; 2714 this.select.emit({ 2715 selected 2716 }); 2717 } 2718 onActivate(model, index) { 2719 const { 2720 type, 2721 event, 2722 row 2723 } = model; 2724 const chkbox = this.selectionType === SelectionType.checkbox; 2725 const select = !chkbox && (type === "click" || type === "dblclick") || chkbox && type === "checkbox"; 2726 if (select) { 2727 this.selectRow(event, index, row); 2728 } else if (type === "keydown") { 2729 if (event.keyCode === Keys.return) { 2730 this.selectRow(event, index, row); 2731 } else { 2732 this.onKeyboardFocus(model); 2733 } 2734 } 2735 this.activate.emit(model); 2736 } 2737 onKeyboardFocus(model) { 2738 const { 2739 keyCode 2740 } = model.event; 2741 const shouldFocus = keyCode === Keys.up || keyCode === Keys.down || keyCode === Keys.right || keyCode === Keys.left; 2742 if (shouldFocus) { 2743 const isCellSelection = this.selectionType === SelectionType.cell; 2744 if (!model.cellElement || !isCellSelection) { 2745 this.focusRow(model.rowElement, keyCode); 2746 } else if (isCellSelection) { 2747 this.focusCell(model.cellElement, model.rowElement, keyCode, model.cellIndex); 2748 } 2749 } 2750 } 2751 focusRow(rowElement, keyCode) { 2752 const nextRowElement = this.getPrevNextRow(rowElement, keyCode); 2753 if (nextRowElement) nextRowElement.focus(); 2754 } 2755 getPrevNextRow(rowElement, keyCode) { 2756 const parentElement = rowElement.parentElement; 2757 if (parentElement) { 2758 let focusElement; 2759 if (keyCode === Keys.up) { 2760 focusElement = parentElement.previousElementSibling; 2761 } else if (keyCode === Keys.down) { 2762 focusElement = parentElement.nextElementSibling; 2763 } 2764 if (focusElement && focusElement.children.length) { 2765 return focusElement.children[0]; 2766 } 2767 } 2768 } 2769 focusCell(cellElement, rowElement, keyCode, cellIndex) { 2770 let nextCellElement; 2771 if (keyCode === Keys.left) { 2772 nextCellElement = cellElement.previousElementSibling; 2773 } else if (keyCode === Keys.right) { 2774 nextCellElement = cellElement.nextElementSibling; 2775 } else if (keyCode === Keys.up || keyCode === Keys.down) { 2776 const nextRowElement = this.getPrevNextRow(rowElement, keyCode); 2777 if (nextRowElement) { 2778 const children = nextRowElement.getElementsByClassName("datatable-body-cell"); 2779 if (children.length) nextCellElement = children[cellIndex]; 2780 } 2781 } 2782 if (nextCellElement) nextCellElement.focus(); 2783 } 2784 getRowSelected(row) { 2785 return this.getRowSelectedIdx(row, this.selected) > -1; 2786 } 2787 getRowSelectedIdx(row, selected) { 2788 if (!selected || !selected.length) return -1; 2789 const rowId = this.rowIdentity(row); 2790 return selected.findIndex((r) => { 2791 const id2 = this.rowIdentity(r); 2792 return id2 === rowId; 2793 }); 2794 } 2795}; 2796DataTableSelectionComponent.\u0275fac = function DataTableSelectionComponent_Factory(__ngFactoryType__) { 2797 return new (__ngFactoryType__ || DataTableSelectionComponent)(); 2798}; 2799DataTableSelectionComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 2800 type: DataTableSelectionComponent, 2801 selectors: [["datatable-selection"]], 2802 inputs: { 2803 rows: "rows", 2804 selected: "selected", 2805 selectEnabled: "selectEnabled", 2806 selectionType: "selectionType", 2807 rowIdentity: "rowIdentity", 2808 selectCheck: "selectCheck" 2809 }, 2810 outputs: { 2811 activate: "activate", 2812 select: "select" 2813 }, 2814 ngContentSelectors: _c0, 2815 decls: 1, 2816 vars: 0, 2817 template: function DataTableSelectionComponent_Template(rf, ctx) { 2818 if (rf & 1) { 2819 \u0275\u0275projectionDef(); 2820 \u0275\u0275projection(0); 2821 } 2822 }, 2823 encapsulation: 2, 2824 changeDetection: 0 2825}); 2826(() => { 2827 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableSelectionComponent, [{ 2828 type: Component, 2829 args: [{ 2830 selector: "datatable-selection", 2831 template: ` <ng-content></ng-content> `, 2832 changeDetection: ChangeDetectionStrategy.OnPush 2833 }] 2834 }], null, { 2835 rows: [{ 2836 type: Input 2837 }], 2838 selected: [{ 2839 type: Input 2840 }], 2841 selectEnabled: [{ 2842 type: Input 2843 }], 2844 selectionType: [{ 2845 type: Input 2846 }], 2847 rowIdentity: [{ 2848 type: Input 2849 }], 2850 selectCheck: [{ 2851 type: Input 2852 }], 2853 activate: [{ 2854 type: Output 2855 }], 2856 select: [{ 2857 type: Output 2858 }] 2859 }); 2860})(); 2861var SortDirection; 2862(function(SortDirection3) { 2863 SortDirection3["asc"] = "asc"; 2864 SortDirection3["desc"] = "desc"; 2865})(SortDirection || (SortDirection = {})); 2866var DataTableBodyCellComponent = class { 2867 constructor(element, cd) { 2868 this.cd = cd; 2869 this.activate = new EventEmitter(); 2870 this.treeAction = new EventEmitter(); 2871 this.isFocused = false; 2872 this.onCheckboxChangeFn = this.onCheckboxChange.bind(this); 2873 this.activateFn = this.activate.emit.bind(this.activate); 2874 this.cellContext = { 2875 onCheckboxChangeFn: this.onCheckboxChangeFn, 2876 activateFn: this.activateFn, 2877 row: this.row, 2878 group: this.group, 2879 value: this.value, 2880 column: this.column, 2881 rowHeight: this.rowHeight, 2882 isSelected: this.isSelected, 2883 rowIndex: this.rowIndex, 2884 treeStatus: this.treeStatus, 2885 onTreeAction: this.onTreeAction.bind(this) 2886 }; 2887 this._element = element.nativeElement; 2888 } 2889 set group(group) { 2890 this._group = group; 2891 this.cellContext.group = group; 2892 this.checkValueUpdates(); 2893 this.cd.markForCheck(); 2894 } 2895 get group() { 2896 return this._group; 2897 } 2898 set rowHeight(val) { 2899 this._rowHeight = val; 2900 this.cellContext.rowHeight = val; 2901 this.checkValueUpdates(); 2902 this.cd.markForCheck(); 2903 } 2904 get rowHeight() { 2905 return this._rowHeight; 2906 } 2907 set isSelected(val) { 2908 this._isSelected = val; 2909 this.cellContext.isSelected = val; 2910 this.cd.markForCheck(); 2911 } 2912 get isSelected() { 2913 return this._isSelected; 2914 } 2915 set expanded(val) { 2916 this._expanded = val; 2917 this.cellContext.expanded = val; 2918 this.cd.markForCheck(); 2919 } 2920 get expanded() { 2921 return this._expanded; 2922 } 2923 set rowIndex(val) { 2924 this._rowIndex = val; 2925 this.cellContext.rowIndex = val; 2926 this.checkValueUpdates(); 2927 this.cd.markForCheck(); 2928 } 2929 get rowIndex() { 2930 return this._rowIndex; 2931 } 2932 set column(column) { 2933 this._column = column; 2934 this.cellContext.column = column; 2935 this.checkValueUpdates(); 2936 this.cd.markForCheck(); 2937 } 2938 get column() { 2939 return this._column; 2940 } 2941 set row(row) { 2942 this._row = row; 2943 this.cellContext.row = row; 2944 this.checkValueUpdates(); 2945 this.cd.markForCheck(); 2946 } 2947 get row() { 2948 return this._row; 2949 } 2950 set sorts(val) { 2951 this._sorts = val; 2952 this.calcSortDir = this.calcSortDir(val); 2953 } 2954 get sorts() { 2955 return this._sorts; 2956 } 2957 set treeStatus(status) { 2958 if (status !== "collapsed" && status !== "expanded" && status !== "loading" && status !== "disabled") { 2959 this._treeStatus = "collapsed"; 2960 } else { 2961 this._treeStatus = status; 2962 } 2963 this.cellContext.treeStatus = this._treeStatus; 2964 this.checkValueUpdates(); 2965 this.cd.markForCheck(); 2966 } 2967 get treeStatus() { 2968 return this._treeStatus; 2969 } 2970 get columnCssClasses() { 2971 let cls = "datatable-body-cell"; 2972 if (this.column.cellClass) { 2973 if (typeof this.column.cellClass === "string") { 2974 cls += " " + this.column.cellClass; 2975 } else if (typeof this.column.cellClass === "function") { 2976 const res = this.column.cellClass({ 2977 row: this.row, 2978 group: this.group, 2979 column: this.column, 2980 value: this.value, 2981 rowHeight: this.rowHeight 2982 }); 2983 if (typeof res === "string") { 2984 cls += " " + res; 2985 } else if (typeof res === "object") { 2986 const keys = Object.keys(res); 2987 for (const k of keys) { 2988 if (res[k] === true) { 2989 cls += ` ${k}`; 2990 } 2991 } 2992 } 2993 } 2994 } 2995 if (!this.sortDir) { 2996 cls += " sort-active"; 2997 } 2998 if (this.isFocused) { 2999 cls += " active"; 3000 } 3001 if (this.sortDir === SortDirection.asc) { 3002 cls += " sort-asc"; 3003 } 3004 if (this.sortDir === SortDirection.desc) { 3005 cls += " sort-desc"; 3006 } 3007 return cls; 3008 } 3009 get width() { 3010 return this.column.width; 3011 } 3012 get minWidth() { 3013 return this.column.minWidth; 3014 } 3015 get maxWidth() { 3016 return this.column.maxWidth; 3017 } 3018 get height() { 3019 const height = this.rowHeight; 3020 if (isNaN(height)) { 3021 return height; 3022 } 3023 return height + "px"; 3024 } 3025 ngDoCheck() { 3026 this.checkValueUpdates(); 3027 } 3028 ngOnDestroy() { 3029 if (this.cellTemplate) { 3030 this.cellTemplate.clear(); 3031 } 3032 } 3033 checkValueUpdates() { 3034 let value = ""; 3035 if (!this.row || !this.column) { 3036 value = ""; 3037 } else { 3038 const val = this.column.$$valueGetter(this.row, this.column.prop); 3039 const userPipe = this.column.pipe; 3040 if (userPipe) { 3041 value = userPipe.transform(val); 3042 } else if (value !== void 0) { 3043 value = val; 3044 } 3045 } 3046 if (this.value !== value) { 3047 this.value = value; 3048 this.cellContext.value = value; 3049 this.sanitizedValue = value !== null && value !== void 0 ? this.stripHtml(value) : value; 3050 this.cd.markForCheck(); 3051 } 3052 } 3053 onFocus() { 3054 this.isFocused = true; 3055 } 3056 onBlur() { 3057 this.isFocused = false; 3058 } 3059 onClick(event) { 3060 this.activate.emit({ 3061 type: "click", 3062 event, 3063 row: this.row, 3064 group: this.group, 3065 rowHeight: this.rowHeight, 3066 column: this.column, 3067 value: this.value, 3068 cellElement: this._element 3069 }); 3070 } 3071 onDblClick(event) { 3072 this.activate.emit({ 3073 type: "dblclick", 3074 event, 3075 row: this.row, 3076 group: this.group, 3077 rowHeight: this.rowHeight, 3078 column: this.column, 3079 value: this.value, 3080 cellElement: this._element 3081 }); 3082 } 3083 onKeyDown(event) { 3084 const keyCode = event.keyCode; 3085 const isTargetCell = event.target === this._element; 3086 const isAction = keyCode === Keys.return || keyCode === Keys.down || keyCode === Keys.up || keyCode === Keys.left || keyCode === Keys.right; 3087 if (isAction && isTargetCell) { 3088 event.preventDefault(); 3089 event.stopPropagation(); 3090 this.activate.emit({ 3091 type: "keydown", 3092 event, 3093 row: this.row, 3094 group: this.group, 3095 rowHeight: this.rowHeight, 3096 column: this.column, 3097 value: this.value, 3098 cellElement: this._element 3099 }); 3100 } 3101 } 3102 onCheckboxChange(event) { 3103 this.activate.emit({ 3104 type: "checkbox", 3105 event, 3106 row: this.row, 3107 group: this.group, 3108 rowHeight: this.rowHeight, 3109 column: this.column, 3110 value: this.value, 3111 cellElement: this._element, 3112 treeStatus: "collapsed" 3113 }); 3114 } 3115 calcSortDir(sorts) { 3116 if (!sorts) { 3117 return; 3118 } 3119 const sort = sorts.find((s) => { 3120 return s.prop === this.column.prop; 3121 }); 3122 if (sort) { 3123 return sort.dir; 3124 } 3125 } 3126 stripHtml(html) { 3127 if (!html.replace) { 3128 return html; 3129 } 3130 return html.replace(/<\/?[^>]+(>|$)/g, ""); 3131 } 3132 onTreeAction() { 3133 this.treeAction.emit(this.row); 3134 } 3135 calcLeftMargin(column, row) { 3136 const levelIndent = column.treeLevelIndent != null ? column.treeLevelIndent : 50; 3137 return column.isTreeColumn ? row.level * levelIndent : 0; 3138 } 3139}; 3140DataTableBodyCellComponent.\u0275fac = function DataTableBodyCellComponent_Factory(__ngFactoryType__) { 3141 return new (__ngFactoryType__ || DataTableBodyCellComponent)(\u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(ChangeDetectorRef)); 3142}; 3143DataTableBodyCellComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 3144 type: DataTableBodyCellComponent, 3145 selectors: [["datatable-body-cell"]], 3146 viewQuery: function DataTableBodyCellComponent_Query(rf, ctx) { 3147 if (rf & 1) { 3148 \u0275\u0275viewQuery(_c1, 7, ViewContainerRef); 3149 } 3150 if (rf & 2) { 3151 let _t; 3152 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.cellTemplate = _t.first); 3153 } 3154 }, 3155 hostVars: 10, 3156 hostBindings: function DataTableBodyCellComponent_HostBindings(rf, ctx) { 3157 if (rf & 1) { 3158 \u0275\u0275listener("focus", function DataTableBodyCellComponent_focus_HostBindingHandler() { 3159 return ctx.onFocus(); 3160 })("blur", function DataTableBodyCellComponent_blur_HostBindingHandler() { 3161 return ctx.onBlur(); 3162 })("click", function DataTableBodyCellComponent_click_HostBindingHandler($event) { 3163 return ctx.onClick($event); 3164 })("dblclick", function DataTableBodyCellComponent_dblclick_HostBindingHandler($event) { 3165 return ctx.onDblClick($event); 3166 })("keydown", function DataTableBodyCellComponent_keydown_HostBindingHandler($event) { 3167 return ctx.onKeyDown($event); 3168 }); 3169 } 3170 if (rf & 2) { 3171 \u0275\u0275classMap(ctx.columnCssClasses); 3172 \u0275\u0275styleProp("width", ctx.width, "px")("min-width", ctx.minWidth, "px")("max-width", ctx.maxWidth, "px")("height", ctx.height); 3173 } 3174 }, 3175 inputs: { 3176 displayCheck: "displayCheck", 3177 group: "group", 3178 rowHeight: "rowHeight", 3179 isSelected: "isSelected", 3180 expanded: "expanded", 3181 rowIndex: "rowIndex", 3182 column: "column", 3183 row: "row", 3184 sorts: "sorts", 3185 treeStatus: "treeStatus" 3186 }, 3187 outputs: { 3188 activate: "activate", 3189 treeAction: "treeAction" 3190 }, 3191 decls: 5, 3192 vars: 6, 3193 consts: [["cellTemplate", ""], [1, "datatable-body-cell-label"], ["class", "datatable-checkbox", 4, "ngIf"], [4, "ngIf"], [3, "title", "innerHTML", 4, "ngIf"], [1, "datatable-checkbox"], ["type", "checkbox", 3, "click", "checked"], ["class", "datatable-tree-button", 3, "disabled", "click", 4, "ngIf"], [1, "datatable-tree-button", 3, "click", "disabled"], ["class", "icon datatable-icon-collapse", 4, "ngIf"], ["class", "icon datatable-icon-up", 4, "ngIf"], ["class", "icon datatable-icon-down", 4, "ngIf"], [1, "icon", "datatable-icon-collapse"], [1, "icon", "datatable-icon-up"], [1, "icon", "datatable-icon-down"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [3, "title", "innerHTML"]], 3194 template: function DataTableBodyCellComponent_Template(rf, ctx) { 3195 if (rf & 1) { 3196 \u0275\u0275elementStart(0, "div", 1); 3197 \u0275\u0275template(1, DataTableBodyCellComponent_label_1_Template, 2, 1, "label", 2)(2, DataTableBodyCellComponent_ng_container_2_Template, 3, 2, "ng-container", 3)(3, DataTableBodyCellComponent_span_3_Template, 1, 2, "span", 4)(4, DataTableBodyCellComponent_4_Template, 2, 2, null, 3); 3198 \u0275\u0275elementEnd(); 3199 } 3200 if (rf & 2) { 3201 \u0275\u0275styleProp("margin-left", ctx.calcLeftMargin(ctx.column, ctx.row), "px"); 3202 \u0275\u0275advance(); 3203 \u0275\u0275property("ngIf", ctx.column.checkboxable && (!ctx.displayCheck || ctx.displayCheck(ctx.row, ctx.column, ctx.value))); 3204 \u0275\u0275advance(); 3205 \u0275\u0275property("ngIf", ctx.column.isTreeColumn); 3206 \u0275\u0275advance(); 3207 \u0275\u0275property("ngIf", !ctx.column.cellTemplate); 3208 \u0275\u0275advance(); 3209 \u0275\u0275property("ngIf", ctx.column.cellTemplate); 3210 } 3211 }, 3212 dependencies: [NgIf, NgTemplateOutlet], 3213 encapsulation: 2, 3214 changeDetection: 0 3215}); 3216(() => { 3217 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableBodyCellComponent, [{ 3218 type: Component, 3219 args: [{ 3220 selector: "datatable-body-cell", 3221 changeDetection: ChangeDetectionStrategy.OnPush, 3222 template: ` 3223 <div class="datatable-body-cell-label" [style.margin-left.px]="calcLeftMargin(column, row)"> 3224 <label 3225 *ngIf="column.checkboxable && (!displayCheck || displayCheck(row, column, value))" 3226 class="datatable-checkbox" 3227 > 3228 <input type="checkbox" [checked]="isSelected" (click)="onCheckboxChange($event)" /> 3229 </label> 3230 <ng-container *ngIf="column.isTreeColumn"> 3231 <button 3232 *ngIf="!column.treeToggleTemplate" 3233 class="datatable-tree-button" 3234 [disabled]="treeStatus === 'disabled'" 3235 (click)="onTreeAction()" 3236 > 3237 <span> 3238 <i *ngIf="treeStatus === 'loading'" class="icon datatable-icon-collapse"></i> 3239 <i *ngIf="treeStatus === 'collapsed'" class="icon datatable-icon-up"></i> 3240 <i *ngIf="treeStatus === 'expanded' || treeStatus === 'disabled'" class="icon datatable-icon-down"></i> 3241 </span> 3242 </button> 3243 <ng-template 3244 *ngIf="column.treeToggleTemplate" 3245 [ngTemplateOutlet]="column.treeToggleTemplate" 3246 [ngTemplateOutletContext]="{ cellContext: cellContext }" 3247 > 3248 </ng-template> 3249 </ng-container> 3250 3251 <span *ngIf="!column.cellTemplate" [title]="sanitizedValue" [innerHTML]="value"> </span> 3252 <ng-template 3253 #cellTemplate 3254 *ngIf="column.cellTemplate" 3255 [ngTemplateOutlet]="column.cellTemplate" 3256 [ngTemplateOutletContext]="cellContext" 3257 > 3258 </ng-template> 3259 </div> 3260 ` 3261 }] 3262 }], function() { 3263 return [{ 3264 type: ElementRef 3265 }, { 3266 type: ChangeDetectorRef 3267 }]; 3268 }, { 3269 displayCheck: [{ 3270 type: Input 3271 }], 3272 group: [{ 3273 type: Input 3274 }], 3275 rowHeight: [{ 3276 type: Input 3277 }], 3278 isSelected: [{ 3279 type: Input 3280 }], 3281 expanded: [{ 3282 type: Input 3283 }], 3284 rowIndex: [{ 3285 type: Input 3286 }], 3287 column: [{ 3288 type: Input 3289 }], 3290 row: [{ 3291 type: Input 3292 }], 3293 sorts: [{ 3294 type: Input 3295 }], 3296 treeStatus: [{ 3297 type: Input 3298 }], 3299 activate: [{ 3300 type: Output 3301 }], 3302 treeAction: [{ 3303 type: Output 3304 }], 3305 cellTemplate: [{ 3306 type: ViewChild, 3307 args: ["cellTemplate", { 3308 read: ViewContainerRef, 3309 static: true 3310 }] 3311 }], 3312 columnCssClasses: [{ 3313 type: HostBinding, 3314 args: ["class"] 3315 }], 3316 width: [{ 3317 type: HostBinding, 3318 args: ["style.width.px"] 3319 }], 3320 minWidth: [{ 3321 type: HostBinding, 3322 args: ["style.minWidth.px"] 3323 }], 3324 maxWidth: [{ 3325 type: HostBinding, 3326 args: ["style.maxWidth.px"] 3327 }], 3328 height: [{ 3329 type: HostBinding, 3330 args: ["style.height"] 3331 }], 3332 onFocus: [{ 3333 type: HostListener, 3334 args: ["focus"] 3335 }], 3336 onBlur: [{ 3337 type: HostListener, 3338 args: ["blur"] 3339 }], 3340 onClick: [{ 3341 type: HostListener, 3342 args: ["click", ["$event"]] 3343 }], 3344 onDblClick: [{ 3345 type: HostListener, 3346 args: ["dblclick", ["$event"]] 3347 }], 3348 onKeyDown: [{ 3349 type: HostListener, 3350 args: ["keydown", ["$event"]] 3351 }] 3352 }); 3353})(); 3354var DataTableBodyRowComponent = class { 3355 constructor(differs, scrollbarHelper, cd, element) { 3356 this.differs = differs; 3357 this.scrollbarHelper = scrollbarHelper; 3358 this.cd = cd; 3359 this.treeStatus = "collapsed"; 3360 this.activate = new EventEmitter(); 3361 this.treeAction = new EventEmitter(); 3362 this._groupStyles = { 3363 left: {}, 3364 center: {}, 3365 right: {} 3366 }; 3367 this._element = element.nativeElement; 3368 this._rowDiffer = differs.find({}).create(); 3369 } 3370 set columns(val) { 3371 this._columns = val; 3372 this.recalculateColumns(val); 3373 this.buildStylesByGroup(); 3374 } 3375 get columns() { 3376 return this._columns; 3377 } 3378 set innerWidth(val) { 3379 if (this._columns) { 3380 const colByPin = columnsByPin(this._columns); 3381 this._columnGroupWidths = columnGroupWidths(colByPin, this._columns); 3382 } 3383 this._innerWidth = val; 3384 this.recalculateColumns(); 3385 this.buildStylesByGroup(); 3386 } 3387 get innerWidth() { 3388 return this._innerWidth; 3389 } 3390 set offsetX(val) { 3391 this._offsetX = val; 3392 this.buildStylesByGroup(); 3393 } 3394 get offsetX() { 3395 return this._offsetX; 3396 } 3397 get cssClass() { 3398 let cls = "datatable-body-row"; 3399 if (this.isSelected) { 3400 cls += " active"; 3401 } 3402 if (this.rowIndex % 2 !== 0) { 3403 cls += " datatable-row-odd"; 3404 } 3405 if (this.rowIndex % 2 === 0) { 3406 cls += " datatable-row-even"; 3407 } 3408 if (this.rowClass) { 3409 const res = this.rowClass(this.row); 3410 if (typeof res === "string") { 3411 cls += ` ${res}`; 3412 } else if (typeof res === "object") { 3413 const keys = Object.keys(res); 3414 for (const k of keys) { 3415 if (res[k] === true) { 3416 cls += ` ${k}`; 3417 } 3418 } 3419 } 3420 } 3421 return cls; 3422 } 3423 get columnsTotalWidths() { 3424 return this._columnGroupWidths.total; 3425 } 3426 ngDoCheck() { 3427 if (this._rowDiffer.diff(this.row)) { 3428 this.cd.markForCheck(); 3429 } 3430 } 3431 trackByGroups(index, colGroup) { 3432 return colGroup.type; 3433 } 3434 columnTrackingFn(index, column) { 3435 return column.$$id; 3436 } 3437 buildStylesByGroup() { 3438 this._groupStyles.left = this.calcStylesByGroup("left"); 3439 this._groupStyles.center = this.calcStylesByGroup("center"); 3440 this._groupStyles.right = this.calcStylesByGroup("right"); 3441 this.cd.markForCheck(); 3442 } 3443 calcStylesByGroup(group) { 3444 const widths = this._columnGroupWidths; 3445 const offsetX = this.offsetX; 3446 const styles = { 3447 width: `${widths[group]}px` 3448 }; 3449 if (group === "left") { 3450 translateXY(styles, offsetX, 0); 3451 } else if (group === "right") { 3452 const bodyWidth = parseInt(this.innerWidth + "", 0); 3453 const totalDiff = widths.total - bodyWidth; 3454 const offsetDiff = totalDiff - offsetX; 3455 const offset = (offsetDiff + this.scrollbarHelper.width) * -1; 3456 translateXY(styles, offset, 0); 3457 } 3458 return styles; 3459 } 3460 onActivate(event, index) { 3461 event.cellIndex = index; 3462 event.rowElement = this._element; 3463 this.activate.emit(event); 3464 } 3465 onKeyDown(event) { 3466 const keyCode = event.keyCode; 3467 const isTargetRow = event.target === this._element; 3468 const isAction = keyCode === Keys.return || keyCode === Keys.down || keyCode === Keys.up || keyCode === Keys.left || keyCode === Keys.right; 3469 if (isAction && isTargetRow) { 3470 event.preventDefault(); 3471 event.stopPropagation(); 3472 this.activate.emit({ 3473 type: "keydown", 3474 event, 3475 row: this.row, 3476 rowElement: this._element 3477 }); 3478 } 3479 } 3480 onMouseenter(event) { 3481 this.activate.emit({ 3482 type: "mouseenter", 3483 event, 3484 row: this.row, 3485 rowElement: this._element 3486 }); 3487 } 3488 recalculateColumns(val = this.columns) { 3489 this._columns = val; 3490 const colsByPin = columnsByPin(this._columns); 3491 this._columnsByPin = columnsByPinArr(this._columns); 3492 this._columnGroupWidths = columnGroupWidths(colsByPin, this._columns); 3493 } 3494 onTreeAction() { 3495 this.treeAction.emit(); 3496 } 3497}; 3498DataTableBodyRowComponent.\u0275fac = function DataTableBodyRowComponent_Factory(__ngFactoryType__) { 3499 return new (__ngFactoryType__ || DataTableBodyRowComponent)(\u0275\u0275directiveInject(KeyValueDiffers), \u0275\u0275directiveInject(ScrollbarHelper, 4), \u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(ElementRef)); 3500}; 3501DataTableBodyRowComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 3502 type: DataTableBodyRowComponent, 3503 selectors: [["datatable-body-row"]], 3504 hostVars: 6, 3505 hostBindings: function DataTableBodyRowComponent_HostBindings(rf, ctx) { 3506 if (rf & 1) { 3507 \u0275\u0275listener("keydown", function DataTableBodyRowComponent_keydown_HostBindingHandler($event) { 3508 return ctx.onKeyDown($event); 3509 })("mouseenter", function DataTableBodyRowComponent_mouseenter_HostBindingHandler($event) { 3510 return ctx.onMouseenter($event); 3511 }); 3512 } 3513 if (rf & 2) { 3514 \u0275\u0275classMap(ctx.cssClass); 3515 \u0275\u0275styleProp("height", ctx.rowHeight, "px")("width", ctx.columnsTotalWidths, "px"); 3516 } 3517 }, 3518 inputs: { 3519 columns: "columns", 3520 innerWidth: "innerWidth", 3521 expanded: "expanded", 3522 rowClass: "rowClass", 3523 row: "row", 3524 group: "group", 3525 isSelected: "isSelected", 3526 rowIndex: "rowIndex", 3527 displayCheck: "displayCheck", 3528 treeStatus: "treeStatus", 3529 offsetX: "offsetX", 3530 rowHeight: "rowHeight" 3531 }, 3532 outputs: { 3533 activate: "activate", 3534 treeAction: "treeAction" 3535 }, 3536 decls: 1, 3537 vars: 2, 3538 consts: [[3, "class", "ngStyle", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "ngStyle"], ["role", "cell", "tabindex", "-1", 3, "row", "group", "expanded", "isSelected", "rowIndex", "column", "rowHeight", "displayCheck", "treeStatus", "activate", "treeAction", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["role", "cell", "tabindex", "-1", 3, "activate", "treeAction", "row", "group", "expanded", "isSelected", "rowIndex", "column", "rowHeight", "displayCheck", "treeStatus"]], 3539 template: function DataTableBodyRowComponent_Template(rf, ctx) { 3540 if (rf & 1) { 3541 \u0275\u0275template(0, DataTableBodyRowComponent_div_0_Template, 2, 6, "div", 0); 3542 } 3543 if (rf & 2) { 3544 \u0275\u0275property("ngForOf", ctx._columnsByPin)("ngForTrackBy", ctx.trackByGroups); 3545 } 3546 }, 3547 dependencies: [DataTableBodyCellComponent, NgForOf, NgStyle], 3548 encapsulation: 2, 3549 changeDetection: 0 3550}); 3551(() => { 3552 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableBodyRowComponent, [{ 3553 type: Component, 3554 args: [{ 3555 selector: "datatable-body-row", 3556 changeDetection: ChangeDetectionStrategy.OnPush, 3557 template: ` 3558 <div 3559 *ngFor="let colGroup of _columnsByPin; let i = index; trackBy: trackByGroups" 3560 class="datatable-row-{{ colGroup.type }} datatable-row-group" 3561 [ngStyle]="_groupStyles[colGroup.type]" 3562 > 3563 <datatable-body-cell 3564 role="cell" 3565 *ngFor="let column of colGroup.columns; let ii = index; trackBy: columnTrackingFn" 3566 tabindex="-1" 3567 [row]="row" 3568 [group]="group" 3569 [expanded]="expanded" 3570 [isSelected]="isSelected" 3571 [rowIndex]="rowIndex" 3572 [column]="column" 3573 [rowHeight]="rowHeight" 3574 [displayCheck]="displayCheck" 3575 [treeStatus]="treeStatus" 3576 (activate)="onActivate($event, ii)" 3577 (treeAction)="onTreeAction()" 3578 > 3579 </datatable-body-cell> 3580 </div> 3581 ` 3582 }] 3583 }], function() { 3584 return [{ 3585 type: KeyValueDiffers 3586 }, { 3587 type: ScrollbarHelper, 3588 decorators: [{ 3589 type: SkipSelf 3590 }] 3591 }, { 3592 type: ChangeDetectorRef 3593 }, { 3594 type: ElementRef 3595 }]; 3596 }, { 3597 columns: [{ 3598 type: Input 3599 }], 3600 innerWidth: [{ 3601 type: Input 3602 }], 3603 expanded: [{ 3604 type: Input 3605 }], 3606 rowClass: [{ 3607 type: Input 3608 }], 3609 row: [{ 3610 type: Input 3611 }], 3612 group: [{ 3613 type: Input 3614 }], 3615 isSelected: [{ 3616 type: Input 3617 }], 3618 rowIndex: [{ 3619 type: Input 3620 }], 3621 displayCheck: [{ 3622 type: Input 3623 }], 3624 treeStatus: [{ 3625 type: Input 3626 }], 3627 offsetX: [{ 3628 type: Input 3629 }], 3630 cssClass: [{ 3631 type: HostBinding, 3632 args: ["class"] 3633 }], 3634 rowHeight: [{ 3635 type: HostBinding, 3636 args: ["style.height.px"] 3637 }, { 3638 type: Input 3639 }], 3640 columnsTotalWidths: [{ 3641 type: HostBinding, 3642 args: ["style.width.px"] 3643 }], 3644 activate: [{ 3645 type: Output 3646 }], 3647 treeAction: [{ 3648 type: Output 3649 }], 3650 onKeyDown: [{ 3651 type: HostListener, 3652 args: ["keydown", ["$event"]] 3653 }], 3654 onMouseenter: [{ 3655 type: HostListener, 3656 args: ["mouseenter", ["$event"]] 3657 }] 3658 }); 3659})(); 3660function defaultSumFunc(cells) { 3661 const cellsWithValues = cells.filter((cell) => !!cell); 3662 if (!cellsWithValues.length) { 3663 return null; 3664 } 3665 if (cellsWithValues.some((cell) => typeof cell !== "number")) { 3666 return null; 3667 } 3668 return cellsWithValues.reduce((res, cell) => res + cell); 3669} 3670function noopSumFunc(cells) { 3671 return null; 3672} 3673var DataTableSummaryRowComponent = class { 3674 constructor() { 3675 this.summaryRow = {}; 3676 } 3677 ngOnChanges() { 3678 if (!this.columns || !this.rows) { 3679 return; 3680 } 3681 this.updateInternalColumns(); 3682 this.updateValues(); 3683 } 3684 updateInternalColumns() { 3685 this._internalColumns = this.columns.map((col) => __spreadProps(__spreadValues({}, col), { 3686 cellTemplate: col.summaryTemplate 3687 })); 3688 } 3689 updateValues() { 3690 this.summaryRow = {}; 3691 this.columns.filter((col) => !col.summaryTemplate).forEach((col) => { 3692 const cellsFromSingleColumn = this.rows.map((row) => row[col.prop]); 3693 const sumFunc = this.getSummaryFunction(col); 3694 this.summaryRow[col.prop] = col.pipe ? col.pipe.transform(sumFunc(cellsFromSingleColumn)) : sumFunc(cellsFromSingleColumn); 3695 }); 3696 } 3697 getSummaryFunction(column) { 3698 if (column.summaryFunc === void 0) { 3699 return defaultSumFunc; 3700 } else if (column.summaryFunc === null) { 3701 return noopSumFunc; 3702 } else { 3703 return column.summaryFunc; 3704 } 3705 } 3706}; 3707DataTableSummaryRowComponent.\u0275fac = function DataTableSummaryRowComponent_Factory(__ngFactoryType__) { 3708 return new (__ngFactoryType__ || DataTableSummaryRowComponent)(); 3709}; 3710DataTableSummaryRowComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 3711 type: DataTableSummaryRowComponent, 3712 selectors: [["datatable-summary-row"]], 3713 hostAttrs: [1, "datatable-summary-row"], 3714 inputs: { 3715 rows: "rows", 3716 columns: "columns", 3717 rowHeight: "rowHeight", 3718 offsetX: "offsetX", 3719 innerWidth: "innerWidth" 3720 }, 3721 features: [\u0275\u0275NgOnChangesFeature], 3722 decls: 1, 3723 vars: 1, 3724 consts: [["tabindex", "-1", 3, "innerWidth", "offsetX", "columns", "rowHeight", "row", "rowIndex", 4, "ngIf"], ["tabindex", "-1", 3, "innerWidth", "offsetX", "columns", "rowHeight", "row", "rowIndex"]], 3725 template: function DataTableSummaryRowComponent_Template(rf, ctx) { 3726 if (rf & 1) { 3727 \u0275\u0275template(0, DataTableSummaryRowComponent_datatable_body_row_0_Template, 1, 6, "datatable-body-row", 0); 3728 } 3729 if (rf & 2) { 3730 \u0275\u0275property("ngIf", ctx.summaryRow && ctx._internalColumns); 3731 } 3732 }, 3733 dependencies: [DataTableBodyRowComponent, NgIf], 3734 encapsulation: 2 3735}); 3736(() => { 3737 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableSummaryRowComponent, [{ 3738 type: Component, 3739 args: [{ 3740 selector: "datatable-summary-row", 3741 template: ` 3742 <datatable-body-row 3743 *ngIf="summaryRow && _internalColumns" 3744 tabindex="-1" 3745 [innerWidth]="innerWidth" 3746 [offsetX]="offsetX" 3747 [columns]="_internalColumns" 3748 [rowHeight]="rowHeight" 3749 [row]="summaryRow" 3750 [rowIndex]="-1" 3751 > 3752 </datatable-body-row> 3753 `, 3754 host: { 3755 class: "datatable-summary-row" 3756 } 3757 }] 3758 }], null, { 3759 rows: [{ 3760 type: Input 3761 }], 3762 columns: [{ 3763 type: Input 3764 }], 3765 rowHeight: [{ 3766 type: Input 3767 }], 3768 offsetX: [{ 3769 type: Input 3770 }], 3771 innerWidth: [{ 3772 type: Input 3773 }] 3774 }); 3775})(); 3776var DataTableRowWrapperComponent = class { 3777 constructor(cd, differs) { 3778 this.cd = cd; 3779 this.differs = differs; 3780 this.rowContextmenu = new EventEmitter(false); 3781 this._expanded = false; 3782 this.groupContext = { 3783 group: this.row, 3784 expanded: this.expanded, 3785 rowIndex: this.rowIndex 3786 }; 3787 this.rowContext = { 3788 row: this.row, 3789 expanded: this.expanded, 3790 rowIndex: this.rowIndex 3791 }; 3792 this.rowDiffer = differs.find({}).create(); 3793 } 3794 set rowIndex(val) { 3795 this._rowIndex = val; 3796 this.rowContext.rowIndex = val; 3797 this.groupContext.rowIndex = val; 3798 this.cd.markForCheck(); 3799 } 3800 get rowIndex() { 3801 return this._rowIndex; 3802 } 3803 set expanded(val) { 3804 this._expanded = val; 3805 this.groupContext.expanded = val; 3806 this.rowContext.expanded = val; 3807 this.cd.markForCheck(); 3808 } 3809 get expanded() { 3810 return this._expanded; 3811 } 3812 ngDoCheck() { 3813 if (this.rowDiffer.diff(this.row)) { 3814 this.rowContext.row = this.row; 3815 this.groupContext.group = this.row; 3816 this.cd.markForCheck(); 3817 } 3818 } 3819 onContextmenu($event) { 3820 this.rowContextmenu.emit({ 3821 event: $event, 3822 row: this.row 3823 }); 3824 } 3825 getGroupHeaderStyle() { 3826 const styles = {}; 3827 styles["transform"] = "translate3d(" + this.offsetX + "px, 0px, 0px)"; 3828 styles["backface-visibility"] = "hidden"; 3829 styles["width"] = this.innerWidth; 3830 return styles; 3831 } 3832}; 3833DataTableRowWrapperComponent.\u0275fac = function DataTableRowWrapperComponent_Factory(__ngFactoryType__) { 3834 return new (__ngFactoryType__ || DataTableRowWrapperComponent)(\u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(KeyValueDiffers)); 3835}; 3836DataTableRowWrapperComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 3837 type: DataTableRowWrapperComponent, 3838 selectors: [["datatable-row-wrapper"]], 3839 hostAttrs: [1, "datatable-row-wrapper"], 3840 hostBindings: function DataTableRowWrapperComponent_HostBindings(rf, ctx) { 3841 if (rf & 1) { 3842 \u0275\u0275listener("contextmenu", function DataTableRowWrapperComponent_contextmenu_HostBindingHandler($event) { 3843 return ctx.onContextmenu($event); 3844 }); 3845 } 3846 }, 3847 inputs: { 3848 innerWidth: "innerWidth", 3849 rowDetail: "rowDetail", 3850 groupHeader: "groupHeader", 3851 offsetX: "offsetX", 3852 detailRowHeight: "detailRowHeight", 3853 row: "row", 3854 groupedRows: "groupedRows", 3855 rowIndex: "rowIndex", 3856 expanded: "expanded" 3857 }, 3858 outputs: { 3859 rowContextmenu: "rowContextmenu" 3860 }, 3861 ngContentSelectors: _c0, 3862 decls: 3, 3863 vars: 3, 3864 consts: [["class", "datatable-group-header", 3, "ngStyle", 4, "ngIf"], [4, "ngIf"], ["class", "datatable-row-detail", 3, "height", 4, "ngIf"], [1, "datatable-group-header", 3, "ngStyle"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "datatable-row-detail"]], 3865 template: function DataTableRowWrapperComponent_Template(rf, ctx) { 3866 if (rf & 1) { 3867 \u0275\u0275projectionDef(); 3868 \u0275\u0275template(0, DataTableRowWrapperComponent_div_0_Template, 2, 2, "div", 0)(1, DataTableRowWrapperComponent_ng_content_1_Template, 1, 0, "ng-content", 1)(2, DataTableRowWrapperComponent_div_2_Template, 2, 3, "div", 2); 3869 } 3870 if (rf & 2) { 3871 \u0275\u0275property("ngIf", ctx.groupHeader && ctx.groupHeader.template); 3872 \u0275\u0275advance(); 3873 \u0275\u0275property("ngIf", ctx.groupHeader && ctx.groupHeader.template && ctx.expanded || !ctx.groupHeader || !ctx.groupHeader.template); 3874 \u0275\u0275advance(); 3875 \u0275\u0275property("ngIf", ctx.rowDetail && ctx.rowDetail.template && ctx.expanded); 3876 } 3877 }, 3878 dependencies: [NgIf, NgStyle, NgTemplateOutlet], 3879 encapsulation: 2, 3880 changeDetection: 0 3881}); 3882(() => { 3883 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableRowWrapperComponent, [{ 3884 type: Component, 3885 args: [{ 3886 selector: "datatable-row-wrapper", 3887 changeDetection: ChangeDetectionStrategy.OnPush, 3888 template: ` 3889 <div *ngIf="groupHeader && groupHeader.template" class="datatable-group-header" [ngStyle]="getGroupHeaderStyle()"> 3890 <ng-template 3891 *ngIf="groupHeader && groupHeader.template" 3892 [ngTemplateOutlet]="groupHeader.template" 3893 [ngTemplateOutletContext]="groupContext" 3894 > 3895 </ng-template> 3896 </div> 3897 <ng-content *ngIf="(groupHeader && groupHeader.template && expanded) || !groupHeader || !groupHeader.template"> 3898 </ng-content> 3899 <div 3900 *ngIf="rowDetail && rowDetail.template && expanded" 3901 [style.height.px]="detailRowHeight" 3902 class="datatable-row-detail" 3903 > 3904 <ng-template 3905 *ngIf="rowDetail && rowDetail.template" 3906 [ngTemplateOutlet]="rowDetail.template" 3907 [ngTemplateOutletContext]="rowContext" 3908 > 3909 </ng-template> 3910 </div> 3911 `, 3912 host: { 3913 class: "datatable-row-wrapper" 3914 } 3915 }] 3916 }], function() { 3917 return [{ 3918 type: ChangeDetectorRef 3919 }, { 3920 type: KeyValueDiffers 3921 }]; 3922 }, { 3923 innerWidth: [{ 3924 type: Input 3925 }], 3926 rowDetail: [{ 3927 type: Input 3928 }], 3929 groupHeader: [{ 3930 type: Input 3931 }], 3932 offsetX: [{ 3933 type: Input 3934 }], 3935 detailRowHeight: [{ 3936 type: Input 3937 }], 3938 row: [{ 3939 type: Input 3940 }], 3941 groupedRows: [{ 3942 type: Input 3943 }], 3944 rowContextmenu: [{ 3945 type: Output 3946 }], 3947 rowIndex: [{ 3948 type: Input 3949 }], 3950 expanded: [{ 3951 type: Input 3952 }], 3953 onContextmenu: [{ 3954 type: HostListener, 3955 args: ["contextmenu", ["$event"]] 3956 }] 3957 }); 3958})(); 3959var DataTableBodyComponent = class { 3960 /** 3961 * Creates an instance of DataTableBodyComponent. 3962 */ 3963 constructor(cd) { 3964 this.cd = cd; 3965 this.selected = []; 3966 this.scroll = new EventEmitter(); 3967 this.page = new EventEmitter(); 3968 this.activate = new EventEmitter(); 3969 this.select = new EventEmitter(); 3970 this.detailToggle = new EventEmitter(); 3971 this.rowContextmenu = new EventEmitter(false); 3972 this.treeAction = new EventEmitter(); 3973 this.rowHeightsCache = new RowHeightCache(); 3974 this.temp = []; 3975 this.offsetY = 0; 3976 this.indexes = {}; 3977 this.rowIndexes = /* @__PURE__ */ new WeakMap(); 3978 this.rowExpansions = []; 3979 this.getDetailRowHeight = (row, index) => { 3980 if (!this.rowDetail) { 3981 return 0; 3982 } 3983 const rowHeight = this.rowDetail.rowHeight; 3984 return typeof rowHeight === "function" ? rowHeight(row, index) : rowHeight; 3985 }; 3986 this.rowTrackingFn = (index, row) => { 3987 const idx = this.getRowIndex(row); 3988 if (this.trackByProp) { 3989 return row[this.trackByProp]; 3990 } else { 3991 return idx; 3992 } 3993 }; 3994 } 3995 set pageSize(val) { 3996 this._pageSize = val; 3997 this.recalcLayout(); 3998 } 3999 get pageSize() { 4000 return this._pageSize; 4001 } 4002 set rows(val) { 4003 this._rows = val; 4004 this.recalcLayout(); 4005 } 4006 get rows() { 4007 return this._rows; 4008 } 4009 set columns(val) { 4010 this._columns = val; 4011 const colsByPin = columnsByPin(val); 4012 this.columnGroupWidths = columnGroupWidths(colsByPin, val); 4013 } 4014 get columns() { 4015 return this._columns; 4016 } 4017 set offset(val) { 4018 this._offset = val; 4019 if (!this.scrollbarV || this.scrollbarV && !this.virtualization) this.recalcLayout(); 4020 } 4021 get offset() { 4022 return this._offset; 4023 } 4024 set rowCount(val) { 4025 this._rowCount = val; 4026 this.recalcLayout(); 4027 } 4028 get rowCount() { 4029 return this._rowCount; 4030 } 4031 get bodyWidth() { 4032 if (this.scrollbarH) { 4033 return this.innerWidth + "px"; 4034 } else { 4035 return "100%"; 4036 } 4037 } 4038 set bodyHeight(val) { 4039 if (this.scrollbarV) { 4040 this._bodyHeight = val + "px"; 4041 } else { 4042 this._bodyHeight = "auto"; 4043 } 4044 this.recalcLayout(); 4045 } 4046 get bodyHeight() { 4047 return this._bodyHeight; 4048 } 4049 /** 4050 * Returns if selection is enabled. 4051 */ 4052 get selectEnabled() { 4053 return !!this.selectionType; 4054 } 4055 /** 4056 * Property that would calculate the height of scroll bar 4057 * based on the row heights cache for virtual scroll and virtualization. Other scenarios 4058 * calculate scroll height automatically (as height will be undefined). 4059 */ 4060 get scrollHeight() { 4061 if (this.scrollbarV && this.virtualization && this.rowCount) { 4062 return this.rowHeightsCache.query(this.rowCount - 1); 4063 } 4064 return void 0; 4065 } 4066 /** 4067 * Called after the constructor, initializing input properties 4068 */ 4069 ngOnInit() { 4070 if (this.rowDetail) { 4071 this.listener = this.rowDetail.toggle.subscribe(({ 4072 type, 4073 value 4074 }) => { 4075 if (type === "row") { 4076 this.toggleRowExpansion(value); 4077 } 4078 if (type === "all") { 4079 this.toggleAllRows(value); 4080 } 4081 this.updateIndexes(); 4082 this.updateRows(); 4083 this.cd.markForCheck(); 4084 }); 4085 } 4086 if (this.groupHeader) { 4087 this.listener = this.groupHeader.toggle.subscribe(({ 4088 type, 4089 value 4090 }) => { 4091 if (type === "group") { 4092 this.toggleRowExpansion(value); 4093 } 4094 if (type === "all") { 4095 this.toggleAllRows(value); 4096 } 4097 this.updateIndexes(); 4098 this.updateRows(); 4099 this.cd.markForCheck(); 4100 }); 4101 } 4102 } 4103 /** 4104 * Called once, before the instance is destroyed. 4105 */ 4106 ngOnDestroy() { 4107 if (this.rowDetail || this.groupHeader) { 4108 this.listener.unsubscribe(); 4109 } 4110 } 4111 /** 4112 * Updates the Y offset given a new offset. 4113 */ 4114 updateOffsetY(offset) { 4115 if (!this.scroller) { 4116 return; 4117 } 4118 if (this.scrollbarV && this.virtualization && offset) { 4119 const rowIndex = this.pageSize * offset; 4120 offset = this.rowHeightsCache.query(rowIndex - 1); 4121 } else if (this.scrollbarV && !this.virtualization) { 4122 offset = 0; 4123 } 4124 this.scroller.setOffset(offset || 0); 4125 } 4126 /** 4127 * Body was scrolled, this is mainly useful for 4128 * when a user is server-side pagination via virtual scroll. 4129 */ 4130 onBodyScroll(event) { 4131 const scrollYPos = event.scrollYPos; 4132 const scrollXPos = event.scrollXPos; 4133 if (this.offsetY !== scrollYPos || this.offsetX !== scrollXPos) { 4134 this.scroll.emit({ 4135 offsetY: scrollYPos, 4136 offsetX: scrollXPos 4137 }); 4138 } 4139 this.offsetY = scrollYPos; 4140 this.offsetX = scrollXPos; 4141 this.updateIndexes(); 4142 this.updatePage(event.direction); 4143 this.updateRows(); 4144 } 4145 /** 4146 * Updates the page given a direction. 4147 */ 4148 updatePage(direction) { 4149 let offset = this.indexes.first / this.pageSize; 4150 if (direction === "up") { 4151 offset = Math.ceil(offset); 4152 } else if (direction === "down") { 4153 offset = Math.floor(offset); 4154 } 4155 if (direction !== void 0 && !isNaN(offset)) { 4156 this.page.emit({ 4157 offset 4158 }); 4159 } 4160 } 4161 /** 4162 * Updates the rows in the view port 4163 */ 4164 updateRows() { 4165 const { 4166 first, 4167 last 4168 } = this.indexes; 4169 let rowIndex = first; 4170 let idx = 0; 4171 const temp = []; 4172 if (this.groupedRows) { 4173 let maxRowsPerGroup = 3; 4174 if (this.groupedRows.length === 1) { 4175 maxRowsPerGroup = this.groupedRows[0].value.length; 4176 } 4177 while (rowIndex < last && rowIndex < this.groupedRows.length) { 4178 const group = this.groupedRows[rowIndex]; 4179 this.rowIndexes.set(group, rowIndex); 4180 if (group.value) { 4181 group.value.forEach((g, i) => { 4182 const _idx = `${rowIndex}-${i}`; 4183 this.rowIndexes.set(g, _idx); 4184 }); 4185 } 4186 temp[idx] = group; 4187 idx++; 4188 rowIndex++; 4189 } 4190 } else { 4191 while (rowIndex < last && rowIndex < this.rowCount) { 4192 const row = this.rows[rowIndex]; 4193 if (row) { 4194 this.rowIndexes.set(row, rowIndex); 4195 temp[idx] = row; 4196 } 4197 idx++; 4198 rowIndex++; 4199 } 4200 } 4201 this.temp = temp; 4202 } 4203 /** 4204 * Get the row height 4205 */ 4206 getRowHeight(row) { 4207 if (typeof this.rowHeight === "function") { 4208 return this.rowHeight(row); 4209 } 4210 return this.rowHeight; 4211 } 4212 /** 4213 * @param group the group with all rows 4214 */ 4215 getGroupHeight(group) { 4216 let rowHeight = 0; 4217 if (group.value) { 4218 for (let index = 0; index < group.value.length; index++) { 4219 rowHeight += this.getRowAndDetailHeight(group.value[index]); 4220 } 4221 } 4222 return rowHeight; 4223 } 4224 /** 4225 * Calculate row height based on the expanded state of the row. 4226 */ 4227 getRowAndDetailHeight(row) { 4228 let rowHeight = this.getRowHeight(row); 4229 const expanded = this.getRowExpanded(row); 4230 if (expanded) { 4231 rowHeight += this.getDetailRowHeight(row); 4232 } 4233 return rowHeight; 4234 } 4235 /** 4236 * Calculates the styles for the row so that the rows can be moved in 2D space 4237 * during virtual scroll inside the DOM. In the below case the Y position is 4238 * manipulated. As an example, if the height of row 0 is 30 px and row 1 is 4239 * 100 px then following styles are generated: 4240 * 4241 * transform: translate3d(0px, 0px, 0px); -> row0 4242 * transform: translate3d(0px, 30px, 0px); -> row1 4243 * transform: translate3d(0px, 130px, 0px); -> row2 4244 * 4245 * Row heights have to be calculated based on the row heights cache as we wont 4246 * be able to determine which row is of what height before hand. In the above 4247 * case the positionY of the translate3d for row2 would be the sum of all the 4248 * heights of the rows before it (i.e. row0 and row1). 4249 * 4250 * @param rows the row that needs to be placed in the 2D space. 4251 * @returns the CSS3 style to be applied 4252 * 4253 * @memberOf DataTableBodyComponent 4254 */ 4255 getRowsStyles(rows) { 4256 const styles = {}; 4257 if (this.groupedRows) { 4258 styles.width = this.columnGroupWidths.total; 4259 } 4260 if (this.scrollbarV && this.virtualization) { 4261 let idx = 0; 4262 if (this.groupedRows) { 4263 const row = rows[rows.length - 1]; 4264 idx = row ? this.getRowIndex(row) : 0; 4265 } else { 4266 idx = this.getRowIndex(rows); 4267 } 4268 const pos = this.rowHeightsCache.query(idx - 1); 4269 translateXY(styles, 0, pos); 4270 } 4271 return styles; 4272 } 4273 /** 4274 * Calculate bottom summary row offset for scrollbar mode. 4275 * For more information about cache and offset calculation 4276 * see description for `getRowsStyles` method 4277 * 4278 * @returns the CSS3 style to be applied 4279 * 4280 * @memberOf DataTableBodyComponent 4281 */ 4282 getBottomSummaryRowStyles() { 4283 if (!this.scrollbarV || !this.rows || !this.rows.length) { 4284 return null; 4285 } 4286 const styles = { 4287 position: "absolute" 4288 }; 4289 const pos = this.rowHeightsCache.query(this.rows.length - 1); 4290 translateXY(styles, 0, pos); 4291 return styles; 4292 } 4293 /** 4294 * Hides the loading indicator 4295 */ 4296 hideIndicator() { 4297 setTimeout(() => this.loadingIndicator = false, 500); 4298 } 4299 /** 4300 * Updates the index of the rows in the viewport 4301 */ 4302 updateIndexes() { 4303 let first = 0; 4304 let last = 0; 4305 if (this.scrollbarV) { 4306 if (this.virtualization) { 4307 const height = parseInt(this.bodyHeight, 0); 4308 first = this.rowHeightsCache.getRowIndex(this.offsetY); 4309 last = this.rowHeightsCache.getRowIndex(height + this.offsetY) + 1; 4310 } else { 4311 first = 0; 4312 last = this.rowCount; 4313 } 4314 } else { 4315 if (!this.externalPaging) { 4316 first = Math.max(this.offset * this.pageSize, 0); 4317 } 4318 last = Math.min(first + this.pageSize, this.rowCount); 4319 } 4320 this.indexes = { 4321 first, 4322 last 4323 }; 4324 } 4325 /** 4326 * Refreshes the full Row Height cache. Should be used 4327 * when the entire row array state has changed. 4328 */ 4329 refreshRowHeightCache() { 4330 if (!this.scrollbarV || this.scrollbarV && !this.virtualization) { 4331 return; 4332 } 4333 this.rowHeightsCache.clearCache(); 4334 if (this.rows && this.rows.length) { 4335 const rowExpansions = /* @__PURE__ */ new Set(); 4336 for (const row of this.rows) { 4337 if (this.getRowExpanded(row)) { 4338 rowExpansions.add(row); 4339 } 4340 } 4341 this.rowHeightsCache.initCache({ 4342 rows: this.rows, 4343 rowHeight: this.rowHeight, 4344 detailRowHeight: this.getDetailRowHeight, 4345 externalVirtual: this.scrollbarV && this.externalPaging, 4346 rowCount: this.rowCount, 4347 rowIndexes: this.rowIndexes, 4348 rowExpansions 4349 }); 4350 } 4351 } 4352 /** 4353 * Gets the index for the view port 4354 */ 4355 getAdjustedViewPortIndex() { 4356 const viewPortFirstRowIndex = this.indexes.first; 4357 if (this.scrollbarV && this.virtualization) { 4358 const offsetScroll = this.rowHeightsCache.query(viewPortFirstRowIndex - 1); 4359 return offsetScroll <= this.offsetY ? viewPortFirstRowIndex - 1 : viewPortFirstRowIndex; 4360 } 4361 return viewPortFirstRowIndex; 4362 } 4363 /** 4364 * Toggle the Expansion of the row i.e. if the row is expanded then it will 4365 * collapse and vice versa. Note that the expanded status is stored as 4366 * a part of the row object itself as we have to preserve the expanded row 4367 * status in case of sorting and filtering of the row set. 4368 */ 4369 toggleRowExpansion(row) { 4370 const viewPortFirstRowIndex = this.getAdjustedViewPortIndex(); 4371 const rowExpandedIdx = this.getRowExpandedIdx(row, this.rowExpansions); 4372 const expanded = rowExpandedIdx > -1; 4373 if (this.scrollbarV && this.virtualization) { 4374 const detailRowHeight = this.getDetailRowHeight(row) * (expanded ? -1 : 1); 4375 const idx = this.getRowIndex(row); 4376 this.rowHeightsCache.update(idx, detailRowHeight); 4377 } 4378 if (expanded) { 4379 this.rowExpansions.splice(rowExpandedIdx, 1); 4380 } else { 4381 this.rowExpansions.push(row); 4382 } 4383 this.detailToggle.emit({ 4384 rows: [row], 4385 currentIndex: viewPortFirstRowIndex 4386 }); 4387 } 4388 /** 4389 * Expand/Collapse all the rows no matter what their state is. 4390 */ 4391 toggleAllRows(expanded) { 4392 this.rowExpansions = []; 4393 const viewPortFirstRowIndex = this.getAdjustedViewPortIndex(); 4394 if (expanded) { 4395 for (const row of this.rows) { 4396 this.rowExpansions.push(row); 4397 } 4398 } 4399 if (this.scrollbarV) { 4400 this.recalcLayout(); 4401 } 4402 this.detailToggle.emit({ 4403 rows: this.rows, 4404 currentIndex: viewPortFirstRowIndex 4405 }); 4406 } 4407 /** 4408 * Recalculates the table 4409 */ 4410 recalcLayout() { 4411 this.refreshRowHeightCache(); 4412 this.updateIndexes(); 4413 this.updateRows(); 4414 } 4415 /** 4416 * Tracks the column 4417 */ 4418 columnTrackingFn(index, column) { 4419 return column.$$id; 4420 } 4421 /** 4422 * Gets the row pinning group styles 4423 */ 4424 stylesByGroup(group) { 4425 const widths = this.columnGroupWidths; 4426 const offsetX = this.offsetX; 4427 const styles = { 4428 width: `${widths[group]}px` 4429 }; 4430 if (group === "left") { 4431 translateXY(styles, offsetX, 0); 4432 } else if (group === "right") { 4433 const bodyWidth = parseInt(this.innerWidth + "", 0); 4434 const totalDiff = widths.total - bodyWidth; 4435 const offsetDiff = totalDiff - offsetX; 4436 const offset = offsetDiff * -1; 4437 translateXY(styles, offset, 0); 4438 } 4439 return styles; 4440 } 4441 /** 4442 * Returns if the row was expanded and set default row expansion when row expansion is empty 4443 */ 4444 getRowExpanded(row) { 4445 if (this.rowExpansions.length === 0 && this.groupExpansionDefault) { 4446 for (const group of this.groupedRows) { 4447 this.rowExpansions.push(group); 4448 } 4449 } 4450 return this.getRowExpandedIdx(row, this.rowExpansions) > -1; 4451 } 4452 getRowExpandedIdx(row, expanded) { 4453 if (!expanded || !expanded.length) return -1; 4454 const rowId = this.rowIdentity(row); 4455 return expanded.findIndex((r) => { 4456 const id2 = this.rowIdentity(r); 4457 return id2 === rowId; 4458 }); 4459 } 4460 /** 4461 * Gets the row index given a row 4462 */ 4463 getRowIndex(row) { 4464 return this.rowIndexes.get(row) || 0; 4465 } 4466 onTreeAction(row) { 4467 this.treeAction.emit({ 4468 row 4469 }); 4470 } 4471}; 4472DataTableBodyComponent.\u0275fac = function DataTableBodyComponent_Factory(__ngFactoryType__) { 4473 return new (__ngFactoryType__ || DataTableBodyComponent)(\u0275\u0275directiveInject(ChangeDetectorRef)); 4474}; 4475DataTableBodyComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 4476 type: DataTableBodyComponent, 4477 selectors: [["datatable-body"]], 4478 viewQuery: function DataTableBodyComponent_Query(rf, ctx) { 4479 if (rf & 1) { 4480 \u0275\u0275viewQuery(ScrollerComponent, 5); 4481 } 4482 if (rf & 2) { 4483 let _t; 4484 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.scroller = _t.first); 4485 } 4486 }, 4487 hostAttrs: [1, "datatable-body"], 4488 hostVars: 4, 4489 hostBindings: function DataTableBodyComponent_HostBindings(rf, ctx) { 4490 if (rf & 2) { 4491 \u0275\u0275styleProp("width", ctx.bodyWidth)("height", ctx.bodyHeight); 4492 } 4493 }, 4494 inputs: { 4495 scrollbarV: "scrollbarV", 4496 scrollbarH: "scrollbarH", 4497 loadingIndicator: "loadingIndicator", 4498 externalPaging: "externalPaging", 4499 rowHeight: "rowHeight", 4500 offsetX: "offsetX", 4501 emptyMessage: "emptyMessage", 4502 selectionType: "selectionType", 4503 selected: "selected", 4504 rowIdentity: "rowIdentity", 4505 rowDetail: "rowDetail", 4506 groupHeader: "groupHeader", 4507 selectCheck: "selectCheck", 4508 displayCheck: "displayCheck", 4509 trackByProp: "trackByProp", 4510 rowClass: "rowClass", 4511 groupedRows: "groupedRows", 4512 groupExpansionDefault: "groupExpansionDefault", 4513 innerWidth: "innerWidth", 4514 groupRowsBy: "groupRowsBy", 4515 virtualization: "virtualization", 4516 summaryRow: "summaryRow", 4517 summaryPosition: "summaryPosition", 4518 summaryHeight: "summaryHeight", 4519 pageSize: "pageSize", 4520 rows: "rows", 4521 columns: "columns", 4522 offset: "offset", 4523 rowCount: "rowCount", 4524 bodyHeight: "bodyHeight" 4525 }, 4526 outputs: { 4527 scroll: "scroll", 4528 page: "page", 4529 activate: "activate", 4530 select: "select", 4531 detailToggle: "detailToggle", 4532 rowContextmenu: "rowContextmenu", 4533 treeAction: "treeAction" 4534 }, 4535 decls: 5, 4536 vars: 9, 4537 consts: [["selector", ""], ["groupedRowsTemplate", ""], [4, "ngIf"], [3, "select", "activate", "selected", "rows", "selectCheck", "selectEnabled", "selectionType", "rowIdentity"], [3, "scrollbarV", "scrollbarH", "scrollHeight", "scrollWidth", "scroll", 4, "ngIf"], ["class", "empty-row", 3, "innerHTML", 4, "ngIf"], [3, "scroll", "scrollbarV", "scrollbarH", "scrollHeight", "scrollWidth"], [3, "rowHeight", "offsetX", "innerWidth", "rows", "columns", 4, "ngIf"], [3, "groupedRows", "innerWidth", "ngStyle", "rowDetail", "groupHeader", "offsetX", "detailRowHeight", "row", "expanded", "rowIndex", "rowContextmenu", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["role", "row", 3, "ngStyle", "rowHeight", "offsetX", "innerWidth", "rows", "columns", 4, "ngIf"], [3, "rowHeight", "offsetX", "innerWidth", "rows", "columns"], [3, "rowContextmenu", "groupedRows", "innerWidth", "ngStyle", "rowDetail", "groupHeader", "offsetX", "detailRowHeight", "row", "expanded", "rowIndex"], ["role", "row", "tabindex", "-1", 3, "isSelected", "innerWidth", "offsetX", "columns", "rowHeight", "row", "rowIndex", "expanded", "rowClass", "displayCheck", "treeStatus", "treeAction", "activate", 4, "ngIf", "ngIfElse"], ["role", "row", "tabindex", "-1", 3, "treeAction", "activate", "isSelected", "innerWidth", "offsetX", "columns", "rowHeight", "row", "rowIndex", "expanded", "rowClass", "displayCheck", "treeStatus"], ["role", "row", "tabindex", "-1", 3, "isSelected", "innerWidth", "offsetX", "columns", "rowHeight", "row", "group", "rowIndex", "expanded", "rowClass", "activate", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["role", "row", "tabindex", "-1", 3, "activate", "isSelected", "innerWidth", "offsetX", "columns", "rowHeight", "row", "group", "rowIndex", "expanded", "rowClass"], ["role", "row", 3, "ngStyle", "rowHeight", "offsetX", "innerWidth", "rows", "columns"], [1, "empty-row", 3, "innerHTML"]], 4538 template: function DataTableBodyComponent_Template(rf, ctx) { 4539 if (rf & 1) { 4540 const _r1 = \u0275\u0275getCurrentView(); 4541 \u0275\u0275template(0, DataTableBodyComponent_datatable_progress_0_Template, 1, 0, "datatable-progress", 2); 4542 \u0275\u0275elementStart(1, "datatable-selection", 3, 0); 4543 \u0275\u0275listener("select", function DataTableBodyComponent_Template_datatable_selection_select_1_listener($event) { 4544 \u0275\u0275restoreView(_r1); 4545 return \u0275\u0275resetView(ctx.select.emit($event)); 4546 })("activate", function DataTableBodyComponent_Template_datatable_selection_activate_1_listener($event) { 4547 \u0275\u0275restoreView(_r1); 4548 return \u0275\u0275resetView(ctx.activate.emit($event)); 4549 }); 4550 \u0275\u0275template(3, DataTableBodyComponent_datatable_scroller_3_Template, 4, 8, "datatable-scroller", 4)(4, DataTableBodyComponent_div_4_Template, 1, 1, "div", 5); 4551 \u0275\u0275elementEnd(); 4552 } 4553 if (rf & 2) { 4554 \u0275\u0275property("ngIf", ctx.loadingIndicator); 4555 \u0275\u0275advance(); 4556 \u0275\u0275property("selected", ctx.selected)("rows", ctx.rows)("selectCheck", ctx.selectCheck)("selectEnabled", ctx.selectEnabled)("selectionType", ctx.selectionType)("rowIdentity", ctx.rowIdentity); 4557 \u0275\u0275advance(2); 4558 \u0275\u0275property("ngIf", ctx.rows == null ? null : ctx.rows.length); 4559 \u0275\u0275advance(); 4560 \u0275\u0275property("ngIf", !(ctx.rows == null ? null : ctx.rows.length) && !ctx.loadingIndicator); 4561 } 4562 }, 4563 dependencies: [ProgressBarComponent, DataTableSelectionComponent, ScrollerComponent, DataTableSummaryRowComponent, DataTableRowWrapperComponent, DataTableBodyRowComponent, NgIf, NgForOf, NgStyle], 4564 encapsulation: 2, 4565 changeDetection: 0 4566}); 4567(() => { 4568 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableBodyComponent, [{ 4569 type: Component, 4570 args: [{ 4571 selector: "datatable-body", 4572 template: ` 4573 <datatable-progress *ngIf="loadingIndicator"> </datatable-progress> 4574 <datatable-selection 4575 #selector 4576 [selected]="selected" 4577 [rows]="rows" 4578 [selectCheck]="selectCheck" 4579 [selectEnabled]="selectEnabled" 4580 [selectionType]="selectionType" 4581 [rowIdentity]="rowIdentity" 4582 (select)="select.emit($event)" 4583 (activate)="activate.emit($event)" 4584 > 4585 <datatable-scroller 4586 *ngIf="rows?.length" 4587 [scrollbarV]="scrollbarV" 4588 [scrollbarH]="scrollbarH" 4589 [scrollHeight]="scrollHeight" 4590 [scrollWidth]="columnGroupWidths?.total" 4591 (scroll)="onBodyScroll($event)" 4592 > 4593 <datatable-summary-row 4594 *ngIf="summaryRow && summaryPosition === 'top'" 4595 [rowHeight]="summaryHeight" 4596 [offsetX]="offsetX" 4597 [innerWidth]="innerWidth" 4598 [rows]="rows" 4599 [columns]="columns" 4600 > 4601 </datatable-summary-row> 4602 <datatable-row-wrapper 4603 [groupedRows]="groupedRows" 4604 *ngFor="let group of temp; let i = index; trackBy: rowTrackingFn" 4605 [innerWidth]="innerWidth" 4606 [ngStyle]="getRowsStyles(group)" 4607 [rowDetail]="rowDetail" 4608 [groupHeader]="groupHeader" 4609 [offsetX]="offsetX" 4610 [detailRowHeight]="getDetailRowHeight(group && group[i], i)" 4611 [row]="group" 4612 [expanded]="getRowExpanded(group)" 4613 [rowIndex]="getRowIndex(group && group[i])" 4614 (rowContextmenu)="rowContextmenu.emit($event)" 4615 > 4616 <datatable-body-row 4617 role="row" 4618 *ngIf="!groupedRows; else groupedRowsTemplate" 4619 tabindex="-1" 4620 [isSelected]="selector.getRowSelected(group)" 4621 [innerWidth]="innerWidth" 4622 [offsetX]="offsetX" 4623 [columns]="columns" 4624 [rowHeight]="getRowHeight(group)" 4625 [row]="group" 4626 [rowIndex]="getRowIndex(group)" 4627 [expanded]="getRowExpanded(group)" 4628 [rowClass]="rowClass" 4629 [displayCheck]="displayCheck" 4630 [treeStatus]="group && group.treeStatus" 4631 (treeAction)="onTreeAction(group)" 4632 (activate)="selector.onActivate($event, indexes.first + i)" 4633 > 4634 </datatable-body-row> 4635 <ng-template #groupedRowsTemplate> 4636 <datatable-body-row 4637 role="row" 4638 *ngFor="let row of group.value; let i = index; trackBy: rowTrackingFn" 4639 tabindex="-1" 4640 [isSelected]="selector.getRowSelected(row)" 4641 [innerWidth]="innerWidth" 4642 [offsetX]="offsetX" 4643 [columns]="columns" 4644 [rowHeight]="getRowHeight(row)" 4645 [row]="row" 4646 [group]="group.value" 4647 [rowIndex]="getRowIndex(row)" 4648 [expanded]="getRowExpanded(row)" 4649 [rowClass]="rowClass" 4650 (activate)="selector.onActivate($event, i)" 4651 > 4652 </datatable-body-row> 4653 </ng-template> 4654 </datatable-row-wrapper> 4655 <datatable-summary-row 4656 role="row" 4657 *ngIf="summaryRow && summaryPosition === 'bottom'" 4658 [ngStyle]="getBottomSummaryRowStyles()" 4659 [rowHeight]="summaryHeight" 4660 [offsetX]="offsetX" 4661 [innerWidth]="innerWidth" 4662 [rows]="rows" 4663 [columns]="columns" 4664 > 4665 </datatable-summary-row> 4666 </datatable-scroller> 4667 <div class="empty-row" *ngIf="!rows?.length && !loadingIndicator" [innerHTML]="emptyMessage"></div> 4668 </datatable-selection> 4669 `, 4670 changeDetection: ChangeDetectionStrategy.OnPush, 4671 host: { 4672 class: "datatable-body" 4673 } 4674 }] 4675 }], function() { 4676 return [{ 4677 type: ChangeDetectorRef 4678 }]; 4679 }, { 4680 scrollbarV: [{ 4681 type: Input 4682 }], 4683 scrollbarH: [{ 4684 type: Input 4685 }], 4686 loadingIndicator: [{ 4687 type: Input 4688 }], 4689 externalPaging: [{ 4690 type: Input 4691 }], 4692 rowHeight: [{ 4693 type: Input 4694 }], 4695 offsetX: [{ 4696 type: Input 4697 }], 4698 emptyMessage: [{ 4699 type: Input 4700 }], 4701 selectionType: [{ 4702 type: Input 4703 }], 4704 selected: [{ 4705 type: Input 4706 }], 4707 rowIdentity: [{ 4708 type: Input 4709 }], 4710 rowDetail: [{ 4711 type: Input 4712 }], 4713 groupHeader: [{ 4714 type: Input 4715 }], 4716 selectCheck: [{ 4717 type: Input 4718 }], 4719 displayCheck: [{ 4720 type: Input 4721 }], 4722 trackByProp: [{ 4723 type: Input 4724 }], 4725 rowClass: [{ 4726 type: Input 4727 }], 4728 groupedRows: [{ 4729 type: Input 4730 }], 4731 groupExpansionDefault: [{ 4732 type: Input 4733 }], 4734 innerWidth: [{ 4735 type: Input 4736 }], 4737 groupRowsBy: [{ 4738 type: Input 4739 }], 4740 virtualization: [{ 4741 type: Input 4742 }], 4743 summaryRow: [{ 4744 type: Input 4745 }], 4746 summaryPosition: [{ 4747 type: Input 4748 }], 4749 summaryHeight: [{ 4750 type: Input 4751 }], 4752 pageSize: [{ 4753 type: Input 4754 }], 4755 rows: [{ 4756 type: Input 4757 }], 4758 columns: [{ 4759 type: Input 4760 }], 4761 offset: [{ 4762 type: Input 4763 }], 4764 rowCount: [{ 4765 type: Input 4766 }], 4767 bodyWidth: [{ 4768 type: HostBinding, 4769 args: ["style.width"] 4770 }], 4771 bodyHeight: [{ 4772 type: Input 4773 }, { 4774 type: HostBinding, 4775 args: ["style.height"] 4776 }], 4777 scroll: [{ 4778 type: Output 4779 }], 4780 page: [{ 4781 type: Output 4782 }], 4783 activate: [{ 4784 type: Output 4785 }], 4786 select: [{ 4787 type: Output 4788 }], 4789 detailToggle: [{ 4790 type: Output 4791 }], 4792 rowContextmenu: [{ 4793 type: Output 4794 }], 4795 treeAction: [{ 4796 type: Output 4797 }], 4798 scroller: [{ 4799 type: ViewChild, 4800 args: [ScrollerComponent] 4801 }] 4802 }); 4803})(); 4804function nextSortDir(sortType, current) { 4805 if (sortType === SortType.single) { 4806 if (current === SortDirection.asc) { 4807 return SortDirection.desc; 4808 } else { 4809 return SortDirection.asc; 4810 } 4811 } else { 4812 if (!current) { 4813 return SortDirection.asc; 4814 } else if (current === SortDirection.asc) { 4815 return SortDirection.desc; 4816 } else if (current === SortDirection.desc) { 4817 return void 0; 4818 } 4819 return void 0; 4820 } 4821} 4822function orderByComparator(a, b) { 4823 if (a === null || typeof a === "undefined") a = 0; 4824 if (b === null || typeof b === "undefined") b = 0; 4825 if (a instanceof Date && b instanceof Date) { 4826 if (a < b) return -1; 4827 if (a > b) return 1; 4828 } else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) { 4829 a = String(a); 4830 b = String(b); 4831 if (a.toLowerCase() < b.toLowerCase()) return -1; 4832 if (a.toLowerCase() > b.toLowerCase()) return 1; 4833 } else { 4834 if (parseFloat(a) < parseFloat(b)) return -1; 4835 if (parseFloat(a) > parseFloat(b)) return 1; 4836 } 4837 return 0; 4838} 4839function sortRows(rows, columns, dirs) { 4840 if (!rows) return []; 4841 if (!dirs || !dirs.length || !columns) return [...rows]; 4842 const rowToIndexMap = /* @__PURE__ */ new Map(); 4843 rows.forEach((row, index) => rowToIndexMap.set(row, index)); 4844 const temp = [...rows]; 4845 const cols = columns.reduce((obj, col) => { 4846 if (col.comparator && typeof col.comparator === "function") { 4847 obj[col.prop] = col.comparator; 4848 } 4849 return obj; 4850 }, {}); 4851 const cachedDirs = dirs.map((dir) => { 4852 const prop = dir.prop; 4853 return { 4854 prop, 4855 dir: dir.dir, 4856 valueGetter: getterForProp(prop), 4857 compareFn: cols[prop] || orderByComparator 4858 }; 4859 }); 4860 return temp.sort(function(rowA, rowB) { 4861 for (const cachedDir of cachedDirs) { 4862 const { 4863 prop, 4864 valueGetter 4865 } = cachedDir; 4866 const propA = valueGetter(rowA, prop); 4867 const propB = valueGetter(rowB, prop); 4868 const comparison = cachedDir.dir !== SortDirection.desc ? cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir) : -cachedDir.compareFn(propA, propB, rowA, rowB, cachedDir.dir); 4869 if (comparison !== 0) return comparison; 4870 } 4871 if (!(rowToIndexMap.has(rowA) && rowToIndexMap.has(rowB))) return 0; 4872 return rowToIndexMap.get(rowA) < rowToIndexMap.get(rowB) ? -1 : 1; 4873 }); 4874} 4875var DataTableHeaderCellComponent = class { 4876 constructor(cd) { 4877 this.cd = cd; 4878 this.sort = new EventEmitter(); 4879 this.select = new EventEmitter(); 4880 this.columnContextmenu = new EventEmitter(false); 4881 this.sortFn = this.onSort.bind(this); 4882 this.selectFn = this.select.emit.bind(this.select); 4883 this.cellContext = { 4884 column: this.column, 4885 sortDir: this.sortDir, 4886 sortFn: this.sortFn, 4887 allRowsSelected: this.allRowsSelected, 4888 selectFn: this.selectFn 4889 }; 4890 } 4891 set allRowsSelected(value) { 4892 this._allRowsSelected = value; 4893 this.cellContext.allRowsSelected = value; 4894 } 4895 get allRowsSelected() { 4896 return this._allRowsSelected; 4897 } 4898 set column(column) { 4899 this._column = column; 4900 this.cellContext.column = column; 4901 this.cd.markForCheck(); 4902 } 4903 get column() { 4904 return this._column; 4905 } 4906 set sorts(val) { 4907 this._sorts = val; 4908 this.sortDir = this.calcSortDir(val); 4909 this.cellContext.sortDir = this.sortDir; 4910 this.sortClass = this.calcSortClass(this.sortDir); 4911 this.cd.markForCheck(); 4912 } 4913 get sorts() { 4914 return this._sorts; 4915 } 4916 get columnCssClasses() { 4917 let cls = "datatable-header-cell"; 4918 if (this.column.sortable) cls += " sortable"; 4919 if (this.column.resizeable) cls += " resizeable"; 4920 if (this.column.headerClass) { 4921 if (typeof this.column.headerClass === "string") { 4922 cls += " " + this.column.headerClass; 4923 } else if (typeof this.column.headerClass === "function") { 4924 const res = this.column.headerClass({ 4925 column: this.column 4926 }); 4927 if (typeof res === "string") { 4928 cls += res; 4929 } else if (typeof res === "object") { 4930 const keys = Object.keys(res); 4931 for (const k of keys) { 4932 if (res[k] === true) cls += ` ${k}`; 4933 } 4934 } 4935 } 4936 } 4937 const sortDir = this.sortDir; 4938 if (sortDir) { 4939 cls += ` sort-active sort-${sortDir}`; 4940 } 4941 return cls; 4942 } 4943 get name() { 4944 return this.column.headerTemplate === void 0 ? this.column.name : void 0; 4945 } 4946 get minWidth() { 4947 return this.column.minWidth; 4948 } 4949 get maxWidth() { 4950 return this.column.maxWidth; 4951 } 4952 get width() { 4953 return this.column.width; 4954 } 4955 get isCheckboxable() { 4956 return this.column.checkboxable && this.column.headerCheckboxable && this.selectionType === SelectionType.checkbox; 4957 } 4958 onContextmenu($event) { 4959 this.columnContextmenu.emit({ 4960 event: $event, 4961 column: this.column 4962 }); 4963 } 4964 ngOnInit() { 4965 this.sortClass = this.calcSortClass(this.sortDir); 4966 } 4967 calcSortDir(sorts) { 4968 if (sorts && this.column) { 4969 const sort = sorts.find((s) => { 4970 return s.prop === this.column.prop; 4971 }); 4972 if (sort) return sort.dir; 4973 } 4974 } 4975 onSort() { 4976 if (!this.column.sortable) return; 4977 const newValue = nextSortDir(this.sortType, this.sortDir); 4978 this.sort.emit({ 4979 column: this.column, 4980 prevValue: this.sortDir, 4981 newValue 4982 }); 4983 } 4984 calcSortClass(sortDir) { 4985 if (!this.cellContext.column.sortable) return; 4986 if (sortDir === SortDirection.asc) { 4987 return `sort-btn sort-asc ${this.sortAscendingIcon}`; 4988 } else if (sortDir === SortDirection.desc) { 4989 return `sort-btn sort-desc ${this.sortDescendingIcon}`; 4990 } else { 4991 return `sort-btn ${this.sortUnsetIcon}`; 4992 } 4993 } 4994}; 4995DataTableHeaderCellComponent.\u0275fac = function DataTableHeaderCellComponent_Factory(__ngFactoryType__) { 4996 return new (__ngFactoryType__ || DataTableHeaderCellComponent)(\u0275\u0275directiveInject(ChangeDetectorRef)); 4997}; 4998DataTableHeaderCellComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 4999 type: DataTableHeaderCellComponent, 5000 selectors: [["datatable-header-cell"]], 5001 hostAttrs: [1, "datatable-header-cell"], 5002 hostVars: 11, 5003 hostBindings: function DataTableHeaderCellComponent_HostBindings(rf, ctx) { 5004 if (rf & 1) { 5005 \u0275\u0275listener("contextmenu", function DataTableHeaderCellComponent_contextmenu_HostBindingHandler($event) { 5006 return ctx.onContextmenu($event); 5007 }); 5008 } 5009 if (rf & 2) { 5010 \u0275\u0275attribute("title", ctx.name); 5011 \u0275\u0275classMap(ctx.columnCssClasses); 5012 \u0275\u0275styleProp("height", ctx.headerHeight, "px")("min-width", ctx.minWidth, "px")("max-width", ctx.maxWidth, "px")("width", ctx.width, "px"); 5013 } 5014 }, 5015 inputs: { 5016 sortType: "sortType", 5017 sortAscendingIcon: "sortAscendingIcon", 5018 sortDescendingIcon: "sortDescendingIcon", 5019 sortUnsetIcon: "sortUnsetIcon", 5020 isTarget: "isTarget", 5021 targetMarkerTemplate: "targetMarkerTemplate", 5022 targetMarkerContext: "targetMarkerContext", 5023 allRowsSelected: "allRowsSelected", 5024 selectionType: "selectionType", 5025 column: "column", 5026 headerHeight: "headerHeight", 5027 sorts: "sorts" 5028 }, 5029 outputs: { 5030 sort: "sort", 5031 select: "select", 5032 columnContextmenu: "columnContextmenu" 5033 }, 5034 decls: 6, 5035 vars: 6, 5036 consts: [[1, "datatable-header-cell-template-wrap"], [4, "ngIf"], ["class", "datatable-checkbox", 4, "ngIf"], ["class", "datatable-header-cell-wrapper", 4, "ngIf"], [3, "click"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "datatable-checkbox"], ["type", "checkbox", 3, "change", "checked"], [1, "datatable-header-cell-wrapper"], [1, "datatable-header-cell-label", "draggable", 3, "click", "innerHTML"]], 5037 template: function DataTableHeaderCellComponent_Template(rf, ctx) { 5038 if (rf & 1) { 5039 \u0275\u0275elementStart(0, "div", 0); 5040 \u0275\u0275template(1, DataTableHeaderCellComponent_1_Template, 1, 2, null, 1)(2, DataTableHeaderCellComponent_label_2_Template, 2, 1, "label", 2)(3, DataTableHeaderCellComponent_span_3_Template, 2, 1, "span", 3)(4, DataTableHeaderCellComponent_4_Template, 1, 2, null, 1); 5041 \u0275\u0275elementStart(5, "span", 4); 5042 \u0275\u0275listener("click", function DataTableHeaderCellComponent_Template_span_click_5_listener() { 5043 return ctx.onSort(); 5044 }); 5045 \u0275\u0275elementEnd()(); 5046 } 5047 if (rf & 2) { 5048 \u0275\u0275advance(); 5049 \u0275\u0275property("ngIf", ctx.isTarget); 5050 \u0275\u0275advance(); 5051 \u0275\u0275property("ngIf", ctx.isCheckboxable); 5052 \u0275\u0275advance(); 5053 \u0275\u0275property("ngIf", !ctx.column.headerTemplate); 5054 \u0275\u0275advance(); 5055 \u0275\u0275property("ngIf", ctx.column.headerTemplate); 5056 \u0275\u0275advance(); 5057 \u0275\u0275classMap(ctx.sortClass); 5058 } 5059 }, 5060 dependencies: [NgIf, NgTemplateOutlet], 5061 encapsulation: 2, 5062 changeDetection: 0 5063}); 5064(() => { 5065 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableHeaderCellComponent, [{ 5066 type: Component, 5067 args: [{ 5068 selector: "datatable-header-cell", 5069 template: ` 5070 <div class="datatable-header-cell-template-wrap"> 5071 <ng-template 5072 *ngIf="isTarget" 5073 [ngTemplateOutlet]="targetMarkerTemplate" 5074 [ngTemplateOutletContext]="targetMarkerContext" 5075 > 5076 </ng-template> 5077 <label *ngIf="isCheckboxable" class="datatable-checkbox"> 5078 <input type="checkbox" [checked]="allRowsSelected" (change)="select.emit(!allRowsSelected)" /> 5079 </label> 5080 <span *ngIf="!column.headerTemplate" class="datatable-header-cell-wrapper"> 5081 <span class="datatable-header-cell-label draggable" (click)="onSort()" [innerHTML]="name"> </span> 5082 </span> 5083 <ng-template 5084 *ngIf="column.headerTemplate" 5085 [ngTemplateOutlet]="column.headerTemplate" 5086 [ngTemplateOutletContext]="cellContext" 5087 > 5088 </ng-template> 5089 <span (click)="onSort()" [class]="sortClass"> </span> 5090 </div> 5091 `, 5092 host: { 5093 class: "datatable-header-cell" 5094 }, 5095 changeDetection: ChangeDetectionStrategy.OnPush 5096 }] 5097 }], function() { 5098 return [{ 5099 type: ChangeDetectorRef 5100 }]; 5101 }, { 5102 sortType: [{ 5103 type: Input 5104 }], 5105 sortAscendingIcon: [{ 5106 type: Input 5107 }], 5108 sortDescendingIcon: [{ 5109 type: Input 5110 }], 5111 sortUnsetIcon: [{ 5112 type: Input 5113 }], 5114 isTarget: [{ 5115 type: Input 5116 }], 5117 targetMarkerTemplate: [{ 5118 type: Input 5119 }], 5120 targetMarkerContext: [{ 5121 type: Input 5122 }], 5123 allRowsSelected: [{ 5124 type: Input 5125 }], 5126 selectionType: [{ 5127 type: Input 5128 }], 5129 column: [{ 5130 type: Input 5131 }], 5132 headerHeight: [{ 5133 type: HostBinding, 5134 args: ["style.height.px"] 5135 }, { 5136 type: Input 5137 }], 5138 sorts: [{ 5139 type: Input 5140 }], 5141 sort: [{ 5142 type: Output 5143 }], 5144 select: [{ 5145 type: Output 5146 }], 5147 columnContextmenu: [{ 5148 type: Output 5149 }], 5150 columnCssClasses: [{ 5151 type: HostBinding, 5152 args: ["class"] 5153 }], 5154 name: [{ 5155 type: HostBinding, 5156 args: ["attr.title"] 5157 }], 5158 minWidth: [{ 5159 type: HostBinding, 5160 args: ["style.minWidth.px"] 5161 }], 5162 maxWidth: [{ 5163 type: HostBinding, 5164 args: ["style.maxWidth.px"] 5165 }], 5166 width: [{ 5167 type: HostBinding, 5168 args: ["style.width.px"] 5169 }], 5170 onContextmenu: [{ 5171 type: HostListener, 5172 args: ["contextmenu", ["$event"]] 5173 }] 5174 }); 5175})(); 5176var DataTableHeaderComponent = class { 5177 constructor(cd) { 5178 this.cd = cd; 5179 this.sort = new EventEmitter(); 5180 this.reorder = new EventEmitter(); 5181 this.resize = new EventEmitter(); 5182 this.select = new EventEmitter(); 5183 this.columnContextmenu = new EventEmitter(false); 5184 this._columnGroupWidths = { 5185 total: 100 5186 }; 5187 this._styleByGroup = { 5188 left: {}, 5189 center: {}, 5190 right: {} 5191 }; 5192 this.destroyed = false; 5193 } 5194 set innerWidth(val) { 5195 this._innerWidth = val; 5196 setTimeout(() => { 5197 if (this._columns) { 5198 const colByPin = columnsByPin(this._columns); 5199 this._columnGroupWidths = columnGroupWidths(colByPin, this._columns); 5200 this.setStylesByGroup(); 5201 } 5202 }); 5203 } 5204 get innerWidth() { 5205 return this._innerWidth; 5206 } 5207 set headerHeight(val) { 5208 if (val !== "auto") { 5209 this._headerHeight = `${val}px`; 5210 } else { 5211 this._headerHeight = val; 5212 } 5213 } 5214 get headerHeight() { 5215 return this._headerHeight; 5216 } 5217 set columns(val) { 5218 this._columns = val; 5219 const colsByPin = columnsByPin(val); 5220 this._columnsByPin = columnsByPinArr(val); 5221 setTimeout(() => { 5222 this._columnGroupWidths = columnGroupWidths(colsByPin, val); 5223 this.setStylesByGroup(); 5224 }); 5225 } 5226 get columns() { 5227 return this._columns; 5228 } 5229 set offsetX(val) { 5230 this._offsetX = val; 5231 this.setStylesByGroup(); 5232 } 5233 get offsetX() { 5234 return this._offsetX; 5235 } 5236 ngOnDestroy() { 5237 this.destroyed = true; 5238 } 5239 onLongPressStart({ 5240 event, 5241 model 5242 }) { 5243 model.dragging = true; 5244 this.dragEventTarget = event; 5245 } 5246 onLongPressEnd({ 5247 event, 5248 model 5249 }) { 5250 this.dragEventTarget = event; 5251 setTimeout(() => { 5252 const column = this._columns.find((c) => c.$$id === model.$$id); 5253 if (column) { 5254 column.dragging = false; 5255 } 5256 }, 5); 5257 } 5258 get headerWidth() { 5259 if (this.scrollbarH) { 5260 return this.innerWidth + "px"; 5261 } 5262 return "100%"; 5263 } 5264 trackByGroups(index, colGroup) { 5265 return colGroup.type; 5266 } 5267 columnTrackingFn(index, column) { 5268 return column.$$id; 5269 } 5270 onColumnResized(width, column) { 5271 if (width <= column.minWidth) { 5272 width = column.minWidth; 5273 } else if (width >= column.maxWidth) { 5274 width = column.maxWidth; 5275 } 5276 this.resize.emit({ 5277 column, 5278 prevValue: column.width, 5279 newValue: width 5280 }); 5281 } 5282 onColumnReordered({ 5283 prevIndex, 5284 newIndex, 5285 model 5286 }) { 5287 const column = this.getColumn(newIndex); 5288 column.isTarget = false; 5289 column.targetMarkerContext = void 0; 5290 this.reorder.emit({ 5291 column: model, 5292 prevValue: prevIndex, 5293 newValue: newIndex 5294 }); 5295 } 5296 onTargetChanged({ 5297 prevIndex, 5298 newIndex, 5299 initialIndex 5300 }) { 5301 if (prevIndex || prevIndex === 0) { 5302 const oldColumn = this.getColumn(prevIndex); 5303 oldColumn.isTarget = false; 5304 oldColumn.targetMarkerContext = void 0; 5305 } 5306 if (newIndex || newIndex === 0) { 5307 const newColumn = this.getColumn(newIndex); 5308 newColumn.isTarget = true; 5309 if (initialIndex !== newIndex) { 5310 newColumn.targetMarkerContext = { 5311 class: "targetMarker ".concat(initialIndex > newIndex ? "dragFromRight" : "dragFromLeft") 5312 }; 5313 } 5314 } 5315 } 5316 getColumn(index) { 5317 const leftColumnCount = this._columnsByPin[0].columns.length; 5318 if (index < leftColumnCount) { 5319 return this._columnsByPin[0].columns[index]; 5320 } 5321 const centerColumnCount = this._columnsByPin[1].columns.length; 5322 if (index < leftColumnCount + centerColumnCount) { 5323 return this._columnsByPin[1].columns[index - leftColumnCount]; 5324 } 5325 return this._columnsByPin[2].columns[index - leftColumnCount - centerColumnCount]; 5326 } 5327 onSort({ 5328 column, 5329 prevValue, 5330 newValue 5331 }) { 5332 if (column.dragging) { 5333 return; 5334 } 5335 const sorts = this.calcNewSorts(column, prevValue, newValue); 5336 this.sort.emit({ 5337 sorts, 5338 column, 5339 prevValue, 5340 newValue 5341 }); 5342 } 5343 calcNewSorts(column, prevValue, newValue) { 5344 let idx = 0; 5345 if (!this.sorts) { 5346 this.sorts = []; 5347 } 5348 const sorts = this.sorts.map((s, i) => { 5349 s = __spreadValues({}, s); 5350 if (s.prop === column.prop) { 5351 idx = i; 5352 } 5353 return s; 5354 }); 5355 if (newValue === void 0) { 5356 sorts.splice(idx, 1); 5357 } else if (prevValue) { 5358 sorts[idx].dir = newValue; 5359 } else { 5360 if (this.sortType === SortType.single) { 5361 sorts.splice(0, this.sorts.length); 5362 } 5363 sorts.push({ 5364 dir: newValue, 5365 prop: column.prop 5366 }); 5367 } 5368 return sorts; 5369 } 5370 setStylesByGroup() { 5371 this._styleByGroup.left = this.calcStylesByGroup("left"); 5372 this._styleByGroup.center = this.calcStylesByGroup("center"); 5373 this._styleByGroup.right = this.calcStylesByGroup("right"); 5374 if (!this.destroyed) { 5375 this.cd.detectChanges(); 5376 } 5377 } 5378 calcStylesByGroup(group) { 5379 const widths = this._columnGroupWidths; 5380 const offsetX = this.offsetX; 5381 const styles = { 5382 width: `${widths[group]}px` 5383 }; 5384 if (group === "center") { 5385 translateXY(styles, offsetX * -1, 0); 5386 } else if (group === "right") { 5387 const totalDiff = widths.total - this.innerWidth; 5388 const offset = totalDiff * -1; 5389 translateXY(styles, offset, 0); 5390 } 5391 return styles; 5392 } 5393}; 5394DataTableHeaderComponent.\u0275fac = function DataTableHeaderComponent_Factory(__ngFactoryType__) { 5395 return new (__ngFactoryType__ || DataTableHeaderComponent)(\u0275\u0275directiveInject(ChangeDetectorRef)); 5396}; 5397DataTableHeaderComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 5398 type: DataTableHeaderComponent, 5399 selectors: [["datatable-header"]], 5400 hostAttrs: [1, "datatable-header"], 5401 hostVars: 4, 5402 hostBindings: function DataTableHeaderComponent_HostBindings(rf, ctx) { 5403 if (rf & 2) { 5404 \u0275\u0275styleProp("height", ctx.headerHeight)("width", ctx.headerWidth); 5405 } 5406 }, 5407 inputs: { 5408 sortAscendingIcon: "sortAscendingIcon", 5409 sortDescendingIcon: "sortDescendingIcon", 5410 sortUnsetIcon: "sortUnsetIcon", 5411 scrollbarH: "scrollbarH", 5412 dealsWithGroup: "dealsWithGroup", 5413 targetMarkerTemplate: "targetMarkerTemplate", 5414 innerWidth: "innerWidth", 5415 sorts: "sorts", 5416 sortType: "sortType", 5417 allRowsSelected: "allRowsSelected", 5418 selectionType: "selectionType", 5419 reorderable: "reorderable", 5420 headerHeight: "headerHeight", 5421 columns: "columns", 5422 offsetX: "offsetX" 5423 }, 5424 outputs: { 5425 sort: "sort", 5426 reorder: "reorder", 5427 resize: "resize", 5428 select: "select", 5429 columnContextmenu: "columnContextmenu" 5430 }, 5431 decls: 2, 5432 vars: 4, 5433 consts: [["role", "row", "orderable", "", 1, "datatable-header-inner", 3, "reorder", "targetChanged"], [3, "class", "ngStyle", 4, "ngFor", "ngForOf", "ngForTrackBy"], [3, "ngStyle"], ["role", "columnheader", "resizeable", "", "long-press", "", "draggable", "", 3, "resizeEnabled", "pressModel", "pressEnabled", "dragX", "dragY", "dragModel", "dragEventTarget", "headerHeight", "isTarget", "targetMarkerTemplate", "targetMarkerContext", "column", "sortType", "sorts", "selectionType", "sortAscendingIcon", "sortDescendingIcon", "sortUnsetIcon", "allRowsSelected", "resize", "longPressStart", "longPressEnd", "sort", "select", "columnContextmenu", 4, "ngFor", "ngForOf", "ngForTrackBy"], ["role", "columnheader", "resizeable", "", "long-press", "", "draggable", "", 3, "resize", "longPressStart", "longPressEnd", "sort", "select", "columnContextmenu", "resizeEnabled", "pressModel", "pressEnabled", "dragX", "dragY", "dragModel", "dragEventTarget", "headerHeight", "isTarget", "targetMarkerTemplate", "targetMarkerContext", "column", "sortType", "sorts", "selectionType", "sortAscendingIcon", "sortDescendingIcon", "sortUnsetIcon", "allRowsSelected"]], 5434 template: function DataTableHeaderComponent_Template(rf, ctx) { 5435 if (rf & 1) { 5436 \u0275\u0275elementStart(0, "div", 0); 5437 \u0275\u0275listener("reorder", function DataTableHeaderComponent_Template_div_reorder_0_listener($event) { 5438 return ctx.onColumnReordered($event); 5439 })("targetChanged", function DataTableHeaderComponent_Template_div_targetChanged_0_listener($event) { 5440 return ctx.onTargetChanged($event); 5441 }); 5442 \u0275\u0275template(1, DataTableHeaderComponent_div_1_Template, 2, 5, "div", 1); 5443 \u0275\u0275elementEnd(); 5444 } 5445 if (rf & 2) { 5446 \u0275\u0275styleProp("width", ctx._columnGroupWidths.total, "px"); 5447 \u0275\u0275advance(); 5448 \u0275\u0275property("ngForOf", ctx._columnsByPin)("ngForTrackBy", ctx.trackByGroups); 5449 } 5450 }, 5451 dependencies: [DataTableHeaderCellComponent, OrderableDirective, NgForOf, NgStyle, ResizeableDirective, LongPressDirective, DraggableDirective], 5452 encapsulation: 2, 5453 changeDetection: 0 5454}); 5455(() => { 5456 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableHeaderComponent, [{ 5457 type: Component, 5458 args: [{ 5459 selector: "datatable-header", 5460 template: ` 5461 <div 5462 role="row" 5463 orderable 5464 (reorder)="onColumnReordered($event)" 5465 (targetChanged)="onTargetChanged($event)" 5466 [style.width.px]="_columnGroupWidths.total" 5467 class="datatable-header-inner" 5468 > 5469 <div 5470 *ngFor="let colGroup of _columnsByPin; trackBy: trackByGroups" 5471 [class]="'datatable-row-' + colGroup.type" 5472 [ngStyle]="_styleByGroup[colGroup.type]" 5473 > 5474 <datatable-header-cell 5475 role="columnheader" 5476 *ngFor="let column of colGroup.columns; trackBy: columnTrackingFn" 5477 resizeable 5478 [resizeEnabled]="column.resizeable" 5479 (resize)="onColumnResized($event, column)" 5480 long-press 5481 [pressModel]="column" 5482 [pressEnabled]="reorderable && column.draggable" 5483 (longPressStart)="onLongPressStart($event)" 5484 (longPressEnd)="onLongPressEnd($event)" 5485 draggable 5486 [dragX]="reorderable && column.draggable && column.dragging" 5487 [dragY]="false" 5488 [dragModel]="column" 5489 [dragEventTarget]="dragEventTarget" 5490 [headerHeight]="headerHeight" 5491 [isTarget]="column.isTarget" 5492 [targetMarkerTemplate]="targetMarkerTemplate" 5493 [targetMarkerContext]="column.targetMarkerContext" 5494 [column]="column" 5495 [sortType]="sortType" 5496 [sorts]="sorts" 5497 [selectionType]="selectionType" 5498 [sortAscendingIcon]="sortAscendingIcon" 5499 [sortDescendingIcon]="sortDescendingIcon" 5500 [sortUnsetIcon]="sortUnsetIcon" 5501 [allRowsSelected]="allRowsSelected" 5502 (sort)="onSort($event)" 5503 (select)="select.emit($event)" 5504 (columnContextmenu)="columnContextmenu.emit($event)" 5505 > 5506 </datatable-header-cell> 5507 </div> 5508 </div> 5509 `, 5510 host: { 5511 class: "datatable-header" 5512 }, 5513 changeDetection: ChangeDetectionStrategy.OnPush 5514 }] 5515 }], function() { 5516 return [{ 5517 type: ChangeDetectorRef 5518 }]; 5519 }, { 5520 sortAscendingIcon: [{ 5521 type: Input 5522 }], 5523 sortDescendingIcon: [{ 5524 type: Input 5525 }], 5526 sortUnsetIcon: [{ 5527 type: Input 5528 }], 5529 scrollbarH: [{ 5530 type: Input 5531 }], 5532 dealsWithGroup: [{ 5533 type: Input 5534 }], 5535 targetMarkerTemplate: [{ 5536 type: Input 5537 }], 5538 innerWidth: [{ 5539 type: Input 5540 }], 5541 sorts: [{ 5542 type: Input 5543 }], 5544 sortType: [{ 5545 type: Input 5546 }], 5547 allRowsSelected: [{ 5548 type: Input 5549 }], 5550 selectionType: [{ 5551 type: Input 5552 }], 5553 reorderable: [{ 5554 type: Input 5555 }], 5556 headerHeight: [{ 5557 type: HostBinding, 5558 args: ["style.height"] 5559 }, { 5560 type: Input 5561 }], 5562 columns: [{ 5563 type: Input 5564 }], 5565 offsetX: [{ 5566 type: Input 5567 }], 5568 sort: [{ 5569 type: Output 5570 }], 5571 reorder: [{ 5572 type: Output 5573 }], 5574 resize: [{ 5575 type: Output 5576 }], 5577 select: [{ 5578 type: Output 5579 }], 5580 columnContextmenu: [{ 5581 type: Output 5582 }], 5583 headerWidth: [{ 5584 type: HostBinding, 5585 args: ["style.width"] 5586 }] 5587 }); 5588})(); 5589function throttle(func, wait, options) { 5590 options = options || {}; 5591 let context; 5592 let args; 5593 let result; 5594 let timeout = null; 5595 let previous = 0; 5596 function later() { 5597 previous = options.leading === false ? 0 : +/* @__PURE__ */ new Date(); 5598 timeout = null; 5599 result = func.apply(context, args); 5600 } 5601 return function() { 5602 const now = +/* @__PURE__ */ new Date(); 5603 if (!previous && options.leading === false) { 5604 previous = now; 5605 } 5606 const remaining = wait - (now - previous); 5607 context = this; 5608 args = arguments; 5609 if (remaining <= 0) { 5610 clearTimeout(timeout); 5611 timeout = null; 5612 previous = now; 5613 result = func.apply(context, args); 5614 } else if (!timeout && options.trailing !== false) { 5615 timeout = setTimeout(later, remaining); 5616 } 5617 return result; 5618 }; 5619} 5620function throttleable(duration, options) { 5621 return function innerDecorator(target, key, descriptor) { 5622 return { 5623 configurable: true, 5624 enumerable: descriptor.enumerable, 5625 get: function getter() { 5626 Object.defineProperty(this, key, { 5627 configurable: true, 5628 enumerable: descriptor.enumerable, 5629 value: throttle(descriptor.value, duration, options) 5630 }); 5631 return this[key]; 5632 } 5633 }; 5634 }; 5635} 5636function getTotalFlexGrow(columns) { 5637 let totalFlexGrow = 0; 5638 for (const c of columns) { 5639 totalFlexGrow += c.flexGrow || 0; 5640 } 5641 return totalFlexGrow; 5642} 5643function adjustColumnWidths(allColumns, expectedWidth) { 5644 const columnsWidth = columnsTotalWidth(allColumns); 5645 const totalFlexGrow = getTotalFlexGrow(allColumns); 5646 const colsByGroup = columnsByPin(allColumns); 5647 if (columnsWidth !== expectedWidth) { 5648 scaleColumns(colsByGroup, expectedWidth, totalFlexGrow); 5649 } 5650} 5651function scaleColumns(colsByGroup, maxWidth, totalFlexGrow) { 5652 for (const attr in colsByGroup) { 5653 for (const column of colsByGroup[attr]) { 5654 if (!column.canAutoResize) { 5655 maxWidth -= column.width; 5656 totalFlexGrow -= column.flexGrow ? column.flexGrow : 0; 5657 } else { 5658 column.width = 0; 5659 } 5660 } 5661 } 5662 const hasMinWidth = {}; 5663 let remainingWidth = maxWidth; 5664 do { 5665 const widthPerFlexPoint = remainingWidth / totalFlexGrow; 5666 remainingWidth = 0; 5667 for (const attr in colsByGroup) { 5668 for (const column of colsByGroup[attr]) { 5669 if (column.canAutoResize && !hasMinWidth[column.prop]) { 5670 const newWidth = column.width + column.flexGrow * widthPerFlexPoint; 5671 if (column.minWidth !== void 0 && newWidth < column.minWidth) { 5672 remainingWidth += newWidth - column.minWidth; 5673 column.width = column.minWidth; 5674 hasMinWidth[column.prop] = true; 5675 } else { 5676 column.width = newWidth; 5677 } 5678 } 5679 } 5680 } 5681 } while (remainingWidth !== 0); 5682} 5683function forceFillColumnWidths(allColumns, expectedWidth, startIdx, allowBleed, defaultColWidth = 300) { 5684 const columnsToResize = allColumns.slice(startIdx + 1, allColumns.length).filter((c) => { 5685 return c.canAutoResize !== false; 5686 }); 5687 for (const column of columnsToResize) { 5688 if (!column.$$oldWidth) { 5689 column.$$oldWidth = column.width; 5690 } 5691 } 5692 let additionWidthPerColumn = 0; 5693 let exceedsWindow = false; 5694 let contentWidth = getContentWidth(allColumns, defaultColWidth); 5695 let remainingWidth = expectedWidth - contentWidth; 5696 const columnsProcessed = []; 5697 const remainingWidthLimit = 1; 5698 do { 5699 additionWidthPerColumn = remainingWidth / columnsToResize.length; 5700 exceedsWindow = contentWidth >= expectedWidth; 5701 for (const column of columnsToResize) { 5702 if (exceedsWindow && allowBleed) { 5703 column.width = column.$$oldWidth || column.width || defaultColWidth; 5704 } else { 5705 const newSize = (column.width || defaultColWidth) + additionWidthPerColumn; 5706 if (column.minWidth && newSize < column.minWidth) { 5707 column.width = column.minWidth; 5708 columnsProcessed.push(column); 5709 } else if (column.maxWidth && newSize > column.maxWidth) { 5710 column.width = column.maxWidth; 5711 columnsProcessed.push(column); 5712 } else { 5713 column.width = newSize; 5714 } 5715 } 5716 column.width = Math.max(0, column.width); 5717 } 5718 contentWidth = getContentWidth(allColumns); 5719 remainingWidth = expectedWidth - contentWidth; 5720 removeProcessedColumns(columnsToResize, columnsProcessed); 5721 } while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0); 5722} 5723function removeProcessedColumns(columnsToResize, columnsProcessed) { 5724 for (const column of columnsProcessed) { 5725 const index = columnsToResize.indexOf(column); 5726 columnsToResize.splice(index, 1); 5727 } 5728} 5729function getContentWidth(allColumns, defaultColWidth = 300) { 5730 let contentWidth = 0; 5731 for (const column of allColumns) { 5732 contentWidth += column.width || defaultColWidth; 5733 } 5734 return contentWidth; 5735} 5736var DataTablePagerComponent = class { 5737 constructor() { 5738 this.change = new EventEmitter(); 5739 this._count = 0; 5740 this._page = 1; 5741 this._size = 0; 5742 } 5743 set size(val) { 5744 this._size = val; 5745 this.pages = this.calcPages(); 5746 } 5747 get size() { 5748 return this._size; 5749 } 5750 set count(val) { 5751 this._count = val; 5752 this.pages = this.calcPages(); 5753 } 5754 get count() { 5755 return this._count; 5756 } 5757 set page(val) { 5758 this._page = val; 5759 this.pages = this.calcPages(); 5760 } 5761 get page() { 5762 return this._page; 5763 } 5764 get totalPages() { 5765 const count = this.size < 1 ? 1 : Math.ceil(this.count / this.size); 5766 return Math.max(count || 0, 1); 5767 } 5768 canPrevious() { 5769 return this.page > 1; 5770 } 5771 canNext() { 5772 return this.page < this.totalPages; 5773 } 5774 prevPage() { 5775 this.selectPage(this.page - 1); 5776 } 5777 nextPage() { 5778 this.selectPage(this.page + 1); 5779 } 5780 selectPage(page) { 5781 if (page > 0 && page <= this.totalPages && page !== this.page) { 5782 this.page = page; 5783 this.change.emit({ 5784 page 5785 }); 5786 } 5787 } 5788 calcPages(page) { 5789 const pages = []; 5790 let startPage = 1; 5791 let endPage = this.totalPages; 5792 const maxSize = 5; 5793 const isMaxSized = maxSize < this.totalPages; 5794 page = page || this.page; 5795 if (isMaxSized) { 5796 startPage = page - Math.floor(maxSize / 2); 5797 endPage = page + Math.floor(maxSize / 2); 5798 if (startPage < 1) { 5799 startPage = 1; 5800 endPage = Math.min(startPage + maxSize - 1, this.totalPages); 5801 } else if (endPage > this.totalPages) { 5802 startPage = Math.max(this.totalPages - maxSize + 1, 1); 5803 endPage = this.totalPages; 5804 } 5805 } 5806 for (let num = startPage; num <= endPage; num++) { 5807 pages.push({ 5808 number: num, 5809 text: num 5810 }); 5811 } 5812 return pages; 5813 } 5814}; 5815DataTablePagerComponent.\u0275fac = function DataTablePagerComponent_Factory(__ngFactoryType__) { 5816 return new (__ngFactoryType__ || DataTablePagerComponent)(); 5817}; 5818DataTablePagerComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 5819 type: DataTablePagerComponent, 5820 selectors: [["datatable-pager"]], 5821 hostAttrs: [1, "datatable-pager"], 5822 inputs: { 5823 pagerLeftArrowIcon: "pagerLeftArrowIcon", 5824 pagerRightArrowIcon: "pagerRightArrowIcon", 5825 pagerPreviousIcon: "pagerPreviousIcon", 5826 pagerNextIcon: "pagerNextIcon", 5827 size: "size", 5828 count: "count", 5829 page: "page" 5830 }, 5831 outputs: { 5832 change: "change" 5833 }, 5834 decls: 14, 5835 vars: 21, 5836 consts: [[1, "pager"], ["role", "button", "aria-label", "go to first page", "href", "javascript:void(0)", 3, "click"], ["role", "button", "aria-label", "go to previous page", "href", "javascript:void(0)", 3, "click"], ["role", "button", "class", "pages", 3, "active", 4, "ngFor", "ngForOf"], ["role", "button", "aria-label", "go to next page", "href", "javascript:void(0)", 3, "click"], ["role", "button", "aria-label", "go to last page", "href", "javascript:void(0)", 3, "click"], ["role", "button", 1, "pages"], ["href", "javascript:void(0)", 3, "click"]], 5837 template: function DataTablePagerComponent_Template(rf, ctx) { 5838 if (rf & 1) { 5839 \u0275\u0275elementStart(0, "ul", 0)(1, "li")(2, "a", 1); 5840 \u0275\u0275listener("click", function DataTablePagerComponent_Template_a_click_2_listener() { 5841 return ctx.selectPage(1); 5842 }); 5843 \u0275\u0275element(3, "i"); 5844 \u0275\u0275elementEnd()(); 5845 \u0275\u0275elementStart(4, "li")(5, "a", 2); 5846 \u0275\u0275listener("click", function DataTablePagerComponent_Template_a_click_5_listener() { 5847 return ctx.prevPage(); 5848 }); 5849 \u0275\u0275element(6, "i"); 5850 \u0275\u0275elementEnd()(); 5851 \u0275\u0275template(7, DataTablePagerComponent_li_7_Template, 3, 4, "li", 3); 5852 \u0275\u0275elementStart(8, "li")(9, "a", 4); 5853 \u0275\u0275listener("click", function DataTablePagerComponent_Template_a_click_9_listener() { 5854 return ctx.nextPage(); 5855 }); 5856 \u0275\u0275element(10, "i"); 5857 \u0275\u0275elementEnd()(); 5858 \u0275\u0275elementStart(11, "li")(12, "a", 5); 5859 \u0275\u0275listener("click", function DataTablePagerComponent_Template_a_click_12_listener() { 5860 return ctx.selectPage(ctx.totalPages); 5861 }); 5862 \u0275\u0275element(13, "i"); 5863 \u0275\u0275elementEnd()()(); 5864 } 5865 if (rf & 2) { 5866 \u0275\u0275advance(); 5867 \u0275\u0275classProp("disabled", !ctx.canPrevious()); 5868 \u0275\u0275advance(2); 5869 \u0275\u0275classMap(ctx.pagerPreviousIcon); 5870 \u0275\u0275advance(); 5871 \u0275\u0275classProp("disabled", !ctx.canPrevious()); 5872 \u0275\u0275advance(2); 5873 \u0275\u0275classMap(ctx.pagerLeftArrowIcon); 5874 \u0275\u0275advance(); 5875 \u0275\u0275property("ngForOf", ctx.pages); 5876 \u0275\u0275advance(); 5877 \u0275\u0275classProp("disabled", !ctx.canNext()); 5878 \u0275\u0275advance(2); 5879 \u0275\u0275classMap(ctx.pagerRightArrowIcon); 5880 \u0275\u0275advance(); 5881 \u0275\u0275classProp("disabled", !ctx.canNext()); 5882 \u0275\u0275advance(2); 5883 \u0275\u0275classMap(ctx.pagerNextIcon); 5884 } 5885 }, 5886 dependencies: [NgForOf], 5887 encapsulation: 2, 5888 changeDetection: 0 5889}); 5890(() => { 5891 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTablePagerComponent, [{ 5892 type: Component, 5893 args: [{ 5894 selector: "datatable-pager", 5895 template: ` 5896 <ul class="pager"> 5897 <li [class.disabled]="!canPrevious()"> 5898 <a role="button" aria-label="go to first page" href="javascript:void(0)" (click)="selectPage(1)"> 5899 <i class="{{ pagerPreviousIcon }}"></i> 5900 </a> 5901 </li> 5902 <li [class.disabled]="!canPrevious()"> 5903 <a role="button" aria-label="go to previous page" href="javascript:void(0)" (click)="prevPage()"> 5904 <i class="{{ pagerLeftArrowIcon }}"></i> 5905 </a> 5906 </li> 5907 <li 5908 role="button" 5909 [attr.aria-label]="'page ' + pg.number" 5910 class="pages" 5911 *ngFor="let pg of pages" 5912 [class.active]="pg.number === page" 5913 > 5914 <a href="javascript:void(0)" (click)="selectPage(pg.number)"> 5915 {{ pg.text }} 5916 </a> 5917 </li> 5918 <li [class.disabled]="!canNext()"> 5919 <a role="button" aria-label="go to next page" href="javascript:void(0)" (click)="nextPage()"> 5920 <i class="{{ pagerRightArrowIcon }}"></i> 5921 </a> 5922 </li> 5923 <li [class.disabled]="!canNext()"> 5924 <a role="button" aria-label="go to last page" href="javascript:void(0)" (click)="selectPage(totalPages)"> 5925 <i class="{{ pagerNextIcon }}"></i> 5926 </a> 5927 </li> 5928 </ul> 5929 `, 5930 host: { 5931 class: "datatable-pager" 5932 }, 5933 changeDetection: ChangeDetectionStrategy.OnPush 5934 }] 5935 }], null, { 5936 pagerLeftArrowIcon: [{ 5937 type: Input 5938 }], 5939 pagerRightArrowIcon: [{ 5940 type: Input 5941 }], 5942 pagerPreviousIcon: [{ 5943 type: Input 5944 }], 5945 pagerNextIcon: [{ 5946 type: Input 5947 }], 5948 size: [{ 5949 type: Input 5950 }], 5951 count: [{ 5952 type: Input 5953 }], 5954 page: [{ 5955 type: Input 5956 }], 5957 change: [{ 5958 type: Output 5959 }] 5960 }); 5961})(); 5962var DataTableFooterComponent = class { 5963 constructor() { 5964 this.selectedCount = 0; 5965 this.page = new EventEmitter(); 5966 } 5967 get isVisible() { 5968 return this.rowCount / this.pageSize > 1; 5969 } 5970 get curPage() { 5971 return this.offset + 1; 5972 } 5973}; 5974DataTableFooterComponent.\u0275fac = function DataTableFooterComponent_Factory(__ngFactoryType__) { 5975 return new (__ngFactoryType__ || DataTableFooterComponent)(); 5976}; 5977DataTableFooterComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 5978 type: DataTableFooterComponent, 5979 selectors: [["datatable-footer"]], 5980 hostAttrs: [1, "datatable-footer"], 5981 inputs: { 5982 footerHeight: "footerHeight", 5983 rowCount: "rowCount", 5984 pageSize: "pageSize", 5985 offset: "offset", 5986 pagerLeftArrowIcon: "pagerLeftArrowIcon", 5987 pagerRightArrowIcon: "pagerRightArrowIcon", 5988 pagerPreviousIcon: "pagerPreviousIcon", 5989 pagerNextIcon: "pagerNextIcon", 5990 totalMessage: "totalMessage", 5991 footerTemplate: "footerTemplate", 5992 selectedCount: "selectedCount", 5993 selectedMessage: "selectedMessage" 5994 }, 5995 outputs: { 5996 page: "page" 5997 }, 5998 decls: 4, 5999 vars: 8, 6000 consts: [[1, "datatable-footer-inner", 3, "ngClass"], [4, "ngIf"], ["class", "page-count", 4, "ngIf"], [3, "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "pagerNextIcon", "page", "size", "count", "hidden", "change", 4, "ngIf"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "page-count"], [3, "change", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "pagerNextIcon", "page", "size", "count", "hidden"]], 6001 template: function DataTableFooterComponent_Template(rf, ctx) { 6002 if (rf & 1) { 6003 \u0275\u0275elementStart(0, "div", 0); 6004 \u0275\u0275template(1, DataTableFooterComponent_1_Template, 1, 8, null, 1)(2, DataTableFooterComponent_div_2_Template, 3, 3, "div", 2)(3, DataTableFooterComponent_datatable_pager_3_Template, 1, 8, "datatable-pager", 3); 6005 \u0275\u0275elementEnd(); 6006 } 6007 if (rf & 2) { 6008 \u0275\u0275styleProp("height", ctx.footerHeight, "px"); 6009 \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(6, _c3, ctx.selectedMessage)); 6010 \u0275\u0275advance(); 6011 \u0275\u0275property("ngIf", ctx.footerTemplate); 6012 \u0275\u0275advance(); 6013 \u0275\u0275property("ngIf", !ctx.footerTemplate); 6014 \u0275\u0275advance(); 6015 \u0275\u0275property("ngIf", !ctx.footerTemplate); 6016 } 6017 }, 6018 dependencies: [DataTablePagerComponent, NgClass, NgIf, NgTemplateOutlet], 6019 encapsulation: 2, 6020 changeDetection: 0 6021}); 6022(() => { 6023 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DataTableFooterComponent, [{ 6024 type: Component, 6025 args: [{ 6026 selector: "datatable-footer", 6027 template: ` 6028 <div 6029 class="datatable-footer-inner" 6030 [ngClass]="{ 'selected-count': selectedMessage }" 6031 [style.height.px]="footerHeight" 6032 > 6033 <ng-template 6034 *ngIf="footerTemplate" 6035 [ngTemplateOutlet]="footerTemplate.template" 6036 [ngTemplateOutletContext]="{ 6037 rowCount: rowCount, 6038 pageSize: pageSize, 6039 selectedCount: selectedCount, 6040 curPage: curPage, 6041 offset: offset 6042 }" 6043 > 6044 </ng-template> 6045 <div class="page-count" *ngIf="!footerTemplate"> 6046 <span *ngIf="selectedMessage"> {{ selectedCount?.toLocaleString() }} {{ selectedMessage }} / </span> 6047 {{ rowCount?.toLocaleString() }} {{ totalMessage }} 6048 </div> 6049 <datatable-pager 6050 *ngIf="!footerTemplate" 6051 [pagerLeftArrowIcon]="pagerLeftArrowIcon" 6052 [pagerRightArrowIcon]="pagerRightArrowIcon" 6053 [pagerPreviousIcon]="pagerPreviousIcon" 6054 [pagerNextIcon]="pagerNextIcon" 6055 [page]="curPage" 6056 [size]="pageSize" 6057 [count]="rowCount" 6058 [hidden]="!isVisible" 6059 (change)="page.emit($event)" 6060 > 6061 </datatable-pager> 6062 </div> 6063 `, 6064 host: { 6065 class: "datatable-footer" 6066 }, 6067 changeDetection: ChangeDetectionStrategy.OnPush 6068 }] 6069 }], null, { 6070 footerHeight: [{ 6071 type: Input 6072 }], 6073 rowCount: [{ 6074 type: Input 6075 }], 6076 pageSize: [{ 6077 type: Input 6078 }], 6079 offset: [{ 6080 type: Input 6081 }], 6082 pagerLeftArrowIcon: [{ 6083 type: Input 6084 }], 6085 pagerRightArrowIcon: [{ 6086 type: Input 6087 }], 6088 pagerPreviousIcon: [{ 6089 type: Input 6090 }], 6091 pagerNextIcon: [{ 6092 type: Input 6093 }], 6094 totalMessage: [{ 6095 type: Input 6096 }], 6097 footerTemplate: [{ 6098 type: Input 6099 }], 6100 selectedCount: [{ 6101 type: Input 6102 }], 6103 selectedMessage: [{ 6104 type: Input 6105 }], 6106 page: [{ 6107 type: Output 6108 }] 6109 }); 6110})(); 6111var DatatableComponent = class { 6112 constructor(scrollbarHelper, dimensionsHelper, cd, element, differs, columnChangesService, configuration) { 6113 this.scrollbarHelper = scrollbarHelper; 6114 this.dimensionsHelper = dimensionsHelper; 6115 this.cd = cd; 6116 this.columnChangesService = columnChangesService; 6117 this.configuration = configuration; 6118 this.selected = []; 6119 this.scrollbarV = false; 6120 this.scrollbarH = false; 6121 this.rowHeight = 30; 6122 this.columnMode = ColumnMode.standard; 6123 this.headerHeight = 30; 6124 this.footerHeight = 0; 6125 this.externalPaging = false; 6126 this.externalSorting = false; 6127 this.loadingIndicator = false; 6128 this.reorderable = true; 6129 this.swapColumns = true; 6130 this.sortType = SortType.single; 6131 this.sorts = []; 6132 this.cssClasses = { 6133 sortAscending: "datatable-icon-up", 6134 sortDescending: "datatable-icon-down", 6135 sortUnset: "datatable-icon-sort-unset", 6136 pagerLeftArrow: "datatable-icon-left", 6137 pagerRightArrow: "datatable-icon-right", 6138 pagerPrevious: "datatable-icon-prev", 6139 pagerNext: "datatable-icon-skip" 6140 }; 6141 this.messages = { 6142 // Message to show when array is presented 6143 // but contains no values 6144 emptyMessage: "No data to display", 6145 // Footer total message 6146 totalMessage: "total", 6147 // Footer selected message 6148 selectedMessage: "selected" 6149 }; 6150 this.groupExpansionDefault = false; 6151 this.selectAllRowsOnPage = false; 6152 this.virtualization = true; 6153 this.summaryRow = false; 6154 this.summaryHeight = 30; 6155 this.summaryPosition = "top"; 6156 this.scroll = new EventEmitter(); 6157 this.activate = new EventEmitter(); 6158 this.select = new EventEmitter(); 6159 this.sort = new EventEmitter(); 6160 this.page = new EventEmitter(); 6161 this.reorder = new EventEmitter(); 6162 this.resize = new EventEmitter(); 6163 this.tableContextmenu = new EventEmitter(false); 6164 this.treeAction = new EventEmitter(); 6165 this.rowCount = 0; 6166 this._offsetX = new BehaviorSubject(0); 6167 this._count = 0; 6168 this._offset = 0; 6169 this._subscriptions = []; 6170 this.rowIdentity = (x) => { 6171 if (this._groupRowsBy) { 6172 return x.key; 6173 } else { 6174 return x; 6175 } 6176 }; 6177 this.element = element.nativeElement; 6178 this.rowDiffer = differs.find({}).create(); 6179 if (this.configuration && this.configuration.messages) { 6180 this.messages = __spreadValues({}, this.configuration.messages); 6181 } 6182 } 6183 /** 6184 * Rows that are displayed in the table. 6185 */ 6186 set rows(val) { 6187 this._rows = val; 6188 if (val) { 6189 this._internalRows = [...val]; 6190 } 6191 if (!this.externalSorting) { 6192 this.sortInternalRows(); 6193 } 6194 this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation)); 6195 this.recalculate(); 6196 if (this._rows && this._groupRowsBy) { 6197 this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy); 6198 } 6199 this.cd.markForCheck(); 6200 } 6201 /** 6202 * Gets the rows. 6203 */ 6204 get rows() { 6205 return this._rows; 6206 } 6207 /** 6208 * This attribute allows the user to set the name of the column to group the data with 6209 */ 6210 set groupRowsBy(val) { 6211 if (val) { 6212 this._groupRowsBy = val; 6213 if (this._rows && this._groupRowsBy) { 6214 this.groupedRows = this.groupArrayBy(this._rows, this._groupRowsBy); 6215 } 6216 } 6217 } 6218 get groupRowsBy() { 6219 return this._groupRowsBy; 6220 } 6221 /** 6222 * Columns to be displayed. 6223 */ 6224 set columns(val) { 6225 if (val) { 6226 this._internalColumns = [...val]; 6227 setColumnDefaults(this._internalColumns); 6228 this.recalculateColumns(); 6229 } 6230 this._columns = val; 6231 } 6232 /** 6233 * Get the columns. 6234 */ 6235 get columns() { 6236 return this._columns; 6237 } 6238 /** 6239 * The page size to be shown. 6240 * Default value: `undefined` 6241 */ 6242 set limit(val) { 6243 this._limit = val; 6244 this.recalculate(); 6245 } 6246 /** 6247 * Gets the limit. 6248 */ 6249 get limit() { 6250 return this._limit; 6251 } 6252 /** 6253 * The total count of all rows. 6254 * Default value: `0` 6255 */ 6256 set count(val) { 6257 this._count = val; 6258 this.recalculate(); 6259 } 6260 /** 6261 * Gets the count. 6262 */ 6263 get count() { 6264 return this._count; 6265 } 6266 /** 6267 * The current offset ( page - 1 ) shown. 6268 * Default value: `0` 6269 */ 6270 set offset(val) { 6271 this._offset = val; 6272 } 6273 get offset() { 6274 return Math.max(Math.min(this._offset, Math.ceil(this.rowCount / this.pageSize) - 1), 0); 6275 } 6276 /** 6277 * CSS class applied if the header height if fixed height. 6278 */ 6279 get isFixedHeader() { 6280 const headerHeight = this.headerHeight; 6281 return typeof headerHeight === "string" ? headerHeight !== "auto" : true; 6282 } 6283 /** 6284 * CSS class applied to the root element if 6285 * the row heights are fixed heights. 6286 */ 6287 get isFixedRow() { 6288 return this.rowHeight !== "auto"; 6289 } 6290 /** 6291 * CSS class applied to root element if 6292 * vertical scrolling is enabled. 6293 */ 6294 get isVertScroll() { 6295 return this.scrollbarV; 6296 } 6297 /** 6298 * CSS class applied to root element if 6299 * virtualization is enabled. 6300 */ 6301 get isVirtualized() { 6302 return this.virtualization; 6303 } 6304 /** 6305 * CSS class applied to the root element 6306 * if the horziontal scrolling is enabled. 6307 */ 6308 get isHorScroll() { 6309 return this.scrollbarH; 6310 } 6311 /** 6312 * CSS class applied to root element is selectable. 6313 */ 6314 get isSelectable() { 6315 return this.selectionType !== void 0; 6316 } 6317 /** 6318 * CSS class applied to root is checkbox selection. 6319 */ 6320 get isCheckboxSelection() { 6321 return this.selectionType === SelectionType.checkbox; 6322 } 6323 /** 6324 * CSS class applied to root if cell selection. 6325 */ 6326 get isCellSelection() { 6327 return this.selectionType === SelectionType.cell; 6328 } 6329 /** 6330 * CSS class applied to root if single select. 6331 */ 6332 get isSingleSelection() { 6333 return this.selectionType === SelectionType.single; 6334 } 6335 /** 6336 * CSS class added to root element if mulit select 6337 */ 6338 get isMultiSelection() { 6339 return this.selectionType === SelectionType.multi; 6340 } 6341 /** 6342 * CSS class added to root element if mulit click select 6343 */ 6344 get isMultiClickSelection() { 6345 return this.selectionType === SelectionType.multiClick; 6346 } 6347 /** 6348 * Column templates gathered from `ContentChildren` 6349 * if described in your markup. 6350 */ 6351 set columnTemplates(val) { 6352 this._columnTemplates = val; 6353 this.translateColumns(val); 6354 } 6355 /** 6356 * Returns the column templates. 6357 */ 6358 get columnTemplates() { 6359 return this._columnTemplates; 6360 } 6361 /** 6362 * Returns if all rows are selected. 6363 */ 6364 get allRowsSelected() { 6365 let allRowsSelected = this.rows && this.selected && this.selected.length === this.rows.length; 6366 if (this.bodyComponent && this.selectAllRowsOnPage) { 6367 const indexes = this.bodyComponent.indexes; 6368 const rowsOnPage = indexes.last - indexes.first; 6369 allRowsSelected = this.selected.length === rowsOnPage; 6370 } 6371 return this.selected && this.rows && this.rows.length !== 0 && allRowsSelected; 6372 } 6373 /** 6374 * Lifecycle hook that is called after data-bound 6375 * properties of a directive are initialized. 6376 */ 6377 ngOnInit() { 6378 this.recalculate(); 6379 } 6380 /** 6381 * Lifecycle hook that is called after a component's 6382 * view has been fully initialized. 6383 */ 6384 ngAfterViewInit() { 6385 if (!this.externalSorting) { 6386 this.sortInternalRows(); 6387 } 6388 if (typeof requestAnimationFrame === "undefined") { 6389 return; 6390 } 6391 requestAnimationFrame(() => { 6392 this.recalculate(); 6393 if (this.externalPaging && this.scrollbarV) { 6394 this.page.emit({ 6395 count: this.count, 6396 pageSize: this.pageSize, 6397 limit: this.limit, 6398 offset: 0 6399 }); 6400 } 6401 }); 6402 } 6403 /** 6404 * Lifecycle hook that is called after a component's 6405 * content has been fully initialized. 6406 */ 6407 ngAfterContentInit() { 6408 this.columnTemplates.changes.subscribe((v) => this.translateColumns(v)); 6409 this.listenForColumnInputChanges(); 6410 } 6411 /** 6412 * Translates the templates to the column objects 6413 */ 6414 translateColumns(val) { 6415 if (val) { 6416 const arr = val.toArray(); 6417 if (arr.length) { 6418 this._internalColumns = translateTemplates(arr); 6419 setColumnDefaults(this._internalColumns); 6420 this.recalculateColumns(); 6421 this.sortInternalRows(); 6422 this.cd.markForCheck(); 6423 } 6424 } 6425 } 6426 /** 6427 * Creates a map with the data grouped by the user choice of grouping index 6428 * 6429 * @param originalArray the original array passed via parameter 6430 * @param groupByIndex the index of the column to group the data by 6431 */ 6432 groupArrayBy(originalArray, groupBy) { 6433 const map = /* @__PURE__ */ new Map(); 6434 let i = 0; 6435 originalArray.forEach((item) => { 6436 const key = item[groupBy]; 6437 if (!map.has(key)) { 6438 map.set(key, [item]); 6439 } else { 6440 map.get(key).push(item); 6441 } 6442 i++; 6443 }); 6444 const addGroup = (key, value) => { 6445 return { 6446 key, 6447 value 6448 }; 6449 }; 6450 return Array.from(map, (x) => addGroup(x[0], x[1])); 6451 } 6452 /* 6453 * Lifecycle hook that is called when Angular dirty checks a directive. 6454 */ 6455 ngDoCheck() { 6456 if (this.rowDiffer.diff(this.rows)) { 6457 if (!this.externalSorting) { 6458 this.sortInternalRows(); 6459 } else { 6460 this._internalRows = [...this.rows]; 6461 } 6462 this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation)); 6463 this.recalculatePages(); 6464 this.cd.markForCheck(); 6465 } 6466 } 6467 /** 6468 * Recalc's the sizes of the grid. 6469 * 6470 * Updated automatically on changes to: 6471 * 6472 * - Columns 6473 * - Rows 6474 * - Paging related 6475 * 6476 * Also can be manually invoked or upon window resize. 6477 */ 6478 recalculate() { 6479 this.recalculateDims(); 6480 this.recalculateColumns(); 6481 this.cd.markForCheck(); 6482 } 6483 /** 6484 * Window resize handler to update sizes. 6485 */ 6486 onWindowResize() { 6487 this.recalculate(); 6488 } 6489 /** 6490 * Recalulcates the column widths based on column width 6491 * distribution mode and scrollbar offsets. 6492 */ 6493 recalculateColumns(columns = this._internalColumns, forceIdx = -1, allowBleed = this.scrollbarH) { 6494 if (!columns) return void 0; 6495 let width = this._innerWidth; 6496 if (this.scrollbarV) { 6497 width = width - this.scrollbarHelper.width; 6498 } 6499 if (this.columnMode === ColumnMode.force) { 6500 forceFillColumnWidths(columns, width, forceIdx, allowBleed); 6501 } else if (this.columnMode === ColumnMode.flex) { 6502 adjustColumnWidths(columns, width); 6503 } 6504 return columns; 6505 } 6506 /** 6507 * Recalculates the dimensions of the table size. 6508 * Internally calls the page size and row count calcs too. 6509 * 6510 */ 6511 recalculateDims() { 6512 const dims = this.dimensionsHelper.getDimensions(this.element); 6513 this._innerWidth = Math.floor(dims.width); 6514 if (this.scrollbarV) { 6515 let height = dims.height; 6516 if (this.headerHeight) height = height - this.headerHeight; 6517 if (this.footerHeight) height = height - this.footerHeight; 6518 this.bodyHeight = height; 6519 } 6520 this.recalculatePages(); 6521 } 6522 /** 6523 * Recalculates the pages after a update. 6524 */ 6525 recalculatePages() { 6526 this.pageSize = this.calcPageSize(); 6527 this.rowCount = this.calcRowCount(); 6528 } 6529 /** 6530 * Body triggered a page event. 6531 */ 6532 onBodyPage({ 6533 offset 6534 }) { 6535 if (this.externalPaging && !this.virtualization) { 6536 return; 6537 } 6538 this.offset = offset; 6539 this.page.emit({ 6540 count: this.count, 6541 pageSize: this.pageSize, 6542 limit: this.limit, 6543 offset: this.offset 6544 }); 6545 } 6546 /** 6547 * The body triggered a scroll event. 6548 */ 6549 onBodyScroll(event) { 6550 this._offsetX.next(event.offsetX); 6551 this.scroll.emit(event); 6552 this.cd.detectChanges(); 6553 } 6554 /** 6555 * The footer triggered a page event. 6556 */ 6557 onFooterPage(event) { 6558 this.offset = event.page - 1; 6559 this.bodyComponent.updateOffsetY(this.offset); 6560 this.page.emit({ 6561 count: this.count, 6562 pageSize: this.pageSize, 6563 limit: this.limit, 6564 offset: this.offset 6565 }); 6566 if (this.selectAllRowsOnPage) { 6567 this.selected = []; 6568 this.select.emit({ 6569 selected: this.selected 6570 }); 6571 } 6572 } 6573 /** 6574 * Recalculates the sizes of the page 6575 */ 6576 calcPageSize(val = this.rows) { 6577 if (this.scrollbarV && this.virtualization) { 6578 const size = Math.ceil(this.bodyHeight / this.rowHeight); 6579 return Math.max(size, 0); 6580 } 6581 if (this.limit !== void 0) { 6582 return this.limit; 6583 } 6584 if (val) { 6585 return val.length; 6586 } 6587 return 0; 6588 } 6589 /** 6590 * Calculates the row count. 6591 */ 6592 calcRowCount(val = this.rows) { 6593 if (!this.externalPaging) { 6594 if (!val) return 0; 6595 if (this.groupedRows) { 6596 return this.groupedRows.length; 6597 } else if (this.treeFromRelation != null && this.treeToRelation != null) { 6598 return this._internalRows.length; 6599 } else { 6600 return val.length; 6601 } 6602 } 6603 return this.count; 6604 } 6605 /** 6606 * The header triggered a contextmenu event. 6607 */ 6608 onColumnContextmenu({ 6609 event, 6610 column 6611 }) { 6612 this.tableContextmenu.emit({ 6613 event, 6614 type: ContextmenuType.header, 6615 content: column 6616 }); 6617 } 6618 /** 6619 * The body triggered a contextmenu event. 6620 */ 6621 onRowContextmenu({ 6622 event, 6623 row 6624 }) { 6625 this.tableContextmenu.emit({ 6626 event, 6627 type: ContextmenuType.body, 6628 content: row 6629 }); 6630 } 6631 /** 6632 * The header triggered a column resize event. 6633 */ 6634 onColumnResize({ 6635 column, 6636 newValue 6637 }) { 6638 if (column === void 0) { 6639 return; 6640 } 6641 let idx; 6642 const cols = this._internalColumns.map((c, i) => { 6643 c = __spreadValues({}, c); 6644 if (c.$$id === column.$$id) { 6645 idx = i; 6646 c.width = newValue; 6647 c.$$oldWidth = newValue; 6648 } 6649 return c; 6650 }); 6651 this.recalculateColumns(cols, idx); 6652 this._internalColumns = cols; 6653 this.resize.emit({ 6654 column, 6655 newValue 6656 }); 6657 } 6658 /** 6659 * The header triggered a column re-order event. 6660 */ 6661 onColumnReorder({ 6662 column, 6663 newValue, 6664 prevValue 6665 }) { 6666 const cols = this._internalColumns.map((c) => { 6667 return __spreadValues({}, c); 6668 }); 6669 if (this.swapColumns) { 6670 const prevCol = cols[newValue]; 6671 cols[newValue] = column; 6672 cols[prevValue] = prevCol; 6673 } else { 6674 if (newValue > prevValue) { 6675 const movedCol = cols[prevValue]; 6676 for (let i = prevValue; i < newValue; i++) { 6677 cols[i] = cols[i + 1]; 6678 } 6679 cols[newValue] = movedCol; 6680 } else { 6681 const movedCol = cols[prevValue]; 6682 for (let i = prevValue; i > newValue; i--) { 6683 cols[i] = cols[i - 1]; 6684 } 6685 cols[newValue] = movedCol; 6686 } 6687 } 6688 this._internalColumns = cols; 6689 this.reorder.emit({ 6690 column, 6691 newValue, 6692 prevValue 6693 }); 6694 } 6695 /** 6696 * The header triggered a column sort event. 6697 */ 6698 onColumnSort(event) { 6699 if (this.selectAllRowsOnPage) { 6700 this.selected = []; 6701 this.select.emit({ 6702 selected: this.selected 6703 }); 6704 } 6705 this.sorts = event.sorts; 6706 if (this.externalSorting === false) { 6707 this.sortInternalRows(); 6708 } 6709 this._internalRows = groupRowsByParents(this._internalRows, optionalGetterForProp(this.treeFromRelation), optionalGetterForProp(this.treeToRelation)); 6710 this.offset = 0; 6711 this.bodyComponent.updateOffsetY(this.offset); 6712 this.sort.emit(event); 6713 } 6714 /** 6715 * Toggle all row selection 6716 */ 6717 onHeaderSelect(event) { 6718 if (this.bodyComponent && this.selectAllRowsOnPage) { 6719 const first = this.bodyComponent.indexes.first; 6720 const last = this.bodyComponent.indexes.last; 6721 const allSelected = this.selected.length === last - first; 6722 this.selected = []; 6723 if (!allSelected) { 6724 this.selected.push(...this._internalRows.slice(first, last)); 6725 } 6726 } else { 6727 const allSelected = this.selected.length === this.rows.length; 6728 this.selected = []; 6729 if (!allSelected) { 6730 this.selected.push(...this.rows); 6731 } 6732 } 6733 this.select.emit({ 6734 selected: this.selected 6735 }); 6736 } 6737 /** 6738 * A row was selected from body 6739 */ 6740 onBodySelect(event) { 6741 this.select.emit(event); 6742 } 6743 /** 6744 * A row was expanded or collapsed for tree 6745 */ 6746 onTreeAction(event) { 6747 const row = event.row; 6748 const rowIndex = this._rows.findIndex((r) => r[this.treeToRelation] === event.row[this.treeToRelation]); 6749 this.treeAction.emit({ 6750 row, 6751 rowIndex 6752 }); 6753 } 6754 ngOnDestroy() { 6755 this._subscriptions.forEach((subscription) => subscription.unsubscribe()); 6756 } 6757 /** 6758 * listen for changes to input bindings of all DataTableColumnDirective and 6759 * trigger the columnTemplates.changes observable to emit 6760 */ 6761 listenForColumnInputChanges() { 6762 this._subscriptions.push(this.columnChangesService.columnInputChanges$.subscribe(() => { 6763 if (this.columnTemplates) { 6764 this.columnTemplates.notifyOnChanges(); 6765 } 6766 })); 6767 } 6768 sortInternalRows() { 6769 this._internalRows = sortRows(this._internalRows, this._internalColumns, this.sorts); 6770 } 6771}; 6772DatatableComponent.\u0275fac = function DatatableComponent_Factory(__ngFactoryType__) { 6773 return new (__ngFactoryType__ || DatatableComponent)(\u0275\u0275directiveInject(ScrollbarHelper, 4), \u0275\u0275directiveInject(DimensionsHelper, 4), \u0275\u0275directiveInject(ChangeDetectorRef), \u0275\u0275directiveInject(ElementRef), \u0275\u0275directiveInject(KeyValueDiffers), \u0275\u0275directiveInject(ColumnChangesService), \u0275\u0275directiveInject("configuration", 8)); 6774}; 6775DatatableComponent.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ 6776 type: DatatableComponent, 6777 selectors: [["ngx-datatable"]], 6778 contentQueries: function DatatableComponent_ContentQueries(rf, ctx, dirIndex) { 6779 if (rf & 1) { 6780 \u0275\u0275contentQuery(dirIndex, DatatableRowDetailDirective, 5); 6781 \u0275\u0275contentQuery(dirIndex, DatatableGroupHeaderDirective, 5); 6782 \u0275\u0275contentQuery(dirIndex, DatatableFooterDirective, 5); 6783 \u0275\u0275contentQuery(dirIndex, DataTableColumnDirective, 4); 6784 } 6785 if (rf & 2) { 6786 let _t; 6787 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.rowDetail = _t.first); 6788 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.groupHeader = _t.first); 6789 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.footer = _t.first); 6790 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.columnTemplates = _t); 6791 } 6792 }, 6793 viewQuery: function DatatableComponent_Query(rf, ctx) { 6794 if (rf & 1) { 6795 \u0275\u0275viewQuery(DataTableBodyComponent, 5); 6796 \u0275\u0275viewQuery(DataTableHeaderComponent, 5); 6797 } 6798 if (rf & 2) { 6799 let _t; 6800 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.bodyComponent = _t.first); 6801 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.headerComponent = _t.first); 6802 } 6803 }, 6804 hostAttrs: [1, "ngx-datatable"], 6805 hostVars: 22, 6806 hostBindings: function DatatableComponent_HostBindings(rf, ctx) { 6807 if (rf & 1) { 6808 \u0275\u0275listener("resize", function DatatableComponent_resize_HostBindingHandler() { 6809 return ctx.onWindowResize(); 6810 }, false, \u0275\u0275resolveWindow); 6811 } 6812 if (rf & 2) { 6813 \u0275\u0275classProp("fixed-header", ctx.isFixedHeader)("fixed-row", ctx.isFixedRow)("scroll-vertical", ctx.isVertScroll)("virtualized", ctx.isVirtualized)("scroll-horz", ctx.isHorScroll)("selectable", ctx.isSelectable)("checkbox-selection", ctx.isCheckboxSelection)("cell-selection", ctx.isCellSelection)("single-selection", ctx.isSingleSelection)("multi-selection", ctx.isMultiSelection)("multi-click-selection", ctx.isMultiClickSelection); 6814 } 6815 }, 6816 inputs: { 6817 targetMarkerTemplate: "targetMarkerTemplate", 6818 rows: "rows", 6819 groupRowsBy: "groupRowsBy", 6820 groupedRows: "groupedRows", 6821 columns: "columns", 6822 selected: "selected", 6823 scrollbarV: "scrollbarV", 6824 scrollbarH: "scrollbarH", 6825 rowHeight: "rowHeight", 6826 columnMode: "columnMode", 6827 headerHeight: "headerHeight", 6828 footerHeight: "footerHeight", 6829 externalPaging: "externalPaging", 6830 externalSorting: "externalSorting", 6831 limit: "limit", 6832 count: "count", 6833 offset: "offset", 6834 loadingIndicator: "loadingIndicator", 6835 selectionType: "selectionType", 6836 reorderable: "reorderable", 6837 swapColumns: "swapColumns", 6838 sortType: "sortType", 6839 sorts: "sorts", 6840 cssClasses: "cssClasses", 6841 messages: "messages", 6842 rowClass: "rowClass", 6843 selectCheck: "selectCheck", 6844 displayCheck: "displayCheck", 6845 groupExpansionDefault: "groupExpansionDefault", 6846 trackByProp: "trackByProp", 6847 selectAllRowsOnPage: "selectAllRowsOnPage", 6848 virtualization: "virtualization", 6849 treeFromRelation: "treeFromRelation", 6850 treeToRelation: "treeToRelation", 6851 summaryRow: "summaryRow", 6852 summaryHeight: "summaryHeight", 6853 summaryPosition: "summaryPosition", 6854 rowIdentity: "rowIdentity" 6855 }, 6856 outputs: { 6857 scroll: "scroll", 6858 activate: "activate", 6859 select: "select", 6860 sort: "sort", 6861 page: "page", 6862 reorder: "reorder", 6863 resize: "resize", 6864 tableContextmenu: "tableContextmenu", 6865 treeAction: "treeAction" 6866 }, 6867 decls: 5, 6868 vars: 34, 6869 consts: [["role", "table", "visibilityObserver", "", 3, "visible"], ["role", "rowgroup", 3, "sorts", "sortType", "scrollbarH", "innerWidth", "offsetX", "dealsWithGroup", "columns", "headerHeight", "reorderable", "targetMarkerTemplate", "sortAscendingIcon", "sortDescendingIcon", "sortUnsetIcon", "allRowsSelected", "selectionType", "sort", "resize", "reorder", "select", "columnContextmenu", 4, "ngIf"], ["role", "rowgroup", 3, "page", "activate", "rowContextmenu", "select", "scroll", "treeAction", "groupRowsBy", "groupedRows", "rows", "groupExpansionDefault", "scrollbarV", "scrollbarH", "virtualization", "loadingIndicator", "externalPaging", "rowHeight", "rowCount", "offset", "trackByProp", "columns", "pageSize", "offsetX", "rowDetail", "groupHeader", "selected", "innerWidth", "bodyHeight", "selectionType", "emptyMessage", "rowIdentity", "rowClass", "selectCheck", "displayCheck", "summaryRow", "summaryHeight", "summaryPosition"], [3, "rowCount", "pageSize", "offset", "footerHeight", "footerTemplate", "totalMessage", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "selectedCount", "selectedMessage", "pagerNextIcon", "page", 4, "ngIf"], ["role", "rowgroup", 3, "sort", "resize", "reorder", "select", "columnContextmenu", "sorts", "sortType", "scrollbarH", "innerWidth", "offsetX", "dealsWithGroup", "columns", "headerHeight", "reorderable", "targetMarkerTemplate", "sortAscendingIcon", "sortDescendingIcon", "sortUnsetIcon", "allRowsSelected", "selectionType"], [3, "page", "rowCount", "pageSize", "offset", "footerHeight", "footerTemplate", "totalMessage", "pagerLeftArrowIcon", "pagerRightArrowIcon", "pagerPreviousIcon", "selectedCount", "selectedMessage", "pagerNextIcon"]], 6870 template: function DatatableComponent_Template(rf, ctx) { 6871 if (rf & 1) { 6872 \u0275\u0275elementStart(0, "div", 0); 6873 \u0275\u0275listener("visible", function DatatableComponent_Template_div_visible_0_listener() { 6874 return ctx.recalculate(); 6875 }); 6876 \u0275\u0275template(1, DatatableComponent_datatable_header_1_Template, 2, 17, "datatable-header", 1); 6877 \u0275\u0275elementStart(2, "datatable-body", 2); 6878 \u0275\u0275pipe(3, "async"); 6879 \u0275\u0275listener("page", function DatatableComponent_Template_datatable_body_page_2_listener($event) { 6880 return ctx.onBodyPage($event); 6881 })("activate", function DatatableComponent_Template_datatable_body_activate_2_listener($event) { 6882 return ctx.activate.emit($event); 6883 })("rowContextmenu", function DatatableComponent_Template_datatable_body_rowContextmenu_2_listener($event) { 6884 return ctx.onRowContextmenu($event); 6885 })("select", function DatatableComponent_Template_datatable_body_select_2_listener($event) { 6886 return ctx.onBodySelect($event); 6887 })("scroll", function DatatableComponent_Template_datatable_body_scroll_2_listener($event) { 6888 return ctx.onBodyScroll($event); 6889 })("treeAction", function DatatableComponent_Template_datatable_body_treeAction_2_listener($event) { 6890 return ctx.onTreeAction($event); 6891 }); 6892 \u0275\u0275elementEnd(); 6893 \u0275\u0275template(4, DatatableComponent_datatable_footer_4_Template, 1, 12, "datatable-footer", 3); 6894 \u0275\u0275elementEnd(); 6895 } 6896 if (rf & 2) { 6897 \u0275\u0275advance(); 6898 \u0275\u0275property("ngIf", ctx.headerHeight); 6899 \u0275\u0275advance(); 6900 \u0275\u0275property("groupRowsBy", ctx.groupRowsBy)("groupedRows", ctx.groupedRows)("rows", ctx._internalRows)("groupExpansionDefault", ctx.groupExpansionDefault)("scrollbarV", ctx.scrollbarV)("scrollbarH", ctx.scrollbarH)("virtualization", ctx.virtualization)("loadingIndicator", ctx.loadingIndicator)("externalPaging", ctx.externalPaging)("rowHeight", ctx.rowHeight)("rowCount", ctx.rowCount)("offset", ctx.offset)("trackByProp", ctx.trackByProp)("columns", ctx._internalColumns)("pageSize", ctx.pageSize)("offsetX", \u0275\u0275pipeBind1(3, 32, ctx._offsetX))("rowDetail", ctx.rowDetail)("groupHeader", ctx.groupHeader)("selected", ctx.selected)("innerWidth", ctx._innerWidth)("bodyHeight", ctx.bodyHeight)("selectionType", ctx.selectionType)("emptyMessage", ctx.messages.emptyMessage)("rowIdentity", ctx.rowIdentity)("rowClass", ctx.rowClass)("selectCheck", ctx.selectCheck)("displayCheck", ctx.displayCheck)("summaryRow", ctx.summaryRow)("summaryHeight", ctx.summaryHeight)("summaryPosition", ctx.summaryPosition); 6901 \u0275\u0275advance(2); 6902 \u0275\u0275property("ngIf", ctx.footerHeight); 6903 } 6904 }, 6905 dependencies: [DataTableHeaderComponent, DataTableBodyComponent, DataTableFooterComponent, VisibilityDirective, NgIf, AsyncPipe], 6906 styles: [".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;transform:translate(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable *:before,.ngx-datatable *:after{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-header-inner{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}\n"], 6907 encapsulation: 2, 6908 changeDetection: 0 6909}); 6910__decorate([throttleable(5)], DatatableComponent.prototype, "onWindowResize", null); 6911(() => { 6912 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DatatableComponent, [{ 6913 type: Component, 6914 args: [{ 6915 selector: "ngx-datatable", 6916 changeDetection: ChangeDetectionStrategy.OnPush, 6917 encapsulation: ViewEncapsulation$1.None, 6918 host: { 6919 class: "ngx-datatable" 6920 }, 6921 template: '<div role="table" visibilityObserver (visible)="recalculate()">\n <datatable-header\n role="rowgroup"\n *ngIf="headerHeight"\n [sorts]="sorts"\n [sortType]="sortType"\n [scrollbarH]="scrollbarH"\n [innerWidth]="_innerWidth"\n [offsetX]="_offsetX | async"\n [dealsWithGroup]="groupedRows !== undefined"\n [columns]="_internalColumns"\n [headerHeight]="headerHeight"\n [reorderable]="reorderable"\n [targetMarkerTemplate]="targetMarkerTemplate"\n [sortAscendingIcon]="cssClasses.sortAscending"\n [sortDescendingIcon]="cssClasses.sortDescending"\n [sortUnsetIcon]="cssClasses.sortUnset"\n [allRowsSelected]="allRowsSelected"\n [selectionType]="selectionType"\n (sort)="onColumnSort($event)"\n (resize)="onColumnResize($event)"\n (reorder)="onColumnReorder($event)"\n (select)="onHeaderSelect($event)"\n (columnContextmenu)="onColumnContextmenu($event)"\n >\n </datatable-header>\n <datatable-body\n role="rowgroup"\n [groupRowsBy]="groupRowsBy"\n [groupedRows]="groupedRows"\n [rows]="_internalRows"\n [groupExpansionDefault]="groupExpansionDefault"\n [scrollbarV]="scrollbarV"\n [scrollbarH]="scrollbarH"\n [virtualization]="virtualization"\n [loadingIndicator]="loadingIndicator"\n [externalPaging]="externalPaging"\n [rowHeight]="rowHeight"\n [rowCount]="rowCount"\n [offset]="offset"\n [trackByProp]="trackByProp"\n [columns]="_internalColumns"\n [pageSize]="pageSize"\n [offsetX]="_offsetX | async"\n [rowDetail]="rowDetail"\n [groupHeader]="groupHeader"\n [selected]="selected"\n [innerWidth]="_innerWidth"\n [bodyHeight]="bodyHeight"\n [selectionType]="selectionType"\n [emptyMessage]="messages.emptyMessage"\n [rowIdentity]="rowIdentity"\n [rowClass]="rowClass"\n [selectCheck]="selectCheck"\n [displayCheck]="displayCheck"\n [summaryRow]="summaryRow"\n [summaryHeight]="summaryHeight"\n [summaryPosition]="summaryPosition"\n (page)="onBodyPage($event)"\n (activate)="activate.emit($event)"\n (rowContextmenu)="onRowContextmenu($event)"\n (select)="onBodySelect($event)"\n (scroll)="onBodyScroll($event)"\n (treeAction)="onTreeAction($event)"\n >\n </datatable-body>\n <datatable-footer\n *ngIf="footerHeight"\n [rowCount]="rowCount"\n [pageSize]="pageSize"\n [offset]="offset"\n [footerHeight]="footerHeight"\n [footerTemplate]="footer"\n [totalMessage]="messages.totalMessage"\n [pagerLeftArrowIcon]="cssClasses.pagerLeftArrow"\n [pagerRightArrowIcon]="cssClasses.pagerRightArrow"\n [pagerPreviousIcon]="cssClasses.pagerPrevious"\n [selectedCount]="selected.length"\n [selectedMessage]="!!selectionType && messages.selectedMessage"\n [pagerNextIcon]="cssClasses.pagerNext"\n (page)="onFooterPage($event)"\n >\n </datatable-footer>\n</div>\n', 6922 styles: [".ngx-datatable{display:block;overflow:hidden;justify-content:center;position:relative;transform:translate(0)}.ngx-datatable [hidden]{display:none!important}.ngx-datatable *,.ngx-datatable *:before,.ngx-datatable *:after{box-sizing:border-box}.ngx-datatable.scroll-vertical .datatable-body{overflow-y:auto}.ngx-datatable.scroll-vertical.virtualized .datatable-body .datatable-row-wrapper{position:absolute}.ngx-datatable.scroll-horz .datatable-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner{white-space:nowrap}.ngx-datatable.fixed-header .datatable-header .datatable-header-inner .datatable-header-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngx-datatable.fixed-row .datatable-scroll,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row{white-space:nowrap}.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-cell,.ngx-datatable.fixed-row .datatable-scroll .datatable-body-row .datatable-body-group-cell{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.ngx-datatable .datatable-body-row,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-header-inner{display:flex;flex-direction:row;-o-flex-flow:row;flex-flow:row}.ngx-datatable .datatable-body-cell,.ngx-datatable .datatable-header-cell{overflow-x:hidden;vertical-align:top;display:inline-block;line-height:1.625}.ngx-datatable .datatable-body-cell:focus,.ngx-datatable .datatable-header-cell:focus{outline:none}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-right{z-index:9}.ngx-datatable .datatable-row-left,.ngx-datatable .datatable-row-center,.ngx-datatable .datatable-row-group,.ngx-datatable .datatable-row-right{position:relative}.ngx-datatable .datatable-header{display:block;overflow:hidden}.ngx-datatable .datatable-header .datatable-header-inner{align-items:stretch;-webkit-align-items:stretch}.ngx-datatable .datatable-header .datatable-header-cell{position:relative;display:inline-block}.ngx-datatable .datatable-header .datatable-header-cell.sortable .datatable-header-cell-wrapper{cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell.longpress .datatable-header-cell-wrapper{cursor:move}.ngx-datatable .datatable-header .datatable-header-cell .sort-btn{line-height:100%;vertical-align:middle;display:inline-block;cursor:pointer}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell .resize-handle--not-resizable{display:inline-block;position:absolute;right:0;top:0;bottom:0;width:5px;padding:0 4px;visibility:hidden}.ngx-datatable .datatable-header .datatable-header-cell .resize-handle{cursor:ew-resize}.ngx-datatable .datatable-header .datatable-header-cell.resizeable:hover .resize-handle,.ngx-datatable .datatable-header .datatable-header-cell:hover .resize-handle--not-resizable{visibility:visible}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker{position:absolute;top:0;bottom:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromLeft{right:0}.ngx-datatable .datatable-header .datatable-header-cell .targetMarker.dragFromRight{left:0}.ngx-datatable .datatable-header .datatable-header-cell .datatable-header-cell-template-wrap{height:inherit}.ngx-datatable .datatable-body{position:relative;z-index:10;display:block}.ngx-datatable .datatable-body .datatable-scroll{display:inline-block}.ngx-datatable .datatable-body .datatable-row-detail{overflow-y:hidden}.ngx-datatable .datatable-body .datatable-row-wrapper{display:flex;flex-direction:column}.ngx-datatable .datatable-body .datatable-body-row{outline:none}.ngx-datatable .datatable-body .datatable-body-row>div{display:flex}.ngx-datatable .datatable-footer{display:block;width:100%;overflow:auto}.ngx-datatable .datatable-footer .datatable-footer-inner{display:flex;align-items:center;width:100%}.ngx-datatable .datatable-footer .selected-count .page-count{flex:1 1 40%}.ngx-datatable .datatable-footer .selected-count .datatable-pager{flex:1 1 60%}.ngx-datatable .datatable-footer .page-count{flex:1 1 20%}.ngx-datatable .datatable-footer .datatable-pager{flex:1 1 80%;text-align:right}.ngx-datatable .datatable-footer .datatable-pager .pager,.ngx-datatable .datatable-footer .datatable-pager .pager li{padding:0;margin:0;display:inline-block;list-style:none}.ngx-datatable .datatable-footer .datatable-pager .pager li,.ngx-datatable .datatable-footer .datatable-pager .pager li a{outline:none}.ngx-datatable .datatable-footer .datatable-pager .pager li a{cursor:pointer;display:inline-block}.ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a{cursor:not-allowed}\n"] 6923 }] 6924 }], function() { 6925 return [{ 6926 type: ScrollbarHelper, 6927 decorators: [{ 6928 type: SkipSelf 6929 }] 6930 }, { 6931 type: DimensionsHelper, 6932 decorators: [{ 6933 type: SkipSelf 6934 }] 6935 }, { 6936 type: ChangeDetectorRef 6937 }, { 6938 type: ElementRef 6939 }, { 6940 type: KeyValueDiffers 6941 }, { 6942 type: ColumnChangesService 6943 }, { 6944 type: void 0, 6945 decorators: [{ 6946 type: Optional 6947 }, { 6948 type: Inject, 6949 args: ["configuration"] 6950 }] 6951 }]; 6952 }, { 6953 targetMarkerTemplate: [{ 6954 type: Input 6955 }], 6956 rows: [{ 6957 type: Input 6958 }], 6959 groupRowsBy: [{ 6960 type: Input 6961 }], 6962 groupedRows: [{ 6963 type: Input 6964 }], 6965 columns: [{ 6966 type: Input 6967 }], 6968 selected: [{ 6969 type: Input 6970 }], 6971 scrollbarV: [{ 6972 type: Input 6973 }], 6974 scrollbarH: [{ 6975 type: Input 6976 }], 6977 rowHeight: [{ 6978 type: Input 6979 }], 6980 columnMode: [{ 6981 type: Input 6982 }], 6983 headerHeight: [{ 6984 type: Input 6985 }], 6986 footerHeight: [{ 6987 type: Input 6988 }], 6989 externalPaging: [{ 6990 type: Input 6991 }], 6992 externalSorting: [{ 6993 type: Input 6994 }], 6995 limit: [{ 6996 type: Input 6997 }], 6998 count: [{ 6999 type: Input 7000 }], 7001 offset: [{ 7002 type: Input 7003 }], 7004 loadingIndicator: [{ 7005 type: Input 7006 }], 7007 selectionType: [{ 7008 type: Input 7009 }], 7010 reorderable: [{ 7011 type: Input 7012 }], 7013 swapColumns: [{ 7014 type: Input 7015 }], 7016 sortType: [{ 7017 type: Input 7018 }], 7019 sorts: [{ 7020 type: Input 7021 }], 7022 cssClasses: [{ 7023 type: Input 7024 }], 7025 messages: [{ 7026 type: Input 7027 }], 7028 rowClass: [{ 7029 type: Input 7030 }], 7031 selectCheck: [{ 7032 type: Input 7033 }], 7034 displayCheck: [{ 7035 type: Input 7036 }], 7037 groupExpansionDefault: [{ 7038 type: Input 7039 }], 7040 trackByProp: [{ 7041 type: Input 7042 }], 7043 selectAllRowsOnPage: [{ 7044 type: Input 7045 }], 7046 virtualization: [{ 7047 type: Input 7048 }], 7049 treeFromRelation: [{ 7050 type: Input 7051 }], 7052 treeToRelation: [{ 7053 type: Input 7054 }], 7055 summaryRow: [{ 7056 type: Input 7057 }], 7058 summaryHeight: [{ 7059 type: Input 7060 }], 7061 summaryPosition: [{ 7062 type: Input 7063 }], 7064 scroll: [{ 7065 type: Output 7066 }], 7067 activate: [{ 7068 type: Output 7069 }], 7070 select: [{ 7071 type: Output 7072 }], 7073 sort: [{ 7074 type: Output 7075 }], 7076 page: [{ 7077 type: Output 7078 }], 7079 reorder: [{ 7080 type: Output 7081 }], 7082 resize: [{ 7083 type: Output 7084 }], 7085 tableContextmenu: [{ 7086 type: Output 7087 }], 7088 treeAction: [{ 7089 type: Output 7090 }], 7091 isFixedHeader: [{ 7092 type: HostBinding, 7093 args: ["class.fixed-header"] 7094 }], 7095 isFixedRow: [{ 7096 type: HostBinding, 7097 args: ["class.fixed-row"] 7098 }], 7099 isVertScroll: [{ 7100 type: HostBinding, 7101 args: ["class.scroll-vertical"] 7102 }], 7103 isVirtualized: [{ 7104 type: HostBinding, 7105 args: ["class.virtualized"] 7106 }], 7107 isHorScroll: [{ 7108 type: HostBinding, 7109 args: ["class.scroll-horz"] 7110 }], 7111 isSelectable: [{ 7112 type: HostBinding, 7113 args: ["class.selectable"] 7114 }], 7115 isCheckboxSelection: [{ 7116 type: HostBinding, 7117 args: ["class.checkbox-selection"] 7118 }], 7119 isCellSelection: [{ 7120 type: HostBinding, 7121 args: ["class.cell-selection"] 7122 }], 7123 isSingleSelection: [{ 7124 type: HostBinding, 7125 args: ["class.single-selection"] 7126 }], 7127 isMultiSelection: [{ 7128 type: HostBinding, 7129 args: ["class.multi-selection"] 7130 }], 7131 isMultiClickSelection: [{ 7132 type: HostBinding, 7133 args: ["class.multi-click-selection"] 7134 }], 7135 columnTemplates: [{ 7136 type: ContentChildren, 7137 args: [DataTableColumnDirective] 7138 }], 7139 rowDetail: [{ 7140 type: ContentChild, 7141 args: [DatatableRowDetailDirective] 7142 }], 7143 groupHeader: [{ 7144 type: ContentChild, 7145 args: [DatatableGroupHeaderDirective] 7146 }], 7147 footer: [{ 7148 type: ContentChild, 7149 args: [DatatableFooterDirective] 7150 }], 7151 bodyComponent: [{ 7152 type: ViewChild, 7153 args: [DataTableBodyComponent] 7154 }], 7155 headerComponent: [{ 7156 type: ViewChild, 7157 args: [DataTableHeaderComponent] 7158 }], 7159 rowIdentity: [{ 7160 type: Input 7161 }], 7162 onWindowResize: [{ 7163 type: HostListener, 7164 args: ["window:resize"] 7165 }] 7166 }); 7167})(); 7168var NgxDatatableModule = class _NgxDatatableModule { 7169 /** 7170 * Configure global configuration via INgxDatatableConfig 7171 * @param configuration 7172 */ 7173 static forRoot(configuration) { 7174 return { 7175 ngModule: _NgxDatatableModule, 7176 providers: [{ 7177 provide: "configuration", 7178 useValue: configuration 7179 }] 7180 }; 7181 } 7182}; 7183NgxDatatableModule.\u0275fac = function NgxDatatableModule_Factory(__ngFactoryType__) { 7184 return new (__ngFactoryType__ || NgxDatatableModule)(); 7185}; 7186NgxDatatableModule.\u0275mod = /* @__PURE__ */ \u0275\u0275defineNgModule({ 7187 type: NgxDatatableModule 7188}); 7189NgxDatatableModule.\u0275inj = /* @__PURE__ */ \u0275\u0275defineInjector({ 7190 providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService], 7191 imports: [[CommonModule]] 7192}); 7193(() => { 7194 (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgxDatatableModule, [{ 7195 type: NgModule, 7196 args: [{ 7197 imports: [CommonModule], 7198 providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService], 7199 declarations: [DataTableFooterTemplateDirective, VisibilityDirective, DraggableDirective, ResizeableDirective, OrderableDirective, LongPressDirective, ScrollerComponent, DatatableComponent, DataTableColumnDirective, DataTableHeaderComponent, DataTableHeaderCellComponent, DataTableBodyComponent, DataTableFooterComponent, DataTablePagerComponent, ProgressBarComponent, DataTableBodyRowComponent, DataTableRowWrapperComponent, DatatableRowDetailDirective, DatatableGroupHeaderDirective, DatatableRowDetailTemplateDirective, DataTableBodyCellComponent, DataTableSelectionComponent, DataTableColumnHeaderDirective, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DatatableFooterDirective, DatatableGroupHeaderTemplateDirective, DataTableSummaryRowComponent], 7200 exports: [DatatableComponent, DatatableRowDetailDirective, DatatableGroupHeaderDirective, DatatableRowDetailTemplateDirective, DataTableColumnDirective, DataTableColumnHeaderDirective, DataTableColumnCellDirective, DataTableColumnCellTreeToggle, DataTableFooterTemplateDirective, DatatableFooterDirective, DataTablePagerComponent, DatatableGroupHeaderTemplateDirective] 7201 }] 7202 }], null, null); 7203})(); 7204var ClickType; 7205(function(ClickType2) { 7206 ClickType2["single"] = "single"; 7207 ClickType2["double"] = "double"; 7208})(ClickType || (ClickType = {})); 7209if (typeof document !== "undefined" && !document.elementsFromPoint) { 7210 document.elementsFromPoint = elementsFromPoint; 7211} 7212function elementsFromPoint(x, y) { 7213 const elements = []; 7214 const previousPointerEvents = []; 7215 let current; 7216 let i; 7217 let d; 7218 while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1 && current != null) { 7219 elements.push(current); 7220 previousPointerEvents.push({ 7221 value: current.style.getPropertyValue("pointer-events"), 7222 priority: current.style.getPropertyPriority("pointer-events") 7223 }); 7224 current.style.setProperty("pointer-events", "none", "important"); 7225 } 7226 for (i = previousPointerEvents.length; d = previousPointerEvents[--i]; ) { 7227 elements[i].style.setProperty("pointer-events", d.value ? d.value : "", d.priority); 7228 } 7229 return elements; 7230} 7231
7232// src/interfaces/table/table.interface.ts 7233var SortDirection2; 7234(function(SortDirection3) { 7235 SortDirection3["ASC"] = "asc"; 7236 SortDirection3["DESC"] = "desc"; 7237})(SortDirection2 || (SortDirection2 = {})); 7238
7239// src/app/shared/components/table/table.component.ts 7240var _c02 = ["table"]; 7241var _c12 = () => ({ emptyMessage: "Sem dados.", totalMessage: "Total", selectedMessage: "Selecionado" }); 7242var _c22 = (a0) => ({ "deleted-row": a0 }); 7243var _c32 = (a0) => ({ "disabled-increase": a0 }); 7244var _c42 = (a0, a1, a2, a3) => ({ "background-color": a0, color: a1, "font-size": a2, "font-weight": a3 }); 7245function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_ng_container_1_div_4_Template(rf, ctx) { 7246 if (rf & 1) { 7247 \u0275\u0275element(0, "div", 22); 7248 \u0275\u0275pipe(1, "translate"); 7249 } 7250 if (rf & 2) { 7251 \u0275\u0275property("matTooltip", \u0275\u0275pipeBind1(1, 1, "OP Opened")); 7252 } 7253} 7254function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_ng_container_1_Template(rf, ctx) { 7255 if (rf & 1) { 7256 \u0275\u0275elementContainerStart(0); 7257 \u0275\u0275elementStart(1, "div", 20); 7258 \u0275\u0275text(2); 7259 \u0275\u0275pipe(3, "translate"); 7260 \u0275\u0275elementEnd(); 7261 \u0275\u0275template(4, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_ng_container_1_div_4_Template, 2, 3, "div", 21); 7262 \u0275\u0275elementContainerEnd(); 7263 } 7264 if (rf & 2) { 7265 const badge_r2 = \u0275\u0275nextContext().$implicit; 7266 const ctx_r2 = \u0275\u0275nextContext(2); 7267 const value_r4 = ctx_r2.value; 7268 const row_r5 = ctx_r2.row; 7269 const ctx_r5 = \u0275\u0275nextContext(3); 7270 \u0275\u0275advance(); 7271 \u0275\u0275classMap(ctx_r5.getBadgeClass(badge_r2, value_r4)); 7272 \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(7, _c22, row_r5 == null ? null : row_r5.isDeleted)); 7273 \u0275\u0275advance(); 7274 \u0275\u0275textInterpolate1(" ", \u0275\u0275pipeBind1(3, 5, ctx_r5.getBadgeValue(badge_r2, value_r4)), " "); 7275 \u0275\u0275advance(2); 7276 \u0275\u0275property("ngIf", (row_r5 == null ? null : row_r5.innerFlowStatus == null ? null : row_r5.innerFlowStatus.internalStatus) === "OP_OPENED"); 7277 } 7278} 7279function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_Template(rf, ctx) { 7280 if (rf & 1) { 7281 \u0275\u0275elementContainerStart(0); 7282 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_ng_container_1_Template, 5, 9, "ng-container", 18); 7283 \u0275\u0275elementContainerEnd(); 7284 } 7285 if (rf & 2) { 7286 const badge_r2 = ctx.$implicit; 7287 \u0275\u0275nextContext(2); 7288 const defaultColumn_r7 = \u0275\u0275reference(2); 7289 const column_r8 = \u0275\u0275nextContext(2).$implicit; 7290 \u0275\u0275advance(); 7291 \u0275\u0275property("ngIf", column_r8.prop === badge_r2.prop)("ngIfElse", defaultColumn_r7); 7292 } 7293} 7294function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_ng_container_2_Template(rf, ctx) { 7295 if (rf & 1) { 7296 \u0275\u0275elementContainerStart(0); 7297 \u0275\u0275namespaceSVG(); 7298 \u0275\u0275elementStart(1, "svg", 24); 7299 \u0275\u0275element(2, "path", 25); 7300 \u0275\u0275elementEnd(); 7301 \u0275\u0275elementContainerEnd(); 7302 } 7303} 7304function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_ng_template_3_Template(rf, ctx) { 7305 if (rf & 1) { 7306 \u0275\u0275namespaceSVG(); 7307 \u0275\u0275elementStart(0, "svg", 24); 7308 \u0275\u0275element(1, "path", 26); 7309 \u0275\u0275elementEnd(); 7310 } 7311} 7312function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_Template(rf, ctx) { 7313 if (rf & 1) { 7314 \u0275\u0275elementContainerStart(0); 7315 \u0275\u0275elementStart(1, "div", 23); 7316 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_ng_container_2_Template, 3, 0, "ng-container", 18)(3, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_ng_template_3_Template, 2, 0, "ng-template", null, 3, \u0275\u0275templateRefExtractor); 7317 \u0275\u0275elementEnd(); 7318 \u0275\u0275elementContainerEnd(); 7319 } 7320 if (rf & 2) { 7321 const iconExpired_r9 = \u0275\u0275reference(4); 7322 const icon_r10 = \u0275\u0275nextContext().$implicit; 7323 const value_r4 = \u0275\u0275nextContext(3).value; 7324 const ctx_r5 = \u0275\u0275nextContext(3); 7325 \u0275\u0275advance(2); 7326 \u0275\u0275property("ngIf", ctx_r5.getIconName(icon_r10, value_r4) === "icon-active")("ngIfElse", iconExpired_r9); 7327 } 7328} 7329function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_Template(rf, ctx) { 7330 if (rf & 1) { 7331 \u0275\u0275elementContainerStart(0); 7332 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_ng_container_1_Template, 5, 2, "ng-container", 19); 7333 \u0275\u0275elementContainerEnd(); 7334 } 7335 if (rf & 2) { 7336 const icon_r10 = ctx.$implicit; 7337 const column_r8 = \u0275\u0275nextContext(5).$implicit; 7338 \u0275\u0275advance(); 7339 \u0275\u0275property("ngIf", column_r8.prop === icon_r10.prop); 7340 } 7341} 7342function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_Template(rf, ctx) { 7343 if (rf & 1) { 7344 \u0275\u0275elementContainerStart(0); 7345 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_ng_container_1_Template, 2, 1, "ng-container", 8); 7346 \u0275\u0275elementContainerEnd(); 7347 } 7348 if (rf & 2) { 7349 const ctx_r5 = \u0275\u0275nextContext(5); 7350 \u0275\u0275advance(); 7351 \u0275\u0275property("ngForOf", ctx_r5.tableIcons); 7352 } 7353} 7354function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_Template(rf, ctx) { 7355 if (rf & 1) { 7356 \u0275\u0275elementContainerStart(0); 7357 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_1_Template, 2, 2, "ng-container", 8)(2, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_ng_container_2_Template, 2, 1, "ng-container", 19); 7358 \u0275\u0275elementContainerEnd(); 7359 } 7360 if (rf & 2) { 7361 const ctx_r5 = \u0275\u0275nextContext(4); 7362 \u0275\u0275advance(); 7363 \u0275\u0275property("ngForOf", ctx_r5.tableBadges); 7364 \u0275\u0275advance(); 7365 \u0275\u0275property("ngIf", ctx_r5.tableIcons && ctx_r5.tableIcons.length > 0); 7366 } 7367} 7368function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_container_0_Template(rf, ctx) { 7369 if (rf & 1) { 7370 \u0275\u0275elementContainerStart(0); 7371 \u0275\u0275element(1, "span", 27); 7372 \u0275\u0275elementContainerEnd(); 7373 } 7374 if (rf & 2) { 7375 const ctx_r2 = \u0275\u0275nextContext(2); 7376 const value_r4 = ctx_r2.value; 7377 const row_r5 = ctx_r2.row; 7378 \u0275\u0275advance(); 7379 \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(2, _c22, row_r5 == null ? null : row_r5.isDeleted))("innerHTML", value_r4, \u0275\u0275sanitizeHtml); 7380 } 7381} 7382function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_div_2_Template(rf, ctx) { 7383 if (rf & 1) { 7384 \u0275\u0275elementStart(0, "div", 30)(1, "div", 31); 7385 \u0275\u0275namespaceSVG(); 7386 \u0275\u0275elementStart(2, "svg", 32); 7387 \u0275\u0275element(3, "path", 33); 7388 \u0275\u0275elementEnd()(); 7389 \u0275\u0275namespaceHTML(); 7390 \u0275\u0275element(4, "img", 34); 7391 \u0275\u0275elementEnd(); 7392 } 7393 if (rf & 2) { 7394 const row_r5 = \u0275\u0275nextContext(3).row; 7395 \u0275\u0275advance(4); 7396 \u0275\u0275property("src", row_r5.image, \u0275\u0275sanitizeUrl); 7397 } 7398} 7399function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_Template(rf, ctx) { 7400 if (rf & 1) { 7401 const _r11 = \u0275\u0275getCurrentView(); 7402 \u0275\u0275elementStart(0, "div", 28); 7403 \u0275\u0275listener("mouseenter", function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_Template_div_mouseenter_0_listener($event) { 7404 \u0275\u0275restoreView(_r11); 7405 const ctx_r5 = \u0275\u0275nextContext(5);
7406 return \u0275\u0275resetView(ctx_r5.showImageOnMouseEnter($event)); 7407 })("mouseleave", function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_Template_div_mouseleave_0_listener($event) { 7408 \u0275\u0275restoreView(_r11); 7409 const ctx_r5 = \u0275\u0275nextContext(5); 7410 return \u0275\u0275resetView(ctx_r5.removeImageOnMouseLeave($event)); 7411 }); 7412 \u0275\u0275element(1, "span", 27); 7413 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_div_2_Template, 5, 1, "div", 29); 7414 \u0275\u0275elementEnd(); 7415 } 7416 if (rf & 2) { 7417 const ctx_r2 = \u0275\u0275nextContext(2); 7418 const value_r4 = ctx_r2.value; 7419 const row_r5 = ctx_r2.row; 7420 \u0275\u0275advance(); 7421 \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(3, _c22, row_r5 == null ? null : row_r5.isDeleted))("innerHTML", value_r4, \u0275\u0275sanitizeHtml); 7422 \u0275\u0275advance(); 7423 \u0275\u0275property("ngIf", row_r5.image !== ""); 7424 } 7425} 7426function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_Template(rf, ctx) { 7427 if (rf & 1) { 7428 \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_container_0_Template, 2, 4, "ng-container", 18)(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_ng_template_1_Template, 3, 5, "ng-template", null, 4, \u0275\u0275templateRefExtractor); 7429 } 7430 if (rf & 2) { 7431 const codeProp_r12 = \u0275\u0275reference(2); 7432 const column_r8 = \u0275\u0275nextContext(3).$implicit; 7433 \u0275\u0275property("ngIf", column_r8.prop !== "code")("ngIfElse", codeProp_r12); 7434 } 7435} 7436function TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_Template(rf, ctx) { 7437 if (rf & 1) { 7438 \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_container_0_Template, 3, 2, "ng-container", 18)(1, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_ng_template_1_Template, 3, 2, "ng-template", null, 2, \u0275\u0275templateRefExtractor); 7439 } 7440 if (rf & 2) { 7441 const defaultColumn_r7 = \u0275\u0275reference(2); 7442 const ctx_r5 = \u0275\u0275nextContext(3); 7443 \u0275\u0275property("ngIf", ctx_r5.tableBadges && ctx_r5.tableBadges.length > 0)("ngIfElse", defaultColumn_r7); 7444 } 7445} 7446function TableComponent_ng_container_2_ngx_datatable_column_1_Template(rf, ctx) { 7447 if (rf & 1) { 7448 \u0275\u0275elementStart(0, "ngx-datatable-column", 16); 7449 \u0275\u0275pipe(1, "translate"); 7450 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_1_ng_template_2_Template, 3, 2, "ng-template", 17); 7451 \u0275\u0275elementEnd(); 7452 } 7453 if (rf & 2) { 7454 const ctx_r12 = \u0275\u0275nextContext(); 7455 const column_r8 = ctx_r12.$implicit; 7456 const i_r14 = ctx_r12.index; 7457 \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 5, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("checkboxable", i_r14 === -1)("width", column_r8.width); 7458 } 7459} 7460function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template(rf, ctx) { 7461 if (rf & 1) { 7462 const _r15 = \u0275\u0275getCurrentView(); 7463 \u0275\u0275elementStart(0, "div", 36)(1, "div", 37)(2, "span", 38)(3, "button", 39); 7464 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template_button_click_3_listener() { 7465 const row_r16 = \u0275\u0275restoreView(_r15).row; 7466 const ctx_r5 = \u0275\u0275nextContext(3); 7467 return \u0275\u0275resetView(ctx_r5.decreaseQuantity(row_r16)); 7468 }); 7469 \u0275\u0275namespaceSVG(); 7470 \u0275\u0275elementStart(4, "svg", 40); 7471 \u0275\u0275element(5, "rect", 41)(6, "path", 42); 7472 \u0275\u0275elementEnd()()(); 7473 \u0275\u0275namespaceHTML(); 7474 \u0275\u0275elementStart(7, "input", 43, 5); 7475 \u0275\u0275listener("change", function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template_input_change_7_listener($event) { 7476 const row_r16 = \u0275\u0275restoreView(_r15).row; 7477 const ctx_r5 = \u0275\u0275nextContext(3);
7478 return \u0275\u0275resetView(ctx_r5.changeQuantity(row_r16, $event)); 7479 })("keydown", function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template_input_keydown_7_listener($event) { 7480 \u0275\u0275restoreView(_r15); 7481 const inputText_r17 = \u0275\u0275reference(8); 7482 const ctx_r5 = \u0275\u0275nextContext(3); 7483 return \u0275\u0275resetView(ctx_r5.callCheckLength($event, inputText_r17)); 7484 }); 7485 \u0275\u0275elementEnd(); 7486 \u0275\u0275elementStart(9, "span", 44)(10, "button", 45); 7487 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template_button_click_10_listener() { 7488 const row_r16 = \u0275\u0275restoreView(_r15).row; 7489 const ctx_r5 = \u0275\u0275nextContext(3); 7490 return \u0275\u0275resetView(ctx_r5.increaseQuantity(row_r16)); 7491 }); 7492 \u0275\u0275namespaceSVG(); 7493 \u0275\u0275elementStart(11, "svg", 46); 7494 \u0275\u0275element(12, "rect", 41)(13, "path", 47); 7495 \u0275\u0275elementEnd()()()()(); 7496 } 7497 if (rf & 2) { 7498 const value_r18 = ctx.value; 7499 const row_r16 = ctx.row; 7500 const ctx_r5 = \u0275\u0275nextContext(3); 7501 \u0275\u0275advance(); 7502 \u0275\u0275classMap(ctx_r5.mustDisableQuantityField(row_r16) || (row_r16 == null ? null : row_r16.disabled) ? "disabled" : ""); 7503 \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(6, _c32, row_r16 == null ? null : row_r16.disabledIncreaseQuantity)); 7504 \u0275\u0275advance(); 7505 \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(8, _c22, row_r16 == null ? null : row_r16.isDeleted)); 7506 \u0275\u0275advance(5); 7507 \u0275\u0275property("value", (value_r18 == null ? null : value_r18.quantity) || 0); 7508 \u0275\u0275advance(2); 7509 \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(10, _c22, row_r16 == null ? null : row_r16.isDeleted)); 7510 } 7511} 7512function TableComponent_ng_container_2_ngx_datatable_column_2_Template(rf, ctx) { 7513 if (rf & 1) { 7514 \u0275\u0275elementStart(0, "ngx-datatable-column", 35); 7515 \u0275\u0275pipe(1, "translate"); 7516 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_2_ng_template_2_Template, 14, 12, "ng-template", 17); 7517 \u0275\u0275elementEnd(); 7518 } 7519 if (rf & 2) { 7520 const column_r8 = \u0275\u0275nextContext().$implicit; 7521 \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 4, column_r8.name))("prop", column_r8.checkboxValue || "")("sortable", false)("width", column_r8.width); 7522 } 7523} 7524function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_1_Template(rf, ctx) { 7525 if (rf & 1) { 7526 const _r19 = \u0275\u0275getCurrentView(); 7527 \u0275\u0275elementStart(0, "button", 53)(1, "mat-icon", 54); 7528 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_1_Template_mat_icon_click_1_listener() { 7529 \u0275\u0275restoreView(_r19); 7530 const action_r20 = \u0275\u0275nextContext(3).$implicit; 7531 const row_r21 = \u0275\u0275nextContext().row; 7532 const ctx_r5 = \u0275\u0275nextContext(3); 7533 return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21)); 7534 }); 7535 \u0275\u0275text(2); 7536 \u0275\u0275elementEnd()(); 7537 } 7538 if (rf & 2) { 7539 const action_r20 = \u0275\u0275nextContext(3).$implicit; 7540 \u0275\u0275classMap(action_r20.value); 7541 \u0275\u0275advance(); 7542 \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(4, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight)); 7543 \u0275\u0275advance(); 7544 \u0275\u0275textInterpolate1(" ", action_r20.icon, " "); 7545 } 7546} 7547function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_2_Template(rf, ctx) { 7548 if (rf & 1) { 7549 const _r22 = \u0275\u0275getCurrentView(); 7550 \u0275\u0275elementStart(0, "button", 55)(1, "mat-icon", 54); 7551 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_2_Template_mat_icon_click_1_listener() { 7552 \u0275\u0275restoreView(_r22); 7553 const action_r20 = \u0275\u0275nextContext(3).$implicit; 7554 const row_r21 = \u0275\u0275nextContext().row; 7555 const ctx_r5 = \u0275\u0275nextContext(3);
7556 return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21)); 7557 }); 7558 \u0275\u0275text(2); 7559 \u0275\u0275elementEnd()(); 7560 } 7561 if (rf & 2) { 7562 const action_r20 = \u0275\u0275nextContext(3).$implicit; 7563 \u0275\u0275classMap(action_r20.value); 7564 \u0275\u0275property("matTooltip", action_r20.tooltip); 7565 \u0275\u0275advance(); 7566 \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(5, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight)); 7567 \u0275\u0275advance(); 7568 \u0275\u0275textInterpolate1(" ", action_r20.icon, " "); 7569 } 7570} 7571function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_Template(rf, ctx) { 7572 if (rf & 1) { 7573 \u0275\u0275elementContainerStart(0); 7574 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_1_Template, 3, 9, "button", 51)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_button_2_Template, 3, 10, "button", 52); 7575 \u0275\u0275elementContainerEnd(); 7576 } 7577 if (rf & 2) { 7578 const action_r20 = \u0275\u0275nextContext(2).$implicit; 7579 \u0275\u0275advance(); 7580 \u0275\u0275property("ngIf", !action_r20.tooltip); 7581 \u0275\u0275advance(); 7582 \u0275\u0275property("ngIf", action_r20.tooltip); 7583 } 7584} 7585function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_1_Template(rf, ctx) { 7586 if (rf & 1) { 7587 const _r23 = \u0275\u0275getCurrentView(); 7588 \u0275\u0275elementStart(0, "mat-icon", 54); 7589 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_1_Template_mat_icon_click_0_listener() { 7590 \u0275\u0275restoreView(_r23); 7591 const action_r20 = \u0275\u0275nextContext(4).$implicit; 7592 const row_r21 = \u0275\u0275nextContext().row; 7593 const ctx_r5 = \u0275\u0275nextContext(3); 7594 return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21)); 7595 }); 7596 \u0275\u0275text(1, " block "); 7597 \u0275\u0275elementEnd(); 7598 } 7599 if (rf & 2) { 7600 const action_r20 = \u0275\u0275nextContext(4).$implicit; 7601 \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(1, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight)); 7602 } 7603} 7604function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_2_Template(rf, ctx) { 7605 if (rf & 1) { 7606 const _r24 = \u0275\u0275getCurrentView(); 7607 \u0275\u0275elementStart(0, "mat-icon", 54); 7608 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_2_Template_mat_icon_click_0_listener() { 7609 \u0275\u0275restoreView(_r24); 7610 const action_r20 = \u0275\u0275nextContext(4).$implicit; 7611 const row_r21 = \u0275\u0275nextContext().row; 7612 const ctx_r5 = \u0275\u0275nextContext(3); 7613 return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21)); 7614 }); 7615 \u0275\u0275text(1); 7616 \u0275\u0275elementEnd(); 7617 } 7618 if (rf & 2) { 7619 const action_r20 = \u0275\u0275nextContext(4).$implicit; 7620 \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(2, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight)); 7621 \u0275\u0275advance(); 7622 \u0275\u0275textInterpolate1(" ", action_r20.icon, " "); 7623 } 7624} 7625function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_Template(rf, ctx) { 7626 if (rf & 1) { 7627 \u0275\u0275elementStart(0, "button", 53); 7628 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_1_Template, 2, 6, "mat-icon", 58)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_mat_icon_2_Template, 2, 7, "mat-icon", 58); 7629 \u0275\u0275elementEnd(); 7630 } 7631 if (rf & 2) { 7632 const row_r21 = \u0275\u0275nextContext(4).row; 7633 \u0275\u0275advance(); 7634 \u0275\u0275property("ngIf", !row_r21.hasDatasheet); 7635 \u0275\u0275advance(); 7636 \u0275\u0275property("ngIf", row_r21.hasDatasheet); 7637 } 7638} 7639function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_1_Template(rf, ctx) { 7640 if (rf & 1) { 7641 const _r25 = \u0275\u0275getCurrentView(); 7642 \u0275\u0275elementStart(0, "mat-icon", 54); 7643 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_1_Template_mat_icon_click_0_listener() { 7644 \u0275\u0275restoreView(_r25); 7645 const action_r20 = \u0275\u0275nextContext(4).$implicit; 7646 const row_r21 = \u0275\u0275nextContext().row; 7647 const ctx_r5 = \u0275\u0275nextContext(3);
7648 return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21)); 7649 }); 7650 \u0275\u0275text(1, " block "); 7651 \u0275\u0275elementEnd(); 7652 } 7653 if (rf & 2) { 7654 const action_r20 = \u0275\u0275nextContext(4).$implicit; 7655 \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(1, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight)); 7656 } 7657} 7658function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_2_Template(rf, ctx) { 7659 if (rf & 1) { 7660 const _r26 = \u0275\u0275getCurrentView(); 7661 \u0275\u0275elementStart(0, "mat-icon", 54); 7662 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_2_Template_mat_icon_click_0_listener() { 7663 \u0275\u0275restoreView(_r26); 7664 const action_r20 = \u0275\u0275nextContext(4).$implicit; 7665 const row_r21 = \u0275\u0275nextContext().row; 7666 const ctx_r5 = \u0275\u0275nextContext(3); 7667 return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21)); 7668 }); 7669 \u0275\u0275text(1); 7670 \u0275\u0275elementEnd(); 7671 } 7672 if (rf & 2) { 7673 const action_r20 = \u0275\u0275nextContext(4).$implicit; 7674 \u0275\u0275property("ngStyle", \u0275\u0275pureFunction4(2, _c42, action_r20.style == null ? null : action_r20.style.background, action_r20.style == null ? null : action_r20.style.color, action_r20.style == null ? null : action_r20.style.fontSize, action_r20.style == null ? null : action_r20.style.fontWeight)); 7675 \u0275\u0275advance(); 7676 \u0275\u0275textInterpolate1(" ", action_r20.icon, " "); 7677 } 7678} 7679function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_Template(rf, ctx) { 7680 if (rf & 1) { 7681 \u0275\u0275elementStart(0, "button", 55); 7682 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_1_Template, 2, 6, "mat-icon", 58)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_mat_icon_2_Template, 2, 7, "mat-icon", 58); 7683 \u0275\u0275elementEnd(); 7684 } 7685 if (rf & 2) { 7686 const action_r20 = \u0275\u0275nextContext(3).$implicit; 7687 const row_r21 = \u0275\u0275nextContext().row; 7688 \u0275\u0275property("matTooltip", action_r20.tooltip); 7689 \u0275\u0275advance(); 7690 \u0275\u0275property("ngIf", !row_r21.hasDatasheet); 7691 \u0275\u0275advance(); 7692 \u0275\u0275property("ngIf", row_r21.hasDatasheet); 7693 } 7694} 7695function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_Template(rf, ctx) { 7696 if (rf & 1) { 7697 \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_0_Template, 3, 2, "button", 56)(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_button_1_Template, 3, 3, "button", 57); 7698 } 7699 if (rf & 2) { 7700 const action_r20 = \u0275\u0275nextContext(2).$implicit; 7701 \u0275\u0275property("ngIf", !action_r20.tooltip); 7702 \u0275\u0275advance(); 7703 \u0275\u0275property("ngIf", action_r20.tooltip); 7704 } 7705} 7706function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_Template(rf, ctx) { 7707 if (rf & 1) { 7708 \u0275\u0275elementContainerStart(0); 7709 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_container_1_Template, 3, 2, "ng-container", 18)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_ng_template_2_Template, 2, 2, "ng-template", null, 6, \u0275\u0275templateRefExtractor); 7710 \u0275\u0275elementContainerEnd(); 7711 } 7712 if (rf & 2) { 7713 const datasheetIcon_r27 = \u0275\u0275reference(3); 7714 const action_r20 = \u0275\u0275nextContext().$implicit; 7715 \u0275\u0275advance(); 7716 \u0275\u0275property("ngIf", action_r20.value !== "download")("ngIfElse", datasheetIcon_r27); 7717 } 7718} 7719function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_2_Template(rf, ctx) { 7720 if (rf & 1) { 7721 const _r28 = \u0275\u0275getCurrentView(); 7722 \u0275\u0275elementContainerStart(0); 7723 \u0275\u0275elementStart(1, "button", 59); 7724 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_2_Template_button_click_1_listener() { 7725 \u0275\u0275restoreView(_r28); 7726 const action_r20 = \u0275\u0275nextContext().$implicit; 7727 const row_r21 = \u0275\u0275nextContext().row; 7728 const ctx_r5 = \u0275\u0275nextContext(3);
7729 return \u0275\u0275resetView(ctx_r5.onClickIconAction(action_r20.value, row_r21)); 7730 }); 7731 \u0275\u0275elementStart(2, "p", 60); 7732 \u0275\u0275text(3); 7733 \u0275\u0275pipe(4, "translate"); 7734 \u0275\u0275elementEnd()(); 7735 \u0275\u0275elementContainerEnd(); 7736 } 7737 if (rf & 2) { 7738 const action_r20 = \u0275\u0275nextContext().$implicit; 7739 \u0275\u0275advance(3); 7740 \u0275\u0275textInterpolate1(" ", \u0275\u0275pipeBind1(4, 1, action_r20.buttonLabel), " "); 7741 } 7742} 7743function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_3_Template(rf, ctx) { 7744 if (rf & 1) { 7745 const _r29 = \u0275\u0275getCurrentView(); 7746 \u0275\u0275elementContainerStart(0); 7747 \u0275\u0275elementStart(1, "mat-checkbox", 61); 7748 \u0275\u0275listener("change", function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_3_Template_mat_checkbox_change_1_listener($event) { 7749 \u0275\u0275restoreView(_r29); 7750 const action_r20 = \u0275\u0275nextContext().$implicit; 7751 const row_r21 = \u0275\u0275nextContext().row; 7752 const ctx_r5 = \u0275\u0275nextContext(3); 7753 return \u0275\u0275resetView(ctx_r5.onClickCheckboxAction(action_r20.value, row_r21, $event.checked)); 7754 }); 7755 \u0275\u0275elementEnd(); 7756 \u0275\u0275elementContainerEnd(); 7757 } 7758 if (rf & 2) { 7759 const row_r21 = \u0275\u0275nextContext(2).row; 7760 const column_r8 = \u0275\u0275nextContext(2).$implicit; 7761 \u0275\u0275advance(); 7762 \u0275\u0275property("checked", row_r21[column_r8.checkboxValue] !== 0); 7763 } 7764} 7765function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_Template(rf, ctx) { 7766 if (rf & 1) { 7767 \u0275\u0275elementStart(0, "span", 50); 7768 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_1_Template, 4, 2, "ng-container", 19)(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_2_Template, 5, 3, "ng-container", 19)(3, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_ng_container_3_Template, 2, 1, "ng-container", 19); 7769 \u0275\u0275elementEnd(); 7770 } 7771 if (rf & 2) { 7772 const action_r20 = ctx.$implicit; 7773 const row_r21 = \u0275\u0275nextContext().row; 7774 const column_r8 = \u0275\u0275nextContext(2).$implicit; 7775 \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(4, _c22, row_r21 == null ? null : row_r21.isDeleted)); 7776 \u0275\u0275advance(); 7777 \u0275\u0275property("ngIf", action_r20.icon); 7778 \u0275\u0275advance(); 7779 \u0275\u0275property("ngIf", action_r20.buttonLabel); 7780 \u0275\u0275advance(); 7781 \u0275\u0275property("ngIf", action_r20.checkbox && column_r8.checkboxValue !== null && column_r8.checkboxValue !== void 0); 7782 } 7783} 7784function TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_Template(rf, ctx) { 7785 if (rf & 1) { 7786 \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_span_0_Template, 4, 6, "span", 49); 7787 } 7788 if (rf & 2) { 7789 const ctx_r5 = \u0275\u0275nextContext(3); 7790 \u0275\u0275property("ngForOf", ctx_r5.tableActionIcons); 7791 } 7792} 7793function TableComponent_ng_container_2_ngx_datatable_column_3_Template(rf, ctx) { 7794 if (rf & 1) { 7795 \u0275\u0275elementStart(0, "ngx-datatable-column", 48); 7796 \u0275\u0275pipe(1, "translate"); 7797 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_3_ng_template_2_Template, 1, 1, "ng-template", 17); 7798 \u0275\u0275elementEnd(); 7799 } 7800 if (rf & 2) { 7801 const column_r8 = \u0275\u0275nextContext().$implicit; 7802 \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 4, column_r8.name))("prop", column_r8.checkboxValue || "")("sortable", false)("width", column_r8.width); 7803 } 7804} 7805function TableComponent_ng_container_2_ngx_datatable_column_4_ng_template_2_Template(rf, ctx) { 7806 if (rf & 1) { 7807 const _r30 = \u0275\u0275getCurrentView(); 7808 \u0275\u0275elementStart(0, "span", 63); 7809 \u0275\u0275elementContainerStart(1); 7810 \u0275\u0275elementStart(2, "button"); 7811 \u0275\u0275namespaceSVG(); 7812 \u0275\u0275elementStart(3, "svg", 64); 7813 \u0275\u0275listener("click", function TableComponent_ng_container_2_ngx_datatable_column_4_ng_template_2_Template_svg_click_3_listener() { 7814 \u0275\u0275restoreView(_r30); 7815 const ctx_r5 = \u0275\u0275nextContext(3);
7816 return \u0275\u0275resetView(ctx_r5.onClickVideo()); 7817 }); 7818 \u0275\u0275element(4, "path", 65)(5, "path", 66); 7819 \u0275\u0275elementEnd()(); 7820 \u0275\u0275elementContainerEnd(); 7821 \u0275\u0275elementEnd(); 7822 } 7823} 7824function TableComponent_ng_container_2_ngx_datatable_column_4_Template(rf, ctx) { 7825 if (rf & 1) { 7826 \u0275\u0275elementStart(0, "ngx-datatable-column", 62); 7827 \u0275\u0275pipe(1, "translate"); 7828 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_4_ng_template_2_Template, 6, 0, "ng-template", 17); 7829 \u0275\u0275elementEnd(); 7830 } 7831 if (rf & 2) { 7832 const column_r8 = \u0275\u0275nextContext().$implicit; 7833 \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 4, column_r8.name))("prop", column_r8.checkboxValue || "")("sortable", false)("width", column_r8.width); 7834 } 7835} 7836function TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_span_0_Template(rf, ctx) { 7837 if (rf & 1) { 7838 \u0275\u0275element(0, "span", 70); 7839 } 7840 if (rf & 2) { 7841 const ctx_r30 = \u0275\u0275nextContext(); 7842 const value_r32 = ctx_r30.value; 7843 const row_r33 = ctx_r30.row; 7844 \u0275\u0275propertyInterpolate("matTooltip", value_r32); 7845 \u0275\u0275property("innerHTML", value_r32, \u0275\u0275sanitizeHtml)("ngClass", \u0275\u0275pureFunction1(3, _c22, row_r33 == null ? null : row_r33.isDeleted)); 7846 } 7847} 7848function TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_span_1_Template(rf, ctx) { 7849 if (rf & 1) { 7850 \u0275\u0275element(0, "span", 27); 7851 } 7852 if (rf & 2) { 7853 const ctx_r30 = \u0275\u0275nextContext(); 7854 const value_r32 = ctx_r30.value; 7855 const row_r33 = ctx_r30.row; 7856 \u0275\u0275property("ngClass", \u0275\u0275pureFunction1(2, _c22, row_r33 == null ? null : row_r33.isDeleted))("innerHTML", value_r32, \u0275\u0275sanitizeHtml); 7857 } 7858} 7859function TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_Template(rf, ctx) { 7860 if (rf & 1) { 7861 \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_span_0_Template, 1, 5, "span", 68)(1, TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_span_1_Template, 1, 4, "span", 69); 7862 } 7863 if (rf & 2) { 7864 const value_r32 = ctx.value; 7865 \u0275\u0275property("ngIf", value_r32.length > 45); 7866 \u0275\u0275advance(); 7867 \u0275\u0275property("ngIf", value_r32.length <= 45); 7868 } 7869} 7870function TableComponent_ng_container_2_ngx_datatable_column_5_Template(rf, ctx) { 7871 if (rf & 1) { 7872 \u0275\u0275elementStart(0, "ngx-datatable-column", 67); 7873 \u0275\u0275pipe(1, "translate"); 7874 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_5_ng_template_2_Template, 2, 2, "ng-template", 17); 7875 \u0275\u0275elementEnd(); 7876 } 7877 if (rf & 2) { 7878 const ctx_r12 = \u0275\u0275nextContext(); 7879 const column_r8 = ctx_r12.$implicit; 7880 const i_r14 = ctx_r12.index; 7881 const customHeader_r34 = \u0275\u0275reference(10); 7882 \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 7, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("checkboxable", i_r14 === -1)("sortable", false)("width", column_r8.width)("headerTemplate", customHeader_r34); 7883 } 7884} 7885function TableComponent_ng_container_2_ngx_datatable_column_6_ng_template_2_Template(rf, ctx) { 7886 if (rf & 1) { 7887 \u0275\u0275elementStart(0, "div", 20); 7888 \u0275\u0275text(1); 7889 \u0275\u0275pipe(2, "translate"); 7890 \u0275\u0275elementEnd(); 7891 } 7892 if (rf & 2) { 7893 const value_r35 = ctx.value; 7894 \u0275\u0275property("ngClass", value_r35 === "INCOME" ? "income custom-badge" : "withdraw custom-badge"); 7895 \u0275\u0275advance(); 7896 \u0275\u0275textInterpolate1(" ", \u0275\u0275pipeBind1(2, 2, value_r35), " "); 7897 } 7898} 7899function TableComponent_ng_container_2_ngx_datatable_column_6_Template(rf, ctx) { 7900 if (rf & 1) { 7901 \u0275\u0275elementStart(0, "ngx-datatable-column", 71); 7902 \u0275\u0275pipe(1, "translate"); 7903 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_6_ng_template_2_Template, 3, 4, "ng-template", 17); 7904 \u0275\u0275elementEnd(); 7905 } 7906 if (rf & 2) { 7907 const column_r8 = \u0275\u0275nextContext().$implicit; 7908 \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 5, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("sortable", false)("width", column_r8.width); 7909 } 7910} 7911function TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_span_0_Template(rf, ctx) { 7912 if (rf & 1) { 7913 \u0275\u0275element(0, "span", 75); 7914 } 7915 if (rf & 2) { 7916 const value_r36 = \u0275\u0275nextContext().value; 7917 \u0275\u0275propertyInterpolate("matTooltip", value_r36); 7918 \u0275\u0275property("innerHTML", value_r36, \u0275\u0275sanitizeHtml); 7919 } 7920} 7921function TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_span_1_Template(rf, ctx) { 7922 if (rf & 1) { 7923 \u0275\u0275element(0, "span", 76); 7924 } 7925 if (rf & 2) { 7926 const value_r36 = \u0275\u0275nextContext().value; 7927 \u0275\u0275property("innerHTML", value_r36, \u0275\u0275sanitizeHtml); 7928 } 7929} 7930function TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_Template(rf, ctx) { 7931 if (rf & 1) { 7932 \u0275\u0275template(0, TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_span_0_Template, 1, 2, "span", 73)(1, TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_span_1_Template, 1, 1, "span", 74); 7933 } 7934 if (rf & 2) { 7935 const value_r36 = ctx.value; 7936 \u0275\u0275property("ngIf", value_r36.length > 15); 7937 \u0275\u0275advance(); 7938 \u0275\u0275property("ngIf", value_r36.length <= 15); 7939 } 7940} 7941function TableComponent_ng_container_2_ngx_datatable_column_7_Template(rf, ctx) { 7942 if (rf & 1) { 7943 \u0275\u0275elementStart(0, "ngx-datatable-column", 72); 7944 \u0275\u0275pipe(1, "translate"); 7945 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_7_ng_template_2_Template, 2, 2, "ng-template", 17); 7946 \u0275\u0275elementEnd(); 7947 } 7948 if (rf & 2) { 7949 const ctx_r12 = \u0275\u0275nextContext(); 7950 const column_r8 = ctx_r12.$implicit; 7951 const i_r14 = ctx_r12.index; 7952 \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 6, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("checkboxable", i_r14 === -1)("sortable", false)("width", column_r8.width); 7953 } 7954} 7955function TableComponent_ng_container_2_ngx_datatable_column_8_ng_template_2_Template(rf, ctx) { 7956 if (rf & 1) { 7957 \u0275\u0275element(0, "span", 76); 7958 } 7959 if (rf & 2) { 7960 const value_r37 = ctx.value; 7961 const row_r38 = ctx.row; 7962 \u0275\u0275classProp("financingDocument", row_r38 == null ? null : row_r38.showOtherFinancingMarker); 7963 \u0275\u0275property("innerHTML", value_r37, \u0275\u0275sanitizeHtml); 7964 } 7965} 7966function TableComponent_ng_container_2_ngx_datatable_column_8_Template(rf, ctx) { 7967 if (rf & 1) { 7968 \u0275\u0275elementStart(0, "ngx-datatable-column", 72); 7969 \u0275\u0275pipe(1, "translate"); 7970 \u0275\u0275template(2, TableComponent_ng_container_2_ngx_datatable_column_8_ng_template_2_Template, 1, 3, "ng-template", 17); 7971 \u0275\u0275elementEnd(); 7972 } 7973 if (rf & 2) { 7974 const ctx_r12 = \u0275\u0275nextContext(); 7975 const column_r8 = ctx_r12.$implicit; 7976 const i_r14 = ctx_r12.index; 7977 \u0275\u0275property("name", \u0275\u0275pipeBind1(1, 6, column_r8.name))("prop", column_r8.prop)("headerCheckboxable", false)("checkboxable", i_r14 === -1)("sortable", false)("width", column_r8.width); 7978 } 7979} 7980function TableComponent_ng_container_2_ng_template_9_Template(rf, ctx) { 7981 if (rf & 1) { 7982 const _r39 = \u0275\u0275getCurrentView(); 7983 \u0275\u0275elementStart(0, "span", 77); 7984 \u0275\u0275text(1); 7985 \u0275\u0275pipe(2, "translate"); 7986 \u0275\u0275elementEnd(); 7987 \u0275\u0275elementStart(3, "div", 78); 7988 \u0275\u0275namespaceSVG(); 7989 \u0275\u0275elementStart(4, "svg", 79);
7990 \u0275\u0275element(5, "path", 80)(6, "path", 81); 7991 \u0275\u0275elementEnd(); 7992 \u0275\u0275namespaceHTML(); 7993 \u0275\u0275elementStart(7, "input", 82); 7994 \u0275\u0275pipe(8, "translate"); 7995 \u0275\u0275listener("keyup", function TableComponent_ng_container_2_ng_template_9_Template_input_keyup_7_listener($event) { 7996 \u0275\u0275restoreView(_r39); 7997 const ctx_r5 = \u0275\u0275nextContext(2); 7998 return \u0275\u0275resetView(ctx_r5.filterData($event.target.value)); 7999 }); 8000 \u0275\u0275elementEnd()(); 8001 } 8002 if (rf & 2) { 8003 const column_r40 = ctx.column; 8004 \u0275\u0275advance(); 8005 \u0275\u0275textInterpolate(\u0275\u0275pipeBind1(2, 2, column_r40.name)); 8006 \u0275\u0275advance(6); 8007 \u0275\u0275property("placeholder", \u0275\u0275pipeBind1(8, 4, "Search")); 8008 } 8009} 8010function TableComponent_ng_container_2_Template(rf, ctx) { 8011 if (rf & 1) { 8012 \u0275\u0275elementContainerStart(0); 8013 \u0275\u0275template(1, TableComponent_ng_container_2_ngx_datatable_column_1_Template, 3, 7, "ngx-datatable-column", 9)(2, TableComponent_ng_container_2_ngx_datatable_column_2_Template, 3, 6, "ngx-datatable-column", 10)(3, TableComponent_ng_container_2_ngx_datatable_column_3_Template, 3, 6, "ngx-datatable-column", 11)(4, TableComponent_ng_container_2_ngx_datatable_column_4_Template, 3, 6, "ngx-datatable-column", 12)(5, TableComponent_ng_container_2_ngx_datatable_column_5_Template, 3, 9, "ngx-datatable-column", 13)(6, TableComponent_ng_container_2_ngx_datatable_column_6_Template, 3, 7, "ngx-datatable-column", 14)(7, TableComponent_ng_container_2_ngx_datatable_column_7_Template, 3, 8, "ngx-datatable-column", 15)(8, TableComponent_ng_container_2_ngx_datatable_column_8_Template, 3, 8, "ngx-datatable-column", 15)(9, TableComponent_ng_container_2_ng_template_9_Template, 9, 6, "ng-template", null, 1, \u0275\u0275templateRefExtractor); 8014 \u0275\u0275elementContainerEnd(); 8015 } 8016 if (rf & 2) { 8017 const column_r8 = ctx.$implicit; 8018 \u0275\u0275advance(); 8019 \u0275\u0275property("ngIf", column_r8.prop !== "actions" && column_r8.prop !== "quantity" && column_r8.prop !== "video" && column_r8.prop !== "equipment" && column_r8.prop !== "orderOwner" && column_r8.prop !== "orderTitle" && column_r8.prop !== "invoiceClient" && column_r8.prop !== "operationType" && column_r8.prop !== "ownerParent" && column_r8.prop !== "paymentMethod"); 8020 \u0275\u0275advance(); 8021 \u0275\u0275property("ngIf", column_r8.prop === "quantity"); 8022 \u0275\u0275advance(); 8023 \u0275\u0275property("ngIf", column_r8.prop === "actions"); 8024 \u0275\u0275advance(); 8025 \u0275\u0275property("ngIf", column_r8.prop === "video"); 8026 \u0275\u0275advance(); 8027 \u0275\u0275property("ngIf", column_r8.prop === "equipment"); 8028 \u0275\u0275advance(); 8029 \u0275\u0275property("ngIf", column_r8.prop === "operationType"); 8030 \u0275\u0275advance(); 8031 \u0275\u0275property("ngIf", column_r8.prop === "orderOwner" || column_r8.prop === "orderTitle" || column_r8.prop === "invoiceClient" || column_r8.prop === "ownerParent"); 8032 \u0275\u0275advance(); 8033 \u0275\u0275property("ngIf", column_r8.prop === "paymentMethod"); 8034 } 8035} 8036var TableComponent = class _TableComponent { 8037 constructor() { 8038 this.utils = inject(Utils); 8039 this.inputHelper = inject(InputHelper); 8040 this.store = inject(Store); 8041 this.destroyRef = inject(DestroyRef); 8042 this.isSidebarOpen$ = this.store.select(LayoutMetaState.getIsSidebarOpen); 8043 this.selected = []; 8044 this.selectionType = SelectionType; 8045 this.codeImg = "assets/images/Kit1.png"; 8046 this.tableOffset = 0; 8047 this.tableLimit = 10; 8048 this.externalPaging = false; 8049 this.allowHandleQuantityOfMultipleItems = true; 8050 this.tableAction = new EventEmitter(); 8051 this.scrollBarHorizontal = window.innerWidth < 1400; 8052 window.onresize = () => { 8053 if (this.enableHorizontalScroll === true) { 8054 this.scrollBarHorizontal = true; 8055 } else { 8056 this.scrollBarHorizontal = window.innerWidth < 1400; 8057 } 8058 }; 8059 } 8060 ngOnInit() { 8061 this.currentActions = new BehaviorSubject([]); 8062 if (this.enableHorizontalScroll === true) { 8063 this.scrollBarHorizontal = true; 8064 } else { 8065 this.scrollBarHorizontal = window.innerWidth < 1400; 8066 } 8067 this.isSidebarOpen$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => { 8068 this.resizeTable(); 8069 }); 8070 } 8071 onActivate(event) { 8072 if (event?.type === "click" && window.innerWidth < 567) { 8073 const clickedColumnProp = event?.column?.prop; 8074 if (clickedColumnProp !== "actions") { 8075 this.onClickIconAction("visibility", event.row); 8076 } 8077 } 8078 } 8079 ngOnChanges() { 8080 if (this.staticTableData?.length > 0) { 8081 if (this.tableFilters?.length === 0) { 8082 this.clearFilters(); 8083 } else { 8084 if (this.tableFilters?.length > 0) { 8085 this.filterTableData(this.tableFilters); 8086 } 8087 } 8088 } 8089 } 8090 showImageOnMouseEnter(event) { 8091 const element = event.target; 8092 element.classList.add("show-img"); 8093 } 8094 removeImageOnMouseLeave(event) { 8095 const element = event.target; 8096 element.classList.remove("show-img"); 8097 } 8098 /** 8099 * Filter table data based on the filters 8100 * @param filters 8101 */ 8102 filterTableData(filters) { 8103 this.tableData = this.tableData.filter((element) => { 8104 return filters.every((filter) => { 8105 return element[filter.columnDef] === filter.value; 8106 }); 8107 }); 8108 } 8109 filterData(value) { 8110 if (value !== "") { 8111 const valueLowerCase = value.toString().toLowerCase().trim(); 8112 this.tableData = this.staticTableData.filter((item) => { 8113 if (item.equipment && item.equipment.toString().toLowerCase().indexOf(valueLowerCase) !== -1 || !value) { 8114 return true; 8115 } 8116 }); 8117 } else { 8118 this.tableData = this.staticTableData; 8119 } 8120 } 8121 clearFilters() { 8122 this.tableData = this.staticTableData; 8123 } 8124 displayCheck() { 8125 return true; 8126 } 8127 /** 8128 * Update table action based on the selected rows and the actions 8129 * @param event 8130 */ 8131 onSelect(event) { 8132 const data = event.selected; 8133 const currentActionsSnapshot = this.currentActions.getValue(); 8134 const foundSelectedAction = currentActionsSnapshot.filter((action) => action === "selected")[0]; 8135 const foundSelectedActionIndex = currentActionsSnapshot.indexOf(foundSelectedAction); 8136 if (data && data.length > 0) { 8137 if (!foundSelectedAction) { 8138 currentActionsSnapshot.push("selected"); 8139 } 8140 } else { 8141 currentActionsSnapshot.splice(foundSelectedActionIndex, 1); 8142 } 8143 this.currentActions.next(currentActionsSnapshot); 8144 const updatedCurrentActions = this.currentActions.getValue(); 8145 const selectedRowsIndexes = event.selected.map((row) => { 8146 return this.tableData.indexOf(row); 8147 }); 8148 this.onUpdateTableAction(event.selected, updatedCurrentActions, selectedRowsIndexes); 8149 } 8150 /** 8151 * Set selected rows based on clicked row 8152 * 8153 * @param {string} action 8154 * @param {*} row 8155 * @memberof TableComponent 8156 */ 8157 onClickIconAction(action, row) { 8158 this.selected = [row]; 8159 const foundIndexOfRow = this.tableData.indexOf(row); 8160 this.onUpdateTableAction(this.selected, [action], [foundIndexOfRow]); 8161 } 8162 onClickVideo() { 8163 console.log("Video"); 8164 } 8165 /** 8166 * Update table action based on the selected rows and the actions 8167 * 8168 * @param {any[]} data 8169 * @param {string[]} actions 8170 * @memberof TableComponent 8171 */ 8172 onUpdateTableAction(data, actions, rowsIndexes) { 8173 this.tableAction.emit({ 8174 actions, 8175 data, 8176 rowsIndexes 8177 }); 8178 } 8179 onClickCheckboxAction(action, row, checked) { 8180 this.selected = [row]; 8181 const foundIndexOfRow = this.tableData.indexOf(row); 8182 this.onUpdateTableWithCheckboxAction(this.selected, [action], [foundIndexOfRow], checked); 8183 } 8184 onUpdateTableWithCheckboxAction(data, actions, rowsIndexes, checked) { 8185 this.tableAction.emit({ 8186 actions, 8187 data, 8188 rowsIndexes, 8189 checked 8190 }); 8191 } 8192 /**
8193 * Created expecting to receive pagination information from the table 8194 * 8195 * @param {*} event 8196 * @memberof TableComponent 8197 */ 8198 onPaginate(event) { 8199 this.table.recalculate(); 8200 this.table.ngDoCheck(); 8201 this.tableAction.emit({ 8202 actions: ["paginate"], 8203 offset: event.offset + 1, 8204 data: [], 8205 rowsIndexes: [] 8206 }); 8207 } 8208 onSort(event) { 8209 this.table.recalculate(); 8210 this.table.ngDoCheck(); 8211 this.tableAction.emit({ 8212 actions: ["sort"], 8213 data: [], 8214 rowsIndexes: [], 8215 sortOptions: { 8216 columnDef: event.column.prop, 8217 sortDirection: event.newValue === "asc" ? SortDirection2.ASC : SortDirection2.DESC 8218 } 8219 }); 8220 } 8221 getBadgeClass(badge, value) { 8222 const foundValue = badge.values.filter((badgeValue) => badgeValue.value === value)[0]; 8223 return foundValue ? foundValue.class : badge?.values[0]?.class || ""; 8224 } 8225 getIconName(icon, value) { 8226 const foundValue = icon.values.filter((badgeValue) => badgeValue.value === value)[0]; 8227 return foundValue ? foundValue.iconName : icon?.values[0]?.iconName || ""; 8228 } 8229 getBadgeValue(badge, value) { 8230 const foundValue = badge.values.filter((badgeValue) => badgeValue.value === value)[0]; 8231 if (foundValue) { 8232 return foundValue.parsedValue ? foundValue.parsedValue : foundValue?.value?.toString() || value.toString(); 8233 } 8234 return value.toString(); 8235 } 8236 increaseQuantity(row) { 8237 row.quantity++; 8238 this.updateAmount(row); 8239 this.tableAction.emit({ 8240 actions: ["quantity"], 8241 data: [row], 8242 rowsIndexes: [this.tableData.indexOf(row)] 8243 }); 8244 } 8245 decreaseQuantity(row) { 8246 if (row.quantity > 0) { 8247 row.quantity--; 8248 this.updateAmount(row); 8249 this.tableAction.emit({ 8250 actions: ["quantity"], 8251 data: [row], 8252 rowsIndexes: [this.tableData.indexOf(row)] 8253 }); 8254 } else { 8255 this.updateAmount(row); 8256 } 8257 } 8258 updateAmount(row) { 8259 if (row.amount && row.value) { 8260 if (row.quantity === 0) { 8261 row.amount = this.utils.parseValueToBRLCurrency(0); 8262 } else { 8263 const parsedValue = this.utils.parseBRLCurrencyToValue(row.value); 8264 row.amount = this.utils.parseValueToBRLCurrency(row.quantity * parsedValue); 8265 } 8266 } 8267 } 8268 changeQuantity(row, event) { 8269 row.quantity = Number(event.target.value); 8270 this.updateAmount(row); 8271 this.tableAction.emit({ 8272 actions: ["quantity"], 8273 data: [row], 8274 rowsIndexes: [this.tableData.indexOf(row)] 8275 }); 8276 } 8277 callCheckLength(e, input) { 8278 if (e.key === "Enter" || e.key === "Tab") { 8279 e.target.blur(); 8280 } 8281 this.inputHelper.checkLength(e, input, 99999); 8282 } 8283 mustDisableQuantityField(row) { 8284 const foundItemWithQuantity = this.tableData.filter((item) => item.quantity > 0)[0]; 8285 return foundItemWithQuantity && foundItemWithQuantity !== row && !this.allowHandleQuantityOfMultipleItems; 8286 } 8287 resizeTable() { 8288 if (this.table) { 8289 setTimeout(() => { 8290 this.table.recalculate(); 8291 this.table.recalculateColumns(); 8292 }, 300); 8293 } 8294 } 8295 static { 8296 this.\u0275fac = function TableComponent_Factory(__ngFactoryType__) { 8297 return new (__ngFactoryType__ || _TableComponent)(); 8298 }; 8299 } 8300 static { 8301 this.\u0275cmp = /* @__PURE__ */ \u0275\u0275defineComponent({ type: _TableComponent, selectors: [["app-table"]], viewQuery: function TableComponent_Query(rf, ctx) { 8302 if (rf & 1) { 8303 \u0275\u0275viewQuery(_c02, 5); 8304 } 8305 if (rf & 2) { 8306 let _t; 8307 \u0275\u0275queryRefresh(_t = \u0275\u0275loadQuery()) && (ctx.table = _t.first); 8308 } 8309 }, inputs: { tableData: "tableData", staticTableData: "staticTableData", tableHeaders: "tableHeaders", tableFilters: "tableFilters", tableOffset: "tableOffset", tableLimit: "tableLimit", tableCount: "tableCount", externalPaging: "externalPaging", tableActionIcons: "tableActionIcons", tableBadges: "tableBadges", tableIcons: "tableIcons", allowHandleQuantityOfMultipleItems: "allowHandleQuantityOfMultipleItems", enableHorizontalScroll: "enableHorizontalScroll" }, outputs: { tableAction: "tableAction" }, standalone: true, features: [\u0275\u0275NgOnChangesFeature, \u0275\u0275StandaloneFeature], decls: 3, vars: 20, consts: [["table", ""], ["customHeader", ""], ["defaultColumn", ""], ["iconExpired", ""], ["codeProp", ""], ["inputText", ""], ["datasheetIcon", ""], [1, "bootstrap", "col-xl-12", "col-12", "col-lg-12", "col-sm-12", "col-md-12", 3, "select", "page", "sort", "activate", "rows", "columnMode", "columns", "dis
8309playCheck", "selectionType", "selectAllRowsOnPage", "headerHeight", "footerHeight", "rowHeight", "loadingIndicator", "selected", "messages", "limit", "offset", "count", "externalPaging", "externalSorting", "scrollbarH"], [4, "ngFor", "ngForOf"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "width", 4, "ngIf"], ["prop", "quantity", "class", "actions-col", 3, "name", "prop", "sortable", "width", 4, "ngIf"], ["prop", "actions", "class", "actions-col", 3, "name", "prop", "sortable", "width", 4, "ngIf"], ["prop", "video", "class", "video-col", 3, "name", "prop", "sortable", "width", 4, "ngIf"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "sortable", "width", "headerTemplate", 4, "ngIf"], [3, "name", "prop", "headerCheckboxable", "sortable", "width", 4, "ngIf"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "sortable", "width", 4, "ngIf"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "width"], ["ngx-datatable-cell-template", ""], [4, "ngIf", "ngIfElse"], [4, "ngIf"], [3, "ngClass"], ["class", "op-opened", 3, "matTooltip", 4, "ngIf"], [1, "op-opened", 3, "matTooltip"], [1, "table-icon"], ["width", "12", "height", "16", "viewBox", "0 0 12 16", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M11.1167 6.05833L6.05833 1L1 6.05833M6.05833 15.1667V1.14167", "stroke", "#4FDB5B", "stroke-width", "1.25", "stroke-miterlimit", "10", "stroke-linecap", "round", "stroke-linejoin", "round"], ["d", "M11.1167 10.
83091087L6.05833 15.167L1 10.1087M6.05833 1.00032V15.0253", "stroke", "#FB273E", "stroke-width", "1.25", "stroke-miterlimit", "10", "stroke-linecap", "round", "stroke-linejoin", "round"], [3, "ngClass", "innerHTML"], [1, "code-prop", 3, "mouseenter", "mouseleave"], ["class", "code-img d-none", 4, "ngIf"], [1, "code-img", "d-none"], [1, "arow"], ["width", "19", "height", "20", "viewBox", "0 0 19 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M17.7121 8.23733C19.1188 8.99147 19.1188 11.0085 17.7121 11.7627L2.94498 19.6795C1.61263 20.3938 -9.80384e-07 19.4286 -9.14303e-07 17.9168L-2.22193e-07 2.08318C-1.56112e-07 0.571435 1.61263 -0.39378 2.94499 0.320508L17.7121 8.23733Z"], ["alt", "", 1, "img-fluid", 3, "src"], ["prop", "quantity", 1, "actions-col", 3, "name", "prop", "sortable", "width"], [1, "qty-box"], [1, "input-group", 3, "ngClass"], [1, "input-group-prepend", "decrease", 3, "ngClass"], ["type", "button", "data-type", "minus", 1, "btn", "quantity-left-minus", 2, "color", "black", 3, "click"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "feather", "feather-minus-square", "font-secondary"], ["width", "20", "height", "20", "rx", "2", "fill", "#E2E5E9"], ["d", "M14.2105 10.5789H5.78947C5.35789 10.5789 5 10.2211 5 9.78947C5 9.35789 5.35789 9 5.78947 9H14.2105C14.6421 9 15 9.35789 15 9.78947C15 10.2211 14.6421 10.5789 14.2105 10.5789Z", "fill", "#647387"], ["type", "text", "name", "quantity", "data-original-title", "", "title", "", 1, "form-control", "input-number", 3, "change", "keydown", "value"], [1, "input-group-prepend", "increase", 3, "ngClass"], ["type", "button", "data-type", "plus", 1, "btn", "quantity-right-plus", 3, "click"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 1, "feather", "feather-plus-square"], ["d", "M14.2105 9.21053H10.7895V5.78947C10.7895 5.35789 10.4316 5 10 5C9.56842 5 9.21053 5.35789 9.21053 5.78947V9.21053H5.78947C5.35789 9.21053 5 9.56842 5 10C5 10.4316 5.35789 10.7895 5.78947 10.7895H9.21053V14.2105C9.21053 14.6421 9.56842 15 10 15C10.4316 15 10.7895 14.6421 10.7895 14.2105V10.7895H14.2105C14.6421 10.7895 15 10.4316 15 10C15 9.56842 14.6421 9.21053 14.2105 9.21053Z", "fill", "#647387"], ["prop", "actions", 1, "actions-col", 3, "name", "prop", "sortable", "width"], ["class", "buttons", 3, "ngClass", 4, "ngFor", "ngForOf"], [1, "buttons", 3, "ngClass"], ["mat-icon-button", "", 3, "class", 4, "ngIf"], ["mat-icon-button", "", 3, "class", "matTooltip", 4, "ngIf"], ["mat-icon-button", ""], [1, "font-primary", 3, "click", "ngStyle"], ["mat-icon-button", "", 3, "matTooltip"], ["mat-icon-button", "", 4, "ngIf"], ["mat-icon-button", "", 3, "matTooltip", 4, "ngIf"], ["class", "font-primary", 3, "ngStyle", "click", 4, "ngIf"], ["mat-flat-button", "", 1, "bg-primary", "rounded", "border-0", "px-6", "me-2", 3, "click"], [1, "text-white", "fw-bold", "my-1"], [3, "change", "checked"], ["prop", "video", 1, "video-col", 3, "name", "prop", "sortable", "width"], [1, "video-button"], ["width", "34", "height", "34", "viewBox", "0 0 34 34", "fill", "none", "xmlns", "http://www.w3.org/2000/svg", 3, "click"], ["opacity", "0.4", "d", "M30.1226 17C30.1226 24.272 24.2279 30.1667 16.956 30.1667C9.68401 30.1667 3.78931 24.272 3.78931 17C3.78931 9.72808 9.68401 3.83337 16.956 3.83337C24.2279 3.83337 30.1226 9.72808 30.1226 17Z", "stroke", "#CBCBDC", "stroke-width", "2"], ["d", "M21.2078 14.4938L17.0994 12.128C16.0794 11.533 14.8469 11.533 13.8269 12.128C12.8069 12.723 12.1978 13.7713 12.1978 14.9613V19.7072C12.1978 20.883 12.8069 21.9455 13.8269 22.5405C14.3215 22.8286 14.8837 22.9804 15.4561 22.9804C16.0285 22.9804 16.5906 22.8286 17.0853 22.5405L21.1936 20.1747C22.2136 19.5797 22.8228 18.5313 22.8228 17.3413C22.8511 16.1513 22.2419 15.0888 21.2078 14.4938Z", "fill", "#E05F57"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "sortable", "width", "headerTemplate"], [3, "innerHTML", "ngClass", "matTooltip", 4, "ngIf"], [3, "ngClass", "innerHTML", 4, "ngIf"], [3, "innerHTML", "ngClass", "matTooltip"], [3, "name", "prop", "headerCheckboxable", "sortable", "width"], [3, "name", "prop", "headerCheckboxable", "checkboxable", "sortable", "width"], [3, "innerHTML", "matTooltip", 4, "ngIf"], [3, "innerHTML", 4, "ngIf"], [3, "innerHTML", "matTooltip"], [3, "innerHTML"], [1, "datatable-header-cell-label", "draggable", "me-4"], [1, "search", "d-flex", "align-items-center", "position-relative"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none", "xmlns", "http://www.w3.org/2000/svg"], ["d", "M9.16667 15.8333C12.8486 15.8333 15.8333 12.8486 15.8333 9.16667C15.8333 5.48477 12.8486 2.5 9.16667 2.5C5.48477 2.5 2.5 5.48477 2.5 9.16667C2.5 12.8486 5.48477 15.8333 9.16667 15.8333Z", "stroke", "#647387", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round"], ["d", "M17.5 17.5L13.875 13.875", "stroke", "#647387", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round"], ["id", "search", "type", "text", "aria-label", "Search", "aria-describedby", "basic-addon1", 1, "form-control", 3, "keyup", "placeholder"]], template: function TableComponent_Template(rf, ctx) { 8310 if (rf & 1) { 8311 const _r1 = \u0275\u0275getCurrentView(); 8312 \u0275\u0275elementStart(0, "ngx-datatable", 7, 0); 8313 \u0275\u0275listener("select", function TableComponent_Template_ngx_datatable_select_0_listener($event) { 8314 \u0275\u0275restoreView(_r1);
8315 return \u0275\u0275resetView(ctx.onSelect($event)); 8316 })("page", function TableComponent_Template_ngx_datatable_page_0_listener($event) { 8317 \u0275\u0275restoreView(_r1); 8318 return \u0275\u0275resetView(ctx.onPaginate($event)); 8319 })("sort", function TableComponent_Template_ngx_datatable_sort_0_listener($event) { 8320 \u0275\u0275restoreView(_r1); 8321 return \u0275\u0275resetView(ctx.onSort($event)); 8322 })("activate", function TableComponent_Template_ngx_datatable_activate_0_listener($event) { 8323 \u0275\u0275restoreView(_r1); 8324 return \u0275\u0275resetView(ctx.onActivate($event)); 8325 }); 8326 \u0275\u0275template(2, TableComponent_ng_container_2_Template, 11, 8, "ng-container", 8); 8327 \u0275\u0275elementEnd(); 8328 } 8329 if (rf & 2) { 8330 \u0275\u0275property("rows", ctx.tableData)("columnMode", "force")("columns", ctx.tableHeaders)("displayCheck", ctx.displayCheck)("selectionType", ctx.selectionType.checkbox)("selectAllRowsOnPage", false)("headerHeight", 50)("footerHeight", 50)("rowHeight", "auto")("loadingIndicator", true)("selected", ctx.selected)("messages", \u0275\u0275pureFunction0(19, _c12))("limit", ctx.tableLimit)("offset", ctx.tableOffset)("count", ctx.tableCount)("externalPaging", ctx.externalPaging)("externalSorting", ctx.externalPaging)("scrollbarH", ctx.scrollBarHorizontal); 8331 \u0275\u0275advance(2); 8332 \u0275\u0275property("ngForOf", ctx.tableHeaders); 8333 } 8334 }, dependencies: [CommonModule, NgClass, NgForOf, NgIf, NgStyle, NgxDatatableModule, DatatableComponent, DataTableColumnDirective, DataTableColumnCellDirective, MatCheckboxModule, MatCheckbox, MatIconModule, MatIcon, MatButtonModule, MatButton, MatIconButton, MatTooltipModule, MatTooltip, TranslateModule, TranslatePipe], styles: ["\n\n.disabled[_ngcontent-%COMP%], \n.disabled-increase[_ngcontent-%COMP%] input[_ngcontent-%COMP%], \n.disabled-increase[_ngcontent-%COMP%] .increase[_ngcontent-%COMP%] {\n pointer-events: none;\n opacity: 0.5;\n}\n.datatable-header-cell-label[_ngcontent-%COMP%] {\n color: #050a1d !important;\n}\n.code-img[_ngcontent-%COMP%] {\n position: absolute;\n width: 220px;\n height: 220px;\n background-color: #f5f7f9;\n box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.1);\n border-radius: 6px;\n top: 60px;\n z-index: 10;\n}\n.code-img[_ngcontent-%COMP%] .arow[_ngcontent-%COMP%] {\n position: absolute;\n left: 20px;\n top: -22px;\n rotate: 270deg;\n border-radius: 8px;\n z-index: -1;\n}\n.code-img[_ngcontent-%COMP%] .arow[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] path[_ngcontent-%COMP%] {\n fill: #f5f7f9;\n}\n.show-img[_ngcontent-%COMP%] .code-img[_ngcontent-%COMP%] {\n display: flex !important;\n align-items: center;\n justify-content: center;\n}\n.custom-badge[_ngcontent-%COMP%] {\n background: #f5f5f5;\n color: #000;\n padding: 0.4rem 0.8rem;\n border-radius: 6px;\n font-size: 0.8rem !important;\n font-weight: 500 !important;\n margin-left: 0.5rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.available[_ngcontent-%COMP%] {\n background-color: transparent;\n color: #52965f;\n font-size: 16px;\n margin-left: 0 !important;\n padding: 0;\n}\n.unavailable[_ngcontent-%COMP%], \n.to_order[_ngcontent-%COMP%] {\n background-color: transparent;\n color: #daa158;\n font-size: 16px;\n margin-left: 0 !important;\n padding: 0;\n}\n.to_order[_ngcontent-%COMP%] {\n background-color: transparent;\n color: #daa158;\n font-size: 16px;\n margin-left: 0 !important;\n padding: 0;\n}\n.created[_ngcontent-%COMP%] {\n background: rgba(218, 161, 88, 0.2) !important;\n color: #daa158 !important;\n margin-left: 0;\n}\n.in-approval[_ngcontent-%COMP%] {\n background: rgba(255, 166, 0, 0.2) !important;\n color: orange !important;\n margin-left: 0;\n}\n.in-processing[_ngcontent-%COMP%] {\n background: rgba(255, 166, 0, 0.2) !important;\n color: orange !important;\n margin-left: 0;\n}\n.AWAITING_PAYMENT[_ngcontent-%COMP%] {\n background: rgba(255, 166, 0, 0.2) !important;\n color: orange !important;\n margin-left: 0;\n}\n.PAYMENT_APPROVED[_ngcontent-%COMP%] {\n background: rgba(0, 255, 42, 0.2) !important;\n color: #28ab28 !important;\n margin-left: 0;\n}\n.FINANCING_APPROVED[_ngcontent-%COMP%] {\n background: rgba(0, 255, 42, 0.2) !important;\n color: #28ab28 !important;\n margin-left: 0;\n}\n.in-assemble[_ngcontent-%COMP%] {\n background: rgba(0, 176, 255, 0.2) !important;\n color: #3f3fcd !important;\n margin-left: 0;\n}\n.invoice[_ngcontent-%COMP%] {\n background: rgba(0, 176, 255, 0.2) !important;\n color: #3f3fcd !important;\n margin-left: 0;\n}\n.in-delivery[_ngcontent-%COMP%] {\n background: rgba(247, 186, 255, 0.2) !important;\n color: #d16a7c !important;\n margin-left: 0;\n}\n.delivered[_ngcontent-%COMP%] {\n background: rgba(0, 255, 42, 0.2) !important;\n color: #28ab28 !important;\n margin-left: 0;\n}\n.loss[_ngcontent-%COMP%] {\n background: rgba(255, 0, 0, 0.2) !important;\n color: red !important;\n margin-left: 0;\n}
8334\n.income[_ngcontent-%COMP%] {\n background: rgba(0, 255, 42, 0.2) !important;\n color: #28ab28 !important;\n margin-left: 0;\n}\n.withdraw[_ngcontent-%COMP%] {\n background: rgba(255, 0, 0, 0.2) !important;\n color: red !important;\n margin-left: 0;\n}\n.deleted-row.deleted[_ngcontent-%COMP%] {\n background-color: transparent;\n color: #fb273e !important;\n font-size: 16px;\n margin-left: 0 !important;\n padding: 0;\n}\n.deleted-row[_ngcontent-%COMP%] {\n color: #647387 !important;\n}\n.buttons.deleted-row[_ngcontent-%COMP%] .delete[_ngcontent-%COMP%] {\n display: none;\n}\n.buttons[_ngcontent-%COMP%] .restore[_ngcontent-%COMP%] {\n display: none;\n}\n.buttons.deleted-row[_ngcontent-%COMP%] .restore[_ngcontent-%COMP%] {\n display: block;\n}\n.qty-box[_ngcontent-%COMP%] {\n width: 108px;\n}\n.qty-box[_ngcontent-%COMP%] .input-group-prepend[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0 5px !important;\n}\n.video-button[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n}\n.search[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] {\n border-radius: 6px;\n border: 1px solid #e4e8f1;\n transition: all 0.3s ease;\n padding-left: 45px;\n}\n.search[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n position: absolute;\n margin-top: -4px;\n left: 15px;\n}\n.form-control[_ngcontent-%COMP%]:focus {\n box-shadow: none;\n border-color: #c2c5cc !important;\n}\n .ngx-datatable {\n overflow: inherit !important;\n}\n .datatable-body-cell-label, \n .code-prop {\n height: 30px;\n display: flex;\n align-items: center;\n}\n .datatable-body-cell-label .mat-mdc-icon-button, \n .code-prop .mat-mdc-icon-button {\n width: 30px;\n height: 30px;\n padding: 0;\n justify-content: center;\n}\n .datatable-body-cell-label .mat-mdc-icon-button .mat-mdc-button-touch-target, \n .code-prop .mat-mdc-icon-button .mat-mdc-button-touch-target {\n height: 36px;\n width: 36px;\n}\n .datatable-body-cell-label .buttons {\n margin: 0 !important;\n}\n .datatable-body-cell-label .buttons button {\n display: flex;\n align-items: center;\n}\n .datatable-body-cell-label .buttons button .mat-button-wrapper {\n height: fit-content;\n width: 100%;\n}\n .code-prop {\n cursor: pointer;\n}\n .datatable-body-cell .datatable-body-cell-label span, \n .datatable-header-cell .datatable-header-cell-wrapper span {\n white-space: nowrap;\n}\n .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled).active a {\n background-color: #a7b1be !important;\n border-color: #a7b1be !important;\n}\n .ngx-datatable.bootstrap .datatable-footer .datatable-pager ul li:not(.disabled):hover a {\n filter: brightness(0.9);\n font-weight: 400 !important;\n}\n .ngx-datatable.bootstrap .datatable-footer .datatable-pager a {\n display: flex !important;\n align-items: center;\n padding: 0px 9px;\n height: 26px;\n font-size: 14px;\n line-height: 16px;\n min-width: 24px;\n border-radius: 6px;\n color: white;\n background-color: #050a1d;\n border-color: #050a1d;\n}\n .ngx-datatable .datatable-footer .datatable-pager .pager li.disabled a {\n background-color: #a7b1be !important;\n border-color: #a7b1be !important;\n}\n .ngx-datatable .datatable-footer .datatable-pager .pager {\n display: flex !important;\n justify-content: flex-end;\n gap: 4px;\n}\n .ngx-datatable .datatable-footer .datatable-pager .pager li a i {\n display: flex;\n align-items: center;\n}\n .ngx-datatable .datatable-body {\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n}"] }); 8335 } 8336}; 8337(() => { 8338 (typeof ngDevMode === "undefined" || ngDevMode) && \u0275setClassDebugInfo(TableComponent, { className: "TableComponent", filePath: "src/app/shared/components/table/table.component.ts", lineNumber: 54 }); 8339})(); 8340 8341export { 8342 TableComponent 8343};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.