@angular-bootstrap/ngbootstrap 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +38 -0
- package/README.md +9 -0
- package/RELEASE_NOTES.md +41 -23
- package/THEMING.md +271 -0
- package/fesm2022/angular-bootstrap-ngbootstrap.mjs +605 -90
- package/fesm2022/angular-bootstrap-ngbootstrap.mjs.map +1 -1
- package/package.json +15 -5
- package/src/ai/README.md +134 -0
- package/src/styles/_controls.scss +86 -0
- package/src/styles/_drag-drop.scss +3 -0
- package/src/styles/_tokens.scss +6 -0
- package/src/styles/integrations/tailwind.css +37 -0
- package/src/styles/styles.css +12 -19
- package/src/styles/themes/_bootstrap.scss +48 -0
- package/src/styles/themes/_material.scss +44 -0
- package/src/styles/themes/_presets.scss +344 -0
- package/src/styles/themes/_tailwind.scss +32 -0
- package/src/styles/themes.scss +3 -0
- package/types/angular-bootstrap-ngbootstrap.d.ts +155 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component, ViewChild, Directive, inject, Injectable, signal, TemplateRef, HostBinding, input, computed, ElementRef, Renderer2, ChangeDetectorRef,
|
|
2
|
+
import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component, ViewChild, Directive, inject, Injectable, signal, TemplateRef, HostBinding, input, computed, ElementRef, Renderer2, ChangeDetectorRef, InjectionToken, Optional, Inject, HostListener, QueryList, forwardRef, ContentChildren, ContentChild, ViewEncapsulation, SkipSelf, ViewChildren, model, output, viewChild, effect } from '@angular/core';
|
|
3
3
|
import * as i1$1 from '@angular/common';
|
|
4
4
|
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
@@ -148,7 +148,7 @@ class NgbPaginationComponent {
|
|
|
148
148
|
}
|
|
149
149
|
</nav>
|
|
150
150
|
}
|
|
151
|
-
`, isInline: true, styles: [".ngb-pagination--responsive .pagination{flex-wrap:wrap;justify-content:center;gap:.15rem}.ngb-pagination .page-link,.ngb-pagination .btn{border-color:var(--dg-pager-control-border, var(--bs-border-color));background-color:var(--dg-pager-control-bg, var(--bs-body-bg));color:var(--dg-pager-link-text, var(--dg-primary, var(--bs-primary)))}.ngb-pagination .page-link:hover,.ngb-pagination .btn:hover{border-color:var(--dg-border-strong, var(--bs-border-color));background-color:var(--dg-pager-control-hover-bg, var(--bs-tertiary-bg));color:var(--dg-primary-hover, var(--bs-link-hover-color))}.ngb-pagination .page-item.active .page-link{border-color:var(--dg-pager-active-border, var(--dg-primary, var(--bs-primary)));background-color:var(--dg-pager-active-bg, var(--dg-primary, var(--bs-primary)));color:var(--dg-pager-active-text, var(--dg-on-primary, #fff))}.ngb-pagination .page-item.disabled .page-link,.ngb-pagination .btn:disabled{border-color:var(--dg-pager-control-border, var(--bs-border-color));background-color:var(--dg-pager-control-bg, var(--bs-body-bg));color:var(--dg-text-subtle, var(--bs-secondary-color));opacity
|
|
151
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}\n", ".pagination{--bs-pagination-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.ngb-pagination--responsive .pagination{flex-wrap:wrap;justify-content:center;gap:.15rem}.ngb-pagination .page-link,.ngb-pagination .btn{border-color:var(--dg-pager-control-border, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-bg, var(--ngb-surface, var(--bs-body-bg)));color:var(--dg-pager-link-text, var(--dg-primary, var(--ngb-primary, var(--bs-primary))))}.ngb-pagination .page-link:focus,.ngb-pagination .page-link:hover,.ngb-pagination .btn:hover{border-color:var(--dg-border-strong, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-hover-bg, var(--ngb-hover-bg, var(--bs-tertiary-bg)));color:var(--dg-primary-hover, var(--ngb-primary-hover, var(--bs-link-hover-color)))}.ngb-pagination .page-link:focus{box-shadow:var(--dg-focus-shadow, 0 0 0 .25rem var(--ngb-focus-ring, rgba(13,110,253,.25)))}.ngb-pagination .page-item.active .page-link{border-color:var(--dg-pager-active-border, var(--dg-primary, var(--ngb-primary, var(--bs-primary))));background-color:var(--dg-pager-active-bg, var(--dg-primary, var(--ngb-primary, var(--bs-primary))));color:var(--dg-pager-active-text, var(--dg-on-primary, var(--ngb-on-primary, #fff)))}.ngb-pagination .page-item.disabled .page-link,.ngb-pagination .btn:disabled{border-color:var(--dg-pager-control-border, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-bg, var(--ngb-surface, var(--bs-body-bg)));color:var(--dg-text-subtle, var(--ngb-on-surface-variant, var(--bs-secondary-color)));opacity:var(--ngb-disabled-opacity, .55)}.ngb-pagination__input-group{display:inline-flex;align-items:center;gap:.35rem;flex-wrap:wrap;justify-content:center}.ngb-pagination__page-input{width:4.25rem;text-align:center;border-color:var(--dg-pager-control-border, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-bg, var(--ngb-surface, var(--bs-body-bg)));color:var(--dg-text, var(--ngb-on-surface, var(--bs-body-color)))}.ngb-pagination__input-label{margin:0}.ngb-pagination__input-total{font-size:.875rem;color:var(--dg-pager-text, var(--ngb-on-surface-variant, var(--bs-secondary-color)));white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number]:not([ngNoCva])[formControlName],input[type=number]:not([ngNoCva])[formControl],input[type=number]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
152
152
|
}
|
|
153
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbPaginationComponent, decorators: [{
|
|
154
154
|
type: Component,
|
|
@@ -249,7 +249,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
249
249
|
}
|
|
250
250
|
</nav>
|
|
251
251
|
}
|
|
252
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ngb-pagination--responsive .pagination{flex-wrap:wrap;justify-content:center;gap:.15rem}.ngb-pagination .page-link,.ngb-pagination .btn{border-color:var(--dg-pager-control-border, var(--bs-border-color));background-color:var(--dg-pager-control-bg, var(--bs-body-bg));color:var(--dg-pager-link-text, var(--dg-primary, var(--bs-primary)))}.ngb-pagination .page-link:hover,.ngb-pagination .btn:hover{border-color:var(--dg-border-strong, var(--bs-border-color));background-color:var(--dg-pager-control-hover-bg, var(--bs-tertiary-bg));color:var(--dg-primary-hover, var(--bs-link-hover-color))}.ngb-pagination .page-item.active .page-link{border-color:var(--dg-pager-active-border, var(--dg-primary, var(--bs-primary)));background-color:var(--dg-pager-active-bg, var(--dg-primary, var(--bs-primary)));color:var(--dg-pager-active-text, var(--dg-on-primary, #fff))}.ngb-pagination .page-item.disabled .page-link,.ngb-pagination .btn:disabled{border-color:var(--dg-pager-control-border, var(--bs-border-color));background-color:var(--dg-pager-control-bg, var(--bs-body-bg));color:var(--dg-text-subtle, var(--bs-secondary-color));opacity
|
|
252
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}\n", ".pagination{--bs-pagination-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.ngb-pagination--responsive .pagination{flex-wrap:wrap;justify-content:center;gap:.15rem}.ngb-pagination .page-link,.ngb-pagination .btn{border-color:var(--dg-pager-control-border, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-bg, var(--ngb-surface, var(--bs-body-bg)));color:var(--dg-pager-link-text, var(--dg-primary, var(--ngb-primary, var(--bs-primary))))}.ngb-pagination .page-link:focus,.ngb-pagination .page-link:hover,.ngb-pagination .btn:hover{border-color:var(--dg-border-strong, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-hover-bg, var(--ngb-hover-bg, var(--bs-tertiary-bg)));color:var(--dg-primary-hover, var(--ngb-primary-hover, var(--bs-link-hover-color)))}.ngb-pagination .page-link:focus{box-shadow:var(--dg-focus-shadow, 0 0 0 .25rem var(--ngb-focus-ring, rgba(13,110,253,.25)))}.ngb-pagination .page-item.active .page-link{border-color:var(--dg-pager-active-border, var(--dg-primary, var(--ngb-primary, var(--bs-primary))));background-color:var(--dg-pager-active-bg, var(--dg-primary, var(--ngb-primary, var(--bs-primary))));color:var(--dg-pager-active-text, var(--dg-on-primary, var(--ngb-on-primary, #fff)))}.ngb-pagination .page-item.disabled .page-link,.ngb-pagination .btn:disabled{border-color:var(--dg-pager-control-border, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-bg, var(--ngb-surface, var(--bs-body-bg)));color:var(--dg-text-subtle, var(--ngb-on-surface-variant, var(--bs-secondary-color)));opacity:var(--ngb-disabled-opacity, .55)}.ngb-pagination__input-group{display:inline-flex;align-items:center;gap:.35rem;flex-wrap:wrap;justify-content:center}.ngb-pagination__page-input{width:4.25rem;text-align:center;border-color:var(--dg-pager-control-border, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-bg, var(--ngb-surface, var(--bs-body-bg)));color:var(--dg-text, var(--ngb-on-surface, var(--bs-body-color)))}.ngb-pagination__input-label{margin:0}.ngb-pagination__input-total{font-size:.875rem;color:var(--dg-pager-text, var(--ngb-on-surface-variant, var(--bs-secondary-color)));white-space:nowrap}\n"] }]
|
|
253
253
|
}], propDecorators: { page: [{
|
|
254
254
|
type: Input
|
|
255
255
|
}], pageSize: [{
|
|
@@ -484,7 +484,7 @@ class NgbPagerComponent {
|
|
|
484
484
|
<div class="ngb-pager__page-size ngb-pager__part--sizes ngb-pager__part--spacer" aria-hidden="true"></div>
|
|
485
485
|
}
|
|
486
486
|
</div>
|
|
487
|
-
`, isInline: true, styles: [".ngb-pager{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.5rem .75rem;width:100%;color:var(--dg-pager-text, var(--bs-secondary-color))}.ngb-pager__range{justify-self:start;min-width:0;color:var(--dg-pager-text, var(--bs-secondary-color))!important}.ngb-pager__pagination{display:flex;justify-content:center;justify-self:center;min-width:0}.ngb-pager__page-size{display:inline-flex;align-items:center;justify-self:end;gap:.5rem;min-width:0}.ngb-pager__page-size-label{margin:0;white-space:nowrap;font-size:.875rem;line-height:1.25;color:var(--dg-pager-text, var(--bs-secondary-color))}.ngb-pager__page-size-select{width:auto;min-width:4.5rem;flex:0 0 auto;border-color:var(--dg-pager-control-border, var(--bs-border-color));background-color:var(--dg-pager-control-bg, var(--bs-body-bg));background-image:var(--dg-pager-select-icon);background-position:right .75rem center;background-repeat:no-repeat;background-size:16px 12px;color:var(--dg-text, var(--bs-body-color));padding-right:2.25rem;appearance:none}.ngb-pager--wrap{display:flex;flex-wrap:wrap;justify-content:center}.ngb-pager--wrap .ngb-pager__range{flex:1 1 100%;justify-self:auto}.ngb-pager--wrap .ngb-pager__pagination{flex:1 1 100%;justify-content:center;justify-self:auto}.ngb-pager--wrap .ngb-pager__page-size{flex:0 0 auto;justify-self:auto}.ngb-pager--responsive{flex-wrap:nowrap;overflow:hidden}.ngb-pager__part--hidden{visibility:hidden;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple]):not([ngNoCva])[formControlName],select:not([multiple]):not([ngNoCva])[formControl],select:not([multiple]):not([ngNoCva])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: NgbPaginationComponent, selector: "ngb-pagination", inputs: ["page", "pageSize", "collectionSize", "maxSize", "buttonCount", "previousNext", "pagerType", "responsive"], outputs: ["pageChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
487
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}\n", ".ngb-pager{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.5rem .75rem;width:100%;color:var(--dg-pager-text, var(--ngb-on-surface-variant, var(--bs-secondary-color)))}.ngb-pager__range{justify-self:start;min-width:0;color:var(--dg-pager-text, var(--ngb-on-surface-variant, var(--bs-secondary-color)))!important}.ngb-pager__pagination{display:flex;justify-content:center;justify-self:center;min-width:0}.ngb-pager__page-size{display:inline-flex;align-items:center;justify-self:end;gap:.5rem;min-width:0}.ngb-pager__page-size-label{margin:0;white-space:nowrap;font-size:.875rem;line-height:1.25;color:var(--dg-pager-text, var(--ngb-on-surface-variant, var(--bs-secondary-color)))}.ngb-pager__page-size-select{width:auto;min-width:4.5rem;flex:0 0 auto;border-color:var(--dg-pager-control-border, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-bg, var(--ngb-surface, var(--bs-body-bg)));background-image:var(--dg-pager-select-icon, var(--ngb-select-icon, var(--bs-form-select-bg-img)));background-position:right .75rem center;background-repeat:no-repeat;background-size:16px 12px;color:var(--dg-text, var(--ngb-on-surface, var(--bs-body-color)));padding-right:2.25rem;appearance:none}.ngb-pager--wrap{display:flex;flex-wrap:wrap;justify-content:center}.ngb-pager--wrap .ngb-pager__range{flex:1 1 100%;justify-self:auto}.ngb-pager--wrap .ngb-pager__pagination{flex:1 1 100%;justify-content:center;justify-self:auto}.ngb-pager--wrap .ngb-pager__page-size{flex:0 0 auto;justify-self:auto}.ngb-pager--responsive{flex-wrap:nowrap;overflow:hidden}.ngb-pager__part--hidden{visibility:hidden;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple]):not([ngNoCva])[formControlName],select:not([multiple]):not([ngNoCva])[formControl],select:not([multiple]):not([ngNoCva])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: NgbPaginationComponent, selector: "ngb-pagination", inputs: ["page", "pageSize", "collectionSize", "maxSize", "buttonCount", "previousNext", "pagerType", "responsive"], outputs: ["pageChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
488
488
|
}
|
|
489
489
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbPagerComponent, decorators: [{
|
|
490
490
|
type: Component,
|
|
@@ -549,7 +549,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
549
549
|
<div class="ngb-pager__page-size ngb-pager__part--sizes ngb-pager__part--spacer" aria-hidden="true"></div>
|
|
550
550
|
}
|
|
551
551
|
</div>
|
|
552
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".ngb-pager{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.5rem .75rem;width:100%;color:var(--dg-pager-text, var(--bs-secondary-color))}.ngb-pager__range{justify-self:start;min-width:0;color:var(--dg-pager-text, var(--bs-secondary-color))!important}.ngb-pager__pagination{display:flex;justify-content:center;justify-self:center;min-width:0}.ngb-pager__page-size{display:inline-flex;align-items:center;justify-self:end;gap:.5rem;min-width:0}.ngb-pager__page-size-label{margin:0;white-space:nowrap;font-size:.875rem;line-height:1.25;color:var(--dg-pager-text, var(--bs-secondary-color))}.ngb-pager__page-size-select{width:auto;min-width:4.5rem;flex:0 0 auto;border-color:var(--dg-pager-control-border, var(--bs-border-color));background-color:var(--dg-pager-control-bg, var(--bs-body-bg));background-image:var(--dg-pager-select-icon);background-position:right .75rem center;background-repeat:no-repeat;background-size:16px 12px;color:var(--dg-text, var(--bs-body-color));padding-right:2.25rem;appearance:none}.ngb-pager--wrap{display:flex;flex-wrap:wrap;justify-content:center}.ngb-pager--wrap .ngb-pager__range{flex:1 1 100%;justify-self:auto}.ngb-pager--wrap .ngb-pager__pagination{flex:1 1 100%;justify-content:center;justify-self:auto}.ngb-pager--wrap .ngb-pager__page-size{flex:0 0 auto;justify-self:auto}.ngb-pager--responsive{flex-wrap:nowrap;overflow:hidden}.ngb-pager__part--hidden{visibility:hidden;pointer-events:none}\n"] }]
|
|
552
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}\n", ".ngb-pager{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.5rem .75rem;width:100%;color:var(--dg-pager-text, var(--ngb-on-surface-variant, var(--bs-secondary-color)))}.ngb-pager__range{justify-self:start;min-width:0;color:var(--dg-pager-text, var(--ngb-on-surface-variant, var(--bs-secondary-color)))!important}.ngb-pager__pagination{display:flex;justify-content:center;justify-self:center;min-width:0}.ngb-pager__page-size{display:inline-flex;align-items:center;justify-self:end;gap:.5rem;min-width:0}.ngb-pager__page-size-label{margin:0;white-space:nowrap;font-size:.875rem;line-height:1.25;color:var(--dg-pager-text, var(--ngb-on-surface-variant, var(--bs-secondary-color)))}.ngb-pager__page-size-select{width:auto;min-width:4.5rem;flex:0 0 auto;border-color:var(--dg-pager-control-border, var(--ngb-border-color, var(--bs-border-color)));background-color:var(--dg-pager-control-bg, var(--ngb-surface, var(--bs-body-bg)));background-image:var(--dg-pager-select-icon, var(--ngb-select-icon, var(--bs-form-select-bg-img)));background-position:right .75rem center;background-repeat:no-repeat;background-size:16px 12px;color:var(--dg-text, var(--ngb-on-surface, var(--bs-body-color)));padding-right:2.25rem;appearance:none}.ngb-pager--wrap{display:flex;flex-wrap:wrap;justify-content:center}.ngb-pager--wrap .ngb-pager__range{flex:1 1 100%;justify-self:auto}.ngb-pager--wrap .ngb-pager__pagination{flex:1 1 100%;justify-content:center;justify-self:auto}.ngb-pager--wrap .ngb-pager__page-size{flex:0 0 auto;justify-self:auto}.ngb-pager--responsive{flex-wrap:nowrap;overflow:hidden}.ngb-pager__part--hidden{visibility:hidden;pointer-events:none}\n"] }]
|
|
553
553
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { pagerRoot: [{
|
|
554
554
|
type: ViewChild,
|
|
555
555
|
args: ['pagerRoot']
|
|
@@ -3680,6 +3680,7 @@ class NgbDatagridFloatingPanelDirective {
|
|
|
3680
3680
|
portaled = false;
|
|
3681
3681
|
originalParent = null;
|
|
3682
3682
|
originalNextSibling = null;
|
|
3683
|
+
copiedThemeTokens = [];
|
|
3683
3684
|
scrollListeners = [];
|
|
3684
3685
|
resizeObserver = null;
|
|
3685
3686
|
rafId = null;
|
|
@@ -3741,6 +3742,9 @@ class NgbDatagridFloatingPanelDirective {
|
|
|
3741
3742
|
this.renderer.removeClass(node, 'ngb-datagrid-floating-panel');
|
|
3742
3743
|
this.renderer.removeClass(node, 'show');
|
|
3743
3744
|
this.renderer.removeAttribute(node, 'data-theme');
|
|
3745
|
+
for (const token of this.copiedThemeTokens)
|
|
3746
|
+
node.style.removeProperty(token);
|
|
3747
|
+
this.copiedThemeTokens = [];
|
|
3744
3748
|
this.panelTop = 0;
|
|
3745
3749
|
this.panelLeft = 0;
|
|
3746
3750
|
this.clearPositionStyles(node);
|
|
@@ -3849,6 +3853,18 @@ class NgbDatagridFloatingPanelDirective {
|
|
|
3849
3853
|
else {
|
|
3850
3854
|
this.renderer.removeAttribute(panel, 'data-theme');
|
|
3851
3855
|
}
|
|
3856
|
+
// Portaling to body loses ancestor theme variables. Copy resolved tokens,
|
|
3857
|
+
// including custom overrides, so scoped themes and named presets both work.
|
|
3858
|
+
if (grid) {
|
|
3859
|
+
const styles = getComputedStyle(grid);
|
|
3860
|
+
for (let i = 0; i < styles.length; i++) {
|
|
3861
|
+
const token = styles.item(i);
|
|
3862
|
+
if (!token.startsWith('--dg-') && !token.startsWith('--ngb-'))
|
|
3863
|
+
continue;
|
|
3864
|
+
panel.style.setProperty(token, styles.getPropertyValue(token));
|
|
3865
|
+
this.copiedThemeTokens.push(token);
|
|
3866
|
+
}
|
|
3867
|
+
}
|
|
3852
3868
|
}
|
|
3853
3869
|
anchorRect(anchor) {
|
|
3854
3870
|
const rect = anchor.getBoundingClientRect();
|
|
@@ -4956,48 +4972,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
4956
4972
|
args: [{ required: true }]
|
|
4957
4973
|
}] } });
|
|
4958
4974
|
|
|
4959
|
-
class NgbGridHighlightDirective {
|
|
4960
|
-
grid;
|
|
4961
|
-
rowKey;
|
|
4962
|
-
highlightColumnIndex;
|
|
4963
|
-
highlightedIndex = [];
|
|
4964
|
-
constructor(grid) {
|
|
4965
|
-
this.grid = grid;
|
|
4966
|
-
}
|
|
4967
|
-
ngOnInit() {
|
|
4968
|
-
this.apply();
|
|
4969
|
-
}
|
|
4970
|
-
ngOnChanges(_ch) {
|
|
4971
|
-
this.apply();
|
|
4972
|
-
}
|
|
4973
|
-
apply() {
|
|
4974
|
-
if (!this.grid)
|
|
4975
|
-
return;
|
|
4976
|
-
this.grid.highlightRowKey = this.rowKey ?? null;
|
|
4977
|
-
this.grid.highlightColKey = this.highlightColumnIndex ?? null;
|
|
4978
|
-
this.grid.highlightedIndex = this.highlightedIndex ?? [];
|
|
4979
|
-
this.grid.updateHighlightCache();
|
|
4980
|
-
}
|
|
4981
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbGridHighlightDirective, deps: [{ token: Datagrid, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
4982
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: NgbGridHighlightDirective, isStandalone: true, selector: "[ngbGridHighlight]", inputs: { rowKey: ["ngbGridHighlight", "rowKey"], highlightColumnIndex: "highlightColumnIndex", highlightedIndex: "highlightedIndex" }, usesOnChanges: true, ngImport: i0 });
|
|
4983
|
-
}
|
|
4984
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbGridHighlightDirective, decorators: [{
|
|
4985
|
-
type: Directive,
|
|
4986
|
-
args: [{
|
|
4987
|
-
selector: '[ngbGridHighlight]',
|
|
4988
|
-
standalone: true
|
|
4989
|
-
}]
|
|
4990
|
-
}], ctorParameters: () => [{ type: Datagrid, decorators: [{
|
|
4991
|
-
type: Optional
|
|
4992
|
-
}] }], propDecorators: { rowKey: [{
|
|
4993
|
-
type: Input,
|
|
4994
|
-
args: ['ngbGridHighlight']
|
|
4995
|
-
}], highlightColumnIndex: [{
|
|
4996
|
-
type: Input
|
|
4997
|
-
}], highlightedIndex: [{
|
|
4998
|
-
type: Input
|
|
4999
|
-
}] } });
|
|
5000
|
-
|
|
5001
4975
|
class NgbLiveAnnouncer {
|
|
5002
4976
|
node = null;
|
|
5003
4977
|
announce(message) {
|
|
@@ -10549,7 +10523,7 @@ class Datagrid {
|
|
|
10549
10523
|
{ provide: PdfExportAdapter, useClass: JsPdfAdapter },
|
|
10550
10524
|
{ provide: ExcelExportAdapter, useClass: BrowserExcelExportAdapter },
|
|
10551
10525
|
{ provide: NGB_DATAGRID_HOST, useExisting: forwardRef(() => Datagrid) },
|
|
10552
|
-
], queries: [{ propertyName: "exportButtonDir", first: true, predicate: ExportButtonDirective, descendants: true }, { propertyName: "rowDetailTpl", first: true, predicate: NgbRowDetailTemplate, descendants: true }, { propertyName: "pagerTpl", first: true, predicate: NgbPagerTemplate, descendants: true }, { propertyName: "groupHeaderTpl", first: true, predicate: NgbDataGridGroupHeaderTemplateDirective, descendants: true }, { propertyName: "cellTplQ", predicate: NgbCellTemplate }, { propertyName: "editTplQ", predicate: NgbEditorTemplate }, { propertyName: "filterTplQ", predicate: NgbFilterTemplate }, { propertyName: "filterMenuTplQ", predicate: NgbFilterMenuTemplate }, { propertyName: "globalTplQ", predicate: NgbGlobalFilterTemplate }, { propertyName: "groupHeaderColumnTplQ", predicate: NgbDataGridGroupHeaderColumnTemplateDirective }, { propertyName: "groupFooterTplQ", predicate: NgbDataGridGroupFooterTemplateDirective }, { propertyName: "gridColumnQ", predicate: NgbGridColumnDirective }], viewQueries: [{ propertyName: "bodyScroller", first: true, predicate: ["bodyScroller"], descendants: true }, { propertyName: "headerScroller", first: true, predicate: ["headerScroller"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"ngb-grid\"\n [attr.dir]=\"resolvedDir()\"\n [attr.data-theme]=\"theme\"\n [class.ngb-grid--rtl]=\"isRtl()\"\n [class.ngb-responsive]=\"isResponsiveEnabled()\"\n [class.ngb-grid--compact]=\"densityMode === 'compact'\"\n [class.ngb-grid--stacked]=\"isStackedLayout()\"\n [class.ngb-grid--stacked-cards]=\"isStackedCardsLayout()\"\n [class.ngb-grid--menu-open]=\"!!openFilterMenuField || !!openMenuOperatorField || !!openRowFilterField\"\n [class.ngb-grid--row-operator-open]=\"!!openRowFilterField\"\n [class.ngb-grid--zebra]=\"zebraStripesEnabled\"\n [class.ngb-grid--resizable]=\"resizable && !isStackedLayout()\"\n [class.ngb-grid--column-reorderable]=\"isColumnReorderEnabled()\"\n [class.ngb-grid--loading]=\"loading\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n [style.--ngb-render-tick]=\"renderTick\"\n>\n <div class=\"ngb-grid__layout-toolbar-host\">\n <ng-content select=\"ngb-datagrid-layout-toolbar\"></ng-content>\n </div>\n <ngb-datagrid-toolbar [grid]=\"gridHost\"></ngb-datagrid-toolbar>\n <ngb-datagrid-editing-toolbar\n [grid]=\"gridHost\"\n [selectedCount]=\"getSelectedCount()\"\n [editActive]=\"isToolbarEditActive()\"\n [saveDisabled]=\"isToolbarSaveDisabled()\"\n ></ngb-datagrid-editing-toolbar>\n\n @if (paginationActive && pagerShowsAt('top')) {\n <ngb-datagrid-footer [grid]=\"gridHost\" placement=\"top\"></ngb-datagrid-footer>\n }\n\n <div\n class=\"ngb-grid__status visually-hidden-focusable\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >{{ statusMessage }}</div>\n\n @if (isGroupingEnabled()) {\n <div\n class=\"ngb-grid__group-panel\"\n [class.ngb-grid__group-panel--active]=\"groupPanelDragActive && !groupPanelDragDenied\"\n [class.ngb-grid__group-panel--denied]=\"groupPanelDragDenied\"\n (dragover)=\"onGroupPanelDragOver($event)\"\n (dragleave)=\"onGroupPanelDragLeave($event)\"\n (drop)=\"onGroupPanelDrop($event)\"\n >\n <div class=\"ngb-grid__group-panel-label\">{{ groupPanelLabel() }}</div>\n @if (groupedColumns().length) {\n <div class=\"ngb-grid__group-chip-list\">\n @for (descriptor of groupedColumns(); track descriptor.field) {\n <div class=\"ngb-grid__group-chip\">\n <button\n type=\"button\"\n class=\"ngb-grid__group-chip-button\"\n (click)=\"toggleGroupDirection(descriptor.field)\"\n [attr.aria-label]=\"groupDirectionAriaLabel(descriptor)\"\n >\n <span class=\"ngb-grid__group-chip-label\">{{ groupFieldLabel(descriptor) }}</span>\n <span class=\"ngb-grid__group-chip-dir\">{{ descriptor.dir === 'desc' ? '\u2193' : '\u2191' }}</span>\n </button>\n <button\n type=\"button\"\n class=\"ngb-grid__group-chip-remove\"\n (click)=\"removeGroupField(descriptor.field)\"\n [attr.aria-label]=\"groupRemoveAriaLabel(descriptor)\"\n >\n <span class=\"bi bi-x-lg\" aria-hidden=\"true\"></span>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <div class=\"table-wrapper\" [ngClass]=\"responsiveWrapperClasses\">\n @if (loading) {\n <div class=\"ngb-grid__loading-overlay\" role=\"presentation\">\n <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\">\n <span class=\"visually-hidden\">Loading</span>\n </div>\n </div>\n }\n <div class=\"grid-header-shell\" #headerScroller>\n <table class=\"grid-table grid-header mb-0\" [ngClass]=\"tableClassList\" [style.width.px]=\"tablePixelWidth\">\n @if (tableOptions?.caption) {\n <caption\n [class.caption-top]=\"(tableOptions?.captionSide ?? 'top') === 'top'\"\n >\n {{ tableOptions?.caption }}\n </caption>\n }\n\n <colgroup\n ngbDatagridColgroup\n [grid]=\"gridHost\"\n [ngbSyncColgroup]=\"colgroupSyncId\"\n syncRole=\"header\"\n [syncMode]=\"resizable ? 'explicit' : 'auto'\"\n ></colgroup>\n\n <thead\n class=\"table-light\"\n ngbDatagridHeader\n [grid]=\"gridHost\"\n [renderTick]=\"renderTick\"\n ></thead>\n </table>\n </div>\n\n <div [class.table-body-scroll]=\"shouldEnableScroll\" #bodyScroller (scroll)=\"onBodyHorizontalScroll()\">\n @if (hasStickyGroupHeaders()) {\n <div\n class=\"ngb-grid__group-sticky-layer ngb-grid__group-sticky-layer--top\"\n [style.transform]=\"'translateY(' + stickyGroupHeaderTranslateY + 'px)'\"\n >\n <table\n class=\"grid-table grid-group-sticky-table mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"presentation\"\n >\n <colgroup>\n @for (width of stickyGroupOverlayColumnWidths; track $index) {\n <col [style.width.px]=\"width || null\" />\n }\n </colgroup>\n <tbody>\n @for (item of stickyGroupHeaderRows; track item.key) {\n <tr class=\"grid-group-row grid-group-row--overlay\">\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n @if (shouldRenderGroupCell(col, item.group)) {\n <td\n class=\"grid-group-row__cell\"\n [class.grid-group-row__cell--lead]=\"isGroupLeadColumn(col, item.group)\"\n [attr.colspan]=\"groupCellColspan(col, item.group)\"\n >\n @if (isGroupLeadColumn(col, item.group)) {\n <button\n type=\"button\"\n class=\"grid-group-row__toggle\"\n (click)=\"toggleGroupCollapsed(item.group, item.level, item.startIndex)\"\n [attr.aria-expanded]=\"!item.collapsed\"\n >\n <span\n class=\"bi\"\n [ngClass]=\"item.collapsed ? 'bi-chevron-right' : 'bi-chevron-down'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"grid-group-row__content\" [style.padding-inline-start.rem]=\"groupRowIndent(item.level)\">\n @if (groupHeaderTpl) {\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTpl.template\"\n [ngTemplateOutletContext]=\"groupHeaderContext(item.group)\"\n ></ng-container>\n } @else {\n <span class=\"grid-group-row__label\">{{ groupRowLabel(item.group) }}</span>\n <span class=\"grid-group-row__count\">{{ groupRowCountLabel(item.group) }}</span>\n }\n </span>\n </button>\n @if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n } @else if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n\n <table\n class=\"grid-table grid-body grid-body--main mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"grid\"\n [attr.aria-rowcount]=\"ariaRowCount()\"\n [attr.aria-colcount]=\"ariaColCount()\"\n [attr.aria-readonly]=\"enableEdit || enableAdd ? 'false' : 'true'\"\n [attr.aria-label]=\"tableOptions?.caption || null\"\n >\n <colgroup\n ngbDatagridColgroup\n [grid]=\"gridHost\"\n [ngbSyncColgroup]=\"colgroupSyncId\"\n syncRole=\"body\"\n [syncMode]=\"resizable ? 'explicit' : 'auto'\"\n ></colgroup>\n\n <tbody\n [ngbDndList]=\"paged\"\n [dndDisabled]=\"!isRowReorderEnabled()\"\n (dndDropped)=\"onRowDrop($event)\"\n >\n @if (!hasRenderableRows()) {\n <tr class=\"ngb-grid__empty-row\">\n <td [attr.colspan]=\"ariaColCount()\" class=\"ngb-grid__empty text-center text-muted py-4\">\n {{ emptyStateLabel() }}\n </td>\n </tr>\n }\n\n @if (addingNew) {\n <tr\n ngbDatagridAddRow\n [grid]=\"gridHost\"\n [formGroup]=\"addForm\"\n ></tr>\n }\n\n @for (item of renderRows; track item.key) {\n @if (item.kind === 'group') {\n <tr\n class=\"grid-group-row\"\n [attr.data-group-key]=\"item.key\"\n [attr.data-group-level]=\"item.level\"\n >\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n @if (shouldRenderGroupCell(col, item.group)) {\n <td\n class=\"grid-group-row__cell\"\n [class.grid-group-row__cell--lead]=\"isGroupLeadColumn(col, item.group)\"\n [attr.colspan]=\"groupCellColspan(col, item.group)\"\n >\n @if (isGroupLeadColumn(col, item.group)) {\n <button\n type=\"button\"\n class=\"grid-group-row__toggle\"\n (click)=\"toggleGroupCollapsed(item.group, item.level, item.startIndex)\"\n [attr.aria-expanded]=\"!item.collapsed\"\n >\n <span\n class=\"bi\"\n [ngClass]=\"item.collapsed ? 'bi-chevron-right' : 'bi-chevron-down'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"grid-group-row__content\" [style.padding-inline-start.rem]=\"groupRowIndent(item.level)\">\n @if (groupHeaderTpl) {\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTpl.template\"\n [ngTemplateOutletContext]=\"groupHeaderContext(item.group)\"\n ></ng-container>\n } @else {\n <span class=\"grid-group-row__label\">{{ groupRowLabel(item.group) }}</span>\n <span class=\"grid-group-row__count\">{{ groupRowCountLabel(item.group) }}</span>\n }\n </span>\n </button>\n @if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n } @else if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n } @else if (item.kind === 'group-footer') {\n <tr\n class=\"grid-group-footer-row\"\n [attr.data-group-key]=\"item.key\"\n [attr.data-group-level]=\"item.level\"\n >\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n <td class=\"grid-group-footer-row__cell\">\n @if (groupFooterTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n } @else {\n <tr\n class=\"grid-data-row\"\n ngbDatagridDataRow\n [grid]=\"gridHost\"\n [renderTick]=\"renderTick\"\n [row]=\"item.row\"\n [index]=\"item.pagedIndex\"\n [selected]=\"isRowSelected(item.row, item.pagedIndex)\"\n [ngbDndItem]=\"item.row\"\n [dndIndex]=\"item.pagedIndex\"\n [dndDisabled]=\"!isRowReorderEnabled()\"\n (click)=\"onRowSelect($event, item.pagedIndex); onRowClick($event, item.pagedIndex)\"\n [formGroup]=\"editForm\"\n [class.sticky-row]=\"isRowSticky(item.row, item.pagedIndex)\"\n [class.row-selected]=\"isRowSelected(item.row, item.pagedIndex)\"\n [class.row-highlight]=\"isRowHighlighted(item.row, item.pagedIndex)\"\n [class.grid-row--reorderable]=\"isRowReorderEnabled()\"\n [ngClass]=\"resolveRowClass(item.row, item.pagedIndex)\"\n [ngStyle]=\"resolveRowStyle(item.row, item.pagedIndex)\"\n [attr.aria-selected]=\"isRowSelected(item.row, item.pagedIndex) ? 'true' : null\"\n [style.top.px]=\"stickyTop(item.row, item.pagedIndex)\"\n [style.z-index]=\"isRowSticky(item.row, item.pagedIndex) ? 3 : null\"\n ></tr>\n\n @if (rowDetailTpl && isExpanded(item.pagedIndex)) {\n <tr\n ngbDatagridDetailRow\n [grid]=\"gridHost\"\n [row]=\"item.row\"\n [index]=\"item.pagedIndex\"\n [attr.id]=\"'dg-row-detail-' + item.pagedIndex\"\n ></tr>\n }\n }\n }\n </tbody>\n </table>\n\n @if (hasStickyGroupFooters()) {\n <div\n class=\"ngb-grid__group-sticky-layer ngb-grid__group-sticky-layer--bottom\"\n [style.transform]=\"'translateY(' + stickyGroupFooterTranslateY + 'px)'\"\n >\n <table\n class=\"grid-table grid-group-sticky-table mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"presentation\"\n >\n <colgroup>\n @for (width of stickyGroupOverlayColumnWidths; track $index) {\n <col [style.width.px]=\"width || null\" />\n }\n </colgroup>\n <tbody>\n @for (item of stickyGroupFooterRows; track item.key) {\n <tr class=\"grid-group-footer-row grid-group-footer-row--overlay\">\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n <td class=\"grid-group-footer-row__cell\">\n @if (groupFooterTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n\n <table class=\"table grid-table grid-foot mb-0\" [style.width.px]=\"tablePixelWidth\">\n <colgroup>\n @for (col of visibleColumns; track col.field) {\n <col [style.width.px]=\"col?.width\" />\n }\n </colgroup>\n <tbody>\n <tr>\n <td [attr.colspan]=\"visibleColumns.length\" width=\"100%\">\n @if (paginationActive && pagerShowsAt('bottom')) {\n <ngb-datagrid-footer [grid]=\"gridHost\" placement=\"bottom\"></ngb-datagrid-footer>\n }\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n @if (externalEditOpen) {\n <ngb-datagrid-external-editor [grid]=\"gridHost\"></ngb-datagrid-external-editor>\n }\n\n @if (openFilterMenuField && openFilterMenuColumn && openFilterMenuAnchor) {\n <ngb-datagrid-filter-menu-panel\n [grid]=\"gridHost\"\n [col]=\"openFilterMenuColumn\"\n [anchor]=\"openFilterMenuAnchor\"\n />\n }\n\n @if (openRowFilterField && openRowFilterColumn && openRowFilterOperatorAnchor) {\n <ngb-datagrid-row-filter-operator-panel\n [grid]=\"gridHost\"\n [col]=\"openRowFilterColumn\"\n [anchor]=\"openRowFilterOperatorAnchor\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";.ngb-grid,.ngb-datagrid-floating-panel{--dg-surface: #ffffff;--dg-surface-muted: #f9fafb;--dg-surface-subtle: #f3f4f6;--dg-surface-config: #edf4ff;--dg-surface-filter-row: #fffbeb;--dg-surface-sticky-row: #fefce8;--dg-border: #d7deea;--dg-border-strong: #cfd6e2;--dg-text: #1f2937;--dg-text-muted: #5b6578;--dg-text-subtle: #64748b;--dg-primary: #315efb;--dg-primary-hover: #2749c4;--dg-primary-active: #1d4ed8;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #bfdbfe;--dg-accent: #3b82f6;--dg-on-primary: #ffffff;--dg-placeholder: #94a3b8;--dg-success: #39a949;--dg-success-soft: #dcfce7;--dg-success-text: #166534;--dg-success-border-subtle: #bbf7d0;--dg-danger: #ef4444;--dg-danger-soft: #fee2e2;--dg-danger-text: #b91c1c;--dg-danger-border-subtle: #fecaca;--dg-warning-soft: #fef3c7;--dg-warning-border: #fde68a;--dg-warning-text: #854d0e;--dg-filter-multi-icon: #39a949;--dg-filter-multi-icon-soft: #dcfce7;--dg-neutral-pill-bg: #e2e8f0;--dg-locked-bg: #f8fafc;--dg-row-selected-bg: #eef5ff;--dg-row-hover-bg: #f8fbff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f8fbff;--dg-search-highlight-bg: #fef08a;--dg-sticky-border: #facc15;--dg-sticky-badge-bg: #fef08a;--dg-sticky-badge-text: #854d0e;--dg-dropdown-item-active-bg: var(--dg-primary-soft);--dg-dropdown-item-active-color: var(--dg-primary);--dg-focus-ring: #2563eb;--dg-focus-border: rgba(37, 99, 235, .45);--dg-focus-shadow: 0 0 0 .2rem rgba(37, 99, 235, .15);--dg-pin-shadow-start: 1px 0 0 rgba(15, 23, 42, .08);--dg-pin-shadow-end: -1px 0 0 rgba(15, 23, 42, .08);--dg-backdrop: rgba(15, 23, 42, .45);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(37, 99, 235, .18);--dg-filter-divider: rgba(219, 227, 239, .8);--dg-shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--dg-shadow-md: 0 8px 24px rgba(15, 23, 42, .12);--dg-radius-lg: .5rem;--dg-radius-md: .45rem;--dg-radius-sm: .35rem;--dg-control-height: 2.15rem;--dg-nav-height: 2.5rem;--dg-font-size-header: .92rem;--dg-font-size-cell: .84rem;--dg-font-size-label: .94rem;--dg-cell-padding-y: .75rem;--dg-cell-padding-x: .85rem;--dg-header-padding-y: .75rem;--dg-header-padding-x: .85rem;--dg-table-border-width: 1px;--dg-pager-surface: var(--dg-surface);--dg-pager-text: var(--dg-text-muted);--dg-pager-control-bg: var(--dg-surface);--dg-pager-control-hover-bg: var(--dg-surface-subtle);--dg-pager-control-border: var(--dg-border);--dg-pager-link-text: var(--dg-primary);--dg-pager-active-bg: var(--dg-primary);--dg-pager-active-border: var(--dg-primary);--dg-pager-active-text: var(--dg-on-primary);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap],.ngb-datagrid-floating-panel[data-theme=bootstrap]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap-main],.ngb-datagrid-floating-panel[data-theme=bootstrap-main]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #f8fbff;--dg-surface-muted: #eaf3ff;--dg-surface-subtle: #d9eaff;--dg-surface-config: #e0efff;--dg-border: #bfd7f4;--dg-border-strong: #7fb0e3;--dg-text: #172554;--dg-text-muted: #45617f;--dg-primary: #1769e0;--dg-primary-hover: #0f56bd;--dg-primary-active: #0b438f;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #93c5fd;--dg-accent: #0f766e;--dg-row-selected-bg: #dcecff;--dg-row-hover-bg: #eef6ff;--dg-detail-row-bg: #edf6ff;--dg-dropdown-item-active-bg: #dcecff;--dg-dropdown-item-active-color: #0f56bd;--dg-focus-ring: #1769e0;--dg-focus-border: rgba(23, 105, 224, .48);--dg-focus-shadow: 0 0 0 .2rem rgba(23, 105, 224, .16)}.ngb-grid[data-theme=bootstrap-main-dark],.ngb-datagrid-floating-panel[data-theme=bootstrap-main-dark]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #172033;--dg-surface-muted: #202b42;--dg-surface-subtle: #273653;--dg-surface-config: #172a4f;--dg-surface-filter-row: #2c2714;--dg-surface-sticky-row: #2e2810;--dg-border: #33425f;--dg-border-strong: #4a5d80;--dg-text: #edf2ff;--dg-text-muted: #b8c3d9;--dg-text-subtle: #93a2bd;--dg-primary: #38bdf8;--dg-primary-hover: #7dd3fc;--dg-primary-active: #bae6fd;--dg-primary-soft: #12344f;--dg-primary-border-subtle: #0284c7;--dg-accent: #38bdf8;--dg-on-primary: #ffffff;--dg-placeholder: #93a2bd;--dg-locked-bg: #1e2a40;--dg-row-selected-bg: #153a67;--dg-row-hover-bg: #22304a;--dg-row-odd-bg: #172033;--dg-row-even-bg: #1b263a;--dg-detail-row-bg: #182d4c;--dg-dropdown-item-active-bg: #183b70;--dg-dropdown-item-active-color: #bfdbfe;--dg-focus-ring: #60a5fa;--dg-focus-border: rgba(96, 165, 250, .6);--dg-focus-shadow: 0 0 0 .2rem rgba(96, 165, 250, .2);--dg-shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--dg-shadow-md: 0 14px 32px rgba(0, 0, 0, .36);--dg-pager-surface: #111827;--dg-pager-text: #dbeafe;--dg-pager-control-bg: #172033;--dg-pager-control-hover-bg: #22304a;--dg-pager-control-border: #4a5d80;--dg-pager-link-text: #dbeafe;--dg-pager-active-bg: #38bdf8;--dg-pager-active-border: #38bdf8;--dg-pager-active-text: #0f172a;--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap-nordic],.ngb-datagrid-floating-panel[data-theme=bootstrap-nordic]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #ffffff;--dg-surface-muted: #f2f7f8;--dg-surface-subtle: #e6f0f2;--dg-surface-config: #e4f8fb;--dg-surface-filter-row: #fff7ed;--dg-border: #d5e4e7;--dg-border-strong: #a9c8cf;--dg-text: #263243;--dg-text-muted: #64748b;--dg-primary: #0ea5b7;--dg-primary-hover: #0b8798;--dg-primary-active: #0f6b7a;--dg-primary-soft: #d7f5f8;--dg-primary-border-subtle: #9be4ec;--dg-accent: #e85d75;--dg-row-selected-bg: #e7f8fb;--dg-row-hover-bg: #f0fbfd;--dg-row-odd-bg: transparent;--dg-row-even-bg: #fbfeff;--dg-detail-row-bg: #f4fbfc;--dg-dropdown-item-active-bg: #e7f8fb;--dg-dropdown-item-active-color: #0b8798;--dg-focus-ring: #0ea5b7;--dg-focus-border: rgba(14, 165, 183, .45);--dg-focus-shadow: 0 0 0 .2rem rgba(14, 165, 183, .15);--dg-font-size-cell: .88rem;--dg-cell-padding-y: .82rem;--dg-pager-surface: #f8ffff;--dg-pager-text: #526173;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #e7f8fb;--dg-pager-control-border: #b9dce2;--dg-pager-link-text: #0b8798;--dg-pager-active-bg: #0ea5b7;--dg-pager-active-border: #0ea5b7;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=bootstrap-urban],.ngb-datagrid-floating-panel[data-theme=bootstrap-urban]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #ffffff;--dg-surface-muted: #f5f8fa;--dg-surface-subtle: #edf4f7;--dg-surface-config: #e8f4f9;--dg-border: #d9e5ea;--dg-border-strong: #adc6d3;--dg-text: #263445;--dg-text-muted: #5f6f84;--dg-primary: #468faf;--dg-primary-hover: #36748f;--dg-primary-active: #285b72;--dg-primary-soft: #e0f0f6;--dg-primary-border-subtle: #b9dbe8;--dg-accent: #ff7f50;--dg-row-selected-bg: #e8f4f9;--dg-row-hover-bg: #fff2eb;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-dropdown-item-active-bg: #e8f4f9;--dg-dropdown-item-active-color: #36748f;--dg-focus-ring: #468faf;--dg-focus-border: rgba(70, 143, 175, .48);--dg-focus-shadow: 0 0 0 .2rem rgba(70, 143, 175, .16);--dg-cell-padding-y: .86rem;--dg-cell-padding-x: .95rem;--dg-pager-surface: #fffaf7;--dg-pager-text: #5f6f84;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #fff2eb;--dg-pager-control-border: #d4e1e7;--dg-pager-link-text: #36748f;--dg-pager-active-bg: #468faf;--dg-pager-active-border: #468faf;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=bootstrap-vintage],.ngb-datagrid-floating-panel[data-theme=bootstrap-vintage]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #fffdf8;--dg-surface-muted: #f6f0e7;--dg-surface-subtle: #eee4d8;--dg-surface-config: #f2e7ef;--dg-border: #dfd2c2;--dg-border-strong: #c8b8a5;--dg-text: #3d3440;--dg-text-muted: #766a72;--dg-primary: #7f4f68;--dg-primary-hover: #684057;--dg-primary-active: #523246;--dg-primary-soft: #efdde8;--dg-primary-border-subtle: #d8b9ca;--dg-accent: #88b0b7;--dg-row-selected-bg: #f1e4ec;--dg-row-hover-bg: #fbf1e5;--dg-row-odd-bg: #fffdf8;--dg-row-even-bg: #fbf7ef;--dg-detail-row-bg: #fbf6ef;--dg-dropdown-item-active-bg: #f1e4ec;--dg-dropdown-item-active-color: #684057;--dg-focus-ring: #7f4f68;--dg-focus-border: rgba(127, 79, 104, .5);--dg-focus-shadow: 0 0 0 .2rem rgba(127, 79, 104, .16);--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-pager-surface: #fffdf8;--dg-pager-text: #766a72;--dg-pager-control-bg: #fffaf2;--dg-pager-control-hover-bg: #fbf1e5;--dg-pager-control-border: #dfd2c2;--dg-pager-link-text: #684057;--dg-pager-active-bg: #7f4f68;--dg-pager-active-border: #7f4f68;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=material],.ngb-grid[data-theme=material-main],.ngb-datagrid-floating-panel[data-theme=material],.ngb-datagrid-floating-panel[data-theme=material-main]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0}.ngb-grid[data-theme=material-indigo],.ngb-datagrid-floating-panel[data-theme=material-indigo]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0;--dg-primary: #3f51b5;--dg-primary-hover: #303f9f;--dg-primary-active: #283593;--dg-primary-soft: #e8eaf6;--dg-primary-border-subtle: #c5cae9;--dg-dropdown-item-active-bg: #e8eaf6;--dg-dropdown-item-active-color: #303f9f;--dg-focus-ring: #3f51b5;--dg-focus-border: rgba(63, 81, 181, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(63, 81, 181, .16);--dg-row-hover-bg: #f0f2ff}.ngb-grid[data-theme=material-deep-purple],.ngb-datagrid-floating-panel[data-theme=material-deep-purple]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0;--dg-primary: #7e57c2;--dg-primary-hover: #673ab7;--dg-primary-active: #512da8;--dg-primary-soft: #ede7f6;--dg-primary-border-subtle: #d1c4e9;--dg-accent: #ff7043;--dg-row-selected-bg: #ede7f6;--dg-row-hover-bg: #f5edff;--dg-dropdown-item-active-bg: #ede7f6;--dg-dropdown-item-active-color: #512da8;--dg-focus-ring: #7e57c2;--dg-focus-border: rgba(126, 87, 194, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(126, 87, 194, .16)}.ngb-grid[data-theme=tailwind],.ngb-grid[data-theme=tailwind-main],.ngb-datagrid-floating-panel[data-theme=tailwind],.ngb-datagrid-floating-panel[data-theme=tailwind-main]{--dg-surface: #ffffff;--dg-surface-muted: #f8fafc;--dg-surface-subtle: #f1f5f9;--dg-border: #cbd5e1;--dg-border-strong: #94a3b8;--dg-text: #0f172a;--dg-text-muted: #475569;--dg-primary: #2563eb;--dg-primary-hover: #1d4ed8;--dg-primary-active: #1e40af;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #bfdbfe;--dg-dropdown-item-active-bg: #dbeafe;--dg-dropdown-item-active-color: #1d4ed8;--dg-focus-ring: #2563eb;--dg-focus-border: rgba(37, 99, 235, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(37, 99, 235, .16);--dg-row-hover-bg: #eff6ff;--dg-font-size-header: .75rem;--dg-font-size-cell: .85rem;--dg-cell-padding-y: .68rem;--dg-cell-padding-x: .8rem;--dg-table-border-width: 1px;--dg-pager-surface: #ffffff;--dg-pager-text: #475569;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #eff6ff;--dg-pager-control-border: #bfdbfe;--dg-pager-link-text: #1d4ed8;--dg-pager-active-bg: #2563eb;--dg-pager-active-border: #2563eb;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=tailwind-slate],.ngb-datagrid-floating-panel[data-theme=tailwind-slate]{--dg-surface: #f8fafc;--dg-surface-muted: #e2e8f0;--dg-surface-subtle: #cbd5e1;--dg-border: #cbd5e1;--dg-border-strong: #64748b;--dg-text: #0f172a;--dg-text-muted: #475569;--dg-primary: #475569;--dg-primary-hover: #334155;--dg-primary-active: #1e293b;--dg-primary-soft: #e2e8f0;--dg-primary-border-subtle: #94a3b8;--dg-dropdown-item-active-bg: #e2e8f0;--dg-dropdown-item-active-color: #334155;--dg-focus-ring: #475569;--dg-row-hover-bg: #e2e8f0;--dg-row-odd-bg: #f8fafc;--dg-row-even-bg: #f1f5f9;--dg-focus-border: rgba(71, 85, 105, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(71, 85, 105, .16)}.ngb-grid[data-theme=tailwind-emerald],.ngb-datagrid-floating-panel[data-theme=tailwind-emerald]{--dg-surface: #ffffff;--dg-surface-muted: #ecfdf5;--dg-surface-subtle: #d1fae5;--dg-border: #a7f3d0;--dg-border-strong: #34d399;--dg-text: #064e3b;--dg-text-muted: #047857;--dg-primary: #059669;--dg-primary-hover: #047857;--dg-primary-active: #065f46;--dg-primary-soft: #d1fae5;--dg-primary-border-subtle: #6ee7b7;--dg-dropdown-item-active-bg: #d1fae5;--dg-dropdown-item-active-color: #047857;--dg-focus-ring: #059669;--dg-focus-border: rgba(5, 150, 105, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(5, 150, 105, .16)}.ngb-datagrid-floating-panel.grid-filter-menu-popover,.ngb-datagrid-floating-panel.dropdown-menu{position:fixed!important;z-index:1200;display:block;visibility:visible;opacity:1;pointer-events:auto;max-height:min(28rem,100vh - 1.5rem);overflow:auto;margin:0!important;border-radius:var(--dg-radius-md);border:1px solid var(--dg-border);background:var(--dg-surface);box-shadow:var(--dg-shadow-md)}.ngb-datagrid-floating-panel.dropdown-menu{min-width:12rem;padding:.35rem 0}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item{display:block;width:100%;padding:.5rem .85rem;border:0;background:transparent;font-size:.8125rem;font-weight:600;color:var(--dg-text);text-align:left}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item.active{color:var(--dg-dropdown-item-active-color);background:var(--dg-dropdown-item-active-bg)}.ngb-datagrid-floating-panel.dropdown-menu .dropdown-item{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;color:var(--dg-text)}.ngb-datagrid-floating-panel.dropdown-menu .dropdown-item:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel.grid-filter-menu-popover{min-width:18rem;padding:0}.ngb-datagrid-floating-panel .grid-filter-menu-surface{display:block;min-width:18rem;padding:1rem;border-radius:var(--dg-radius-md);background:var(--dg-surface)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__header{margin-bottom:.875rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--dg-text-muted)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__title{margin-top:.15rem;font-size:.95rem;font-weight:700;color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-stack{display:flex;flex-direction:column;gap:.75rem}.ngb-datagrid-floating-panel .grid-filter-stack__label{font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-datagrid-floating-panel .grid-filter-stack--multi{gap:.65rem}.ngb-datagrid-floating-panel .grid-filter-condition{display:flex;flex-direction:column;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-operator-select,.ngb-grid .grid-filter-operator-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.875rem;color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-operator-select--compact,.ngb-grid .grid-filter-operator-select--compact{width:auto;min-width:2.25rem;max-width:2.5rem;padding:.35rem .25rem;font-size:0}.ngb-datagrid-floating-panel .grid-filter-logic-select,.ngb-grid .grid-filter-logic-select{display:flex;justify-content:center;margin:.15rem 0}.ngb-datagrid-floating-panel .grid-filter-logic-select select,.ngb-grid .grid-filter-logic-select select{width:auto;min-width:4.5rem;min-height:1.75rem;padding:.2rem 1.5rem .2rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.8125rem;font-weight:600;color:var(--dg-text);text-align:center}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions--split,.ngb-grid .grid-filter-menu-surface__actions--split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-apply--secondary,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary,.ngb-grid .grid-filter-apply--secondary,.ngb-grid .grid-filter-cancel--secondary{width:100%;border:1px solid var(--dg-border-strong);background:var(--dg-surface-muted);color:var(--dg-text);font-weight:600}.ngb-datagrid-floating-panel .grid-filter-apply--secondary:hover,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary:hover,.ngb-grid .grid-filter-apply--secondary:hover,.ngb-grid .grid-filter-cancel--secondary:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel .grid-filter-multi-panel,.ngb-grid .grid-filter-multi-panel{display:flex;flex-direction:column;gap:.5rem;min-width:16.5rem}.ngb-datagrid-floating-panel .grid-filter-join-select,.ngb-grid .grid-filter-join-select{display:inline-block;width:fit-content;max-width:100%;margin:.1rem 0}.ngb-datagrid-floating-panel .grid-filter-join-select__control,.ngb-grid .grid-filter-join-select__control{width:100%;min-height:1.75rem;padding:.2rem 1.25rem .2rem .5rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.8125rem;font-weight:600;text-align:left}.ngb-datagrid-floating-panel .grid-filter-field{position:relative;width:100%;min-width:0}.ngb-datagrid-floating-panel .grid-filter-field--with-icon .grid-filter-control,.ngb-datagrid-floating-panel .grid-filter-field--with-icon .grid-filter-value-input{padding-right:2.25rem}.ngb-datagrid-floating-panel .grid-filter-field__icon{position:absolute;right:.8rem;top:50%;transform:translateY(-50%);color:var(--dg-placeholder);pointer-events:none}.ngb-datagrid-floating-panel .grid-filter-control,.ngb-datagrid-floating-panel .grid-filter-value-input,.ngb-datagrid-floating-panel .grid-filter-value-select,.ngb-grid .grid-filter-value-input,.ngb-grid .grid-filter-value-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);color:var(--dg-text);font-size:.875rem}.ngb-datagrid-floating-panel .grid-filter-apply--secondary:disabled,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary:disabled,.ngb-grid .grid-filter-apply--secondary:disabled,.ngb-grid .grid-filter-cancel--secondary:disabled{opacity:.45;cursor:not-allowed}.ngb-datagrid-floating-panel .grid-filter-condition__join{margin:.15rem 0;font-size:.75rem;font-weight:700;color:var(--dg-text-muted);text-align:center}.ngb-datagrid-floating-panel .grid-filter-stack__footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.ngb-datagrid-floating-panel .grid-filter-operator__button{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;color:var(--dg-text-muted);border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface)}.ngb-datagrid-floating-panel .grid-filter-clear,.ngb-datagrid-floating-panel .grid-filter-apply,.ngb-datagrid-floating-panel .grid-filter-cancel{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;border-radius:var(--dg-radius-sm)}.ngb-datagrid-floating-panel .grid-filter-apply{border:1px solid var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-datagrid-floating-panel .grid-filter-cancel,.ngb-datagrid-floating-panel .grid-filter-clear{border:1px solid var(--dg-border-strong);background:var(--dg-surface);color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--dg-border)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__multi{display:flex;flex-direction:column;gap:.5rem;width:100%;min-width:16rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__search{border:1px solid var(--dg-border);border-radius:var(--dg-radius-md);min-height:2rem;padding:.4rem .65rem;font-size:.8125rem;width:100%}.ngb-datagrid-floating-panel .grid-multi-filter-list{max-height:11.5rem;overflow:auto;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border)}.ngb-datagrid-floating-panel .grid-multi-filter-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;padding:.45rem .75rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);cursor:pointer}.ngb-datagrid-floating-panel .grid-multi-filter-option__main{display:flex;align-items:center;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions--multi{justify-content:space-between}.ngb-datagrid-floating-panel[data-theme=bootstrap].dropdown-menu .dropdown-item{font-weight:400}.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-operator-select,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-value-input,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-value-select,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-menu-surface__search,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-join-select__control{border-radius:var(--bs-border-radius, var(--dg-radius-sm))}ngb-datagrid{display:block}.ngb-grid{color:var(--dg-text);--dg-group-sticky-row-height: 3rem}.ngb-grid.ngb-grid--compact{--dg-group-sticky-row-height: 2.5rem}.ngb-grid .table{margin-bottom:0}.ngb-grid .datagrid-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.ngb-grid .datagrid-toolbar__search{flex:1 1 20rem;min-width:16rem}.ngb-grid .datagrid-toolbar__search-label{display:block;margin-bottom:.35rem;font-size:.875rem;font-weight:500;color:var(--dg-text-muted)}.ngb-grid .datagrid-toolbar__search-shell{display:flex;align-items:center;gap:.625rem;min-height:calc(var(--dg-control-height) + 4px);padding:0 .875rem;border:1px solid var(--dg-border);border-radius:999px;background:var(--dg-surface);box-shadow:var(--dg-shadow-sm)}.ngb-grid .datagrid-toolbar__search-icon{color:var(--dg-text-muted)}.ngb-grid .datagrid-toolbar__search-input{flex:1 1 auto;width:100%;min-width:0;border:0;background:transparent;color:var(--dg-text);outline:none;font-size:.95rem;padding:.625rem 0}.ngb-grid .datagrid-toolbar__search-input::placeholder{color:var(--dg-placeholder)}.ngb-grid .datagrid-toolbar__actions{display:flex;align-items:center;justify-content:flex-end;gap:.625rem;flex-wrap:wrap}.ngb-grid .datagrid-toolbar__button,.ngb-grid .grid-row-action,.ngb-grid .grid-filter-apply,.ngb-grid .grid-filter-clear,.ngb-grid .grid-filter-cancel,.ngb-grid .grid-filter-operator__button,.ngb-grid .grid-filter-menu-trigger,.ngb-grid .grid-detail-toggle{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:var(--dg-control-height);border-radius:var(--dg-radius-md);border:1px solid var(--dg-border);background:var(--dg-surface);color:var(--dg-text);box-shadow:none;font:inherit;text-decoration:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.ngb-grid .datagrid-toolbar__button:hover,.ngb-grid .grid-row-action:hover,.ngb-grid .grid-filter-apply:hover,.ngb-grid .grid-filter-clear:hover,.ngb-grid .grid-filter-cancel:hover,.ngb-grid .grid-filter-operator__button:hover,.ngb-grid .grid-filter-menu-trigger:hover,.ngb-grid .grid-detail-toggle:hover{border-color:var(--dg-border-strong);background:var(--dg-surface-subtle);color:var(--dg-text);text-decoration:none}.ngb-grid .datagrid-toolbar__button:focus-visible,.ngb-grid .grid-row-action:focus-visible,.ngb-grid .grid-filter-apply:focus-visible,.ngb-grid .grid-filter-clear:focus-visible,.ngb-grid .grid-filter-cancel:focus-visible,.ngb-grid .grid-filter-operator__button:focus-visible,.ngb-grid .grid-filter-menu-trigger:focus-visible,.ngb-grid .grid-detail-toggle:focus-visible,.ngb-grid .grid-sort-button:focus-visible,.ngb-grid .grid-edit-control:focus-visible,.ngb-grid .grid-filter-control:focus-visible,.ngb-grid .datagrid-toolbar__search-input:focus-visible{outline:none;border-color:var(--dg-focus-border);box-shadow:var(--dg-focus-shadow)}.ngb-grid .datagrid-toolbar__button{padding:.625rem 1rem;font-size:.875rem;font-weight:400}.ngb-grid .datagrid-toolbar__button--primary{border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-grid .datagrid-toolbar__button--primary:hover{background:var(--dg-primary-hover);border-color:var(--dg-primary-hover);color:var(--dg-on-primary)}.ngb-grid .datagrid-toolbar__button--secondary{background:var(--dg-surface);color:var(--dg-text)}.ngb-grid .ngb-grid__group-panel{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;min-height:3.25rem;margin-bottom:.9rem;padding:.75rem .9rem;border:1px dashed var(--dg-border-strong);border-radius:var(--dg-radius-md);background:color-mix(in srgb,var(--dg-surface-muted) 72%,white);transition:border-color .12s ease,background-color .12s ease,box-shadow .12s ease}.ngb-grid .ngb-grid__group-panel--active{border-color:var(--dg-primary);background:color-mix(in srgb,var(--dg-primary-soft) 45%,white);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dg-primary) 22%,transparent)}.ngb-grid .ngb-grid__group-panel--denied{border-color:var(--dg-danger, #dc3545);background:color-mix(in srgb,var(--dg-danger, #dc3545) 8%,white)}.ngb-grid .ngb-grid__group-panel-label{font-size:.875rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .ngb-grid__group-chip-list{display:inline-flex;align-items:center;gap:.55rem;flex-wrap:wrap}.ngb-grid .ngb-grid__group-chip{display:inline-flex;align-items:center;gap:.25rem;border:1px solid color-mix(in srgb,var(--dg-primary) 26%,var(--dg-border));border-radius:999px;background:var(--dg-surface);box-shadow:var(--dg-shadow-sm)}.ngb-grid .ngb-grid__group-chip-button,.ngb-grid .ngb-grid__group-chip-remove{display:inline-flex;align-items:center;gap:.4rem;min-height:2rem;border:0;background:transparent;color:var(--dg-text)}.ngb-grid .ngb-grid__group-chip-button{padding:.35rem .55rem .35rem .8rem;font-size:.8125rem;font-weight:600}.ngb-grid .ngb-grid__group-chip-remove{padding:.35rem .75rem .35rem .15rem;color:var(--dg-text-muted)}.ngb-grid .ngb-grid__group-chip-button:hover,.ngb-grid .ngb-grid__group-chip-remove:hover{color:var(--dg-primary)}.ngb-grid .ngb-grid__group-chip-button:focus-visible,.ngb-grid .ngb-grid__group-chip-remove:focus-visible,.ngb-grid .grid-column-group-handle:focus-visible,.ngb-grid .grid-group-row__toggle:focus-visible{outline:none;box-shadow:var(--dg-focus-shadow);border-radius:999px}.ngb-grid .ngb-grid__group-chip-dir{font-size:.8rem;color:var(--dg-primary)}.ngb-grid .table-wrapper{position:relative;overflow-x:hidden;overflow-y:clip;border:var(--dg-table-border-width) solid var(--dg-border);border-radius:var(--dg-radius-lg);background:var(--dg-surface);box-shadow:var(--dg-shadow-sm);isolation:isolate}.ngb-grid .table-body-scroll{max-height:24rem;overflow-y:auto;overflow-x:auto;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border);scrollbar-gutter:stable both-edges;position:relative;z-index:0}.ngb-grid .ngb-grid__group-sticky-layer{position:absolute;inset-inline-start:0;z-index:35;min-width:100%;pointer-events:none}.ngb-grid .ngb-grid__group-sticky-layer--top,.ngb-grid .ngb-grid__group-sticky-layer--bottom{top:0}.ngb-grid .grid-group-sticky-table{min-width:100%;pointer-events:auto}.ngb-grid .grid-table{width:max-content;min-width:100%;table-layout:fixed;margin:0;border-collapse:separate;border-spacing:0}.ngb-grid.ngb-grid--resizable .grid-table{min-width:0;width:max-content}.ngb-grid.ngb-grid--resizable .grid-table th,.ngb-grid.ngb-grid--resizable .grid-table td{box-sizing:border-box}.ngb-grid .grid-header-shell{position:relative;z-index:20;overflow:hidden}.ngb-grid .grid-header{position:relative;z-index:20;overflow:visible}.ngb-grid .grid-header thead tr:first-child th:first-child{border-top-left-radius:var(--dg-radius-lg)}.ngb-grid .grid-header thead tr:first-child th:last-child{border-top-right-radius:var(--dg-radius-lg)}.ngb-grid .grid-header thead th{background:var(--dg-surface-muted);border-bottom:var(--dg-table-border-width) solid var(--dg-border);color:var(--dg-text);font-size:var(--dg-font-size-header);font-weight:600;text-transform:none;letter-spacing:.01em;overflow:visible}.ngb-grid .grid-table th,.ngb-grid .grid-table td{vertical-align:middle;border-bottom:var(--dg-table-border-width) solid var(--dg-border);padding:var(--dg-cell-padding-y) var(--dg-cell-padding-x);font-size:var(--dg-font-size-cell)}.ngb-grid .grid-table th{padding:var(--dg-header-padding-y) var(--dg-header-padding-x)}.ngb-grid .grid-table td{background:var(--dg-surface);color:var(--dg-text);font-weight:400}.ngb-grid .grid-table th{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-header .grid-table th{overflow:visible}.ngb-grid .grid-header thead tr:first-child th.grid-header__column--resizable{position:relative}.ngb-grid .grid-column-resize-handle{position:absolute;top:0;right:0;width:.45rem;height:100%;cursor:col-resize;touch-action:none;-webkit-user-select:none;user-select:none;z-index:3}.ngb-grid .grid-column-resize-handle:after{content:\"\";position:absolute;top:.35rem;bottom:.35rem;right:.1rem;width:2px;border-radius:1px;background:var(--dg-border-strong);opacity:0;transition:opacity .15s ease}.ngb-grid .grid-header__column--resizable:hover .grid-column-resize-handle:after,.ngb-grid .grid-column-resize-handle:focus-visible:after{opacity:1}body.ngb-datagrid-column-resizing{cursor:col-resize!important;-webkit-user-select:none;user-select:none}.ngb-grid.ngb-grid--column-reorderable .grid-header thead tr:first-child th.grid-header__column--reorderable{position:relative}.ngb-grid .grid-column-reorder-handle{flex:0 0 auto;margin-right:.15rem;padding:.1rem .18rem;border-radius:999px;color:var(--dg-text-muted);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;opacity:.82;line-height:1;font-size:.95rem}.ngb-grid .grid-header__column--reorderable:hover .grid-column-reorder-handle,.ngb-grid .grid-column-reorder-handle:focus-visible{opacity:1;background:color-mix(in srgb,var(--dg-accent) 12%,transparent)}.ngb-grid .grid-column-group-handle{flex:0 0 auto;padding:.15rem .25rem;border-radius:999px;color:var(--dg-text-muted);cursor:grab;-webkit-user-select:none;user-select:none;line-height:1;font-size:.9rem}.ngb-grid .grid-column-group-handle--active,.ngb-grid .grid-column-group-handle:hover{color:var(--dg-primary);background:color-mix(in srgb,var(--dg-primary-soft) 55%,transparent)}.ngb-grid .grid-header__column--drag-over{background:color-mix(in srgb,var(--dg-accent) 12%,transparent);box-shadow:inset 0 -2px 0 var(--dg-accent)}.ngb-grid .grid-header__cell{display:flex;align-items:center;justify-content:space-between;gap:.625rem;width:100%;overflow:visible}.ngb-grid .grid-sort-button{display:inline-flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:0;border:0;background:transparent;color:inherit;text-align:left}.ngb-grid .grid-sort-button__label{min-width:0;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-sort-button__indicator{flex:0 0 auto;font-size:.8rem;color:var(--dg-placeholder)}.ngb-grid .grid-sort-button__indicator--active{color:var(--dg-primary)}.ngb-grid .grid-filter-menu-host{position:relative;display:inline-flex;flex:0 0 auto;z-index:30}.ngb-grid .grid-filter-menu-popover:not(.ngb-datagrid-floating-panel){position:absolute;top:calc(100% + .5rem);right:0;z-index:120}.ngb-grid .grid-filter-menu-popover .grid-filter-menu-surface{position:static;top:auto;right:auto}.ngb-grid .grid-filter-menu-trigger{min-width:var(--dg-control-height);width:var(--dg-control-height);height:var(--dg-control-height);padding:0}.ngb-grid .grid-filter-menu-trigger--active,.ngb-grid .filter-menu-active .grid-filter-menu-trigger{border-color:var(--dg-focus-border);background:var(--dg-primary-soft);color:var(--dg-primary)}.ngb-grid .grid-filter-menu-trigger--check .bi{color:var(--dg-placeholder)}.ngb-grid .grid-filter-menu-trigger--check.grid-filter-menu-trigger--active,.ngb-grid .filter-menu-active .grid-filter-menu-trigger--check{border-color:var(--dg-focus-border);background:var(--dg-primary-soft);color:var(--dg-primary)}.ngb-grid .grid-filter-menu-trigger--check.grid-filter-menu-trigger--active .bi,.ngb-grid .filter-menu-active .grid-filter-menu-trigger--check .bi{color:var(--dg-primary)}.ngb-grid .grid-filter-menu-surface{position:absolute;top:calc(100% + .5rem);right:0;min-width:18rem;padding:1rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-md);background:var(--dg-surface);box-shadow:var(--dg-shadow-md);z-index:120}.ngb-grid .grid-filter-menu-surface__header{margin-bottom:.875rem}.ngb-grid .grid-filter-menu-surface__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--dg-text-subtle)}.ngb-grid .grid-filter-menu-surface__title{margin-top:.15rem;font-size:.95rem;font-weight:700;color:var(--dg-text)}.ngb-grid .grid-filter-stack{display:flex;flex-direction:column;gap:.75rem}.ngb-grid .grid-filter-stack--multi{gap:.65rem}.ngb-grid .grid-filter-operator-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:.375rem;background:var(--dg-surface);font-size:.875rem;color:var(--dg-text)}.ngb-grid .grid-filter-operator-select--compact{width:auto;min-width:2.25rem;max-width:3.5rem;padding:.35rem .25rem;font-size:.6875rem}.ngb-grid .grid-filter-logic-select{display:flex;justify-content:center;margin:.15rem 0}.ngb-grid .grid-filter-logic-select select{width:auto;min-width:4.5rem;min-height:1.75rem;padding:.2rem 1.5rem .2rem .65rem;border:1px solid var(--dg-border);border-radius:.375rem;background:var(--dg-surface);font-size:.8125rem;font-weight:600}.ngb-grid .grid-filter-menu-surface__actions--split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.ngb-grid .grid-filter-apply--secondary,.ngb-grid .grid-filter-cancel--secondary{width:100%;border:1px solid var(--dg-border-strong);background:var(--dg-surface-muted);color:var(--dg-text);font-weight:600}.ngb-grid .grid-filter-apply--secondary:hover,.ngb-grid .grid-filter-cancel--secondary:hover{background:var(--dg-surface-subtle)}.ngb-grid .grid-filter-multi-panel{display:flex;flex-direction:column;gap:.5rem;min-width:16.5rem}.ngb-grid .grid-filter-join-select{display:inline-block;width:fit-content;max-width:100%;margin:.1rem 0}.ngb-grid .grid-filter-join-select__control{width:100%;min-height:1.75rem;padding:.2rem 1.25rem .2rem .5rem;border:1px solid var(--dg-border);border-radius:.375rem;background:var(--dg-surface);font-size:.8125rem;font-weight:600;text-align:left}.ngb-grid .grid-filter-value-input,.ngb-grid .grid-filter-value-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:.375rem;background:var(--dg-surface);font-size:.875rem}.ngb-grid .grid-filter-apply--secondary:disabled,.ngb-grid .grid-filter-cancel--secondary:disabled{opacity:.45;cursor:not-allowed}.ngb-grid .grid-group-row td,.ngb-grid .grid-group-footer-row td{background:color-mix(in srgb,var(--dg-surface-muted) 88%,white);border-bottom:1px solid var(--dg-border)}.ngb-grid .grid-group-row--overlay td{box-shadow:inset 0 -1px 0 var(--dg-border),0 1px color-mix(in srgb,var(--dg-border) 36%,transparent)}.ngb-grid .grid-group-footer-row--overlay td{box-shadow:inset 0 1px 0 var(--dg-border),0 -1px color-mix(in srgb,var(--dg-border) 36%,transparent)}.ngb-grid .grid-group-row__cell{padding:0;vertical-align:top}.ngb-grid .grid-group-footer-row__cell,.ngb-grid .grid-group-row__utility-cell{padding:.7rem .75rem;vertical-align:top}.ngb-grid .grid-group-row__toggle{display:flex;align-items:center;gap:.55rem;width:100%;padding:.7rem 1rem;border:0;background:transparent;color:var(--dg-text);text-align:left;font-size:.875rem;font-weight:600}.ngb-grid .grid-group-row__cell--lead .grid-group-row__toggle{padding-inline-end:.75rem}.ngb-grid .grid-group-row__toggle:hover{background:color-mix(in srgb,var(--dg-primary-soft) 34%,transparent)}.ngb-grid .grid-group-row__content{display:inline-flex;align-items:center;gap:.5rem;min-width:0}.ngb-grid .grid-group-row__label{color:var(--dg-text)}.ngb-grid .grid-group-row__count{font-size:.75rem;font-weight:700;color:var(--dg-text-muted)}.ngb-grid .grid-group-row__column-slot{padding:.25rem .75rem .75rem;font-size:.8125rem;color:var(--dg-text-muted)}.ngb-grid .grid-group-row__cell--lead .grid-group-row__column-slot{padding-inline-start:2.75rem}.ngb-grid .grid-group-footer-row td{background:color-mix(in srgb,var(--dg-surface-muted) 94%,white)}.ngb-grid .grid-filter-menu-popover .grid-filter-menu-surface:has(.grid-filter-menu-surface__multi){width:16.25rem;max-width:min(16.25rem,92vw);padding:.75rem}.ngb-grid .grid-filter-menu-surface__multi{display:flex;flex-direction:column;gap:.5rem;width:100%}.ngb-grid .grid-filter-menu-surface__multi .grid-filter-menu-surface__search{border-radius:.5rem;min-height:2rem;padding:.4rem .65rem;font-size:.8125rem}.ngb-grid .grid-multi-filter-list{max-height:11.5rem;overflow:auto;margin:0 -.75rem;padding:.15rem 0;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border)}.ngb-grid .grid-multi-filter-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;padding:.45rem .75rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);cursor:pointer}.ngb-grid .grid-multi-filter-option+.grid-multi-filter-option{border-top:1px solid var(--dg-filter-divider)}.ngb-grid .grid-multi-filter-option--summary{font-weight:700}.ngb-grid .grid-multi-filter-option__main{display:inline-flex;align-items:center;gap:.75rem;min-width:0}.ngb-grid .grid-multi-filter-option__main input{width:1rem;height:1rem;margin:0;accent-color:var(--dg-primary);flex:0 0 auto}.ngb-grid .grid-multi-filter-option__count{font-size:.75rem;font-weight:700;color:var(--dg-text-muted)}.ngb-grid .grid-filter-stack__label{font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-filter-stack__footer,.ngb-grid .grid-filter-menu-surface__actions{display:flex;align-items:center;justify-content:space-between;gap:.625rem}.ngb-grid .grid-filter-inline{display:flex;align-items:center;gap:.45rem;min-width:0;width:100%}.ngb-grid .grid-filter-field{position:relative;min-width:12rem;flex:1 1 auto}.ngb-grid .grid-filter-field--with-icon .grid-filter-control{padding-right:2.25rem}.ngb-grid .grid-filter-field__icon{position:absolute;right:.8rem;top:50%;transform:translateY(-50%);color:var(--dg-placeholder);pointer-events:none}.ngb-grid .grid-filter-control,.ngb-grid .grid-edit-control{width:100%;min-width:0;min-height:var(--dg-control-height);padding:.5rem .75rem;border:1px solid var(--dg-border);border-radius:.3rem;background:var(--dg-surface);color:var(--dg-text);font-size:.875rem}.ngb-grid .grid-edit-checkbox{width:1rem;height:1rem;margin-top:0}.ngb-grid .grid-filter-operator{position:relative;flex:0 0 auto}.ngb-grid .grid-filter-operator__button{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-filter-operator__button--compact{min-width:var(--dg-control-height);width:var(--dg-control-height);padding:0}.ngb-grid .grid-filter-operator__button--active{border-color:var(--dg-primary);color:var(--dg-primary)}.ngb-grid .grid-filter-operator .dropdown-menu:not(.ngb-datagrid-floating-panel){position:absolute;inset:calc(100% + .35rem) 0 auto auto;min-width:12rem;margin:0;border-radius:.9rem;border-color:var(--dg-border);box-shadow:var(--dg-shadow-md);z-index:120}.ngb-grid .grid-filter-clear{padding:.55rem .8rem;font-size:.8125rem;color:var(--dg-text-muted)}.ngb-grid .grid-filter-apply{padding:.625rem .95rem;border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary);font-size:.875rem;font-weight:600}.ngb-grid .grid-filter-apply:hover{border-color:var(--dg-primary-active);background:var(--dg-primary-active);color:var(--dg-on-primary)}.ngb-grid .grid-filter-menu-surface__actions--multi{justify-content:space-between;margin-top:.35rem}.ngb-grid .grid-filter-menu-surface__multi .grid-filter-apply{min-width:5.25rem;padding:.5rem 1.15rem;font-size:.8125rem}.ngb-grid .grid-filter-cancel{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);border:1px solid var(--dg-border-strong);background:var(--dg-surface)}.ngb-grid .grid-filter-cancel:hover{border-color:var(--dg-border-strong);background:var(--dg-surface-subtle);color:var(--dg-text)}.ngb-grid .filter-row th{background:var(--dg-surface-filter-row);padding-top:.625rem;padding-bottom:.625rem;overflow:visible;position:relative;z-index:25}.ngb-grid.ngb-grid--menu-open .filter-row th{z-index:85}.ngb-grid .column-pinned-start,.ngb-grid .column-pinned-end{position:sticky;background:inherit;z-index:2}.ngb-grid .grid-header .column-pinned-start,.ngb-grid .grid-header .column-pinned-end{z-index:6}.ngb-grid .column-pinned-start{box-shadow:var(--dg-pin-shadow-start)}.ngb-grid .column-pinned-start:has(+.column-pinned-start){box-shadow:none}.ngb-grid .column-pinned-end{box-shadow:var(--dg-pin-shadow-end)}.ngb-grid .column-locked{background:var(--dg-locked-bg)}.ngb-grid .sticky-row,.ngb-grid .sticky-row td{background:var(--dg-surface-sticky-row);box-shadow:inset 0 0 0 1px var(--dg-sticky-border)}.ngb-grid .sticky-row{position:sticky;z-index:4}.ngb-grid .grid-sticky-badge{display:inline-flex;align-items:center;margin-left:.45rem;padding:.12rem .4rem;border-radius:.25rem;background:var(--dg-sticky-badge-bg);color:var(--dg-sticky-badge-text);font-size:.62rem;font-weight:800;letter-spacing:.04em;vertical-align:middle}.ngb-grid .grid-row-action--icon{min-width:2.05rem;width:2.05rem;height:2.05rem;min-height:2.05rem;padding:0;border-radius:var(--dg-radius-md)}.ngb-grid .grid-row-action--edit-icon{border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-grid .grid-row-action--edit-icon:hover{border-color:var(--dg-primary-hover);background:var(--dg-primary-hover);color:var(--dg-on-primary)}.ngb-grid.ngb-grid--zebra .grid-body tbody tr:nth-child(2n):not(.sticky-row):not(.row-selected) td{background:var(--dg-row-even-bg, var(--dg-surface-muted))}.ngb-grid:not(.ngb-grid--zebra) .grid-body tbody tr:nth-child(odd):not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-odd-bg)}.ngb-grid:not(.ngb-grid--zebra) .grid-body tbody tr:nth-child(2n):not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-even-bg)}.ngb-grid .grid-body tbody tr.grid-data-row:hover:not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-hover-bg)}.ngb-grid .row-selected,.ngb-grid .row-selected td{background:var(--dg-row-selected-bg)}.ngb-grid .row-highlight,.ngb-grid .row-highlight td{background:var(--dg-warning-soft)}.ngb-grid .grid-header th.column-pinned-start,.ngb-grid .grid-header th.column-pinned-end,.ngb-grid .grid-body tbody td.column-pinned-start,.ngb-grid .grid-body tbody td.column-pinned-end{background:var(--dg-surface)}.ngb-grid .grid-header th.column-locked,.ngb-grid .grid-body tbody td.column-locked{background:var(--dg-locked-bg)!important}.ngb-grid .grid-body tbody tr.row-selected td.column-locked{background:var(--dg-row-selected-bg)!important}.ngb-grid .cell-highlight{background:var(--dg-primary-soft)}.ngb-grid .grid-search-highlight{padding:0;border-radius:.15rem;background:var(--dg-sticky-badge-bg);color:inherit;font-weight:inherit}.ngb-grid .grid-detail-toggle{min-width:2rem;width:2rem;height:2rem;padding:0;border-radius:999px}.ngb-grid .grid-cell-content{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-cell-content,.ngb-grid .grid-cell-text{font-weight:400}.ngb-grid .grid-cell--emphasis .grid-cell-content,.ngb-grid .grid-cell--emphasis .grid-cell-text{font-weight:700}.ngb-grid .grid-boolean-pill{display:inline-flex;align-items:center;justify-content:center;min-width:3.5rem;padding:.25rem .55rem;border-radius:999px;background:var(--dg-neutral-pill-bg);color:var(--dg-text-muted);font-size:.75rem;font-weight:700}.ngb-grid .grid-boolean-pill--true{background:var(--dg-success-soft);color:var(--dg-success-text)}.ngb-grid .grid-row-action{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;white-space:nowrap}.ngb-grid .grid-actions-cell{overflow:visible;text-overflow:clip;white-space:normal}.ngb-grid .grid-actions-cell__inner{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;flex-wrap:nowrap}.ngb-grid .grid-row-action--secondary{color:var(--dg-primary);background:var(--dg-primary-soft);border-color:var(--dg-primary-border-subtle)}.ngb-grid .grid-row-action--danger{color:var(--dg-danger-text);background:var(--dg-danger-soft);border-color:var(--dg-danger-border-subtle)}.ngb-grid .grid-row-action--success{color:var(--dg-success-text);background:var(--dg-success-soft);border-color:var(--dg-success-border-subtle)}.ngb-grid .grid-row-action--neutral{color:var(--dg-text-muted);background:var(--dg-locked-bg);border-color:var(--dg-border)}.ngb-grid .grid-detail-row__cell{padding:0;background:var(--dg-detail-row-bg)}.ngb-grid .grid-detail-row__content{padding:1rem 1.25rem}.ngb-grid.ngb-grid--compact .grid-table th,.ngb-grid.ngb-grid--compact .grid-table td{padding:.55rem .65rem}.ngb-grid.ngb-grid--compact .datagrid-toolbar__button,.ngb-grid.ngb-grid--compact .grid-row-action,.ngb-grid.ngb-grid--compact .grid-filter-apply,.ngb-grid.ngb-grid--compact .grid-filter-clear,.ngb-grid.ngb-grid--compact .grid-filter-operator__button,.ngb-grid.ngb-grid--compact .grid-filter-menu-trigger,.ngb-grid.ngb-grid--compact .grid-detail-toggle,.ngb-grid.ngb-grid--compact .grid-filter-control,.ngb-grid.ngb-grid--compact .grid-edit-control{min-height:32px;font-size:.8125rem}.ngb-grid .grid-row--reorderable{cursor:grab}.ngb-grid .grid-row--reorderable.ngb-dnd-dragging{cursor:grabbing;opacity:.82}.ngb-grid .ngb-dnd-placeholder{display:table-row;background:transparent}.ngb-grid tbody.ngb-dnd-list,.ngb-grid tbody.ngb-dnd-list.ngb-dnd-over[data-drop-valid=true],.ngb-grid tbody.ngb-dnd-list.ngb-dnd-over[data-drop-valid=false]{border:0;border-radius:0;background:transparent;box-shadow:none}.ngb-grid .ngb-dnd-placeholder>td{padding:0;border:0;background:transparent}.ngb-grid .ngb-dnd-placeholder__bar{display:block;height:.35rem;background:var(--dg-primary-selection-overlay)}.ngb-grid.ngb-grid--stacked .grid-header-shell,.ngb-grid.ngb-grid--stacked .grid-header{display:none}.ngb-grid.ngb-grid--stacked .table-wrapper{width:100%}.ngb-grid.ngb-grid--stacked .table-body-scroll{width:100%;max-height:none;overflow:visible;border-top:0;border-bottom:0}.ngb-grid.ngb-grid--stacked .grid-table.grid-body{width:100%;min-width:0;max-width:100%;table-layout:auto}.ngb-grid.ngb-grid--stacked .grid-table.grid-body colgroup{display:none}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody{display:block;width:100%}.ngb-grid.ngb-grid--menu-open .grid-header-shell,.ngb-grid.ngb-grid--row-operator-open .grid-header-shell,.ngb-grid.ngb-grid--row-operator-open .filter-row th{overflow:visible}.ngb-grid.ngb-grid--menu-open .grid-header-shell,.ngb-grid.ngb-grid--menu-open .grid-header{z-index:80}.ngb-grid.ngb-grid--menu-open .grid-header thead th.filter-menu-open{position:relative;z-index:95;overflow:visible}.ngb-grid.ngb-grid--menu-open .grid-filter-menu-host{z-index:90}.ngb-grid__filter-menu-overlay{pointer-events:auto}.ngb-grid__layout-toolbar-host:empty{display:none}.ngb-grid__layout-toolbar-host:not(:empty){border-bottom:1px solid var(--dg-border)}.ngb-grid .table-wrapper{position:relative}.ngb-grid.ngb-grid--loading .table-wrapper{pointer-events:none}.ngb-grid.ngb-grid--loading .table-wrapper .grid-table{opacity:.45}.ngb-grid__loading-overlay{position:absolute;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;background:var(--dg-loading-overlay);pointer-events:none}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody tr{display:grid;width:100%;box-sizing:border-box;grid-template-columns:minmax(0,1fr);gap:.65rem;border-bottom:1px solid var(--dg-border);padding:.9rem 1rem}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody td{display:grid;width:100%;min-width:0;box-sizing:border-box;white-space:normal;border-bottom:0;padding:.35rem 0;position:static!important;left:auto!important;right:auto!important}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody td:not([data-title]){grid-column:1/-1}.ngb-grid.ngb-grid--stacked:not(.ngb-grid--stacked-cards) .grid-table.grid-body tbody td[data-title]{grid-template-columns:minmax(5.5rem,34%) minmax(0,1fr);align-items:baseline;column-gap:.75rem}.ngb-grid.ngb-grid--stacked:not(.ngb-grid--stacked-cards) .grid-table.grid-body tbody td:before{content:attr(data-title);font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);line-height:1.3}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody tr{display:block;width:100%;padding:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody td.ngb-stacked-card-cell{display:block;width:100%;padding:.9rem 1rem;border-bottom:1px solid var(--dg-border)}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card,.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{width:100%;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem}@media(min-width:40rem){.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);align-items:start;column-gap:1.5rem}}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__group{display:flex;flex-direction:column;gap:.85rem;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__field{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__label{font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);line-height:1.3}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__value{width:100%;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody td:not([data-title]):not(.ngb-stacked-card-cell){display:block;width:100%;padding:.65rem 1rem 0;border-bottom:0}.ngb-grid[data-theme=material] .datagrid-toolbar__button--primary,.ngb-grid[data-theme=tailwind] .datagrid-toolbar__button--primary,.ngb-grid[data-theme=material] .grid-filter-apply,.ngb-grid[data-theme=tailwind] .grid-filter-apply{border-color:var(--dg-primary);background:var(--dg-primary)}.ngb-grid.ngb-responsive .table{width:100%}@media(max-width:992px){.ngb-grid .grid-filter-inline{min-width:11rem}.ngb-grid .grid-filter-field{min-width:10rem}}@media(max-width:768px){.ngb-grid .datagrid-toolbar{align-items:stretch}.ngb-grid .datagrid-toolbar__actions{justify-content:stretch}.ngb-grid .datagrid-toolbar__button{flex:1 1 auto}.ngb-grid .grid-filter-inline{width:100%}.ngb-grid.ngb-responsive thead{display:none}.ngb-grid.ngb-responsive tbody tr{display:grid;grid-template-columns:1fr;gap:.5rem;border:1px solid var(--dg-border);border-radius:.75rem;padding:.75rem;margin-bottom:.75rem}.ngb-grid.ngb-responsive tbody td{display:grid;grid-template-columns:8rem 1fr}.ngb-grid.ngb-responsive tbody td:before{content:attr(data-title);font-weight:600;opacity:.75;padding-right:.5rem}}.ngb-grid .datagrid-editing-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.75rem 1rem;border:1px solid var(--dg-border);border-bottom:0;border-radius:var(--dg-radius-lg) var(--dg-radius-lg) 0 0;background:var(--dg-surface)}.ngb-grid .datagrid-editing-toolbar__start,.ngb-grid .datagrid-editing-toolbar__end{display:inline-flex;align-items:center;gap:.5rem}.ngb-grid .datagrid-editing-toolbar__save[hidden],.ngb-grid .datagrid-editing-toolbar__cancel[hidden]{display:none!important}.ngb-grid .datagrid-editing-toolbar__hint{flex:1 1 auto;text-align:center;font-size:.875rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-cell--incell{cursor:cell}.ngb-grid .grid-cell--incell:not(.grid-cell--editing) .grid-cell-content,.ngb-grid .grid-cell--incell:not(.grid-cell--editing) .grid-cell-content *{pointer-events:none}.ngb-grid .grid-cell--editing .grid-edit-control{border-color:var(--dg-primary);box-shadow:var(--dg-focus-shadow)}.ngb-grid .grid-external-editor{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:1.5rem}.ngb-grid .grid-external-editor__backdrop{position:absolute;inset:0;border:0;background:var(--dg-backdrop);cursor:pointer}.ngb-grid .grid-external-editor__panel{position:relative;z-index:1;width:min(32rem,100%);max-height:min(90vh,40rem);overflow:auto;padding:1.25rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-lg);background:var(--dg-surface);box-shadow:var(--dg-shadow-md)}.ngb-grid .grid-external-editor__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.ngb-grid .grid-external-editor__title{margin:0;font-size:1.125rem;font-weight:700}.ngb-grid .grid-external-editor__close{border:0;background:transparent;color:var(--dg-text-muted);padding:.25rem;cursor:pointer}.ngb-grid .grid-external-editor__form{display:grid;gap:.85rem}.ngb-grid .grid-external-editor__field{display:grid;gap:.35rem}.ngb-grid .grid-external-editor__label{font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);text-transform:uppercase;letter-spacing:.03em}.ngb-grid .grid-external-editor__error{font-size:.75rem;color:var(--dg-danger)}.ngb-grid .grid-external-editor__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}.ngb-grid__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ngb-grid .grid-body td[role=gridcell]:focus-visible,.ngb-grid .grid-body td[role=gridcell].grid-cell--focused{outline:2px solid var(--dg-focus-ring);outline-offset:-2px}.ngb-grid--rtl .grid-column-reorder-handle{transform:scaleX(-1)}.ngb-grid--rtl .column-pinned-start{left:auto;right:var(--dg-pin-start, 0)}.ngb-grid--rtl .column-pinned-end{right:auto;left:var(--dg-pin-end, 0)}.ngb-grid .grid-footer{width:100%;color:var(--dg-pager-text)}.ngb-grid .grid-footer--top{margin-bottom:0;border-bottom:var(--dg-table-border-width) solid var(--dg-border)}.ngb-grid .grid-footer--custom{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgbSyncColgroupDirective, selector: "[ngbSyncColgroup]", inputs: ["ngbSyncColgroup", "syncRole", "syncMode"] }, { kind: "component", type: NgbDatagridToolbarComponent, selector: "ngb-datagrid-toolbar", inputs: ["grid"] }, { kind: "component", type: NgbDatagridEditingToolbarComponent, selector: "ngb-datagrid-editing-toolbar", inputs: ["grid", "selectedCount", "editActive", "saveDisabled"] }, { kind: "component", type: NgbDatagridExternalEditorComponent, selector: "ngb-datagrid-external-editor", inputs: ["grid"] }, { kind: "component", type: NgbDatagridColgroupComponent, selector: "colgroup[ngbDatagridColgroup]", inputs: ["grid"] }, { kind: "component", type: NgbDatagridHeaderComponent, selector: "thead[ngbDatagridHeader]", inputs: ["grid", "renderTick"] }, { kind: "component", type: NgbDatagridFilterMenuPanelComponent, selector: "ngb-datagrid-filter-menu-panel", inputs: ["grid", "col", "anchor"] }, { kind: "component", type: NgbDatagridRowFilterOperatorPanelComponent, selector: "ngb-datagrid-row-filter-operator-panel", inputs: ["grid", "col", "anchor"] }, { kind: "component", type: NgbDatagridAddRowComponent, selector: "tr[ngbDatagridAddRow]", inputs: ["grid"] }, { kind: "component", type: NgbDatagridDataRowComponent, selector: "tr[ngbDatagridDataRow]", inputs: ["grid", "renderTick", "row", "index", "selected"] }, { kind: "component", type: NgbDatagridDetailRowComponent, selector: "tr[ngbDatagridDetailRow]", inputs: ["grid", "row", "index"] }, { kind: "component", type: NgbDatagridFooterComponent, selector: "ngb-datagrid-footer", inputs: ["grid", "placement"] }, { kind: "directive", type: NgbDndListDirective, selector: "[ngbDndList]", inputs: ["dndChildrenKey", "ngbDndList", "dndGroup", "dndDisabled", "dndCloneOnDrop", "dndCloneFn", "dndIsPalette", "dndCanDrop", "dndAriaLabel"], outputs: ["dndDropped"] }, { kind: "directive", type: NgbDndItemDirective, selector: "[ngbDndItem]", inputs: ["ngbDndItem", "dndGroup", "dndIndex", "dndSourceList", "dndDisabled"], outputs: ["dndDragStart", "dndDragEnd"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
10526
|
+
], queries: [{ propertyName: "exportButtonDir", first: true, predicate: ExportButtonDirective, descendants: true }, { propertyName: "rowDetailTpl", first: true, predicate: NgbRowDetailTemplate, descendants: true }, { propertyName: "pagerTpl", first: true, predicate: NgbPagerTemplate, descendants: true }, { propertyName: "groupHeaderTpl", first: true, predicate: NgbDataGridGroupHeaderTemplateDirective, descendants: true }, { propertyName: "cellTplQ", predicate: NgbCellTemplate }, { propertyName: "editTplQ", predicate: NgbEditorTemplate }, { propertyName: "filterTplQ", predicate: NgbFilterTemplate }, { propertyName: "filterMenuTplQ", predicate: NgbFilterMenuTemplate }, { propertyName: "globalTplQ", predicate: NgbGlobalFilterTemplate }, { propertyName: "groupHeaderColumnTplQ", predicate: NgbDataGridGroupHeaderColumnTemplateDirective }, { propertyName: "groupFooterTplQ", predicate: NgbDataGridGroupFooterTemplateDirective }, { propertyName: "gridColumnQ", predicate: NgbGridColumnDirective }], viewQueries: [{ propertyName: "bodyScroller", first: true, predicate: ["bodyScroller"], descendants: true }, { propertyName: "headerScroller", first: true, predicate: ["headerScroller"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"ngb-grid\"\n [attr.dir]=\"resolvedDir()\"\n [attr.data-theme]=\"theme\"\n [class.ngb-grid--rtl]=\"isRtl()\"\n [class.ngb-responsive]=\"isResponsiveEnabled()\"\n [class.ngb-grid--compact]=\"densityMode === 'compact'\"\n [class.ngb-grid--stacked]=\"isStackedLayout()\"\n [class.ngb-grid--stacked-cards]=\"isStackedCardsLayout()\"\n [class.ngb-grid--menu-open]=\"!!openFilterMenuField || !!openMenuOperatorField || !!openRowFilterField\"\n [class.ngb-grid--row-operator-open]=\"!!openRowFilterField\"\n [class.ngb-grid--zebra]=\"zebraStripesEnabled\"\n [class.ngb-grid--resizable]=\"resizable && !isStackedLayout()\"\n [class.ngb-grid--column-reorderable]=\"isColumnReorderEnabled()\"\n [class.ngb-grid--loading]=\"loading\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n [style.--ngb-render-tick]=\"renderTick\"\n>\n <div class=\"ngb-grid__layout-toolbar-host\">\n <ng-content select=\"ngb-datagrid-layout-toolbar\"></ng-content>\n </div>\n <ngb-datagrid-toolbar [grid]=\"gridHost\"></ngb-datagrid-toolbar>\n <ngb-datagrid-editing-toolbar\n [grid]=\"gridHost\"\n [selectedCount]=\"getSelectedCount()\"\n [editActive]=\"isToolbarEditActive()\"\n [saveDisabled]=\"isToolbarSaveDisabled()\"\n ></ngb-datagrid-editing-toolbar>\n\n @if (paginationActive && pagerShowsAt('top')) {\n <ngb-datagrid-footer [grid]=\"gridHost\" placement=\"top\"></ngb-datagrid-footer>\n }\n\n <div\n class=\"ngb-grid__status visually-hidden-focusable\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >{{ statusMessage }}</div>\n\n @if (isGroupingEnabled()) {\n <div\n class=\"ngb-grid__group-panel\"\n [class.ngb-grid__group-panel--active]=\"groupPanelDragActive && !groupPanelDragDenied\"\n [class.ngb-grid__group-panel--denied]=\"groupPanelDragDenied\"\n (dragover)=\"onGroupPanelDragOver($event)\"\n (dragleave)=\"onGroupPanelDragLeave($event)\"\n (drop)=\"onGroupPanelDrop($event)\"\n >\n <div class=\"ngb-grid__group-panel-label\">{{ groupPanelLabel() }}</div>\n @if (groupedColumns().length) {\n <div class=\"ngb-grid__group-chip-list\">\n @for (descriptor of groupedColumns(); track descriptor.field) {\n <div class=\"ngb-grid__group-chip\">\n <button\n type=\"button\"\n class=\"ngb-grid__group-chip-button\"\n (click)=\"toggleGroupDirection(descriptor.field)\"\n [attr.aria-label]=\"groupDirectionAriaLabel(descriptor)\"\n >\n <span class=\"ngb-grid__group-chip-label\">{{ groupFieldLabel(descriptor) }}</span>\n <span class=\"ngb-grid__group-chip-dir\">{{ descriptor.dir === 'desc' ? '\u2193' : '\u2191' }}</span>\n </button>\n <button\n type=\"button\"\n class=\"ngb-grid__group-chip-remove\"\n (click)=\"removeGroupField(descriptor.field)\"\n [attr.aria-label]=\"groupRemoveAriaLabel(descriptor)\"\n >\n <span class=\"bi bi-x-lg\" aria-hidden=\"true\"></span>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <div class=\"table-wrapper\" [ngClass]=\"responsiveWrapperClasses\">\n @if (loading) {\n <div class=\"ngb-grid__loading-overlay\" role=\"presentation\">\n <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\">\n <span class=\"visually-hidden\">Loading</span>\n </div>\n </div>\n }\n <div class=\"grid-header-shell\" #headerScroller>\n <table class=\"grid-table grid-header mb-0\" [ngClass]=\"tableClassList\" [style.width.px]=\"tablePixelWidth\">\n @if (tableOptions?.caption) {\n <caption\n [class.caption-top]=\"(tableOptions?.captionSide ?? 'top') === 'top'\"\n >\n {{ tableOptions?.caption }}\n </caption>\n }\n\n <colgroup\n ngbDatagridColgroup\n [grid]=\"gridHost\"\n [ngbSyncColgroup]=\"colgroupSyncId\"\n syncRole=\"header\"\n [syncMode]=\"resizable ? 'explicit' : 'auto'\"\n ></colgroup>\n\n <thead\n class=\"table-light\"\n ngbDatagridHeader\n [grid]=\"gridHost\"\n [renderTick]=\"renderTick\"\n ></thead>\n </table>\n </div>\n\n <div [class.table-body-scroll]=\"shouldEnableScroll\" #bodyScroller (scroll)=\"onBodyHorizontalScroll()\">\n @if (hasStickyGroupHeaders()) {\n <div\n class=\"ngb-grid__group-sticky-layer ngb-grid__group-sticky-layer--top\"\n [style.transform]=\"'translateY(' + stickyGroupHeaderTranslateY + 'px)'\"\n >\n <table\n class=\"grid-table grid-group-sticky-table mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"presentation\"\n >\n <colgroup>\n @for (width of stickyGroupOverlayColumnWidths; track $index) {\n <col [style.width.px]=\"width || null\" />\n }\n </colgroup>\n <tbody>\n @for (item of stickyGroupHeaderRows; track item.key) {\n <tr class=\"grid-group-row grid-group-row--overlay\">\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n @if (shouldRenderGroupCell(col, item.group)) {\n <td\n class=\"grid-group-row__cell\"\n [class.grid-group-row__cell--lead]=\"isGroupLeadColumn(col, item.group)\"\n [attr.colspan]=\"groupCellColspan(col, item.group)\"\n >\n @if (isGroupLeadColumn(col, item.group)) {\n <button\n type=\"button\"\n class=\"grid-group-row__toggle\"\n (click)=\"toggleGroupCollapsed(item.group, item.level, item.startIndex)\"\n [attr.aria-expanded]=\"!item.collapsed\"\n >\n <span\n class=\"bi\"\n [ngClass]=\"item.collapsed ? 'bi-chevron-right' : 'bi-chevron-down'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"grid-group-row__content\" [style.padding-inline-start.rem]=\"groupRowIndent(item.level)\">\n @if (groupHeaderTpl) {\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTpl.template\"\n [ngTemplateOutletContext]=\"groupHeaderContext(item.group)\"\n ></ng-container>\n } @else {\n <span class=\"grid-group-row__label\">{{ groupRowLabel(item.group) }}</span>\n <span class=\"grid-group-row__count\">{{ groupRowCountLabel(item.group) }}</span>\n }\n </span>\n </button>\n @if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n } @else if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n\n <table\n class=\"grid-table grid-body grid-body--main mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"grid\"\n [attr.aria-rowcount]=\"ariaRowCount()\"\n [attr.aria-colcount]=\"ariaColCount()\"\n [attr.aria-readonly]=\"enableEdit || enableAdd ? 'false' : 'true'\"\n [attr.aria-label]=\"tableOptions?.caption || null\"\n >\n <colgroup\n ngbDatagridColgroup\n [grid]=\"gridHost\"\n [ngbSyncColgroup]=\"colgroupSyncId\"\n syncRole=\"body\"\n [syncMode]=\"resizable ? 'explicit' : 'auto'\"\n ></colgroup>\n\n <tbody\n [ngbDndList]=\"paged\"\n [dndDisabled]=\"!isRowReorderEnabled()\"\n (dndDropped)=\"onRowDrop($event)\"\n >\n @if (!hasRenderableRows()) {\n <tr class=\"ngb-grid__empty-row\">\n <td [attr.colspan]=\"ariaColCount()\" class=\"ngb-grid__empty text-center text-muted py-4\">\n {{ emptyStateLabel() }}\n </td>\n </tr>\n }\n\n @if (addingNew) {\n <tr\n ngbDatagridAddRow\n [grid]=\"gridHost\"\n [formGroup]=\"addForm\"\n ></tr>\n }\n\n @for (item of renderRows; track item.key) {\n @if (item.kind === 'group') {\n <tr\n class=\"grid-group-row\"\n [attr.data-group-key]=\"item.key\"\n [attr.data-group-level]=\"item.level\"\n >\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n @if (shouldRenderGroupCell(col, item.group)) {\n <td\n class=\"grid-group-row__cell\"\n [class.grid-group-row__cell--lead]=\"isGroupLeadColumn(col, item.group)\"\n [attr.colspan]=\"groupCellColspan(col, item.group)\"\n >\n @if (isGroupLeadColumn(col, item.group)) {\n <button\n type=\"button\"\n class=\"grid-group-row__toggle\"\n (click)=\"toggleGroupCollapsed(item.group, item.level, item.startIndex)\"\n [attr.aria-expanded]=\"!item.collapsed\"\n >\n <span\n class=\"bi\"\n [ngClass]=\"item.collapsed ? 'bi-chevron-right' : 'bi-chevron-down'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"grid-group-row__content\" [style.padding-inline-start.rem]=\"groupRowIndent(item.level)\">\n @if (groupHeaderTpl) {\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTpl.template\"\n [ngTemplateOutletContext]=\"groupHeaderContext(item.group)\"\n ></ng-container>\n } @else {\n <span class=\"grid-group-row__label\">{{ groupRowLabel(item.group) }}</span>\n <span class=\"grid-group-row__count\">{{ groupRowCountLabel(item.group) }}</span>\n }\n </span>\n </button>\n @if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n } @else if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n } @else if (item.kind === 'group-footer') {\n <tr\n class=\"grid-group-footer-row\"\n [attr.data-group-key]=\"item.key\"\n [attr.data-group-level]=\"item.level\"\n >\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n <td class=\"grid-group-footer-row__cell\">\n @if (groupFooterTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n } @else {\n <tr\n class=\"grid-data-row\"\n ngbDatagridDataRow\n [grid]=\"gridHost\"\n [renderTick]=\"renderTick\"\n [row]=\"item.row\"\n [index]=\"item.pagedIndex\"\n [selected]=\"isRowSelected(item.row, item.pagedIndex)\"\n [ngbDndItem]=\"item.row\"\n [dndIndex]=\"item.pagedIndex\"\n [dndDisabled]=\"!isRowReorderEnabled()\"\n (click)=\"onRowSelect($event, item.pagedIndex); onRowClick($event, item.pagedIndex)\"\n [formGroup]=\"editForm\"\n [class.sticky-row]=\"isRowSticky(item.row, item.pagedIndex)\"\n [class.row-selected]=\"isRowSelected(item.row, item.pagedIndex)\"\n [class.row-highlight]=\"isRowHighlighted(item.row, item.pagedIndex)\"\n [class.grid-row--reorderable]=\"isRowReorderEnabled()\"\n [ngClass]=\"resolveRowClass(item.row, item.pagedIndex)\"\n [ngStyle]=\"resolveRowStyle(item.row, item.pagedIndex)\"\n [attr.aria-selected]=\"isRowSelected(item.row, item.pagedIndex) ? 'true' : null\"\n [style.top.px]=\"stickyTop(item.row, item.pagedIndex)\"\n [style.z-index]=\"isRowSticky(item.row, item.pagedIndex) ? 3 : null\"\n ></tr>\n\n @if (rowDetailTpl && isExpanded(item.pagedIndex)) {\n <tr\n ngbDatagridDetailRow\n [grid]=\"gridHost\"\n [row]=\"item.row\"\n [index]=\"item.pagedIndex\"\n [attr.id]=\"'dg-row-detail-' + item.pagedIndex\"\n ></tr>\n }\n }\n }\n </tbody>\n </table>\n\n @if (hasStickyGroupFooters()) {\n <div\n class=\"ngb-grid__group-sticky-layer ngb-grid__group-sticky-layer--bottom\"\n [style.transform]=\"'translateY(' + stickyGroupFooterTranslateY + 'px)'\"\n >\n <table\n class=\"grid-table grid-group-sticky-table mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"presentation\"\n >\n <colgroup>\n @for (width of stickyGroupOverlayColumnWidths; track $index) {\n <col [style.width.px]=\"width || null\" />\n }\n </colgroup>\n <tbody>\n @for (item of stickyGroupFooterRows; track item.key) {\n <tr class=\"grid-group-footer-row grid-group-footer-row--overlay\">\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n <td class=\"grid-group-footer-row__cell\">\n @if (groupFooterTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n\n <table class=\"table grid-table grid-foot mb-0\" [style.width.px]=\"tablePixelWidth\">\n <colgroup>\n @for (col of visibleColumns; track col.field) {\n <col [style.width.px]=\"col?.width\" />\n }\n </colgroup>\n <tbody>\n <tr>\n <td [attr.colspan]=\"visibleColumns.length\" width=\"100%\">\n @if (paginationActive && pagerShowsAt('bottom')) {\n <ngb-datagrid-footer [grid]=\"gridHost\" placement=\"bottom\"></ngb-datagrid-footer>\n }\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n @if (externalEditOpen) {\n <ngb-datagrid-external-editor [grid]=\"gridHost\"></ngb-datagrid-external-editor>\n }\n\n @if (openFilterMenuField && openFilterMenuColumn && openFilterMenuAnchor) {\n <ngb-datagrid-filter-menu-panel\n [grid]=\"gridHost\"\n [col]=\"openFilterMenuColumn\"\n [anchor]=\"openFilterMenuAnchor\"\n />\n }\n\n @if (openRowFilterField && openRowFilterColumn && openRowFilterOperatorAnchor) {\n <ngb-datagrid-row-filter-operator-panel\n [grid]=\"gridHost\"\n [col]=\"openRowFilterColumn\"\n [anchor]=\"openRowFilterOperatorAnchor\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";[data-ngb-theme=bootstrap]{--ngb-select-icon: var(--_ngb-bootstrap-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--ngb-primary: var(--bs-primary, #0d6efd);--ngb-on-primary: #ffffff;--ngb-surface: var(--bs-body-bg, #ffffff);--ngb-surface-container: var(--bs-tertiary-bg, #f8f9fa);--ngb-surface-variant: var(--bs-secondary-bg, #e9ecef);--ngb-on-surface: var(--bs-body-color, #212529);--ngb-on-surface-variant: var(--bs-secondary-color, #6c757d);--ngb-border-color: var(--bs-border-color, #dee2e6);--ngb-primary-hover: var(--bs-link-hover-color, #0a58ca);--ngb-primary-container: var(--bs-primary-bg-subtle, #cfe2ff);--ngb-focus-ring: var(--bs-focus-ring-color, rgba(13, 110, 253, .25));--ngb-radius-sm: var(--bs-border-radius-sm, .25rem);--ngb-radius-md: var(--bs-border-radius, .375rem);--ngb-radius-lg: var(--bs-border-radius-lg, .5rem);--ngb-font-family: var(--bs-body-font-family, system-ui, sans-serif);--ngb-font-size-sm: .84rem;--ngb-density-row-height: 40px;--ngb-elevation-1: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--ngb-elevation-2: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--ngb-disabled-opacity: .45;--ngb-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--ngb-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--ngb-success: var(--bs-success, #198754);--ngb-on-success: #ffffff;--ngb-danger: var(--bs-danger, #dc3545);--ngb-on-danger: #ffffff;--ngb-space-1: .25rem;--ngb-space-2: .5rem;--ngb-space-3: .75rem;--ngb-space-4: 1rem}[data-bs-theme=light]{--_ngb-bootstrap-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}[data-bs-theme=dark]{--_ngb-bootstrap-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}[data-ngb-theme=material]{--ngb-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--ngb-primary: var(--mat-sys-primary, #6750a4);--ngb-on-primary: var(--mat-sys-on-primary, #ffffff);--ngb-surface: var(--mat-sys-surface, #fffbfe);--ngb-surface-container: var(--mat-sys-surface-container, #f3edf7);--ngb-surface-variant: var(--mat-sys-surface-container-high, #ece6f0);--ngb-on-surface: var(--mat-sys-on-surface, #1d1b20);--ngb-on-surface-variant: var(--mat-sys-on-surface-variant, #49454f);--ngb-border-color: var(--mat-sys-outline-variant, #cac4d0);--ngb-primary-hover: color-mix(in srgb, var(--mat-sys-primary, #6750a4) 88%, var(--mat-sys-on-surface, #1d1b20));--ngb-primary-container: var(--mat-sys-primary-container, #eaddff);--ngb-focus-ring: var(--mat-sys-primary, #6750a4);--ngb-radius-sm: 4px;--ngb-radius-md: 12px;--ngb-radius-lg: 16px;--ngb-font-family: var(--mat-sys-body-medium-font, Roboto, Arial, sans-serif);--ngb-font-size-sm: var(--mat-sys-body-medium-size, .875rem);--ngb-density-row-height: 48px;--ngb-elevation-1: var(--mat-sys-level1, 0 1px 3px rgba(0, 0, 0, .2));--ngb-elevation-2: var(--mat-sys-level2, 0 2px 6px rgba(0, 0, 0, .2));--ngb-disabled-opacity: .38;--ngb-hover-bg: color-mix(in srgb, var(--mat-sys-on-surface, #1d1b20) 8%, var(--mat-sys-surface, #fffbfe));--ngb-selected-bg: var(--mat-sys-secondary-container, #e8def8);--ngb-success: #198754;--ngb-on-success: #ffffff;--ngb-danger: var(--mat-sys-error, #b3261e);--ngb-on-danger: var(--mat-sys-on-error, #ffffff);--ngb-space-1: .25rem;--ngb-space-2: .5rem;--ngb-space-3: .75rem;--ngb-space-4: 1rem}.ngb-grid,.ngb-datagrid-floating-panel{--dg-surface: #ffffff;--dg-surface-muted: #f9fafb;--dg-surface-subtle: #f3f4f6;--dg-surface-config: #edf4ff;--dg-surface-filter-row: #fffbeb;--dg-surface-sticky-row: #fefce8;--dg-border: #d7deea;--dg-border-strong: #cfd6e2;--dg-text: #1f2937;--dg-text-muted: #5b6578;--dg-text-subtle: #64748b;--dg-primary: #315efb;--dg-primary-hover: #2749c4;--dg-primary-active: #1d4ed8;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #bfdbfe;--dg-accent: #3b82f6;--dg-on-primary: #ffffff;--dg-placeholder: #94a3b8;--dg-success: #39a949;--dg-success-soft: #dcfce7;--dg-success-text: #166534;--dg-success-border-subtle: #bbf7d0;--dg-danger: #ef4444;--dg-danger-soft: #fee2e2;--dg-danger-text: #b91c1c;--dg-danger-border-subtle: #fecaca;--dg-warning-soft: #fef3c7;--dg-warning-border: #fde68a;--dg-warning-text: #854d0e;--dg-filter-multi-icon: #39a949;--dg-filter-multi-icon-soft: #dcfce7;--dg-neutral-pill-bg: #e2e8f0;--dg-locked-bg: #f8fafc;--dg-row-selected-bg: #eef5ff;--dg-row-hover-bg: #f8fbff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f8fbff;--dg-search-highlight-bg: #fef08a;--dg-sticky-border: #facc15;--dg-sticky-badge-bg: #fef08a;--dg-sticky-badge-text: #854d0e;--dg-dropdown-item-active-bg: var(--dg-primary-soft);--dg-dropdown-item-active-color: var(--dg-primary);--dg-focus-ring: #2563eb;--dg-focus-border: rgba(37, 99, 235, .45);--dg-focus-shadow: 0 0 0 .2rem rgba(37, 99, 235, .15);--dg-pin-shadow-start: 1px 0 0 rgba(15, 23, 42, .08);--dg-pin-shadow-end: -1px 0 0 rgba(15, 23, 42, .08);--dg-backdrop: rgba(15, 23, 42, .45);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(37, 99, 235, .18);--dg-filter-divider: rgba(219, 227, 239, .8);--dg-shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--dg-shadow-md: 0 8px 24px rgba(15, 23, 42, .12);--dg-radius-lg: .5rem;--dg-radius-md: .45rem;--dg-radius-sm: .35rem;--dg-control-height: 2.15rem;--dg-nav-height: 2.5rem;--dg-font-size-header: .92rem;--dg-font-size-cell: .84rem;--dg-font-size-label: .94rem;--dg-cell-padding-y: .75rem;--dg-cell-padding-x: .85rem;--dg-header-padding-y: .75rem;--dg-header-padding-x: .85rem;--dg-table-border-width: 1px;--dg-pager-surface: var(--dg-surface);--dg-pager-text: var(--dg-text-muted);--dg-pager-control-bg: var(--dg-surface);--dg-pager-control-hover-bg: var(--dg-surface-subtle);--dg-pager-control-border: var(--dg-border);--dg-pager-link-text: var(--dg-primary);--dg-pager-active-bg: var(--dg-primary);--dg-pager-active-border: var(--dg-primary);--dg-pager-active-text: var(--dg-on-primary);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap],.ngb-datagrid-floating-panel[data-theme=bootstrap]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"))}.ngb-grid[data-theme=bootstrap-main],.ngb-datagrid-floating-panel[data-theme=bootstrap-main]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #f8fbff;--dg-surface-muted: #eaf3ff;--dg-surface-subtle: #d9eaff;--dg-surface-config: #e0efff;--dg-border: #bfd7f4;--dg-border-strong: #7fb0e3;--dg-text: #172554;--dg-text-muted: #45617f;--dg-primary: #1769e0;--dg-primary-hover: #0f56bd;--dg-primary-active: #0b438f;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #93c5fd;--dg-accent: #0f766e;--dg-row-selected-bg: #dcecff;--dg-row-hover-bg: #eef6ff;--dg-detail-row-bg: #edf6ff;--dg-dropdown-item-active-bg: #dcecff;--dg-dropdown-item-active-color: #0f56bd;--dg-focus-ring: #1769e0;--dg-focus-border: rgba(23, 105, 224, .48);--dg-focus-shadow: 0 0 0 .2rem rgba(23, 105, 224, .16)}.ngb-grid[data-theme=bootstrap-main-dark],.ngb-datagrid-floating-panel[data-theme=bootstrap-main-dark]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #172033;--dg-surface-muted: #202b42;--dg-surface-subtle: #273653;--dg-surface-config: #172a4f;--dg-surface-filter-row: #2c2714;--dg-surface-sticky-row: #2e2810;--dg-border: #33425f;--dg-border-strong: #4a5d80;--dg-text: #edf2ff;--dg-text-muted: #b8c3d9;--dg-text-subtle: #93a2bd;--dg-primary: #38bdf8;--dg-primary-hover: #7dd3fc;--dg-primary-active: #bae6fd;--dg-primary-soft: #12344f;--dg-primary-border-subtle: #0284c7;--dg-accent: #38bdf8;--dg-on-primary: #ffffff;--dg-placeholder: #93a2bd;--dg-locked-bg: #1e2a40;--dg-row-selected-bg: #153a67;--dg-row-hover-bg: #22304a;--dg-row-odd-bg: #172033;--dg-row-even-bg: #1b263a;--dg-detail-row-bg: #182d4c;--dg-dropdown-item-active-bg: #183b70;--dg-dropdown-item-active-color: #bfdbfe;--dg-focus-ring: #60a5fa;--dg-focus-border: rgba(96, 165, 250, .6);--dg-focus-shadow: 0 0 0 .2rem rgba(96, 165, 250, .2);--dg-shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--dg-shadow-md: 0 14px 32px rgba(0, 0, 0, .36);--dg-pager-surface: #111827;--dg-pager-text: #dbeafe;--dg-pager-control-bg: #172033;--dg-pager-control-hover-bg: #22304a;--dg-pager-control-border: #4a5d80;--dg-pager-link-text: #dbeafe;--dg-pager-active-bg: #38bdf8;--dg-pager-active-border: #38bdf8;--dg-pager-active-text: #0f172a;--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap-nordic],.ngb-datagrid-floating-panel[data-theme=bootstrap-nordic]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #ffffff;--dg-surface-muted: #f2f7f8;--dg-surface-subtle: #e6f0f2;--dg-surface-config: #e4f8fb;--dg-surface-filter-row: #fff7ed;--dg-border: #d5e4e7;--dg-border-strong: #a9c8cf;--dg-text: #263243;--dg-text-muted: #64748b;--dg-primary: #0ea5b7;--dg-primary-hover: #0b8798;--dg-primary-active: #0f6b7a;--dg-primary-soft: #d7f5f8;--dg-primary-border-subtle: #9be4ec;--dg-accent: #e85d75;--dg-row-selected-bg: #e7f8fb;--dg-row-hover-bg: #f0fbfd;--dg-row-odd-bg: transparent;--dg-row-even-bg: #fbfeff;--dg-detail-row-bg: #f4fbfc;--dg-dropdown-item-active-bg: #e7f8fb;--dg-dropdown-item-active-color: #0b8798;--dg-focus-ring: #0ea5b7;--dg-focus-border: rgba(14, 165, 183, .45);--dg-focus-shadow: 0 0 0 .2rem rgba(14, 165, 183, .15);--dg-font-size-cell: .88rem;--dg-cell-padding-y: .82rem;--dg-pager-surface: #f8ffff;--dg-pager-text: #526173;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #e7f8fb;--dg-pager-control-border: #b9dce2;--dg-pager-link-text: #0b8798;--dg-pager-active-bg: #0ea5b7;--dg-pager-active-border: #0ea5b7;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=bootstrap-urban],.ngb-datagrid-floating-panel[data-theme=bootstrap-urban]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #ffffff;--dg-surface-muted: #f5f8fa;--dg-surface-subtle: #edf4f7;--dg-surface-config: #e8f4f9;--dg-border: #d9e5ea;--dg-border-strong: #adc6d3;--dg-text: #263445;--dg-text-muted: #5f6f84;--dg-primary: #468faf;--dg-primary-hover: #36748f;--dg-primary-active: #285b72;--dg-primary-soft: #e0f0f6;--dg-primary-border-subtle: #b9dbe8;--dg-accent: #ff7f50;--dg-row-selected-bg: #e8f4f9;--dg-row-hover-bg: #fff2eb;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-dropdown-item-active-bg: #e8f4f9;--dg-dropdown-item-active-color: #36748f;--dg-focus-ring: #468faf;--dg-focus-border: rgba(70, 143, 175, .48);--dg-focus-shadow: 0 0 0 .2rem rgba(70, 143, 175, .16);--dg-cell-padding-y: .86rem;--dg-cell-padding-x: .95rem;--dg-pager-surface: #fffaf7;--dg-pager-text: #5f6f84;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #fff2eb;--dg-pager-control-border: #d4e1e7;--dg-pager-link-text: #36748f;--dg-pager-active-bg: #468faf;--dg-pager-active-border: #468faf;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=bootstrap-vintage],.ngb-datagrid-floating-panel[data-theme=bootstrap-vintage]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #fffdf8;--dg-surface-muted: #f6f0e7;--dg-surface-subtle: #eee4d8;--dg-surface-config: #f2e7ef;--dg-border: #dfd2c2;--dg-border-strong: #c8b8a5;--dg-text: #3d3440;--dg-text-muted: #766a72;--dg-primary: #7f4f68;--dg-primary-hover: #684057;--dg-primary-active: #523246;--dg-primary-soft: #efdde8;--dg-primary-border-subtle: #d8b9ca;--dg-accent: #88b0b7;--dg-row-selected-bg: #f1e4ec;--dg-row-hover-bg: #fbf1e5;--dg-row-odd-bg: #fffdf8;--dg-row-even-bg: #fbf7ef;--dg-detail-row-bg: #fbf6ef;--dg-dropdown-item-active-bg: #f1e4ec;--dg-dropdown-item-active-color: #684057;--dg-focus-ring: #7f4f68;--dg-focus-border: rgba(127, 79, 104, .5);--dg-focus-shadow: 0 0 0 .2rem rgba(127, 79, 104, .16);--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-pager-surface: #fffdf8;--dg-pager-text: #766a72;--dg-pager-control-bg: #fffaf2;--dg-pager-control-hover-bg: #fbf1e5;--dg-pager-control-border: #dfd2c2;--dg-pager-link-text: #684057;--dg-pager-active-bg: #7f4f68;--dg-pager-active-border: #7f4f68;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=material],.ngb-grid[data-theme=material-main],.ngb-datagrid-floating-panel[data-theme=material],.ngb-datagrid-floating-panel[data-theme=material-main]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0}.ngb-grid[data-theme=material-indigo],.ngb-datagrid-floating-panel[data-theme=material-indigo]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0;--dg-primary: #3f51b5;--dg-primary-hover: #303f9f;--dg-primary-active: #283593;--dg-primary-soft: #e8eaf6;--dg-primary-border-subtle: #c5cae9;--dg-dropdown-item-active-bg: #e8eaf6;--dg-dropdown-item-active-color: #303f9f;--dg-focus-ring: #3f51b5;--dg-focus-border: rgba(63, 81, 181, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(63, 81, 181, .16);--dg-row-hover-bg: #f0f2ff}.ngb-grid[data-theme=material-deep-purple],.ngb-datagrid-floating-panel[data-theme=material-deep-purple]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0;--dg-primary: #7e57c2;--dg-primary-hover: #673ab7;--dg-primary-active: #512da8;--dg-primary-soft: #ede7f6;--dg-primary-border-subtle: #d1c4e9;--dg-accent: #ff7043;--dg-row-selected-bg: #ede7f6;--dg-row-hover-bg: #f5edff;--dg-dropdown-item-active-bg: #ede7f6;--dg-dropdown-item-active-color: #512da8;--dg-focus-ring: #7e57c2;--dg-focus-border: rgba(126, 87, 194, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(126, 87, 194, .16)}.ngb-grid[data-theme=tailwind],.ngb-grid[data-theme=tailwind-main],.ngb-datagrid-floating-panel[data-theme=tailwind],.ngb-datagrid-floating-panel[data-theme=tailwind-main]{--dg-surface: #ffffff;--dg-surface-muted: #f8fafc;--dg-surface-subtle: #f1f5f9;--dg-border: #cbd5e1;--dg-border-strong: #94a3b8;--dg-text: #0f172a;--dg-text-muted: #475569;--dg-primary: #2563eb;--dg-primary-hover: #1d4ed8;--dg-primary-active: #1e40af;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #bfdbfe;--dg-dropdown-item-active-bg: #dbeafe;--dg-dropdown-item-active-color: #1d4ed8;--dg-focus-ring: #2563eb;--dg-focus-border: rgba(37, 99, 235, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(37, 99, 235, .16);--dg-row-hover-bg: #eff6ff;--dg-font-size-header: .75rem;--dg-font-size-cell: .85rem;--dg-cell-padding-y: .68rem;--dg-cell-padding-x: .8rem;--dg-table-border-width: 1px;--dg-pager-surface: #ffffff;--dg-pager-text: #475569;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #eff6ff;--dg-pager-control-border: #bfdbfe;--dg-pager-link-text: #1d4ed8;--dg-pager-active-bg: #2563eb;--dg-pager-active-border: #2563eb;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=tailwind-slate],.ngb-datagrid-floating-panel[data-theme=tailwind-slate]{--dg-surface: #f8fafc;--dg-surface-muted: #e2e8f0;--dg-surface-subtle: #cbd5e1;--dg-border: #cbd5e1;--dg-border-strong: #64748b;--dg-text: #0f172a;--dg-text-muted: #475569;--dg-primary: #475569;--dg-primary-hover: #334155;--dg-primary-active: #1e293b;--dg-primary-soft: #e2e8f0;--dg-primary-border-subtle: #94a3b8;--dg-dropdown-item-active-bg: #e2e8f0;--dg-dropdown-item-active-color: #334155;--dg-focus-ring: #475569;--dg-row-hover-bg: #e2e8f0;--dg-row-odd-bg: #f8fafc;--dg-row-even-bg: #f1f5f9;--dg-focus-border: rgba(71, 85, 105, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(71, 85, 105, .16)}.ngb-grid[data-theme=tailwind-emerald],.ngb-datagrid-floating-panel[data-theme=tailwind-emerald]{--dg-surface: #ffffff;--dg-surface-muted: #ecfdf5;--dg-surface-subtle: #d1fae5;--dg-border: #a7f3d0;--dg-border-strong: #34d399;--dg-text: #064e3b;--dg-text-muted: #047857;--dg-primary: #059669;--dg-primary-hover: #047857;--dg-primary-active: #065f46;--dg-primary-soft: #d1fae5;--dg-primary-border-subtle: #6ee7b7;--dg-dropdown-item-active-bg: #d1fae5;--dg-dropdown-item-active-color: #047857;--dg-focus-ring: #059669;--dg-focus-border: rgba(5, 150, 105, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(5, 150, 105, .16)}.ngb-datagrid-floating-panel{font-family:var(--ngb-font-family, inherit);color:var(--dg-text)}.ngb-datagrid-floating-panel.grid-filter-menu-popover,.ngb-datagrid-floating-panel.dropdown-menu{position:fixed!important;z-index:1200;display:block;visibility:visible;opacity:1;pointer-events:auto;max-height:min(28rem,100vh - 1.5rem);overflow:auto;margin:0!important;border-radius:var(--dg-radius-md);border:1px solid var(--dg-border);background:var(--dg-surface);box-shadow:var(--dg-shadow-md)}.ngb-datagrid-floating-panel.dropdown-menu{min-width:12rem;padding:.35rem 0}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item{display:block;width:100%;padding:.5rem .85rem;border:0;background:transparent;font-size:.8125rem;font-weight:600;color:var(--dg-text);text-align:left}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item.active{color:var(--dg-dropdown-item-active-color);background:var(--dg-dropdown-item-active-bg)}.ngb-datagrid-floating-panel.dropdown-menu .dropdown-item{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;color:var(--dg-text)}.ngb-datagrid-floating-panel.dropdown-menu .dropdown-item:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel.grid-filter-menu-popover{min-width:18rem;padding:0}.ngb-datagrid-floating-panel .grid-filter-menu-surface{display:block;min-width:18rem;padding:1rem;border-radius:var(--dg-radius-md);background:var(--dg-surface)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__header{margin-bottom:.875rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--dg-text-muted)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__title{margin-top:.15rem;font-size:.95rem;font-weight:700;color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-stack{display:flex;flex-direction:column;gap:.75rem}.ngb-datagrid-floating-panel .grid-filter-stack__label{font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-datagrid-floating-panel .grid-filter-stack--multi{gap:.65rem}.ngb-datagrid-floating-panel .grid-filter-condition{display:flex;flex-direction:column;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-operator-select,.ngb-grid .grid-filter-operator-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.875rem;color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-operator-select--compact,.ngb-grid .grid-filter-operator-select--compact{width:auto;min-width:2.25rem;max-width:2.5rem;padding:.35rem .25rem;font-size:0}.ngb-datagrid-floating-panel .grid-filter-logic-select,.ngb-grid .grid-filter-logic-select{display:flex;justify-content:center;margin:.15rem 0}.ngb-datagrid-floating-panel .grid-filter-logic-select select,.ngb-grid .grid-filter-logic-select select{width:auto;min-width:4.5rem;min-height:1.75rem;padding:.2rem 1.5rem .2rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.8125rem;font-weight:600;color:var(--dg-text);text-align:center}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions--split,.ngb-grid .grid-filter-menu-surface__actions--split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-apply--secondary,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary,.ngb-grid .grid-filter-apply--secondary,.ngb-grid .grid-filter-cancel--secondary{width:100%;border:1px solid var(--dg-border-strong);background:var(--dg-surface-muted);color:var(--dg-text);font-weight:600}.ngb-datagrid-floating-panel .grid-filter-apply--secondary:hover,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary:hover,.ngb-grid .grid-filter-apply--secondary:hover,.ngb-grid .grid-filter-cancel--secondary:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel .grid-filter-multi-panel,.ngb-grid .grid-filter-multi-panel{display:flex;flex-direction:column;gap:.5rem;min-width:16.5rem}.ngb-datagrid-floating-panel .grid-filter-join-select,.ngb-grid .grid-filter-join-select{display:inline-block;width:fit-content;max-width:100%;margin:.1rem 0}.ngb-datagrid-floating-panel .grid-filter-join-select__control,.ngb-grid .grid-filter-join-select__control{width:100%;min-height:1.75rem;padding:.2rem 1.25rem .2rem .5rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.8125rem;font-weight:600;text-align:left}.ngb-datagrid-floating-panel .grid-filter-field{position:relative;width:100%;min-width:0}.ngb-datagrid-floating-panel .grid-filter-field--with-icon .grid-filter-control,.ngb-datagrid-floating-panel .grid-filter-field--with-icon .grid-filter-value-input{padding-right:2.25rem}.ngb-datagrid-floating-panel .grid-filter-field__icon{position:absolute;right:.8rem;top:50%;transform:translateY(-50%);color:var(--dg-placeholder);pointer-events:none}.ngb-datagrid-floating-panel .grid-filter-control,.ngb-datagrid-floating-panel .grid-filter-value-input,.ngb-datagrid-floating-panel .grid-filter-value-select,.ngb-grid .grid-filter-value-input,.ngb-grid .grid-filter-value-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);color:var(--dg-text);font-size:.875rem}.ngb-datagrid-floating-panel .grid-filter-apply--secondary:disabled,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary:disabled,.ngb-grid .grid-filter-apply--secondary:disabled,.ngb-grid .grid-filter-cancel--secondary:disabled{opacity:var(--ngb-disabled-opacity, .45);cursor:not-allowed}.ngb-datagrid-floating-panel .grid-filter-condition__join{margin:.15rem 0;font-size:.75rem;font-weight:700;color:var(--dg-text-muted);text-align:center}.ngb-datagrid-floating-panel .grid-filter-stack__footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.ngb-datagrid-floating-panel .grid-filter-operator__button{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;color:var(--dg-text-muted);border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface)}.ngb-datagrid-floating-panel .grid-filter-clear,.ngb-datagrid-floating-panel .grid-filter-apply,.ngb-datagrid-floating-panel .grid-filter-cancel{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;border-radius:var(--dg-radius-sm)}.ngb-datagrid-floating-panel .grid-filter-apply{border:1px solid var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-datagrid-floating-panel .grid-filter-cancel,.ngb-datagrid-floating-panel .grid-filter-clear{border:1px solid var(--dg-border-strong);background:var(--dg-surface);color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--dg-border)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__multi{display:flex;flex-direction:column;gap:.5rem;width:100%;min-width:16rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__search{border:1px solid var(--dg-border);border-radius:var(--dg-radius-md);min-height:2rem;padding:.4rem .65rem;font-size:.8125rem;width:100%}.ngb-datagrid-floating-panel .grid-multi-filter-list{max-height:11.5rem;overflow:auto;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border)}.ngb-datagrid-floating-panel .grid-multi-filter-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;padding:.45rem .75rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);cursor:pointer}.ngb-datagrid-floating-panel .grid-multi-filter-option__main{display:flex;align-items:center;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions--multi{justify-content:space-between}.ngb-datagrid-floating-panel[data-theme=bootstrap].dropdown-menu .dropdown-item{font-weight:400}.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-operator-select,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-value-input,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-value-select,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-menu-surface__search,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-join-select__control{border-radius:var(--ngb-radius-md, var(--bs-border-radius, var(--dg-radius-sm)))}ngb-datagrid{display:block}.ngb-grid{color:var(--dg-text);font-family:var(--ngb-font-family, inherit);--dg-group-sticky-row-height: 3rem}.ngb-grid.ngb-grid--compact{--dg-group-sticky-row-height: 2.5rem}.ngb-grid .table{margin-bottom:0}.ngb-grid .datagrid-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.ngb-grid .datagrid-toolbar__search{flex:1 1 20rem;min-width:16rem}.ngb-grid .datagrid-toolbar__search-label{display:block;margin-bottom:.35rem;font-size:.875rem;font-weight:500;color:var(--dg-text-muted)}.ngb-grid .datagrid-toolbar__search-shell{display:flex;align-items:center;gap:.625rem;min-height:calc(var(--dg-control-height) + 4px);padding:0 .875rem;border:1px solid var(--dg-border);border-radius:999px;background:var(--dg-surface);box-shadow:var(--dg-shadow-sm)}.ngb-grid .datagrid-toolbar__search-icon{color:var(--dg-text-muted)}.ngb-grid .datagrid-toolbar__search-input{flex:1 1 auto;width:100%;min-width:0;border:0;background:transparent;color:var(--dg-text);outline:none;font-size:.95rem;padding:.625rem 0}.ngb-grid .datagrid-toolbar__search-input::placeholder{color:var(--dg-placeholder)}.ngb-grid .datagrid-toolbar__actions{display:flex;align-items:center;justify-content:flex-end;gap:.625rem;flex-wrap:wrap}.ngb-grid .datagrid-toolbar__button,.ngb-grid .grid-row-action,.ngb-grid .grid-filter-apply,.ngb-grid .grid-filter-clear,.ngb-grid .grid-filter-cancel,.ngb-grid .grid-filter-operator__button,.ngb-grid .grid-filter-menu-trigger,.ngb-grid .grid-detail-toggle{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:var(--dg-control-height);border-radius:var(--dg-radius-md);border:1px solid var(--dg-border);background:var(--dg-surface);color:var(--dg-text);box-shadow:none;font:inherit;text-decoration:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.ngb-grid .datagrid-toolbar__button:hover,.ngb-grid .grid-row-action:hover,.ngb-grid .grid-filter-apply:hover,.ngb-grid .grid-filter-clear:hover,.ngb-grid .grid-filter-cancel:hover,.ngb-grid .grid-filter-operator__button:hover,.ngb-grid .grid-filter-menu-trigger:hover,.ngb-grid .grid-detail-toggle:hover{border-color:var(--dg-border-strong);background:var(--dg-surface-subtle);color:var(--dg-text);text-decoration:none}.ngb-grid .datagrid-toolbar__button:focus-visible,.ngb-grid .grid-row-action:focus-visible,.ngb-grid .grid-filter-apply:focus-visible,.ngb-grid .grid-filter-clear:focus-visible,.ngb-grid .grid-filter-cancel:focus-visible,.ngb-grid .grid-filter-operator__button:focus-visible,.ngb-grid .grid-filter-menu-trigger:focus-visible,.ngb-grid .grid-detail-toggle:focus-visible,.ngb-grid .grid-sort-button:focus-visible,.ngb-grid .grid-edit-control:focus-visible,.ngb-grid .grid-filter-control:focus-visible,.ngb-grid .datagrid-toolbar__search-input:focus-visible{outline:none;border-color:var(--dg-focus-border);box-shadow:var(--dg-focus-shadow)}.ngb-grid .datagrid-toolbar__button{padding:.625rem 1rem;font-size:.875rem;font-weight:400}.ngb-grid .datagrid-toolbar__button--primary{border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-grid .datagrid-toolbar__button--primary:hover{background:var(--dg-primary-hover);border-color:var(--dg-primary-hover);color:var(--dg-on-primary)}.ngb-grid .datagrid-toolbar__button--secondary{background:var(--dg-surface);color:var(--dg-text)}.ngb-grid .ngb-grid__group-panel{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;min-height:3.25rem;margin-bottom:.9rem;padding:.75rem .9rem;border:1px dashed var(--dg-border-strong);border-radius:var(--dg-radius-md);background:color-mix(in srgb,var(--dg-surface-muted) 72%,white);transition:border-color .12s ease,background-color .12s ease,box-shadow .12s ease}.ngb-grid .ngb-grid__group-panel--active{border-color:var(--dg-primary);background:color-mix(in srgb,var(--dg-primary-soft) 45%,white);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dg-primary) 22%,transparent)}.ngb-grid .ngb-grid__group-panel--denied{border-color:var(--dg-danger, #dc3545);background:color-mix(in srgb,var(--dg-danger, #dc3545) 8%,var(--dg-surface))}.ngb-grid .ngb-grid__group-panel-label{font-size:.875rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .ngb-grid__group-chip-list{display:inline-flex;align-items:center;gap:.55rem;flex-wrap:wrap}.ngb-grid .ngb-grid__group-chip{display:inline-flex;align-items:center;gap:.25rem;border:1px solid color-mix(in srgb,var(--dg-primary) 26%,var(--dg-border));border-radius:999px;background:var(--dg-surface);box-shadow:var(--dg-shadow-sm)}.ngb-grid .ngb-grid__group-chip-button,.ngb-grid .ngb-grid__group-chip-remove{display:inline-flex;align-items:center;gap:.4rem;min-height:2rem;border:0;background:transparent;color:var(--dg-text)}.ngb-grid .ngb-grid__group-chip-button{padding:.35rem .55rem .35rem .8rem;font-size:.8125rem;font-weight:600}.ngb-grid .ngb-grid__group-chip-remove{padding:.35rem .75rem .35rem .15rem;color:var(--dg-text-muted)}.ngb-grid .ngb-grid__group-chip-button:hover,.ngb-grid .ngb-grid__group-chip-remove:hover{color:var(--dg-primary)}.ngb-grid .ngb-grid__group-chip-button:focus-visible,.ngb-grid .ngb-grid__group-chip-remove:focus-visible,.ngb-grid .grid-column-group-handle:focus-visible,.ngb-grid .grid-group-row__toggle:focus-visible{outline:none;box-shadow:var(--dg-focus-shadow);border-radius:999px}.ngb-grid .ngb-grid__group-chip-dir{font-size:.8rem;color:var(--dg-primary)}.ngb-grid .table-wrapper{position:relative;overflow-x:hidden;overflow-y:clip;border:var(--dg-table-border-width) solid var(--dg-border);border-radius:var(--dg-radius-lg);background:var(--dg-surface);box-shadow:var(--dg-shadow-sm);isolation:isolate}.ngb-grid .table-body-scroll{max-height:24rem;overflow-y:auto;overflow-x:auto;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border);scrollbar-gutter:stable both-edges;position:relative;z-index:0}.ngb-grid .ngb-grid__group-sticky-layer{position:absolute;inset-inline-start:0;z-index:35;min-width:100%;pointer-events:none}.ngb-grid .ngb-grid__group-sticky-layer--top,.ngb-grid .ngb-grid__group-sticky-layer--bottom{top:0}.ngb-grid .grid-group-sticky-table{min-width:100%;pointer-events:auto}.ngb-grid .grid-table{width:max-content;min-width:100%;table-layout:fixed;margin:0;border-collapse:separate;border-spacing:0}.ngb-grid.ngb-grid--resizable .grid-table{min-width:0;width:max-content}.ngb-grid.ngb-grid--resizable .grid-table th,.ngb-grid.ngb-grid--resizable .grid-table td{box-sizing:border-box}.ngb-grid .grid-header-shell{position:relative;z-index:20;overflow:hidden}.ngb-grid .grid-header{position:relative;z-index:20;overflow:visible}.ngb-grid .grid-header thead tr:first-child th:first-child{border-top-left-radius:var(--dg-radius-lg)}.ngb-grid .grid-header thead tr:first-child th:last-child{border-top-right-radius:var(--dg-radius-lg)}.ngb-grid .grid-header thead th{background:var(--dg-surface-muted);border-bottom:var(--dg-table-border-width) solid var(--dg-border);color:var(--dg-text);font-size:var(--dg-font-size-header);font-weight:600;text-transform:none;letter-spacing:.01em;overflow:visible}.ngb-grid .grid-table th,.ngb-grid .grid-table td{vertical-align:middle;border-bottom:var(--dg-table-border-width) solid var(--dg-border);padding:var(--dg-cell-padding-y) var(--dg-cell-padding-x);font-size:var(--dg-font-size-cell)}.ngb-grid .grid-table th{padding:var(--dg-header-padding-y) var(--dg-header-padding-x)}.ngb-grid .grid-table td{height:var(--ngb-density-row-height, auto);background:var(--dg-surface);color:var(--dg-text);font-weight:400}.ngb-grid .grid-table th{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-header .grid-table th{overflow:visible}.ngb-grid .grid-header thead tr:first-child th.grid-header__column--resizable{position:relative}.ngb-grid .grid-column-resize-handle{position:absolute;top:0;right:0;width:.45rem;height:100%;cursor:col-resize;touch-action:none;-webkit-user-select:none;user-select:none;z-index:3}.ngb-grid .grid-column-resize-handle:after{content:\"\";position:absolute;top:.35rem;bottom:.35rem;right:.1rem;width:2px;border-radius:1px;background:var(--dg-border-strong);opacity:0;transition:opacity .15s ease}.ngb-grid .grid-header__column--resizable:hover .grid-column-resize-handle:after,.ngb-grid .grid-column-resize-handle:focus-visible:after{opacity:1}body.ngb-datagrid-column-resizing{cursor:col-resize!important;-webkit-user-select:none;user-select:none}.ngb-grid.ngb-grid--column-reorderable .grid-header thead tr:first-child th.grid-header__column--reorderable{position:relative}.ngb-grid .grid-column-reorder-handle{flex:0 0 auto;margin-right:.15rem;padding:.1rem .18rem;border-radius:999px;color:var(--dg-text-muted);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;opacity:.82;line-height:1;font-size:.95rem}.ngb-grid .grid-header__column--reorderable:hover .grid-column-reorder-handle,.ngb-grid .grid-column-reorder-handle:focus-visible{opacity:1;background:color-mix(in srgb,var(--dg-accent) 12%,transparent)}.ngb-grid .grid-column-group-handle{flex:0 0 auto;padding:.15rem .25rem;border-radius:999px;color:var(--dg-text-muted);cursor:grab;-webkit-user-select:none;user-select:none;line-height:1;font-size:.9rem}.ngb-grid .grid-column-group-handle--active,.ngb-grid .grid-column-group-handle:hover{color:var(--dg-primary);background:color-mix(in srgb,var(--dg-primary-soft) 55%,transparent)}.ngb-grid .grid-header__column--drag-over{background:color-mix(in srgb,var(--dg-accent) 12%,transparent);box-shadow:inset 0 -2px 0 var(--dg-accent)}.ngb-grid .grid-header__cell{display:flex;align-items:center;justify-content:space-between;gap:.625rem;width:100%;overflow:visible}.ngb-grid .grid-sort-button{display:inline-flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:0;border:0;background:transparent;color:inherit;text-align:left}.ngb-grid .grid-sort-button__label{min-width:0;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-sort-button__indicator{flex:0 0 auto;font-size:.8rem;color:var(--dg-placeholder)}.ngb-grid .grid-sort-button__indicator--active{color:var(--dg-primary)}.ngb-grid .grid-filter-menu-host{position:relative;display:inline-flex;flex:0 0 auto;z-index:30}.ngb-grid .grid-filter-menu-popover:not(.ngb-datagrid-floating-panel){position:absolute;top:calc(100% + .5rem);right:0;z-index:120}.ngb-grid .grid-filter-menu-popover .grid-filter-menu-surface{position:static;top:auto;right:auto}.ngb-grid .grid-filter-menu-trigger{min-width:var(--dg-control-height);width:var(--dg-control-height);height:var(--dg-control-height);padding:0}.ngb-grid .grid-filter-menu-trigger--active,.ngb-grid .filter-menu-active .grid-filter-menu-trigger{border-color:var(--dg-focus-border);background:var(--dg-primary-soft);color:var(--dg-primary)}.ngb-grid .grid-filter-menu-trigger--check .bi{color:var(--dg-placeholder)}.ngb-grid .grid-filter-menu-trigger--check.grid-filter-menu-trigger--active,.ngb-grid .filter-menu-active .grid-filter-menu-trigger--check{border-color:var(--dg-focus-border);background:var(--dg-primary-soft);color:var(--dg-primary)}.ngb-grid .grid-filter-menu-trigger--check.grid-filter-menu-trigger--active .bi,.ngb-grid .filter-menu-active .grid-filter-menu-trigger--check .bi{color:var(--dg-primary)}.ngb-grid .grid-filter-menu-surface{position:absolute;top:calc(100% + .5rem);right:0;min-width:18rem;padding:1rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-md);background:var(--dg-surface);box-shadow:var(--dg-shadow-md);z-index:120}.ngb-grid .grid-filter-menu-surface__header{margin-bottom:.875rem}.ngb-grid .grid-filter-menu-surface__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--dg-text-subtle)}.ngb-grid .grid-filter-menu-surface__title{margin-top:.15rem;font-size:.95rem;font-weight:700;color:var(--dg-text)}.ngb-grid .grid-filter-stack{display:flex;flex-direction:column;gap:.75rem}.ngb-grid .grid-filter-stack--multi{gap:.65rem}.ngb-grid .grid-filter-operator-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .375rem);background:var(--dg-surface);font-size:.875rem;color:var(--dg-text)}.ngb-grid .grid-filter-operator-select--compact{width:auto;min-width:2.25rem;max-width:3.5rem;padding:.35rem .25rem;font-size:.6875rem}.ngb-grid .grid-filter-logic-select{display:flex;justify-content:center;margin:.15rem 0}.ngb-grid .grid-filter-logic-select select{width:auto;min-width:4.5rem;min-height:1.75rem;padding:.2rem 1.5rem .2rem .65rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .375rem);background:var(--dg-surface);font-size:.8125rem;font-weight:600}.ngb-grid .grid-filter-menu-surface__actions--split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.ngb-grid .grid-filter-apply--secondary,.ngb-grid .grid-filter-cancel--secondary{width:100%;border:1px solid var(--dg-border-strong);background:var(--dg-surface-muted);color:var(--dg-text);font-weight:600}.ngb-grid .grid-filter-apply--secondary:hover,.ngb-grid .grid-filter-cancel--secondary:hover{background:var(--dg-surface-subtle)}.ngb-grid .grid-filter-multi-panel{display:flex;flex-direction:column;gap:.5rem;min-width:16.5rem}.ngb-grid .grid-filter-join-select{display:inline-block;width:fit-content;max-width:100%;margin:.1rem 0}.ngb-grid .grid-filter-join-select__control{width:100%;min-height:1.75rem;padding:.2rem 1.25rem .2rem .5rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .375rem);background:var(--dg-surface);font-size:.8125rem;font-weight:600;text-align:left}.ngb-grid .grid-filter-value-input,.ngb-grid .grid-filter-value-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .375rem);background:var(--dg-surface);font-size:.875rem}.ngb-grid .grid-filter-apply--secondary:disabled,.ngb-grid .grid-filter-cancel--secondary:disabled{opacity:var(--ngb-disabled-opacity, .45);cursor:not-allowed}.ngb-grid .grid-group-row td,.ngb-grid .grid-group-footer-row td{background:color-mix(in srgb,var(--dg-surface-muted) 88%,white);border-bottom:1px solid var(--dg-border)}.ngb-grid .grid-group-row--overlay td{box-shadow:inset 0 -1px 0 var(--dg-border),0 1px color-mix(in srgb,var(--dg-border) 36%,transparent)}.ngb-grid .grid-group-footer-row--overlay td{box-shadow:inset 0 1px 0 var(--dg-border),0 -1px color-mix(in srgb,var(--dg-border) 36%,transparent)}.ngb-grid .grid-group-row__cell{padding:0;vertical-align:top}.ngb-grid .grid-group-footer-row__cell,.ngb-grid .grid-group-row__utility-cell{padding:.7rem .75rem;vertical-align:top}.ngb-grid .grid-group-row__toggle{display:flex;align-items:center;gap:.55rem;width:100%;padding:.7rem 1rem;border:0;background:transparent;color:var(--dg-text);text-align:left;font-size:.875rem;font-weight:600}.ngb-grid .grid-group-row__cell--lead .grid-group-row__toggle{padding-inline-end:.75rem}.ngb-grid .grid-group-row__toggle:hover{background:color-mix(in srgb,var(--dg-primary-soft) 34%,transparent)}.ngb-grid .grid-group-row__content{display:inline-flex;align-items:center;gap:.5rem;min-width:0}.ngb-grid .grid-group-row__label{color:var(--dg-text)}.ngb-grid .grid-group-row__count{font-size:.75rem;font-weight:700;color:var(--dg-text-muted)}.ngb-grid .grid-group-row__column-slot{padding:.25rem .75rem .75rem;font-size:.8125rem;color:var(--dg-text-muted)}.ngb-grid .grid-group-row__cell--lead .grid-group-row__column-slot{padding-inline-start:2.75rem}.ngb-grid .grid-group-footer-row td{background:color-mix(in srgb,var(--dg-surface-muted) 94%,white)}.ngb-grid .grid-filter-menu-popover .grid-filter-menu-surface:has(.grid-filter-menu-surface__multi){width:16.25rem;max-width:min(16.25rem,92vw);padding:.75rem}.ngb-grid .grid-filter-menu-surface__multi{display:flex;flex-direction:column;gap:.5rem;width:100%}.ngb-grid .grid-filter-menu-surface__multi .grid-filter-menu-surface__search{border-radius:.5rem;min-height:2rem;padding:.4rem .65rem;font-size:.8125rem}.ngb-grid .grid-multi-filter-list{max-height:11.5rem;overflow:auto;margin:0 -.75rem;padding:.15rem 0;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border)}.ngb-grid .grid-multi-filter-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;padding:.45rem .75rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);cursor:pointer}.ngb-grid .grid-multi-filter-option+.grid-multi-filter-option{border-top:1px solid var(--dg-filter-divider)}.ngb-grid .grid-multi-filter-option--summary{font-weight:700}.ngb-grid .grid-multi-filter-option__main{display:inline-flex;align-items:center;gap:.75rem;min-width:0}.ngb-grid .grid-multi-filter-option__main input{width:1rem;height:1rem;margin:0;accent-color:var(--dg-primary);flex:0 0 auto}.ngb-grid .grid-multi-filter-option__count{font-size:.75rem;font-weight:700;color:var(--dg-text-muted)}.ngb-grid .grid-filter-stack__label{font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-filter-stack__footer,.ngb-grid .grid-filter-menu-surface__actions{display:flex;align-items:center;justify-content:space-between;gap:.625rem}.ngb-grid .grid-filter-inline{display:flex;align-items:center;gap:.45rem;min-width:0;width:100%}.ngb-grid .grid-filter-field{position:relative;min-width:12rem;flex:1 1 auto}.ngb-grid .grid-filter-field--with-icon .grid-filter-control{padding-right:2.25rem}.ngb-grid .grid-filter-field__icon{position:absolute;right:.8rem;top:50%;transform:translateY(-50%);color:var(--dg-placeholder);pointer-events:none}.ngb-grid .grid-filter-control,.ngb-grid .grid-edit-control{width:100%;min-width:0;min-height:var(--dg-control-height);padding:.5rem .75rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .3rem);background:var(--dg-surface);color:var(--dg-text);font-size:.875rem}.ngb-grid .grid-edit-checkbox{width:1rem;height:1rem;margin-top:0}.ngb-grid .grid-filter-operator{position:relative;flex:0 0 auto}.ngb-grid .grid-filter-operator__button{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-filter-operator__button--compact{min-width:var(--dg-control-height);width:var(--dg-control-height);padding:0}.ngb-grid .grid-filter-operator__button--active{border-color:var(--dg-primary);color:var(--dg-primary)}.ngb-grid .grid-filter-operator .dropdown-menu:not(.ngb-datagrid-floating-panel){position:absolute;inset:calc(100% + .35rem) 0 auto auto;min-width:12rem;margin:0;border-radius:.9rem;border-color:var(--dg-border);box-shadow:var(--dg-shadow-md);z-index:120}.ngb-grid .grid-filter-clear{padding:.55rem .8rem;font-size:.8125rem;color:var(--dg-text-muted)}.ngb-grid .grid-filter-apply{padding:.625rem .95rem;border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary);font-size:.875rem;font-weight:600}.ngb-grid .grid-filter-apply:hover{border-color:var(--dg-primary-active);background:var(--dg-primary-active);color:var(--dg-on-primary)}.ngb-grid .grid-filter-menu-surface__actions--multi{justify-content:space-between;margin-top:.35rem}.ngb-grid .grid-filter-menu-surface__multi .grid-filter-apply{min-width:5.25rem;padding:.5rem 1.15rem;font-size:.8125rem}.ngb-grid .grid-filter-cancel{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);border:1px solid var(--dg-border-strong);background:var(--dg-surface)}.ngb-grid .grid-filter-cancel:hover{border-color:var(--dg-border-strong);background:var(--dg-surface-subtle);color:var(--dg-text)}.ngb-grid .filter-row th{background:var(--dg-surface-filter-row);padding-top:.625rem;padding-bottom:.625rem;overflow:visible;position:relative;z-index:25}.ngb-grid.ngb-grid--menu-open .filter-row th{z-index:85}.ngb-grid .column-pinned-start,.ngb-grid .column-pinned-end{position:sticky;background:inherit;z-index:2}.ngb-grid .grid-header .column-pinned-start,.ngb-grid .grid-header .column-pinned-end{z-index:6}.ngb-grid .column-pinned-start{box-shadow:var(--dg-pin-shadow-start)}.ngb-grid .column-pinned-start:has(+.column-pinned-start){box-shadow:none}.ngb-grid .column-pinned-end{box-shadow:var(--dg-pin-shadow-end)}.ngb-grid .column-locked{background:var(--dg-locked-bg)}.ngb-grid .sticky-row,.ngb-grid .sticky-row td{background:var(--dg-surface-sticky-row);box-shadow:inset 0 0 0 1px var(--dg-sticky-border)}.ngb-grid .sticky-row{position:sticky;z-index:4}.ngb-grid .grid-sticky-badge{display:inline-flex;align-items:center;margin-left:.45rem;padding:.12rem .4rem;border-radius:.25rem;background:var(--dg-sticky-badge-bg);color:var(--dg-sticky-badge-text);font-size:.62rem;font-weight:800;letter-spacing:.04em;vertical-align:middle}.ngb-grid .grid-row-action--icon{min-width:2.05rem;width:2.05rem;height:2.05rem;min-height:2.05rem;padding:0;border-radius:var(--dg-radius-md)}.ngb-grid .grid-row-action--edit-icon{border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-grid .grid-row-action--edit-icon:hover{border-color:var(--dg-primary-hover);background:var(--dg-primary-hover);color:var(--dg-on-primary)}.ngb-grid.ngb-grid--zebra .grid-body tbody tr:nth-child(2n):not(.sticky-row):not(.row-selected) td{background:var(--dg-row-even-bg, var(--dg-surface-muted))}.ngb-grid:not(.ngb-grid--zebra) .grid-body tbody tr:nth-child(odd):not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-odd-bg)}.ngb-grid:not(.ngb-grid--zebra) .grid-body tbody tr:nth-child(2n):not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-even-bg)}.ngb-grid .grid-body tbody tr.grid-data-row:hover:not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-hover-bg)}.ngb-grid .row-selected,.ngb-grid .row-selected td{background:var(--dg-row-selected-bg)}.ngb-grid .row-highlight,.ngb-grid .row-highlight td{background:var(--dg-warning-soft)}.ngb-grid .grid-header th.column-pinned-start,.ngb-grid .grid-header th.column-pinned-end,.ngb-grid .grid-body tbody td.column-pinned-start,.ngb-grid .grid-body tbody td.column-pinned-end{background:var(--dg-surface)}.ngb-grid .grid-header th.column-locked,.ngb-grid .grid-body tbody td.column-locked{background:var(--dg-locked-bg)!important}.ngb-grid .grid-body tbody tr.row-selected td.column-locked{background:var(--dg-row-selected-bg)!important}.ngb-grid .cell-highlight{background:var(--dg-primary-soft)}.ngb-grid .grid-search-highlight{padding:0;border-radius:.15rem;background:var(--dg-sticky-badge-bg);color:inherit;font-weight:inherit}.ngb-grid .grid-detail-toggle{min-width:2rem;width:2rem;height:2rem;padding:0;border-radius:999px}.ngb-grid .grid-cell-content{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-cell-content,.ngb-grid .grid-cell-text{font-weight:400}.ngb-grid .grid-cell--emphasis .grid-cell-content,.ngb-grid .grid-cell--emphasis .grid-cell-text{font-weight:700}.ngb-grid .grid-boolean-pill{display:inline-flex;align-items:center;justify-content:center;min-width:3.5rem;padding:.25rem .55rem;border-radius:999px;background:var(--dg-neutral-pill-bg);color:var(--dg-text-muted);font-size:.75rem;font-weight:700}.ngb-grid .grid-boolean-pill--true{background:var(--dg-success-soft);color:var(--dg-success-text)}.ngb-grid .grid-row-action{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;white-space:nowrap}.ngb-grid .grid-actions-cell{overflow:visible;text-overflow:clip;white-space:normal}.ngb-grid .grid-actions-cell__inner{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;flex-wrap:nowrap}.ngb-grid .grid-row-action--secondary{color:var(--dg-primary);background:var(--dg-primary-soft);border-color:var(--dg-primary-border-subtle)}.ngb-grid .grid-row-action--danger{color:var(--dg-danger-text);background:var(--dg-danger-soft);border-color:var(--dg-danger-border-subtle)}.ngb-grid .grid-row-action--success{color:var(--dg-success-text);background:var(--dg-success-soft);border-color:var(--dg-success-border-subtle)}.ngb-grid .grid-row-action--neutral{color:var(--dg-text-muted);background:var(--dg-locked-bg);border-color:var(--dg-border)}.ngb-grid .grid-detail-row__cell{padding:0;background:var(--dg-detail-row-bg)}.ngb-grid .grid-detail-row__content{padding:1rem 1.25rem}.ngb-grid.ngb-grid--compact .grid-table th,.ngb-grid.ngb-grid--compact .grid-table td{padding:.55rem .65rem}.ngb-grid.ngb-grid--compact .datagrid-toolbar__button,.ngb-grid.ngb-grid--compact .grid-row-action,.ngb-grid.ngb-grid--compact .grid-filter-apply,.ngb-grid.ngb-grid--compact .grid-filter-clear,.ngb-grid.ngb-grid--compact .grid-filter-operator__button,.ngb-grid.ngb-grid--compact .grid-filter-menu-trigger,.ngb-grid.ngb-grid--compact .grid-detail-toggle,.ngb-grid.ngb-grid--compact .grid-filter-control,.ngb-grid.ngb-grid--compact .grid-edit-control{min-height:32px;font-size:.8125rem}.ngb-grid .grid-row--reorderable{cursor:grab}.ngb-grid .grid-row--reorderable.ngb-dnd-dragging{cursor:grabbing;opacity:.82}.ngb-grid .ngb-dnd-placeholder{display:table-row;background:transparent}.ngb-grid tbody.ngb-dnd-list,.ngb-grid tbody.ngb-dnd-list.ngb-dnd-over[data-drop-valid=true],.ngb-grid tbody.ngb-dnd-list.ngb-dnd-over[data-drop-valid=false]{border:0;border-radius:0;background:transparent;box-shadow:none}.ngb-grid .ngb-dnd-placeholder>td{padding:0;border:0;background:transparent}.ngb-grid .ngb-dnd-placeholder__bar{display:block;height:.35rem;background:var(--dg-primary-selection-overlay)}.ngb-grid.ngb-grid--stacked .grid-header-shell,.ngb-grid.ngb-grid--stacked .grid-header{display:none}.ngb-grid.ngb-grid--stacked .table-wrapper{width:100%}.ngb-grid.ngb-grid--stacked .table-body-scroll{width:100%;max-height:none;overflow:visible;border-top:0;border-bottom:0}.ngb-grid.ngb-grid--stacked .grid-table.grid-body{width:100%;min-width:0;max-width:100%;table-layout:auto}.ngb-grid.ngb-grid--stacked .grid-table.grid-body colgroup{display:none}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody{display:block;width:100%}.ngb-grid.ngb-grid--menu-open .grid-header-shell,.ngb-grid.ngb-grid--row-operator-open .grid-header-shell,.ngb-grid.ngb-grid--row-operator-open .filter-row th{overflow:visible}.ngb-grid.ngb-grid--menu-open .grid-header-shell,.ngb-grid.ngb-grid--menu-open .grid-header{z-index:80}.ngb-grid.ngb-grid--menu-open .grid-header thead th.filter-menu-open{position:relative;z-index:95;overflow:visible}.ngb-grid.ngb-grid--menu-open .grid-filter-menu-host{z-index:90}.ngb-grid__filter-menu-overlay{pointer-events:auto}.ngb-grid__layout-toolbar-host:empty{display:none}.ngb-grid__layout-toolbar-host:not(:empty){border-bottom:1px solid var(--dg-border)}.ngb-grid .table-wrapper{position:relative}.ngb-grid.ngb-grid--loading .table-wrapper{pointer-events:none}.ngb-grid.ngb-grid--loading .table-wrapper .grid-table{opacity:var(--ngb-disabled-opacity, .45)}.ngb-grid__loading-overlay{position:absolute;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;background:var(--dg-loading-overlay);pointer-events:none}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody tr{display:grid;width:100%;box-sizing:border-box;grid-template-columns:minmax(0,1fr);gap:.65rem;border-bottom:1px solid var(--dg-border);padding:.9rem 1rem}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody td{display:grid;width:100%;min-width:0;box-sizing:border-box;white-space:normal;border-bottom:0;padding:.35rem 0;position:static!important;left:auto!important;right:auto!important}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody td:not([data-title]){grid-column:1/-1}.ngb-grid.ngb-grid--stacked:not(.ngb-grid--stacked-cards) .grid-table.grid-body tbody td[data-title]{grid-template-columns:minmax(5.5rem,34%) minmax(0,1fr);align-items:baseline;column-gap:.75rem}.ngb-grid.ngb-grid--stacked:not(.ngb-grid--stacked-cards) .grid-table.grid-body tbody td:before{content:attr(data-title);font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);line-height:1.3}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody tr{display:block;width:100%;padding:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody td.ngb-stacked-card-cell{display:block;width:100%;padding:.9rem 1rem;border-bottom:1px solid var(--dg-border)}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card,.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{width:100%;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem}@media(min-width:40rem){.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);align-items:start;column-gap:1.5rem}}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__group{display:flex;flex-direction:column;gap:.85rem;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__field{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__label{font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);line-height:1.3}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__value{width:100%;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody td:not([data-title]):not(.ngb-stacked-card-cell){display:block;width:100%;padding:.65rem 1rem 0;border-bottom:0}.ngb-grid[data-theme=material] .datagrid-toolbar__button--primary,.ngb-grid[data-theme=tailwind] .datagrid-toolbar__button--primary,.ngb-grid[data-theme=material] .grid-filter-apply,.ngb-grid[data-theme=tailwind] .grid-filter-apply{border-color:var(--dg-primary);background:var(--dg-primary)}.ngb-grid.ngb-responsive .table{width:100%}@media(max-width:992px){.ngb-grid .grid-filter-inline{min-width:11rem}.ngb-grid .grid-filter-field{min-width:10rem}}@media(max-width:768px){.ngb-grid .datagrid-toolbar{align-items:stretch}.ngb-grid .datagrid-toolbar__actions{justify-content:stretch}.ngb-grid .datagrid-toolbar__button{flex:1 1 auto}.ngb-grid .grid-filter-inline{width:100%}.ngb-grid.ngb-responsive thead{display:none}.ngb-grid.ngb-responsive tbody tr{display:grid;grid-template-columns:1fr;gap:.5rem;border:1px solid var(--dg-border);border-radius:.75rem;padding:.75rem;margin-bottom:.75rem}.ngb-grid.ngb-responsive tbody td{display:grid;grid-template-columns:8rem 1fr}.ngb-grid.ngb-responsive tbody td:before{content:attr(data-title);font-weight:600;opacity:.75;padding-right:.5rem}}.ngb-grid .datagrid-editing-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.75rem 1rem;border:1px solid var(--dg-border);border-bottom:0;border-radius:var(--dg-radius-lg) var(--dg-radius-lg) 0 0;background:var(--dg-surface)}.ngb-grid .datagrid-editing-toolbar__start,.ngb-grid .datagrid-editing-toolbar__end{display:inline-flex;align-items:center;gap:.5rem}.ngb-grid .datagrid-editing-toolbar__save[hidden],.ngb-grid .datagrid-editing-toolbar__cancel[hidden]{display:none!important}.ngb-grid .datagrid-editing-toolbar__hint{flex:1 1 auto;text-align:center;font-size:.875rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-cell--incell{cursor:cell}.ngb-grid .grid-cell--incell:not(.grid-cell--editing) .grid-cell-content,.ngb-grid .grid-cell--incell:not(.grid-cell--editing) .grid-cell-content *{pointer-events:none}.ngb-grid .grid-cell--editing .grid-edit-control{border-color:var(--dg-primary);box-shadow:var(--dg-focus-shadow)}.ngb-grid .grid-external-editor{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:1.5rem}.ngb-grid .grid-external-editor__backdrop{position:absolute;inset:0;border:0;background:var(--dg-backdrop);cursor:pointer}.ngb-grid .grid-external-editor__panel{position:relative;z-index:1;width:min(32rem,100%);max-height:min(90vh,40rem);overflow:auto;padding:1.25rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-lg);background:var(--dg-surface);box-shadow:var(--dg-shadow-md)}.ngb-grid .grid-external-editor__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.ngb-grid .grid-external-editor__title{margin:0;font-size:1.125rem;font-weight:700}.ngb-grid .grid-external-editor__close{border:0;background:transparent;color:var(--dg-text-muted);padding:.25rem;cursor:pointer}.ngb-grid .grid-external-editor__form{display:grid;gap:.85rem}.ngb-grid .grid-external-editor__field{display:grid;gap:.35rem}.ngb-grid .grid-external-editor__label{font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);text-transform:uppercase;letter-spacing:.03em}.ngb-grid .grid-external-editor__error{font-size:.75rem;color:var(--dg-danger)}.ngb-grid .grid-external-editor__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}.ngb-grid__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ngb-grid .grid-body td[role=gridcell]:focus-visible,.ngb-grid .grid-body td[role=gridcell].grid-cell--focused{outline:2px solid var(--dg-focus-ring);outline-offset:-2px}.ngb-grid--rtl .grid-column-reorder-handle{transform:scaleX(-1)}.ngb-grid--rtl .column-pinned-start{left:auto;right:var(--dg-pin-start, 0)}.ngb-grid--rtl .column-pinned-end{right:auto;left:var(--dg-pin-end, 0)}.ngb-grid .grid-footer{width:100%;color:var(--dg-pager-text)}.ngb-grid .grid-footer--top{margin-bottom:0;border-bottom:var(--dg-table-border-width) solid var(--dg-border)}.ngb-grid .grid-footer--custom{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgbSyncColgroupDirective, selector: "[ngbSyncColgroup]", inputs: ["ngbSyncColgroup", "syncRole", "syncMode"] }, { kind: "component", type: NgbDatagridToolbarComponent, selector: "ngb-datagrid-toolbar", inputs: ["grid"] }, { kind: "component", type: NgbDatagridEditingToolbarComponent, selector: "ngb-datagrid-editing-toolbar", inputs: ["grid", "selectedCount", "editActive", "saveDisabled"] }, { kind: "component", type: NgbDatagridExternalEditorComponent, selector: "ngb-datagrid-external-editor", inputs: ["grid"] }, { kind: "component", type: NgbDatagridColgroupComponent, selector: "colgroup[ngbDatagridColgroup]", inputs: ["grid"] }, { kind: "component", type: NgbDatagridHeaderComponent, selector: "thead[ngbDatagridHeader]", inputs: ["grid", "renderTick"] }, { kind: "component", type: NgbDatagridFilterMenuPanelComponent, selector: "ngb-datagrid-filter-menu-panel", inputs: ["grid", "col", "anchor"] }, { kind: "component", type: NgbDatagridRowFilterOperatorPanelComponent, selector: "ngb-datagrid-row-filter-operator-panel", inputs: ["grid", "col", "anchor"] }, { kind: "component", type: NgbDatagridAddRowComponent, selector: "tr[ngbDatagridAddRow]", inputs: ["grid"] }, { kind: "component", type: NgbDatagridDataRowComponent, selector: "tr[ngbDatagridDataRow]", inputs: ["grid", "renderTick", "row", "index", "selected"] }, { kind: "component", type: NgbDatagridDetailRowComponent, selector: "tr[ngbDatagridDetailRow]", inputs: ["grid", "row", "index"] }, { kind: "component", type: NgbDatagridFooterComponent, selector: "ngb-datagrid-footer", inputs: ["grid", "placement"] }, { kind: "directive", type: NgbDndListDirective, selector: "[ngbDndList]", inputs: ["dndChildrenKey", "ngbDndList", "dndGroup", "dndDisabled", "dndCloneOnDrop", "dndCloneFn", "dndIsPalette", "dndCanDrop", "dndAriaLabel"], outputs: ["dndDropped"] }, { kind: "directive", type: NgbDndItemDirective, selector: "[ngbDndItem]", inputs: ["ngbDndItem", "dndGroup", "dndIndex", "dndSourceList", "dndDisabled"], outputs: ["dndDragStart", "dndDragEnd"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
10553
10527
|
}
|
|
10554
10528
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: Datagrid, decorators: [{
|
|
10555
10529
|
type: Component,
|
|
@@ -10558,7 +10532,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
10558
10532
|
FormsModule,
|
|
10559
10533
|
ReactiveFormsModule,
|
|
10560
10534
|
NgbSyncColgroupDirective,
|
|
10561
|
-
NgbGridHighlightDirective,
|
|
10562
10535
|
NgbDatagridToolbarComponent,
|
|
10563
10536
|
NgbDatagridEditingToolbarComponent,
|
|
10564
10537
|
NgbDatagridExternalEditorComponent,
|
|
@@ -10576,7 +10549,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
10576
10549
|
{ provide: PdfExportAdapter, useClass: JsPdfAdapter },
|
|
10577
10550
|
{ provide: ExcelExportAdapter, useClass: BrowserExcelExportAdapter },
|
|
10578
10551
|
{ provide: NGB_DATAGRID_HOST, useExisting: forwardRef(() => Datagrid) },
|
|
10579
|
-
], standalone: true, template: "<div\n class=\"ngb-grid\"\n [attr.dir]=\"resolvedDir()\"\n [attr.data-theme]=\"theme\"\n [class.ngb-grid--rtl]=\"isRtl()\"\n [class.ngb-responsive]=\"isResponsiveEnabled()\"\n [class.ngb-grid--compact]=\"densityMode === 'compact'\"\n [class.ngb-grid--stacked]=\"isStackedLayout()\"\n [class.ngb-grid--stacked-cards]=\"isStackedCardsLayout()\"\n [class.ngb-grid--menu-open]=\"!!openFilterMenuField || !!openMenuOperatorField || !!openRowFilterField\"\n [class.ngb-grid--row-operator-open]=\"!!openRowFilterField\"\n [class.ngb-grid--zebra]=\"zebraStripesEnabled\"\n [class.ngb-grid--resizable]=\"resizable && !isStackedLayout()\"\n [class.ngb-grid--column-reorderable]=\"isColumnReorderEnabled()\"\n [class.ngb-grid--loading]=\"loading\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n [style.--ngb-render-tick]=\"renderTick\"\n>\n <div class=\"ngb-grid__layout-toolbar-host\">\n <ng-content select=\"ngb-datagrid-layout-toolbar\"></ng-content>\n </div>\n <ngb-datagrid-toolbar [grid]=\"gridHost\"></ngb-datagrid-toolbar>\n <ngb-datagrid-editing-toolbar\n [grid]=\"gridHost\"\n [selectedCount]=\"getSelectedCount()\"\n [editActive]=\"isToolbarEditActive()\"\n [saveDisabled]=\"isToolbarSaveDisabled()\"\n ></ngb-datagrid-editing-toolbar>\n\n @if (paginationActive && pagerShowsAt('top')) {\n <ngb-datagrid-footer [grid]=\"gridHost\" placement=\"top\"></ngb-datagrid-footer>\n }\n\n <div\n class=\"ngb-grid__status visually-hidden-focusable\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >{{ statusMessage }}</div>\n\n @if (isGroupingEnabled()) {\n <div\n class=\"ngb-grid__group-panel\"\n [class.ngb-grid__group-panel--active]=\"groupPanelDragActive && !groupPanelDragDenied\"\n [class.ngb-grid__group-panel--denied]=\"groupPanelDragDenied\"\n (dragover)=\"onGroupPanelDragOver($event)\"\n (dragleave)=\"onGroupPanelDragLeave($event)\"\n (drop)=\"onGroupPanelDrop($event)\"\n >\n <div class=\"ngb-grid__group-panel-label\">{{ groupPanelLabel() }}</div>\n @if (groupedColumns().length) {\n <div class=\"ngb-grid__group-chip-list\">\n @for (descriptor of groupedColumns(); track descriptor.field) {\n <div class=\"ngb-grid__group-chip\">\n <button\n type=\"button\"\n class=\"ngb-grid__group-chip-button\"\n (click)=\"toggleGroupDirection(descriptor.field)\"\n [attr.aria-label]=\"groupDirectionAriaLabel(descriptor)\"\n >\n <span class=\"ngb-grid__group-chip-label\">{{ groupFieldLabel(descriptor) }}</span>\n <span class=\"ngb-grid__group-chip-dir\">{{ descriptor.dir === 'desc' ? '\u2193' : '\u2191' }}</span>\n </button>\n <button\n type=\"button\"\n class=\"ngb-grid__group-chip-remove\"\n (click)=\"removeGroupField(descriptor.field)\"\n [attr.aria-label]=\"groupRemoveAriaLabel(descriptor)\"\n >\n <span class=\"bi bi-x-lg\" aria-hidden=\"true\"></span>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <div class=\"table-wrapper\" [ngClass]=\"responsiveWrapperClasses\">\n @if (loading) {\n <div class=\"ngb-grid__loading-overlay\" role=\"presentation\">\n <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\">\n <span class=\"visually-hidden\">Loading</span>\n </div>\n </div>\n }\n <div class=\"grid-header-shell\" #headerScroller>\n <table class=\"grid-table grid-header mb-0\" [ngClass]=\"tableClassList\" [style.width.px]=\"tablePixelWidth\">\n @if (tableOptions?.caption) {\n <caption\n [class.caption-top]=\"(tableOptions?.captionSide ?? 'top') === 'top'\"\n >\n {{ tableOptions?.caption }}\n </caption>\n }\n\n <colgroup\n ngbDatagridColgroup\n [grid]=\"gridHost\"\n [ngbSyncColgroup]=\"colgroupSyncId\"\n syncRole=\"header\"\n [syncMode]=\"resizable ? 'explicit' : 'auto'\"\n ></colgroup>\n\n <thead\n class=\"table-light\"\n ngbDatagridHeader\n [grid]=\"gridHost\"\n [renderTick]=\"renderTick\"\n ></thead>\n </table>\n </div>\n\n <div [class.table-body-scroll]=\"shouldEnableScroll\" #bodyScroller (scroll)=\"onBodyHorizontalScroll()\">\n @if (hasStickyGroupHeaders()) {\n <div\n class=\"ngb-grid__group-sticky-layer ngb-grid__group-sticky-layer--top\"\n [style.transform]=\"'translateY(' + stickyGroupHeaderTranslateY + 'px)'\"\n >\n <table\n class=\"grid-table grid-group-sticky-table mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"presentation\"\n >\n <colgroup>\n @for (width of stickyGroupOverlayColumnWidths; track $index) {\n <col [style.width.px]=\"width || null\" />\n }\n </colgroup>\n <tbody>\n @for (item of stickyGroupHeaderRows; track item.key) {\n <tr class=\"grid-group-row grid-group-row--overlay\">\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n @if (shouldRenderGroupCell(col, item.group)) {\n <td\n class=\"grid-group-row__cell\"\n [class.grid-group-row__cell--lead]=\"isGroupLeadColumn(col, item.group)\"\n [attr.colspan]=\"groupCellColspan(col, item.group)\"\n >\n @if (isGroupLeadColumn(col, item.group)) {\n <button\n type=\"button\"\n class=\"grid-group-row__toggle\"\n (click)=\"toggleGroupCollapsed(item.group, item.level, item.startIndex)\"\n [attr.aria-expanded]=\"!item.collapsed\"\n >\n <span\n class=\"bi\"\n [ngClass]=\"item.collapsed ? 'bi-chevron-right' : 'bi-chevron-down'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"grid-group-row__content\" [style.padding-inline-start.rem]=\"groupRowIndent(item.level)\">\n @if (groupHeaderTpl) {\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTpl.template\"\n [ngTemplateOutletContext]=\"groupHeaderContext(item.group)\"\n ></ng-container>\n } @else {\n <span class=\"grid-group-row__label\">{{ groupRowLabel(item.group) }}</span>\n <span class=\"grid-group-row__count\">{{ groupRowCountLabel(item.group) }}</span>\n }\n </span>\n </button>\n @if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n } @else if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n\n <table\n class=\"grid-table grid-body grid-body--main mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"grid\"\n [attr.aria-rowcount]=\"ariaRowCount()\"\n [attr.aria-colcount]=\"ariaColCount()\"\n [attr.aria-readonly]=\"enableEdit || enableAdd ? 'false' : 'true'\"\n [attr.aria-label]=\"tableOptions?.caption || null\"\n >\n <colgroup\n ngbDatagridColgroup\n [grid]=\"gridHost\"\n [ngbSyncColgroup]=\"colgroupSyncId\"\n syncRole=\"body\"\n [syncMode]=\"resizable ? 'explicit' : 'auto'\"\n ></colgroup>\n\n <tbody\n [ngbDndList]=\"paged\"\n [dndDisabled]=\"!isRowReorderEnabled()\"\n (dndDropped)=\"onRowDrop($event)\"\n >\n @if (!hasRenderableRows()) {\n <tr class=\"ngb-grid__empty-row\">\n <td [attr.colspan]=\"ariaColCount()\" class=\"ngb-grid__empty text-center text-muted py-4\">\n {{ emptyStateLabel() }}\n </td>\n </tr>\n }\n\n @if (addingNew) {\n <tr\n ngbDatagridAddRow\n [grid]=\"gridHost\"\n [formGroup]=\"addForm\"\n ></tr>\n }\n\n @for (item of renderRows; track item.key) {\n @if (item.kind === 'group') {\n <tr\n class=\"grid-group-row\"\n [attr.data-group-key]=\"item.key\"\n [attr.data-group-level]=\"item.level\"\n >\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n @if (shouldRenderGroupCell(col, item.group)) {\n <td\n class=\"grid-group-row__cell\"\n [class.grid-group-row__cell--lead]=\"isGroupLeadColumn(col, item.group)\"\n [attr.colspan]=\"groupCellColspan(col, item.group)\"\n >\n @if (isGroupLeadColumn(col, item.group)) {\n <button\n type=\"button\"\n class=\"grid-group-row__toggle\"\n (click)=\"toggleGroupCollapsed(item.group, item.level, item.startIndex)\"\n [attr.aria-expanded]=\"!item.collapsed\"\n >\n <span\n class=\"bi\"\n [ngClass]=\"item.collapsed ? 'bi-chevron-right' : 'bi-chevron-down'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"grid-group-row__content\" [style.padding-inline-start.rem]=\"groupRowIndent(item.level)\">\n @if (groupHeaderTpl) {\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTpl.template\"\n [ngTemplateOutletContext]=\"groupHeaderContext(item.group)\"\n ></ng-container>\n } @else {\n <span class=\"grid-group-row__label\">{{ groupRowLabel(item.group) }}</span>\n <span class=\"grid-group-row__count\">{{ groupRowCountLabel(item.group) }}</span>\n }\n </span>\n </button>\n @if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n } @else if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n } @else if (item.kind === 'group-footer') {\n <tr\n class=\"grid-group-footer-row\"\n [attr.data-group-key]=\"item.key\"\n [attr.data-group-level]=\"item.level\"\n >\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n <td class=\"grid-group-footer-row__cell\">\n @if (groupFooterTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n } @else {\n <tr\n class=\"grid-data-row\"\n ngbDatagridDataRow\n [grid]=\"gridHost\"\n [renderTick]=\"renderTick\"\n [row]=\"item.row\"\n [index]=\"item.pagedIndex\"\n [selected]=\"isRowSelected(item.row, item.pagedIndex)\"\n [ngbDndItem]=\"item.row\"\n [dndIndex]=\"item.pagedIndex\"\n [dndDisabled]=\"!isRowReorderEnabled()\"\n (click)=\"onRowSelect($event, item.pagedIndex); onRowClick($event, item.pagedIndex)\"\n [formGroup]=\"editForm\"\n [class.sticky-row]=\"isRowSticky(item.row, item.pagedIndex)\"\n [class.row-selected]=\"isRowSelected(item.row, item.pagedIndex)\"\n [class.row-highlight]=\"isRowHighlighted(item.row, item.pagedIndex)\"\n [class.grid-row--reorderable]=\"isRowReorderEnabled()\"\n [ngClass]=\"resolveRowClass(item.row, item.pagedIndex)\"\n [ngStyle]=\"resolveRowStyle(item.row, item.pagedIndex)\"\n [attr.aria-selected]=\"isRowSelected(item.row, item.pagedIndex) ? 'true' : null\"\n [style.top.px]=\"stickyTop(item.row, item.pagedIndex)\"\n [style.z-index]=\"isRowSticky(item.row, item.pagedIndex) ? 3 : null\"\n ></tr>\n\n @if (rowDetailTpl && isExpanded(item.pagedIndex)) {\n <tr\n ngbDatagridDetailRow\n [grid]=\"gridHost\"\n [row]=\"item.row\"\n [index]=\"item.pagedIndex\"\n [attr.id]=\"'dg-row-detail-' + item.pagedIndex\"\n ></tr>\n }\n }\n }\n </tbody>\n </table>\n\n @if (hasStickyGroupFooters()) {\n <div\n class=\"ngb-grid__group-sticky-layer ngb-grid__group-sticky-layer--bottom\"\n [style.transform]=\"'translateY(' + stickyGroupFooterTranslateY + 'px)'\"\n >\n <table\n class=\"grid-table grid-group-sticky-table mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"presentation\"\n >\n <colgroup>\n @for (width of stickyGroupOverlayColumnWidths; track $index) {\n <col [style.width.px]=\"width || null\" />\n }\n </colgroup>\n <tbody>\n @for (item of stickyGroupFooterRows; track item.key) {\n <tr class=\"grid-group-footer-row grid-group-footer-row--overlay\">\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n <td class=\"grid-group-footer-row__cell\">\n @if (groupFooterTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n\n <table class=\"table grid-table grid-foot mb-0\" [style.width.px]=\"tablePixelWidth\">\n <colgroup>\n @for (col of visibleColumns; track col.field) {\n <col [style.width.px]=\"col?.width\" />\n }\n </colgroup>\n <tbody>\n <tr>\n <td [attr.colspan]=\"visibleColumns.length\" width=\"100%\">\n @if (paginationActive && pagerShowsAt('bottom')) {\n <ngb-datagrid-footer [grid]=\"gridHost\" placement=\"bottom\"></ngb-datagrid-footer>\n }\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n @if (externalEditOpen) {\n <ngb-datagrid-external-editor [grid]=\"gridHost\"></ngb-datagrid-external-editor>\n }\n\n @if (openFilterMenuField && openFilterMenuColumn && openFilterMenuAnchor) {\n <ngb-datagrid-filter-menu-panel\n [grid]=\"gridHost\"\n [col]=\"openFilterMenuColumn\"\n [anchor]=\"openFilterMenuAnchor\"\n />\n }\n\n @if (openRowFilterField && openRowFilterColumn && openRowFilterOperatorAnchor) {\n <ngb-datagrid-row-filter-operator-panel\n [grid]=\"gridHost\"\n [col]=\"openRowFilterColumn\"\n [anchor]=\"openRowFilterOperatorAnchor\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";.ngb-grid,.ngb-datagrid-floating-panel{--dg-surface: #ffffff;--dg-surface-muted: #f9fafb;--dg-surface-subtle: #f3f4f6;--dg-surface-config: #edf4ff;--dg-surface-filter-row: #fffbeb;--dg-surface-sticky-row: #fefce8;--dg-border: #d7deea;--dg-border-strong: #cfd6e2;--dg-text: #1f2937;--dg-text-muted: #5b6578;--dg-text-subtle: #64748b;--dg-primary: #315efb;--dg-primary-hover: #2749c4;--dg-primary-active: #1d4ed8;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #bfdbfe;--dg-accent: #3b82f6;--dg-on-primary: #ffffff;--dg-placeholder: #94a3b8;--dg-success: #39a949;--dg-success-soft: #dcfce7;--dg-success-text: #166534;--dg-success-border-subtle: #bbf7d0;--dg-danger: #ef4444;--dg-danger-soft: #fee2e2;--dg-danger-text: #b91c1c;--dg-danger-border-subtle: #fecaca;--dg-warning-soft: #fef3c7;--dg-warning-border: #fde68a;--dg-warning-text: #854d0e;--dg-filter-multi-icon: #39a949;--dg-filter-multi-icon-soft: #dcfce7;--dg-neutral-pill-bg: #e2e8f0;--dg-locked-bg: #f8fafc;--dg-row-selected-bg: #eef5ff;--dg-row-hover-bg: #f8fbff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f8fbff;--dg-search-highlight-bg: #fef08a;--dg-sticky-border: #facc15;--dg-sticky-badge-bg: #fef08a;--dg-sticky-badge-text: #854d0e;--dg-dropdown-item-active-bg: var(--dg-primary-soft);--dg-dropdown-item-active-color: var(--dg-primary);--dg-focus-ring: #2563eb;--dg-focus-border: rgba(37, 99, 235, .45);--dg-focus-shadow: 0 0 0 .2rem rgba(37, 99, 235, .15);--dg-pin-shadow-start: 1px 0 0 rgba(15, 23, 42, .08);--dg-pin-shadow-end: -1px 0 0 rgba(15, 23, 42, .08);--dg-backdrop: rgba(15, 23, 42, .45);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(37, 99, 235, .18);--dg-filter-divider: rgba(219, 227, 239, .8);--dg-shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--dg-shadow-md: 0 8px 24px rgba(15, 23, 42, .12);--dg-radius-lg: .5rem;--dg-radius-md: .45rem;--dg-radius-sm: .35rem;--dg-control-height: 2.15rem;--dg-nav-height: 2.5rem;--dg-font-size-header: .92rem;--dg-font-size-cell: .84rem;--dg-font-size-label: .94rem;--dg-cell-padding-y: .75rem;--dg-cell-padding-x: .85rem;--dg-header-padding-y: .75rem;--dg-header-padding-x: .85rem;--dg-table-border-width: 1px;--dg-pager-surface: var(--dg-surface);--dg-pager-text: var(--dg-text-muted);--dg-pager-control-bg: var(--dg-surface);--dg-pager-control-hover-bg: var(--dg-surface-subtle);--dg-pager-control-border: var(--dg-border);--dg-pager-link-text: var(--dg-primary);--dg-pager-active-bg: var(--dg-primary);--dg-pager-active-border: var(--dg-primary);--dg-pager-active-text: var(--dg-on-primary);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap],.ngb-datagrid-floating-panel[data-theme=bootstrap]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap-main],.ngb-datagrid-floating-panel[data-theme=bootstrap-main]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #f8fbff;--dg-surface-muted: #eaf3ff;--dg-surface-subtle: #d9eaff;--dg-surface-config: #e0efff;--dg-border: #bfd7f4;--dg-border-strong: #7fb0e3;--dg-text: #172554;--dg-text-muted: #45617f;--dg-primary: #1769e0;--dg-primary-hover: #0f56bd;--dg-primary-active: #0b438f;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #93c5fd;--dg-accent: #0f766e;--dg-row-selected-bg: #dcecff;--dg-row-hover-bg: #eef6ff;--dg-detail-row-bg: #edf6ff;--dg-dropdown-item-active-bg: #dcecff;--dg-dropdown-item-active-color: #0f56bd;--dg-focus-ring: #1769e0;--dg-focus-border: rgba(23, 105, 224, .48);--dg-focus-shadow: 0 0 0 .2rem rgba(23, 105, 224, .16)}.ngb-grid[data-theme=bootstrap-main-dark],.ngb-datagrid-floating-panel[data-theme=bootstrap-main-dark]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #172033;--dg-surface-muted: #202b42;--dg-surface-subtle: #273653;--dg-surface-config: #172a4f;--dg-surface-filter-row: #2c2714;--dg-surface-sticky-row: #2e2810;--dg-border: #33425f;--dg-border-strong: #4a5d80;--dg-text: #edf2ff;--dg-text-muted: #b8c3d9;--dg-text-subtle: #93a2bd;--dg-primary: #38bdf8;--dg-primary-hover: #7dd3fc;--dg-primary-active: #bae6fd;--dg-primary-soft: #12344f;--dg-primary-border-subtle: #0284c7;--dg-accent: #38bdf8;--dg-on-primary: #ffffff;--dg-placeholder: #93a2bd;--dg-locked-bg: #1e2a40;--dg-row-selected-bg: #153a67;--dg-row-hover-bg: #22304a;--dg-row-odd-bg: #172033;--dg-row-even-bg: #1b263a;--dg-detail-row-bg: #182d4c;--dg-dropdown-item-active-bg: #183b70;--dg-dropdown-item-active-color: #bfdbfe;--dg-focus-ring: #60a5fa;--dg-focus-border: rgba(96, 165, 250, .6);--dg-focus-shadow: 0 0 0 .2rem rgba(96, 165, 250, .2);--dg-shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--dg-shadow-md: 0 14px 32px rgba(0, 0, 0, .36);--dg-pager-surface: #111827;--dg-pager-text: #dbeafe;--dg-pager-control-bg: #172033;--dg-pager-control-hover-bg: #22304a;--dg-pager-control-border: #4a5d80;--dg-pager-link-text: #dbeafe;--dg-pager-active-bg: #38bdf8;--dg-pager-active-border: #38bdf8;--dg-pager-active-text: #0f172a;--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap-nordic],.ngb-datagrid-floating-panel[data-theme=bootstrap-nordic]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #ffffff;--dg-surface-muted: #f2f7f8;--dg-surface-subtle: #e6f0f2;--dg-surface-config: #e4f8fb;--dg-surface-filter-row: #fff7ed;--dg-border: #d5e4e7;--dg-border-strong: #a9c8cf;--dg-text: #263243;--dg-text-muted: #64748b;--dg-primary: #0ea5b7;--dg-primary-hover: #0b8798;--dg-primary-active: #0f6b7a;--dg-primary-soft: #d7f5f8;--dg-primary-border-subtle: #9be4ec;--dg-accent: #e85d75;--dg-row-selected-bg: #e7f8fb;--dg-row-hover-bg: #f0fbfd;--dg-row-odd-bg: transparent;--dg-row-even-bg: #fbfeff;--dg-detail-row-bg: #f4fbfc;--dg-dropdown-item-active-bg: #e7f8fb;--dg-dropdown-item-active-color: #0b8798;--dg-focus-ring: #0ea5b7;--dg-focus-border: rgba(14, 165, 183, .45);--dg-focus-shadow: 0 0 0 .2rem rgba(14, 165, 183, .15);--dg-font-size-cell: .88rem;--dg-cell-padding-y: .82rem;--dg-pager-surface: #f8ffff;--dg-pager-text: #526173;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #e7f8fb;--dg-pager-control-border: #b9dce2;--dg-pager-link-text: #0b8798;--dg-pager-active-bg: #0ea5b7;--dg-pager-active-border: #0ea5b7;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=bootstrap-urban],.ngb-datagrid-floating-panel[data-theme=bootstrap-urban]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #ffffff;--dg-surface-muted: #f5f8fa;--dg-surface-subtle: #edf4f7;--dg-surface-config: #e8f4f9;--dg-border: #d9e5ea;--dg-border-strong: #adc6d3;--dg-text: #263445;--dg-text-muted: #5f6f84;--dg-primary: #468faf;--dg-primary-hover: #36748f;--dg-primary-active: #285b72;--dg-primary-soft: #e0f0f6;--dg-primary-border-subtle: #b9dbe8;--dg-accent: #ff7f50;--dg-row-selected-bg: #e8f4f9;--dg-row-hover-bg: #fff2eb;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-dropdown-item-active-bg: #e8f4f9;--dg-dropdown-item-active-color: #36748f;--dg-focus-ring: #468faf;--dg-focus-border: rgba(70, 143, 175, .48);--dg-focus-shadow: 0 0 0 .2rem rgba(70, 143, 175, .16);--dg-cell-padding-y: .86rem;--dg-cell-padding-x: .95rem;--dg-pager-surface: #fffaf7;--dg-pager-text: #5f6f84;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #fff2eb;--dg-pager-control-border: #d4e1e7;--dg-pager-link-text: #36748f;--dg-pager-active-bg: #468faf;--dg-pager-active-border: #468faf;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=bootstrap-vintage],.ngb-datagrid-floating-panel[data-theme=bootstrap-vintage]{--dg-surface: var(--bs-body-bg, #ffffff);--dg-surface-muted: var(--bs-tertiary-bg, #f8f9fa);--dg-surface-subtle: var(--bs-secondary-bg, #e9ecef);--dg-surface-config: var(--bs-primary-bg-subtle, #cfe2ff);--dg-surface-filter-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-surface-sticky-row: var(--bs-warning-bg-subtle, #fff3cd);--dg-border: var(--bs-border-color, #dee2e6);--dg-border-strong: var(--bs-border-color-translucent, #ced4da);--dg-text: var(--bs-body-color, #212529);--dg-text-muted: var(--bs-secondary-color, #6c757d);--dg-text-subtle: var(--bs-tertiary-color, #6c757d);--dg-primary: var(--bs-primary, #0d6efd);--dg-primary-hover: var(--bs-link-hover-color, #0a58ca);--dg-primary-active: var(--bs-link-hover-color, #0a58ca);--dg-primary-soft: var(--bs-primary-bg-subtle, #cfe2ff);--dg-primary-border-subtle: var(--bs-primary-border-subtle, #9ec5fe);--dg-accent: var(--bs-primary, #0d6efd);--dg-on-primary: var(--bs-btn-color, #fff);--dg-placeholder: var(--bs-secondary-color, #6c757d);--dg-success: var(--bs-success, #198754);--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--bs-danger, #dc3545);--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--bs-success, #198754);--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--bs-secondary-bg, #e9ecef);--dg-locked-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-row-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--bs-primary-bg-subtle, #cfe2ff);--dg-dropdown-item-active-color: var(--bs-primary, #0d6efd);--dg-focus-ring: var(--bs-focus-ring-color, var(--bs-primary, #0d6efd));--dg-focus-border: rgba(var(--bs-primary-rgb, 13, 110, 253), .45);--dg-focus-shadow: 0 0 0 .25rem rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(var(--bs-primary-rgb, 13, 110, 253), .18);--dg-filter-divider: var(--bs-border-color-translucent, rgba(0, 0, 0, .1));--dg-shadow-sm: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--dg-shadow-md: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--dg-radius-lg: var(--bs-border-radius-lg, .5rem);--dg-radius-md: var(--bs-border-radius, .375rem);--dg-radius-sm: var(--bs-border-radius-sm, .25rem);--dg-pager-surface: var(--bs-body-bg, #ffffff);--dg-pager-text: var(--bs-secondary-color, #6c757d);--dg-pager-control-bg: var(--bs-body-bg, #ffffff);--dg-pager-control-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--dg-pager-control-border: var(--bs-border-color, #dee2e6);--dg-pager-link-text: var(--bs-primary, #0d6efd);--dg-pager-active-bg: var(--bs-primary, #0d6efd);--dg-pager-active-border: var(--bs-primary, #0d6efd);--dg-pager-active-text: var(--bs-btn-color, #fff);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--dg-surface: #fffdf8;--dg-surface-muted: #f6f0e7;--dg-surface-subtle: #eee4d8;--dg-surface-config: #f2e7ef;--dg-border: #dfd2c2;--dg-border-strong: #c8b8a5;--dg-text: #3d3440;--dg-text-muted: #766a72;--dg-primary: #7f4f68;--dg-primary-hover: #684057;--dg-primary-active: #523246;--dg-primary-soft: #efdde8;--dg-primary-border-subtle: #d8b9ca;--dg-accent: #88b0b7;--dg-row-selected-bg: #f1e4ec;--dg-row-hover-bg: #fbf1e5;--dg-row-odd-bg: #fffdf8;--dg-row-even-bg: #fbf7ef;--dg-detail-row-bg: #fbf6ef;--dg-dropdown-item-active-bg: #f1e4ec;--dg-dropdown-item-active-color: #684057;--dg-focus-ring: #7f4f68;--dg-focus-border: rgba(127, 79, 104, .5);--dg-focus-shadow: 0 0 0 .2rem rgba(127, 79, 104, .16);--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-pager-surface: #fffdf8;--dg-pager-text: #766a72;--dg-pager-control-bg: #fffaf2;--dg-pager-control-hover-bg: #fbf1e5;--dg-pager-control-border: #dfd2c2;--dg-pager-link-text: #684057;--dg-pager-active-bg: #7f4f68;--dg-pager-active-border: #7f4f68;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=material],.ngb-grid[data-theme=material-main],.ngb-datagrid-floating-panel[data-theme=material],.ngb-datagrid-floating-panel[data-theme=material-main]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0}.ngb-grid[data-theme=material-indigo],.ngb-datagrid-floating-panel[data-theme=material-indigo]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0;--dg-primary: #3f51b5;--dg-primary-hover: #303f9f;--dg-primary-active: #283593;--dg-primary-soft: #e8eaf6;--dg-primary-border-subtle: #c5cae9;--dg-dropdown-item-active-bg: #e8eaf6;--dg-dropdown-item-active-color: #303f9f;--dg-focus-ring: #3f51b5;--dg-focus-border: rgba(63, 81, 181, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(63, 81, 181, .16);--dg-row-hover-bg: #f0f2ff}.ngb-grid[data-theme=material-deep-purple],.ngb-datagrid-floating-panel[data-theme=material-deep-purple]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0;--dg-primary: #7e57c2;--dg-primary-hover: #673ab7;--dg-primary-active: #512da8;--dg-primary-soft: #ede7f6;--dg-primary-border-subtle: #d1c4e9;--dg-accent: #ff7043;--dg-row-selected-bg: #ede7f6;--dg-row-hover-bg: #f5edff;--dg-dropdown-item-active-bg: #ede7f6;--dg-dropdown-item-active-color: #512da8;--dg-focus-ring: #7e57c2;--dg-focus-border: rgba(126, 87, 194, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(126, 87, 194, .16)}.ngb-grid[data-theme=tailwind],.ngb-grid[data-theme=tailwind-main],.ngb-datagrid-floating-panel[data-theme=tailwind],.ngb-datagrid-floating-panel[data-theme=tailwind-main]{--dg-surface: #ffffff;--dg-surface-muted: #f8fafc;--dg-surface-subtle: #f1f5f9;--dg-border: #cbd5e1;--dg-border-strong: #94a3b8;--dg-text: #0f172a;--dg-text-muted: #475569;--dg-primary: #2563eb;--dg-primary-hover: #1d4ed8;--dg-primary-active: #1e40af;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #bfdbfe;--dg-dropdown-item-active-bg: #dbeafe;--dg-dropdown-item-active-color: #1d4ed8;--dg-focus-ring: #2563eb;--dg-focus-border: rgba(37, 99, 235, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(37, 99, 235, .16);--dg-row-hover-bg: #eff6ff;--dg-font-size-header: .75rem;--dg-font-size-cell: .85rem;--dg-cell-padding-y: .68rem;--dg-cell-padding-x: .8rem;--dg-table-border-width: 1px;--dg-pager-surface: #ffffff;--dg-pager-text: #475569;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #eff6ff;--dg-pager-control-border: #bfdbfe;--dg-pager-link-text: #1d4ed8;--dg-pager-active-bg: #2563eb;--dg-pager-active-border: #2563eb;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=tailwind-slate],.ngb-datagrid-floating-panel[data-theme=tailwind-slate]{--dg-surface: #f8fafc;--dg-surface-muted: #e2e8f0;--dg-surface-subtle: #cbd5e1;--dg-border: #cbd5e1;--dg-border-strong: #64748b;--dg-text: #0f172a;--dg-text-muted: #475569;--dg-primary: #475569;--dg-primary-hover: #334155;--dg-primary-active: #1e293b;--dg-primary-soft: #e2e8f0;--dg-primary-border-subtle: #94a3b8;--dg-dropdown-item-active-bg: #e2e8f0;--dg-dropdown-item-active-color: #334155;--dg-focus-ring: #475569;--dg-row-hover-bg: #e2e8f0;--dg-row-odd-bg: #f8fafc;--dg-row-even-bg: #f1f5f9;--dg-focus-border: rgba(71, 85, 105, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(71, 85, 105, .16)}.ngb-grid[data-theme=tailwind-emerald],.ngb-datagrid-floating-panel[data-theme=tailwind-emerald]{--dg-surface: #ffffff;--dg-surface-muted: #ecfdf5;--dg-surface-subtle: #d1fae5;--dg-border: #a7f3d0;--dg-border-strong: #34d399;--dg-text: #064e3b;--dg-text-muted: #047857;--dg-primary: #059669;--dg-primary-hover: #047857;--dg-primary-active: #065f46;--dg-primary-soft: #d1fae5;--dg-primary-border-subtle: #6ee7b7;--dg-dropdown-item-active-bg: #d1fae5;--dg-dropdown-item-active-color: #047857;--dg-focus-ring: #059669;--dg-focus-border: rgba(5, 150, 105, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(5, 150, 105, .16)}.ngb-datagrid-floating-panel.grid-filter-menu-popover,.ngb-datagrid-floating-panel.dropdown-menu{position:fixed!important;z-index:1200;display:block;visibility:visible;opacity:1;pointer-events:auto;max-height:min(28rem,100vh - 1.5rem);overflow:auto;margin:0!important;border-radius:var(--dg-radius-md);border:1px solid var(--dg-border);background:var(--dg-surface);box-shadow:var(--dg-shadow-md)}.ngb-datagrid-floating-panel.dropdown-menu{min-width:12rem;padding:.35rem 0}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item{display:block;width:100%;padding:.5rem .85rem;border:0;background:transparent;font-size:.8125rem;font-weight:600;color:var(--dg-text);text-align:left}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item.active{color:var(--dg-dropdown-item-active-color);background:var(--dg-dropdown-item-active-bg)}.ngb-datagrid-floating-panel.dropdown-menu .dropdown-item{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;color:var(--dg-text)}.ngb-datagrid-floating-panel.dropdown-menu .dropdown-item:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel.grid-filter-menu-popover{min-width:18rem;padding:0}.ngb-datagrid-floating-panel .grid-filter-menu-surface{display:block;min-width:18rem;padding:1rem;border-radius:var(--dg-radius-md);background:var(--dg-surface)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__header{margin-bottom:.875rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--dg-text-muted)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__title{margin-top:.15rem;font-size:.95rem;font-weight:700;color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-stack{display:flex;flex-direction:column;gap:.75rem}.ngb-datagrid-floating-panel .grid-filter-stack__label{font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-datagrid-floating-panel .grid-filter-stack--multi{gap:.65rem}.ngb-datagrid-floating-panel .grid-filter-condition{display:flex;flex-direction:column;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-operator-select,.ngb-grid .grid-filter-operator-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.875rem;color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-operator-select--compact,.ngb-grid .grid-filter-operator-select--compact{width:auto;min-width:2.25rem;max-width:2.5rem;padding:.35rem .25rem;font-size:0}.ngb-datagrid-floating-panel .grid-filter-logic-select,.ngb-grid .grid-filter-logic-select{display:flex;justify-content:center;margin:.15rem 0}.ngb-datagrid-floating-panel .grid-filter-logic-select select,.ngb-grid .grid-filter-logic-select select{width:auto;min-width:4.5rem;min-height:1.75rem;padding:.2rem 1.5rem .2rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.8125rem;font-weight:600;color:var(--dg-text);text-align:center}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions--split,.ngb-grid .grid-filter-menu-surface__actions--split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-apply--secondary,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary,.ngb-grid .grid-filter-apply--secondary,.ngb-grid .grid-filter-cancel--secondary{width:100%;border:1px solid var(--dg-border-strong);background:var(--dg-surface-muted);color:var(--dg-text);font-weight:600}.ngb-datagrid-floating-panel .grid-filter-apply--secondary:hover,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary:hover,.ngb-grid .grid-filter-apply--secondary:hover,.ngb-grid .grid-filter-cancel--secondary:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel .grid-filter-multi-panel,.ngb-grid .grid-filter-multi-panel{display:flex;flex-direction:column;gap:.5rem;min-width:16.5rem}.ngb-datagrid-floating-panel .grid-filter-join-select,.ngb-grid .grid-filter-join-select{display:inline-block;width:fit-content;max-width:100%;margin:.1rem 0}.ngb-datagrid-floating-panel .grid-filter-join-select__control,.ngb-grid .grid-filter-join-select__control{width:100%;min-height:1.75rem;padding:.2rem 1.25rem .2rem .5rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.8125rem;font-weight:600;text-align:left}.ngb-datagrid-floating-panel .grid-filter-field{position:relative;width:100%;min-width:0}.ngb-datagrid-floating-panel .grid-filter-field--with-icon .grid-filter-control,.ngb-datagrid-floating-panel .grid-filter-field--with-icon .grid-filter-value-input{padding-right:2.25rem}.ngb-datagrid-floating-panel .grid-filter-field__icon{position:absolute;right:.8rem;top:50%;transform:translateY(-50%);color:var(--dg-placeholder);pointer-events:none}.ngb-datagrid-floating-panel .grid-filter-control,.ngb-datagrid-floating-panel .grid-filter-value-input,.ngb-datagrid-floating-panel .grid-filter-value-select,.ngb-grid .grid-filter-value-input,.ngb-grid .grid-filter-value-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);color:var(--dg-text);font-size:.875rem}.ngb-datagrid-floating-panel .grid-filter-apply--secondary:disabled,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary:disabled,.ngb-grid .grid-filter-apply--secondary:disabled,.ngb-grid .grid-filter-cancel--secondary:disabled{opacity:.45;cursor:not-allowed}.ngb-datagrid-floating-panel .grid-filter-condition__join{margin:.15rem 0;font-size:.75rem;font-weight:700;color:var(--dg-text-muted);text-align:center}.ngb-datagrid-floating-panel .grid-filter-stack__footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.ngb-datagrid-floating-panel .grid-filter-operator__button{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;color:var(--dg-text-muted);border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface)}.ngb-datagrid-floating-panel .grid-filter-clear,.ngb-datagrid-floating-panel .grid-filter-apply,.ngb-datagrid-floating-panel .grid-filter-cancel{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;border-radius:var(--dg-radius-sm)}.ngb-datagrid-floating-panel .grid-filter-apply{border:1px solid var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-datagrid-floating-panel .grid-filter-cancel,.ngb-datagrid-floating-panel .grid-filter-clear{border:1px solid var(--dg-border-strong);background:var(--dg-surface);color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--dg-border)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__multi{display:flex;flex-direction:column;gap:.5rem;width:100%;min-width:16rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__search{border:1px solid var(--dg-border);border-radius:var(--dg-radius-md);min-height:2rem;padding:.4rem .65rem;font-size:.8125rem;width:100%}.ngb-datagrid-floating-panel .grid-multi-filter-list{max-height:11.5rem;overflow:auto;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border)}.ngb-datagrid-floating-panel .grid-multi-filter-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;padding:.45rem .75rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);cursor:pointer}.ngb-datagrid-floating-panel .grid-multi-filter-option__main{display:flex;align-items:center;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions--multi{justify-content:space-between}.ngb-datagrid-floating-panel[data-theme=bootstrap].dropdown-menu .dropdown-item{font-weight:400}.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-operator-select,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-value-input,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-value-select,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-menu-surface__search,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-join-select__control{border-radius:var(--bs-border-radius, var(--dg-radius-sm))}ngb-datagrid{display:block}.ngb-grid{color:var(--dg-text);--dg-group-sticky-row-height: 3rem}.ngb-grid.ngb-grid--compact{--dg-group-sticky-row-height: 2.5rem}.ngb-grid .table{margin-bottom:0}.ngb-grid .datagrid-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.ngb-grid .datagrid-toolbar__search{flex:1 1 20rem;min-width:16rem}.ngb-grid .datagrid-toolbar__search-label{display:block;margin-bottom:.35rem;font-size:.875rem;font-weight:500;color:var(--dg-text-muted)}.ngb-grid .datagrid-toolbar__search-shell{display:flex;align-items:center;gap:.625rem;min-height:calc(var(--dg-control-height) + 4px);padding:0 .875rem;border:1px solid var(--dg-border);border-radius:999px;background:var(--dg-surface);box-shadow:var(--dg-shadow-sm)}.ngb-grid .datagrid-toolbar__search-icon{color:var(--dg-text-muted)}.ngb-grid .datagrid-toolbar__search-input{flex:1 1 auto;width:100%;min-width:0;border:0;background:transparent;color:var(--dg-text);outline:none;font-size:.95rem;padding:.625rem 0}.ngb-grid .datagrid-toolbar__search-input::placeholder{color:var(--dg-placeholder)}.ngb-grid .datagrid-toolbar__actions{display:flex;align-items:center;justify-content:flex-end;gap:.625rem;flex-wrap:wrap}.ngb-grid .datagrid-toolbar__button,.ngb-grid .grid-row-action,.ngb-grid .grid-filter-apply,.ngb-grid .grid-filter-clear,.ngb-grid .grid-filter-cancel,.ngb-grid .grid-filter-operator__button,.ngb-grid .grid-filter-menu-trigger,.ngb-grid .grid-detail-toggle{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:var(--dg-control-height);border-radius:var(--dg-radius-md);border:1px solid var(--dg-border);background:var(--dg-surface);color:var(--dg-text);box-shadow:none;font:inherit;text-decoration:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.ngb-grid .datagrid-toolbar__button:hover,.ngb-grid .grid-row-action:hover,.ngb-grid .grid-filter-apply:hover,.ngb-grid .grid-filter-clear:hover,.ngb-grid .grid-filter-cancel:hover,.ngb-grid .grid-filter-operator__button:hover,.ngb-grid .grid-filter-menu-trigger:hover,.ngb-grid .grid-detail-toggle:hover{border-color:var(--dg-border-strong);background:var(--dg-surface-subtle);color:var(--dg-text);text-decoration:none}.ngb-grid .datagrid-toolbar__button:focus-visible,.ngb-grid .grid-row-action:focus-visible,.ngb-grid .grid-filter-apply:focus-visible,.ngb-grid .grid-filter-clear:focus-visible,.ngb-grid .grid-filter-cancel:focus-visible,.ngb-grid .grid-filter-operator__button:focus-visible,.ngb-grid .grid-filter-menu-trigger:focus-visible,.ngb-grid .grid-detail-toggle:focus-visible,.ngb-grid .grid-sort-button:focus-visible,.ngb-grid .grid-edit-control:focus-visible,.ngb-grid .grid-filter-control:focus-visible,.ngb-grid .datagrid-toolbar__search-input:focus-visible{outline:none;border-color:var(--dg-focus-border);box-shadow:var(--dg-focus-shadow)}.ngb-grid .datagrid-toolbar__button{padding:.625rem 1rem;font-size:.875rem;font-weight:400}.ngb-grid .datagrid-toolbar__button--primary{border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-grid .datagrid-toolbar__button--primary:hover{background:var(--dg-primary-hover);border-color:var(--dg-primary-hover);color:var(--dg-on-primary)}.ngb-grid .datagrid-toolbar__button--secondary{background:var(--dg-surface);color:var(--dg-text)}.ngb-grid .ngb-grid__group-panel{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;min-height:3.25rem;margin-bottom:.9rem;padding:.75rem .9rem;border:1px dashed var(--dg-border-strong);border-radius:var(--dg-radius-md);background:color-mix(in srgb,var(--dg-surface-muted) 72%,white);transition:border-color .12s ease,background-color .12s ease,box-shadow .12s ease}.ngb-grid .ngb-grid__group-panel--active{border-color:var(--dg-primary);background:color-mix(in srgb,var(--dg-primary-soft) 45%,white);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dg-primary) 22%,transparent)}.ngb-grid .ngb-grid__group-panel--denied{border-color:var(--dg-danger, #dc3545);background:color-mix(in srgb,var(--dg-danger, #dc3545) 8%,white)}.ngb-grid .ngb-grid__group-panel-label{font-size:.875rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .ngb-grid__group-chip-list{display:inline-flex;align-items:center;gap:.55rem;flex-wrap:wrap}.ngb-grid .ngb-grid__group-chip{display:inline-flex;align-items:center;gap:.25rem;border:1px solid color-mix(in srgb,var(--dg-primary) 26%,var(--dg-border));border-radius:999px;background:var(--dg-surface);box-shadow:var(--dg-shadow-sm)}.ngb-grid .ngb-grid__group-chip-button,.ngb-grid .ngb-grid__group-chip-remove{display:inline-flex;align-items:center;gap:.4rem;min-height:2rem;border:0;background:transparent;color:var(--dg-text)}.ngb-grid .ngb-grid__group-chip-button{padding:.35rem .55rem .35rem .8rem;font-size:.8125rem;font-weight:600}.ngb-grid .ngb-grid__group-chip-remove{padding:.35rem .75rem .35rem .15rem;color:var(--dg-text-muted)}.ngb-grid .ngb-grid__group-chip-button:hover,.ngb-grid .ngb-grid__group-chip-remove:hover{color:var(--dg-primary)}.ngb-grid .ngb-grid__group-chip-button:focus-visible,.ngb-grid .ngb-grid__group-chip-remove:focus-visible,.ngb-grid .grid-column-group-handle:focus-visible,.ngb-grid .grid-group-row__toggle:focus-visible{outline:none;box-shadow:var(--dg-focus-shadow);border-radius:999px}.ngb-grid .ngb-grid__group-chip-dir{font-size:.8rem;color:var(--dg-primary)}.ngb-grid .table-wrapper{position:relative;overflow-x:hidden;overflow-y:clip;border:var(--dg-table-border-width) solid var(--dg-border);border-radius:var(--dg-radius-lg);background:var(--dg-surface);box-shadow:var(--dg-shadow-sm);isolation:isolate}.ngb-grid .table-body-scroll{max-height:24rem;overflow-y:auto;overflow-x:auto;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border);scrollbar-gutter:stable both-edges;position:relative;z-index:0}.ngb-grid .ngb-grid__group-sticky-layer{position:absolute;inset-inline-start:0;z-index:35;min-width:100%;pointer-events:none}.ngb-grid .ngb-grid__group-sticky-layer--top,.ngb-grid .ngb-grid__group-sticky-layer--bottom{top:0}.ngb-grid .grid-group-sticky-table{min-width:100%;pointer-events:auto}.ngb-grid .grid-table{width:max-content;min-width:100%;table-layout:fixed;margin:0;border-collapse:separate;border-spacing:0}.ngb-grid.ngb-grid--resizable .grid-table{min-width:0;width:max-content}.ngb-grid.ngb-grid--resizable .grid-table th,.ngb-grid.ngb-grid--resizable .grid-table td{box-sizing:border-box}.ngb-grid .grid-header-shell{position:relative;z-index:20;overflow:hidden}.ngb-grid .grid-header{position:relative;z-index:20;overflow:visible}.ngb-grid .grid-header thead tr:first-child th:first-child{border-top-left-radius:var(--dg-radius-lg)}.ngb-grid .grid-header thead tr:first-child th:last-child{border-top-right-radius:var(--dg-radius-lg)}.ngb-grid .grid-header thead th{background:var(--dg-surface-muted);border-bottom:var(--dg-table-border-width) solid var(--dg-border);color:var(--dg-text);font-size:var(--dg-font-size-header);font-weight:600;text-transform:none;letter-spacing:.01em;overflow:visible}.ngb-grid .grid-table th,.ngb-grid .grid-table td{vertical-align:middle;border-bottom:var(--dg-table-border-width) solid var(--dg-border);padding:var(--dg-cell-padding-y) var(--dg-cell-padding-x);font-size:var(--dg-font-size-cell)}.ngb-grid .grid-table th{padding:var(--dg-header-padding-y) var(--dg-header-padding-x)}.ngb-grid .grid-table td{background:var(--dg-surface);color:var(--dg-text);font-weight:400}.ngb-grid .grid-table th{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-header .grid-table th{overflow:visible}.ngb-grid .grid-header thead tr:first-child th.grid-header__column--resizable{position:relative}.ngb-grid .grid-column-resize-handle{position:absolute;top:0;right:0;width:.45rem;height:100%;cursor:col-resize;touch-action:none;-webkit-user-select:none;user-select:none;z-index:3}.ngb-grid .grid-column-resize-handle:after{content:\"\";position:absolute;top:.35rem;bottom:.35rem;right:.1rem;width:2px;border-radius:1px;background:var(--dg-border-strong);opacity:0;transition:opacity .15s ease}.ngb-grid .grid-header__column--resizable:hover .grid-column-resize-handle:after,.ngb-grid .grid-column-resize-handle:focus-visible:after{opacity:1}body.ngb-datagrid-column-resizing{cursor:col-resize!important;-webkit-user-select:none;user-select:none}.ngb-grid.ngb-grid--column-reorderable .grid-header thead tr:first-child th.grid-header__column--reorderable{position:relative}.ngb-grid .grid-column-reorder-handle{flex:0 0 auto;margin-right:.15rem;padding:.1rem .18rem;border-radius:999px;color:var(--dg-text-muted);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;opacity:.82;line-height:1;font-size:.95rem}.ngb-grid .grid-header__column--reorderable:hover .grid-column-reorder-handle,.ngb-grid .grid-column-reorder-handle:focus-visible{opacity:1;background:color-mix(in srgb,var(--dg-accent) 12%,transparent)}.ngb-grid .grid-column-group-handle{flex:0 0 auto;padding:.15rem .25rem;border-radius:999px;color:var(--dg-text-muted);cursor:grab;-webkit-user-select:none;user-select:none;line-height:1;font-size:.9rem}.ngb-grid .grid-column-group-handle--active,.ngb-grid .grid-column-group-handle:hover{color:var(--dg-primary);background:color-mix(in srgb,var(--dg-primary-soft) 55%,transparent)}.ngb-grid .grid-header__column--drag-over{background:color-mix(in srgb,var(--dg-accent) 12%,transparent);box-shadow:inset 0 -2px 0 var(--dg-accent)}.ngb-grid .grid-header__cell{display:flex;align-items:center;justify-content:space-between;gap:.625rem;width:100%;overflow:visible}.ngb-grid .grid-sort-button{display:inline-flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:0;border:0;background:transparent;color:inherit;text-align:left}.ngb-grid .grid-sort-button__label{min-width:0;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-sort-button__indicator{flex:0 0 auto;font-size:.8rem;color:var(--dg-placeholder)}.ngb-grid .grid-sort-button__indicator--active{color:var(--dg-primary)}.ngb-grid .grid-filter-menu-host{position:relative;display:inline-flex;flex:0 0 auto;z-index:30}.ngb-grid .grid-filter-menu-popover:not(.ngb-datagrid-floating-panel){position:absolute;top:calc(100% + .5rem);right:0;z-index:120}.ngb-grid .grid-filter-menu-popover .grid-filter-menu-surface{position:static;top:auto;right:auto}.ngb-grid .grid-filter-menu-trigger{min-width:var(--dg-control-height);width:var(--dg-control-height);height:var(--dg-control-height);padding:0}.ngb-grid .grid-filter-menu-trigger--active,.ngb-grid .filter-menu-active .grid-filter-menu-trigger{border-color:var(--dg-focus-border);background:var(--dg-primary-soft);color:var(--dg-primary)}.ngb-grid .grid-filter-menu-trigger--check .bi{color:var(--dg-placeholder)}.ngb-grid .grid-filter-menu-trigger--check.grid-filter-menu-trigger--active,.ngb-grid .filter-menu-active .grid-filter-menu-trigger--check{border-color:var(--dg-focus-border);background:var(--dg-primary-soft);color:var(--dg-primary)}.ngb-grid .grid-filter-menu-trigger--check.grid-filter-menu-trigger--active .bi,.ngb-grid .filter-menu-active .grid-filter-menu-trigger--check .bi{color:var(--dg-primary)}.ngb-grid .grid-filter-menu-surface{position:absolute;top:calc(100% + .5rem);right:0;min-width:18rem;padding:1rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-md);background:var(--dg-surface);box-shadow:var(--dg-shadow-md);z-index:120}.ngb-grid .grid-filter-menu-surface__header{margin-bottom:.875rem}.ngb-grid .grid-filter-menu-surface__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--dg-text-subtle)}.ngb-grid .grid-filter-menu-surface__title{margin-top:.15rem;font-size:.95rem;font-weight:700;color:var(--dg-text)}.ngb-grid .grid-filter-stack{display:flex;flex-direction:column;gap:.75rem}.ngb-grid .grid-filter-stack--multi{gap:.65rem}.ngb-grid .grid-filter-operator-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:.375rem;background:var(--dg-surface);font-size:.875rem;color:var(--dg-text)}.ngb-grid .grid-filter-operator-select--compact{width:auto;min-width:2.25rem;max-width:3.5rem;padding:.35rem .25rem;font-size:.6875rem}.ngb-grid .grid-filter-logic-select{display:flex;justify-content:center;margin:.15rem 0}.ngb-grid .grid-filter-logic-select select{width:auto;min-width:4.5rem;min-height:1.75rem;padding:.2rem 1.5rem .2rem .65rem;border:1px solid var(--dg-border);border-radius:.375rem;background:var(--dg-surface);font-size:.8125rem;font-weight:600}.ngb-grid .grid-filter-menu-surface__actions--split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.ngb-grid .grid-filter-apply--secondary,.ngb-grid .grid-filter-cancel--secondary{width:100%;border:1px solid var(--dg-border-strong);background:var(--dg-surface-muted);color:var(--dg-text);font-weight:600}.ngb-grid .grid-filter-apply--secondary:hover,.ngb-grid .grid-filter-cancel--secondary:hover{background:var(--dg-surface-subtle)}.ngb-grid .grid-filter-multi-panel{display:flex;flex-direction:column;gap:.5rem;min-width:16.5rem}.ngb-grid .grid-filter-join-select{display:inline-block;width:fit-content;max-width:100%;margin:.1rem 0}.ngb-grid .grid-filter-join-select__control{width:100%;min-height:1.75rem;padding:.2rem 1.25rem .2rem .5rem;border:1px solid var(--dg-border);border-radius:.375rem;background:var(--dg-surface);font-size:.8125rem;font-weight:600;text-align:left}.ngb-grid .grid-filter-value-input,.ngb-grid .grid-filter-value-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:.375rem;background:var(--dg-surface);font-size:.875rem}.ngb-grid .grid-filter-apply--secondary:disabled,.ngb-grid .grid-filter-cancel--secondary:disabled{opacity:.45;cursor:not-allowed}.ngb-grid .grid-group-row td,.ngb-grid .grid-group-footer-row td{background:color-mix(in srgb,var(--dg-surface-muted) 88%,white);border-bottom:1px solid var(--dg-border)}.ngb-grid .grid-group-row--overlay td{box-shadow:inset 0 -1px 0 var(--dg-border),0 1px color-mix(in srgb,var(--dg-border) 36%,transparent)}.ngb-grid .grid-group-footer-row--overlay td{box-shadow:inset 0 1px 0 var(--dg-border),0 -1px color-mix(in srgb,var(--dg-border) 36%,transparent)}.ngb-grid .grid-group-row__cell{padding:0;vertical-align:top}.ngb-grid .grid-group-footer-row__cell,.ngb-grid .grid-group-row__utility-cell{padding:.7rem .75rem;vertical-align:top}.ngb-grid .grid-group-row__toggle{display:flex;align-items:center;gap:.55rem;width:100%;padding:.7rem 1rem;border:0;background:transparent;color:var(--dg-text);text-align:left;font-size:.875rem;font-weight:600}.ngb-grid .grid-group-row__cell--lead .grid-group-row__toggle{padding-inline-end:.75rem}.ngb-grid .grid-group-row__toggle:hover{background:color-mix(in srgb,var(--dg-primary-soft) 34%,transparent)}.ngb-grid .grid-group-row__content{display:inline-flex;align-items:center;gap:.5rem;min-width:0}.ngb-grid .grid-group-row__label{color:var(--dg-text)}.ngb-grid .grid-group-row__count{font-size:.75rem;font-weight:700;color:var(--dg-text-muted)}.ngb-grid .grid-group-row__column-slot{padding:.25rem .75rem .75rem;font-size:.8125rem;color:var(--dg-text-muted)}.ngb-grid .grid-group-row__cell--lead .grid-group-row__column-slot{padding-inline-start:2.75rem}.ngb-grid .grid-group-footer-row td{background:color-mix(in srgb,var(--dg-surface-muted) 94%,white)}.ngb-grid .grid-filter-menu-popover .grid-filter-menu-surface:has(.grid-filter-menu-surface__multi){width:16.25rem;max-width:min(16.25rem,92vw);padding:.75rem}.ngb-grid .grid-filter-menu-surface__multi{display:flex;flex-direction:column;gap:.5rem;width:100%}.ngb-grid .grid-filter-menu-surface__multi .grid-filter-menu-surface__search{border-radius:.5rem;min-height:2rem;padding:.4rem .65rem;font-size:.8125rem}.ngb-grid .grid-multi-filter-list{max-height:11.5rem;overflow:auto;margin:0 -.75rem;padding:.15rem 0;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border)}.ngb-grid .grid-multi-filter-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;padding:.45rem .75rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);cursor:pointer}.ngb-grid .grid-multi-filter-option+.grid-multi-filter-option{border-top:1px solid var(--dg-filter-divider)}.ngb-grid .grid-multi-filter-option--summary{font-weight:700}.ngb-grid .grid-multi-filter-option__main{display:inline-flex;align-items:center;gap:.75rem;min-width:0}.ngb-grid .grid-multi-filter-option__main input{width:1rem;height:1rem;margin:0;accent-color:var(--dg-primary);flex:0 0 auto}.ngb-grid .grid-multi-filter-option__count{font-size:.75rem;font-weight:700;color:var(--dg-text-muted)}.ngb-grid .grid-filter-stack__label{font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-filter-stack__footer,.ngb-grid .grid-filter-menu-surface__actions{display:flex;align-items:center;justify-content:space-between;gap:.625rem}.ngb-grid .grid-filter-inline{display:flex;align-items:center;gap:.45rem;min-width:0;width:100%}.ngb-grid .grid-filter-field{position:relative;min-width:12rem;flex:1 1 auto}.ngb-grid .grid-filter-field--with-icon .grid-filter-control{padding-right:2.25rem}.ngb-grid .grid-filter-field__icon{position:absolute;right:.8rem;top:50%;transform:translateY(-50%);color:var(--dg-placeholder);pointer-events:none}.ngb-grid .grid-filter-control,.ngb-grid .grid-edit-control{width:100%;min-width:0;min-height:var(--dg-control-height);padding:.5rem .75rem;border:1px solid var(--dg-border);border-radius:.3rem;background:var(--dg-surface);color:var(--dg-text);font-size:.875rem}.ngb-grid .grid-edit-checkbox{width:1rem;height:1rem;margin-top:0}.ngb-grid .grid-filter-operator{position:relative;flex:0 0 auto}.ngb-grid .grid-filter-operator__button{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-filter-operator__button--compact{min-width:var(--dg-control-height);width:var(--dg-control-height);padding:0}.ngb-grid .grid-filter-operator__button--active{border-color:var(--dg-primary);color:var(--dg-primary)}.ngb-grid .grid-filter-operator .dropdown-menu:not(.ngb-datagrid-floating-panel){position:absolute;inset:calc(100% + .35rem) 0 auto auto;min-width:12rem;margin:0;border-radius:.9rem;border-color:var(--dg-border);box-shadow:var(--dg-shadow-md);z-index:120}.ngb-grid .grid-filter-clear{padding:.55rem .8rem;font-size:.8125rem;color:var(--dg-text-muted)}.ngb-grid .grid-filter-apply{padding:.625rem .95rem;border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary);font-size:.875rem;font-weight:600}.ngb-grid .grid-filter-apply:hover{border-color:var(--dg-primary-active);background:var(--dg-primary-active);color:var(--dg-on-primary)}.ngb-grid .grid-filter-menu-surface__actions--multi{justify-content:space-between;margin-top:.35rem}.ngb-grid .grid-filter-menu-surface__multi .grid-filter-apply{min-width:5.25rem;padding:.5rem 1.15rem;font-size:.8125rem}.ngb-grid .grid-filter-cancel{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);border:1px solid var(--dg-border-strong);background:var(--dg-surface)}.ngb-grid .grid-filter-cancel:hover{border-color:var(--dg-border-strong);background:var(--dg-surface-subtle);color:var(--dg-text)}.ngb-grid .filter-row th{background:var(--dg-surface-filter-row);padding-top:.625rem;padding-bottom:.625rem;overflow:visible;position:relative;z-index:25}.ngb-grid.ngb-grid--menu-open .filter-row th{z-index:85}.ngb-grid .column-pinned-start,.ngb-grid .column-pinned-end{position:sticky;background:inherit;z-index:2}.ngb-grid .grid-header .column-pinned-start,.ngb-grid .grid-header .column-pinned-end{z-index:6}.ngb-grid .column-pinned-start{box-shadow:var(--dg-pin-shadow-start)}.ngb-grid .column-pinned-start:has(+.column-pinned-start){box-shadow:none}.ngb-grid .column-pinned-end{box-shadow:var(--dg-pin-shadow-end)}.ngb-grid .column-locked{background:var(--dg-locked-bg)}.ngb-grid .sticky-row,.ngb-grid .sticky-row td{background:var(--dg-surface-sticky-row);box-shadow:inset 0 0 0 1px var(--dg-sticky-border)}.ngb-grid .sticky-row{position:sticky;z-index:4}.ngb-grid .grid-sticky-badge{display:inline-flex;align-items:center;margin-left:.45rem;padding:.12rem .4rem;border-radius:.25rem;background:var(--dg-sticky-badge-bg);color:var(--dg-sticky-badge-text);font-size:.62rem;font-weight:800;letter-spacing:.04em;vertical-align:middle}.ngb-grid .grid-row-action--icon{min-width:2.05rem;width:2.05rem;height:2.05rem;min-height:2.05rem;padding:0;border-radius:var(--dg-radius-md)}.ngb-grid .grid-row-action--edit-icon{border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-grid .grid-row-action--edit-icon:hover{border-color:var(--dg-primary-hover);background:var(--dg-primary-hover);color:var(--dg-on-primary)}.ngb-grid.ngb-grid--zebra .grid-body tbody tr:nth-child(2n):not(.sticky-row):not(.row-selected) td{background:var(--dg-row-even-bg, var(--dg-surface-muted))}.ngb-grid:not(.ngb-grid--zebra) .grid-body tbody tr:nth-child(odd):not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-odd-bg)}.ngb-grid:not(.ngb-grid--zebra) .grid-body tbody tr:nth-child(2n):not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-even-bg)}.ngb-grid .grid-body tbody tr.grid-data-row:hover:not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-hover-bg)}.ngb-grid .row-selected,.ngb-grid .row-selected td{background:var(--dg-row-selected-bg)}.ngb-grid .row-highlight,.ngb-grid .row-highlight td{background:var(--dg-warning-soft)}.ngb-grid .grid-header th.column-pinned-start,.ngb-grid .grid-header th.column-pinned-end,.ngb-grid .grid-body tbody td.column-pinned-start,.ngb-grid .grid-body tbody td.column-pinned-end{background:var(--dg-surface)}.ngb-grid .grid-header th.column-locked,.ngb-grid .grid-body tbody td.column-locked{background:var(--dg-locked-bg)!important}.ngb-grid .grid-body tbody tr.row-selected td.column-locked{background:var(--dg-row-selected-bg)!important}.ngb-grid .cell-highlight{background:var(--dg-primary-soft)}.ngb-grid .grid-search-highlight{padding:0;border-radius:.15rem;background:var(--dg-sticky-badge-bg);color:inherit;font-weight:inherit}.ngb-grid .grid-detail-toggle{min-width:2rem;width:2rem;height:2rem;padding:0;border-radius:999px}.ngb-grid .grid-cell-content{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-cell-content,.ngb-grid .grid-cell-text{font-weight:400}.ngb-grid .grid-cell--emphasis .grid-cell-content,.ngb-grid .grid-cell--emphasis .grid-cell-text{font-weight:700}.ngb-grid .grid-boolean-pill{display:inline-flex;align-items:center;justify-content:center;min-width:3.5rem;padding:.25rem .55rem;border-radius:999px;background:var(--dg-neutral-pill-bg);color:var(--dg-text-muted);font-size:.75rem;font-weight:700}.ngb-grid .grid-boolean-pill--true{background:var(--dg-success-soft);color:var(--dg-success-text)}.ngb-grid .grid-row-action{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;white-space:nowrap}.ngb-grid .grid-actions-cell{overflow:visible;text-overflow:clip;white-space:normal}.ngb-grid .grid-actions-cell__inner{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;flex-wrap:nowrap}.ngb-grid .grid-row-action--secondary{color:var(--dg-primary);background:var(--dg-primary-soft);border-color:var(--dg-primary-border-subtle)}.ngb-grid .grid-row-action--danger{color:var(--dg-danger-text);background:var(--dg-danger-soft);border-color:var(--dg-danger-border-subtle)}.ngb-grid .grid-row-action--success{color:var(--dg-success-text);background:var(--dg-success-soft);border-color:var(--dg-success-border-subtle)}.ngb-grid .grid-row-action--neutral{color:var(--dg-text-muted);background:var(--dg-locked-bg);border-color:var(--dg-border)}.ngb-grid .grid-detail-row__cell{padding:0;background:var(--dg-detail-row-bg)}.ngb-grid .grid-detail-row__content{padding:1rem 1.25rem}.ngb-grid.ngb-grid--compact .grid-table th,.ngb-grid.ngb-grid--compact .grid-table td{padding:.55rem .65rem}.ngb-grid.ngb-grid--compact .datagrid-toolbar__button,.ngb-grid.ngb-grid--compact .grid-row-action,.ngb-grid.ngb-grid--compact .grid-filter-apply,.ngb-grid.ngb-grid--compact .grid-filter-clear,.ngb-grid.ngb-grid--compact .grid-filter-operator__button,.ngb-grid.ngb-grid--compact .grid-filter-menu-trigger,.ngb-grid.ngb-grid--compact .grid-detail-toggle,.ngb-grid.ngb-grid--compact .grid-filter-control,.ngb-grid.ngb-grid--compact .grid-edit-control{min-height:32px;font-size:.8125rem}.ngb-grid .grid-row--reorderable{cursor:grab}.ngb-grid .grid-row--reorderable.ngb-dnd-dragging{cursor:grabbing;opacity:.82}.ngb-grid .ngb-dnd-placeholder{display:table-row;background:transparent}.ngb-grid tbody.ngb-dnd-list,.ngb-grid tbody.ngb-dnd-list.ngb-dnd-over[data-drop-valid=true],.ngb-grid tbody.ngb-dnd-list.ngb-dnd-over[data-drop-valid=false]{border:0;border-radius:0;background:transparent;box-shadow:none}.ngb-grid .ngb-dnd-placeholder>td{padding:0;border:0;background:transparent}.ngb-grid .ngb-dnd-placeholder__bar{display:block;height:.35rem;background:var(--dg-primary-selection-overlay)}.ngb-grid.ngb-grid--stacked .grid-header-shell,.ngb-grid.ngb-grid--stacked .grid-header{display:none}.ngb-grid.ngb-grid--stacked .table-wrapper{width:100%}.ngb-grid.ngb-grid--stacked .table-body-scroll{width:100%;max-height:none;overflow:visible;border-top:0;border-bottom:0}.ngb-grid.ngb-grid--stacked .grid-table.grid-body{width:100%;min-width:0;max-width:100%;table-layout:auto}.ngb-grid.ngb-grid--stacked .grid-table.grid-body colgroup{display:none}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody{display:block;width:100%}.ngb-grid.ngb-grid--menu-open .grid-header-shell,.ngb-grid.ngb-grid--row-operator-open .grid-header-shell,.ngb-grid.ngb-grid--row-operator-open .filter-row th{overflow:visible}.ngb-grid.ngb-grid--menu-open .grid-header-shell,.ngb-grid.ngb-grid--menu-open .grid-header{z-index:80}.ngb-grid.ngb-grid--menu-open .grid-header thead th.filter-menu-open{position:relative;z-index:95;overflow:visible}.ngb-grid.ngb-grid--menu-open .grid-filter-menu-host{z-index:90}.ngb-grid__filter-menu-overlay{pointer-events:auto}.ngb-grid__layout-toolbar-host:empty{display:none}.ngb-grid__layout-toolbar-host:not(:empty){border-bottom:1px solid var(--dg-border)}.ngb-grid .table-wrapper{position:relative}.ngb-grid.ngb-grid--loading .table-wrapper{pointer-events:none}.ngb-grid.ngb-grid--loading .table-wrapper .grid-table{opacity:.45}.ngb-grid__loading-overlay{position:absolute;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;background:var(--dg-loading-overlay);pointer-events:none}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody tr{display:grid;width:100%;box-sizing:border-box;grid-template-columns:minmax(0,1fr);gap:.65rem;border-bottom:1px solid var(--dg-border);padding:.9rem 1rem}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody td{display:grid;width:100%;min-width:0;box-sizing:border-box;white-space:normal;border-bottom:0;padding:.35rem 0;position:static!important;left:auto!important;right:auto!important}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody td:not([data-title]){grid-column:1/-1}.ngb-grid.ngb-grid--stacked:not(.ngb-grid--stacked-cards) .grid-table.grid-body tbody td[data-title]{grid-template-columns:minmax(5.5rem,34%) minmax(0,1fr);align-items:baseline;column-gap:.75rem}.ngb-grid.ngb-grid--stacked:not(.ngb-grid--stacked-cards) .grid-table.grid-body tbody td:before{content:attr(data-title);font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);line-height:1.3}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody tr{display:block;width:100%;padding:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody td.ngb-stacked-card-cell{display:block;width:100%;padding:.9rem 1rem;border-bottom:1px solid var(--dg-border)}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card,.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{width:100%;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem}@media(min-width:40rem){.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);align-items:start;column-gap:1.5rem}}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__group{display:flex;flex-direction:column;gap:.85rem;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__field{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__label{font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);line-height:1.3}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__value{width:100%;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody td:not([data-title]):not(.ngb-stacked-card-cell){display:block;width:100%;padding:.65rem 1rem 0;border-bottom:0}.ngb-grid[data-theme=material] .datagrid-toolbar__button--primary,.ngb-grid[data-theme=tailwind] .datagrid-toolbar__button--primary,.ngb-grid[data-theme=material] .grid-filter-apply,.ngb-grid[data-theme=tailwind] .grid-filter-apply{border-color:var(--dg-primary);background:var(--dg-primary)}.ngb-grid.ngb-responsive .table{width:100%}@media(max-width:992px){.ngb-grid .grid-filter-inline{min-width:11rem}.ngb-grid .grid-filter-field{min-width:10rem}}@media(max-width:768px){.ngb-grid .datagrid-toolbar{align-items:stretch}.ngb-grid .datagrid-toolbar__actions{justify-content:stretch}.ngb-grid .datagrid-toolbar__button{flex:1 1 auto}.ngb-grid .grid-filter-inline{width:100%}.ngb-grid.ngb-responsive thead{display:none}.ngb-grid.ngb-responsive tbody tr{display:grid;grid-template-columns:1fr;gap:.5rem;border:1px solid var(--dg-border);border-radius:.75rem;padding:.75rem;margin-bottom:.75rem}.ngb-grid.ngb-responsive tbody td{display:grid;grid-template-columns:8rem 1fr}.ngb-grid.ngb-responsive tbody td:before{content:attr(data-title);font-weight:600;opacity:.75;padding-right:.5rem}}.ngb-grid .datagrid-editing-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.75rem 1rem;border:1px solid var(--dg-border);border-bottom:0;border-radius:var(--dg-radius-lg) var(--dg-radius-lg) 0 0;background:var(--dg-surface)}.ngb-grid .datagrid-editing-toolbar__start,.ngb-grid .datagrid-editing-toolbar__end{display:inline-flex;align-items:center;gap:.5rem}.ngb-grid .datagrid-editing-toolbar__save[hidden],.ngb-grid .datagrid-editing-toolbar__cancel[hidden]{display:none!important}.ngb-grid .datagrid-editing-toolbar__hint{flex:1 1 auto;text-align:center;font-size:.875rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-cell--incell{cursor:cell}.ngb-grid .grid-cell--incell:not(.grid-cell--editing) .grid-cell-content,.ngb-grid .grid-cell--incell:not(.grid-cell--editing) .grid-cell-content *{pointer-events:none}.ngb-grid .grid-cell--editing .grid-edit-control{border-color:var(--dg-primary);box-shadow:var(--dg-focus-shadow)}.ngb-grid .grid-external-editor{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:1.5rem}.ngb-grid .grid-external-editor__backdrop{position:absolute;inset:0;border:0;background:var(--dg-backdrop);cursor:pointer}.ngb-grid .grid-external-editor__panel{position:relative;z-index:1;width:min(32rem,100%);max-height:min(90vh,40rem);overflow:auto;padding:1.25rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-lg);background:var(--dg-surface);box-shadow:var(--dg-shadow-md)}.ngb-grid .grid-external-editor__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.ngb-grid .grid-external-editor__title{margin:0;font-size:1.125rem;font-weight:700}.ngb-grid .grid-external-editor__close{border:0;background:transparent;color:var(--dg-text-muted);padding:.25rem;cursor:pointer}.ngb-grid .grid-external-editor__form{display:grid;gap:.85rem}.ngb-grid .grid-external-editor__field{display:grid;gap:.35rem}.ngb-grid .grid-external-editor__label{font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);text-transform:uppercase;letter-spacing:.03em}.ngb-grid .grid-external-editor__error{font-size:.75rem;color:var(--dg-danger)}.ngb-grid .grid-external-editor__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}.ngb-grid__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ngb-grid .grid-body td[role=gridcell]:focus-visible,.ngb-grid .grid-body td[role=gridcell].grid-cell--focused{outline:2px solid var(--dg-focus-ring);outline-offset:-2px}.ngb-grid--rtl .grid-column-reorder-handle{transform:scaleX(-1)}.ngb-grid--rtl .column-pinned-start{left:auto;right:var(--dg-pin-start, 0)}.ngb-grid--rtl .column-pinned-end{right:auto;left:var(--dg-pin-end, 0)}.ngb-grid .grid-footer{width:100%;color:var(--dg-pager-text)}.ngb-grid .grid-footer--top{margin-bottom:0;border-bottom:var(--dg-table-border-width) solid var(--dg-border)}.ngb-grid .grid-footer--custom{width:100%}\n"] }]
|
|
10552
|
+
], standalone: true, template: "<div\n class=\"ngb-grid\"\n [attr.dir]=\"resolvedDir()\"\n [attr.data-theme]=\"theme\"\n [class.ngb-grid--rtl]=\"isRtl()\"\n [class.ngb-responsive]=\"isResponsiveEnabled()\"\n [class.ngb-grid--compact]=\"densityMode === 'compact'\"\n [class.ngb-grid--stacked]=\"isStackedLayout()\"\n [class.ngb-grid--stacked-cards]=\"isStackedCardsLayout()\"\n [class.ngb-grid--menu-open]=\"!!openFilterMenuField || !!openMenuOperatorField || !!openRowFilterField\"\n [class.ngb-grid--row-operator-open]=\"!!openRowFilterField\"\n [class.ngb-grid--zebra]=\"zebraStripesEnabled\"\n [class.ngb-grid--resizable]=\"resizable && !isStackedLayout()\"\n [class.ngb-grid--column-reorderable]=\"isColumnReorderEnabled()\"\n [class.ngb-grid--loading]=\"loading\"\n [attr.aria-busy]=\"loading ? 'true' : null\"\n [style.--ngb-render-tick]=\"renderTick\"\n>\n <div class=\"ngb-grid__layout-toolbar-host\">\n <ng-content select=\"ngb-datagrid-layout-toolbar\"></ng-content>\n </div>\n <ngb-datagrid-toolbar [grid]=\"gridHost\"></ngb-datagrid-toolbar>\n <ngb-datagrid-editing-toolbar\n [grid]=\"gridHost\"\n [selectedCount]=\"getSelectedCount()\"\n [editActive]=\"isToolbarEditActive()\"\n [saveDisabled]=\"isToolbarSaveDisabled()\"\n ></ngb-datagrid-editing-toolbar>\n\n @if (paginationActive && pagerShowsAt('top')) {\n <ngb-datagrid-footer [grid]=\"gridHost\" placement=\"top\"></ngb-datagrid-footer>\n }\n\n <div\n class=\"ngb-grid__status visually-hidden-focusable\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >{{ statusMessage }}</div>\n\n @if (isGroupingEnabled()) {\n <div\n class=\"ngb-grid__group-panel\"\n [class.ngb-grid__group-panel--active]=\"groupPanelDragActive && !groupPanelDragDenied\"\n [class.ngb-grid__group-panel--denied]=\"groupPanelDragDenied\"\n (dragover)=\"onGroupPanelDragOver($event)\"\n (dragleave)=\"onGroupPanelDragLeave($event)\"\n (drop)=\"onGroupPanelDrop($event)\"\n >\n <div class=\"ngb-grid__group-panel-label\">{{ groupPanelLabel() }}</div>\n @if (groupedColumns().length) {\n <div class=\"ngb-grid__group-chip-list\">\n @for (descriptor of groupedColumns(); track descriptor.field) {\n <div class=\"ngb-grid__group-chip\">\n <button\n type=\"button\"\n class=\"ngb-grid__group-chip-button\"\n (click)=\"toggleGroupDirection(descriptor.field)\"\n [attr.aria-label]=\"groupDirectionAriaLabel(descriptor)\"\n >\n <span class=\"ngb-grid__group-chip-label\">{{ groupFieldLabel(descriptor) }}</span>\n <span class=\"ngb-grid__group-chip-dir\">{{ descriptor.dir === 'desc' ? '\u2193' : '\u2191' }}</span>\n </button>\n <button\n type=\"button\"\n class=\"ngb-grid__group-chip-remove\"\n (click)=\"removeGroupField(descriptor.field)\"\n [attr.aria-label]=\"groupRemoveAriaLabel(descriptor)\"\n >\n <span class=\"bi bi-x-lg\" aria-hidden=\"true\"></span>\n </button>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <div class=\"table-wrapper\" [ngClass]=\"responsiveWrapperClasses\">\n @if (loading) {\n <div class=\"ngb-grid__loading-overlay\" role=\"presentation\">\n <div class=\"spinner-border spinner-border-sm text-primary\" role=\"status\">\n <span class=\"visually-hidden\">Loading</span>\n </div>\n </div>\n }\n <div class=\"grid-header-shell\" #headerScroller>\n <table class=\"grid-table grid-header mb-0\" [ngClass]=\"tableClassList\" [style.width.px]=\"tablePixelWidth\">\n @if (tableOptions?.caption) {\n <caption\n [class.caption-top]=\"(tableOptions?.captionSide ?? 'top') === 'top'\"\n >\n {{ tableOptions?.caption }}\n </caption>\n }\n\n <colgroup\n ngbDatagridColgroup\n [grid]=\"gridHost\"\n [ngbSyncColgroup]=\"colgroupSyncId\"\n syncRole=\"header\"\n [syncMode]=\"resizable ? 'explicit' : 'auto'\"\n ></colgroup>\n\n <thead\n class=\"table-light\"\n ngbDatagridHeader\n [grid]=\"gridHost\"\n [renderTick]=\"renderTick\"\n ></thead>\n </table>\n </div>\n\n <div [class.table-body-scroll]=\"shouldEnableScroll\" #bodyScroller (scroll)=\"onBodyHorizontalScroll()\">\n @if (hasStickyGroupHeaders()) {\n <div\n class=\"ngb-grid__group-sticky-layer ngb-grid__group-sticky-layer--top\"\n [style.transform]=\"'translateY(' + stickyGroupHeaderTranslateY + 'px)'\"\n >\n <table\n class=\"grid-table grid-group-sticky-table mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"presentation\"\n >\n <colgroup>\n @for (width of stickyGroupOverlayColumnWidths; track $index) {\n <col [style.width.px]=\"width || null\" />\n }\n </colgroup>\n <tbody>\n @for (item of stickyGroupHeaderRows; track item.key) {\n <tr class=\"grid-group-row grid-group-row--overlay\">\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n @if (shouldRenderGroupCell(col, item.group)) {\n <td\n class=\"grid-group-row__cell\"\n [class.grid-group-row__cell--lead]=\"isGroupLeadColumn(col, item.group)\"\n [attr.colspan]=\"groupCellColspan(col, item.group)\"\n >\n @if (isGroupLeadColumn(col, item.group)) {\n <button\n type=\"button\"\n class=\"grid-group-row__toggle\"\n (click)=\"toggleGroupCollapsed(item.group, item.level, item.startIndex)\"\n [attr.aria-expanded]=\"!item.collapsed\"\n >\n <span\n class=\"bi\"\n [ngClass]=\"item.collapsed ? 'bi-chevron-right' : 'bi-chevron-down'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"grid-group-row__content\" [style.padding-inline-start.rem]=\"groupRowIndent(item.level)\">\n @if (groupHeaderTpl) {\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTpl.template\"\n [ngTemplateOutletContext]=\"groupHeaderContext(item.group)\"\n ></ng-container>\n } @else {\n <span class=\"grid-group-row__label\">{{ groupRowLabel(item.group) }}</span>\n <span class=\"grid-group-row__count\">{{ groupRowCountLabel(item.group) }}</span>\n }\n </span>\n </button>\n @if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n } @else if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n\n <table\n class=\"grid-table grid-body grid-body--main mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"grid\"\n [attr.aria-rowcount]=\"ariaRowCount()\"\n [attr.aria-colcount]=\"ariaColCount()\"\n [attr.aria-readonly]=\"enableEdit || enableAdd ? 'false' : 'true'\"\n [attr.aria-label]=\"tableOptions?.caption || null\"\n >\n <colgroup\n ngbDatagridColgroup\n [grid]=\"gridHost\"\n [ngbSyncColgroup]=\"colgroupSyncId\"\n syncRole=\"body\"\n [syncMode]=\"resizable ? 'explicit' : 'auto'\"\n ></colgroup>\n\n <tbody\n [ngbDndList]=\"paged\"\n [dndDisabled]=\"!isRowReorderEnabled()\"\n (dndDropped)=\"onRowDrop($event)\"\n >\n @if (!hasRenderableRows()) {\n <tr class=\"ngb-grid__empty-row\">\n <td [attr.colspan]=\"ariaColCount()\" class=\"ngb-grid__empty text-center text-muted py-4\">\n {{ emptyStateLabel() }}\n </td>\n </tr>\n }\n\n @if (addingNew) {\n <tr\n ngbDatagridAddRow\n [grid]=\"gridHost\"\n [formGroup]=\"addForm\"\n ></tr>\n }\n\n @for (item of renderRows; track item.key) {\n @if (item.kind === 'group') {\n <tr\n class=\"grid-group-row\"\n [attr.data-group-key]=\"item.key\"\n [attr.data-group-level]=\"item.level\"\n >\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n @if (shouldRenderGroupCell(col, item.group)) {\n <td\n class=\"grid-group-row__cell\"\n [class.grid-group-row__cell--lead]=\"isGroupLeadColumn(col, item.group)\"\n [attr.colspan]=\"groupCellColspan(col, item.group)\"\n >\n @if (isGroupLeadColumn(col, item.group)) {\n <button\n type=\"button\"\n class=\"grid-group-row__toggle\"\n (click)=\"toggleGroupCollapsed(item.group, item.level, item.startIndex)\"\n [attr.aria-expanded]=\"!item.collapsed\"\n >\n <span\n class=\"bi\"\n [ngClass]=\"item.collapsed ? 'bi-chevron-right' : 'bi-chevron-down'\"\n aria-hidden=\"true\"\n ></span>\n <span class=\"grid-group-row__content\" [style.padding-inline-start.rem]=\"groupRowIndent(item.level)\">\n @if (groupHeaderTpl) {\n <ng-container\n [ngTemplateOutlet]=\"groupHeaderTpl.template\"\n [ngTemplateOutletContext]=\"groupHeaderContext(item.group)\"\n ></ng-container>\n } @else {\n <span class=\"grid-group-row__label\">{{ groupRowLabel(item.group) }}</span>\n <span class=\"grid-group-row__count\">{{ groupRowCountLabel(item.group) }}</span>\n }\n </span>\n </button>\n @if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n } @else if (groupHeaderColumnTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n } @else if (item.kind === 'group-footer') {\n <tr\n class=\"grid-group-footer-row\"\n [attr.data-group-key]=\"item.key\"\n [attr.data-group-level]=\"item.level\"\n >\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n <td class=\"grid-group-footer-row__cell\">\n @if (groupFooterTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n } @else {\n <tr\n class=\"grid-data-row\"\n ngbDatagridDataRow\n [grid]=\"gridHost\"\n [renderTick]=\"renderTick\"\n [row]=\"item.row\"\n [index]=\"item.pagedIndex\"\n [selected]=\"isRowSelected(item.row, item.pagedIndex)\"\n [ngbDndItem]=\"item.row\"\n [dndIndex]=\"item.pagedIndex\"\n [dndDisabled]=\"!isRowReorderEnabled()\"\n (click)=\"onRowSelect($event, item.pagedIndex); onRowClick($event, item.pagedIndex)\"\n [formGroup]=\"editForm\"\n [class.sticky-row]=\"isRowSticky(item.row, item.pagedIndex)\"\n [class.row-selected]=\"isRowSelected(item.row, item.pagedIndex)\"\n [class.row-highlight]=\"isRowHighlighted(item.row, item.pagedIndex)\"\n [class.grid-row--reorderable]=\"isRowReorderEnabled()\"\n [ngClass]=\"resolveRowClass(item.row, item.pagedIndex)\"\n [ngStyle]=\"resolveRowStyle(item.row, item.pagedIndex)\"\n [attr.aria-selected]=\"isRowSelected(item.row, item.pagedIndex) ? 'true' : null\"\n [style.top.px]=\"stickyTop(item.row, item.pagedIndex)\"\n [style.z-index]=\"isRowSticky(item.row, item.pagedIndex) ? 3 : null\"\n ></tr>\n\n @if (rowDetailTpl && isExpanded(item.pagedIndex)) {\n <tr\n ngbDatagridDetailRow\n [grid]=\"gridHost\"\n [row]=\"item.row\"\n [index]=\"item.pagedIndex\"\n [attr.id]=\"'dg-row-detail-' + item.pagedIndex\"\n ></tr>\n }\n }\n }\n </tbody>\n </table>\n\n @if (hasStickyGroupFooters()) {\n <div\n class=\"ngb-grid__group-sticky-layer ngb-grid__group-sticky-layer--bottom\"\n [style.transform]=\"'translateY(' + stickyGroupFooterTranslateY + 'px)'\"\n >\n <table\n class=\"grid-table grid-group-sticky-table mb-0\"\n [ngClass]=\"tableClassList\"\n [style.width.px]=\"tablePixelWidth\"\n role=\"presentation\"\n >\n <colgroup>\n @for (width of stickyGroupOverlayColumnWidths; track $index) {\n <col [style.width.px]=\"width || null\" />\n }\n </colgroup>\n <tbody>\n @for (item of stickyGroupFooterRows; track item.key) {\n <tr class=\"grid-group-footer-row grid-group-footer-row--overlay\">\n @if (showSelectionColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (rowDetailTpl) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @if (stickyRowsEnabled) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n @for (col of visibleColumns; track col.field) {\n <td class=\"grid-group-footer-row__cell\">\n @if (groupFooterTemplate(groupColumnField(col)); as tpl) {\n <div class=\"grid-group-row__column-slot\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"groupColumnContext(item.group, col)\"\n ></ng-container>\n </div>\n }\n </td>\n }\n @if (showActionsColumn()) {\n <td class=\"grid-group-row__utility-cell\"></td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n\n <table class=\"table grid-table grid-foot mb-0\" [style.width.px]=\"tablePixelWidth\">\n <colgroup>\n @for (col of visibleColumns; track col.field) {\n <col [style.width.px]=\"col?.width\" />\n }\n </colgroup>\n <tbody>\n <tr>\n <td [attr.colspan]=\"visibleColumns.length\" width=\"100%\">\n @if (paginationActive && pagerShowsAt('bottom')) {\n <ngb-datagrid-footer [grid]=\"gridHost\" placement=\"bottom\"></ngb-datagrid-footer>\n }\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n @if (externalEditOpen) {\n <ngb-datagrid-external-editor [grid]=\"gridHost\"></ngb-datagrid-external-editor>\n }\n\n @if (openFilterMenuField && openFilterMenuColumn && openFilterMenuAnchor) {\n <ngb-datagrid-filter-menu-panel\n [grid]=\"gridHost\"\n [col]=\"openFilterMenuColumn\"\n [anchor]=\"openFilterMenuAnchor\"\n />\n }\n\n @if (openRowFilterField && openRowFilterColumn && openRowFilterOperatorAnchor) {\n <ngb-datagrid-row-filter-operator-panel\n [grid]=\"gridHost\"\n [col]=\"openRowFilterColumn\"\n [anchor]=\"openRowFilterOperatorAnchor\"\n />\n }\n</div>\n", styles: ["@charset \"UTF-8\";[data-ngb-theme=bootstrap]{--ngb-select-icon: var(--_ngb-bootstrap-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--ngb-primary: var(--bs-primary, #0d6efd);--ngb-on-primary: #ffffff;--ngb-surface: var(--bs-body-bg, #ffffff);--ngb-surface-container: var(--bs-tertiary-bg, #f8f9fa);--ngb-surface-variant: var(--bs-secondary-bg, #e9ecef);--ngb-on-surface: var(--bs-body-color, #212529);--ngb-on-surface-variant: var(--bs-secondary-color, #6c757d);--ngb-border-color: var(--bs-border-color, #dee2e6);--ngb-primary-hover: var(--bs-link-hover-color, #0a58ca);--ngb-primary-container: var(--bs-primary-bg-subtle, #cfe2ff);--ngb-focus-ring: var(--bs-focus-ring-color, rgba(13, 110, 253, .25));--ngb-radius-sm: var(--bs-border-radius-sm, .25rem);--ngb-radius-md: var(--bs-border-radius, .375rem);--ngb-radius-lg: var(--bs-border-radius-lg, .5rem);--ngb-font-family: var(--bs-body-font-family, system-ui, sans-serif);--ngb-font-size-sm: .84rem;--ngb-density-row-height: 40px;--ngb-elevation-1: var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075));--ngb-elevation-2: var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15));--ngb-disabled-opacity: .45;--ngb-hover-bg: var(--bs-tertiary-bg, #f8f9fa);--ngb-selected-bg: var(--bs-primary-bg-subtle, #cfe2ff);--ngb-success: var(--bs-success, #198754);--ngb-on-success: #ffffff;--ngb-danger: var(--bs-danger, #dc3545);--ngb-on-danger: #ffffff;--ngb-space-1: .25rem;--ngb-space-2: .5rem;--ngb-space-3: .75rem;--ngb-space-4: 1rem}[data-bs-theme=light]{--_ngb-bootstrap-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}[data-bs-theme=dark]{--_ngb-bootstrap-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}[data-ngb-theme=material]{--ngb-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");--ngb-primary: var(--mat-sys-primary, #6750a4);--ngb-on-primary: var(--mat-sys-on-primary, #ffffff);--ngb-surface: var(--mat-sys-surface, #fffbfe);--ngb-surface-container: var(--mat-sys-surface-container, #f3edf7);--ngb-surface-variant: var(--mat-sys-surface-container-high, #ece6f0);--ngb-on-surface: var(--mat-sys-on-surface, #1d1b20);--ngb-on-surface-variant: var(--mat-sys-on-surface-variant, #49454f);--ngb-border-color: var(--mat-sys-outline-variant, #cac4d0);--ngb-primary-hover: color-mix(in srgb, var(--mat-sys-primary, #6750a4) 88%, var(--mat-sys-on-surface, #1d1b20));--ngb-primary-container: var(--mat-sys-primary-container, #eaddff);--ngb-focus-ring: var(--mat-sys-primary, #6750a4);--ngb-radius-sm: 4px;--ngb-radius-md: 12px;--ngb-radius-lg: 16px;--ngb-font-family: var(--mat-sys-body-medium-font, Roboto, Arial, sans-serif);--ngb-font-size-sm: var(--mat-sys-body-medium-size, .875rem);--ngb-density-row-height: 48px;--ngb-elevation-1: var(--mat-sys-level1, 0 1px 3px rgba(0, 0, 0, .2));--ngb-elevation-2: var(--mat-sys-level2, 0 2px 6px rgba(0, 0, 0, .2));--ngb-disabled-opacity: .38;--ngb-hover-bg: color-mix(in srgb, var(--mat-sys-on-surface, #1d1b20) 8%, var(--mat-sys-surface, #fffbfe));--ngb-selected-bg: var(--mat-sys-secondary-container, #e8def8);--ngb-success: #198754;--ngb-on-success: #ffffff;--ngb-danger: var(--mat-sys-error, #b3261e);--ngb-on-danger: var(--mat-sys-on-error, #ffffff);--ngb-space-1: .25rem;--ngb-space-2: .5rem;--ngb-space-3: .75rem;--ngb-space-4: 1rem}.ngb-grid,.ngb-datagrid-floating-panel{--dg-surface: #ffffff;--dg-surface-muted: #f9fafb;--dg-surface-subtle: #f3f4f6;--dg-surface-config: #edf4ff;--dg-surface-filter-row: #fffbeb;--dg-surface-sticky-row: #fefce8;--dg-border: #d7deea;--dg-border-strong: #cfd6e2;--dg-text: #1f2937;--dg-text-muted: #5b6578;--dg-text-subtle: #64748b;--dg-primary: #315efb;--dg-primary-hover: #2749c4;--dg-primary-active: #1d4ed8;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #bfdbfe;--dg-accent: #3b82f6;--dg-on-primary: #ffffff;--dg-placeholder: #94a3b8;--dg-success: #39a949;--dg-success-soft: #dcfce7;--dg-success-text: #166534;--dg-success-border-subtle: #bbf7d0;--dg-danger: #ef4444;--dg-danger-soft: #fee2e2;--dg-danger-text: #b91c1c;--dg-danger-border-subtle: #fecaca;--dg-warning-soft: #fef3c7;--dg-warning-border: #fde68a;--dg-warning-text: #854d0e;--dg-filter-multi-icon: #39a949;--dg-filter-multi-icon-soft: #dcfce7;--dg-neutral-pill-bg: #e2e8f0;--dg-locked-bg: #f8fafc;--dg-row-selected-bg: #eef5ff;--dg-row-hover-bg: #f8fbff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f8fbff;--dg-search-highlight-bg: #fef08a;--dg-sticky-border: #facc15;--dg-sticky-badge-bg: #fef08a;--dg-sticky-badge-text: #854d0e;--dg-dropdown-item-active-bg: var(--dg-primary-soft);--dg-dropdown-item-active-color: var(--dg-primary);--dg-focus-ring: #2563eb;--dg-focus-border: rgba(37, 99, 235, .45);--dg-focus-shadow: 0 0 0 .2rem rgba(37, 99, 235, .15);--dg-pin-shadow-start: 1px 0 0 rgba(15, 23, 42, .08);--dg-pin-shadow-end: -1px 0 0 rgba(15, 23, 42, .08);--dg-backdrop: rgba(15, 23, 42, .45);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: rgba(37, 99, 235, .18);--dg-filter-divider: rgba(219, 227, 239, .8);--dg-shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--dg-shadow-md: 0 8px 24px rgba(15, 23, 42, .12);--dg-radius-lg: .5rem;--dg-radius-md: .45rem;--dg-radius-sm: .35rem;--dg-control-height: 2.15rem;--dg-nav-height: 2.5rem;--dg-font-size-header: .92rem;--dg-font-size-cell: .84rem;--dg-font-size-label: .94rem;--dg-cell-padding-y: .75rem;--dg-cell-padding-x: .85rem;--dg-header-padding-y: .75rem;--dg-header-padding-x: .85rem;--dg-table-border-width: 1px;--dg-pager-surface: var(--dg-surface);--dg-pager-text: var(--dg-text-muted);--dg-pager-control-bg: var(--dg-surface);--dg-pager-control-hover-bg: var(--dg-surface-subtle);--dg-pager-control-border: var(--dg-border);--dg-pager-link-text: var(--dg-primary);--dg-pager-active-bg: var(--dg-primary);--dg-pager-active-border: var(--dg-primary);--dg-pager-active-text: var(--dg-on-primary);--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap],.ngb-datagrid-floating-panel[data-theme=bootstrap]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"))}.ngb-grid[data-theme=bootstrap-main],.ngb-datagrid-floating-panel[data-theme=bootstrap-main]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #f8fbff;--dg-surface-muted: #eaf3ff;--dg-surface-subtle: #d9eaff;--dg-surface-config: #e0efff;--dg-border: #bfd7f4;--dg-border-strong: #7fb0e3;--dg-text: #172554;--dg-text-muted: #45617f;--dg-primary: #1769e0;--dg-primary-hover: #0f56bd;--dg-primary-active: #0b438f;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #93c5fd;--dg-accent: #0f766e;--dg-row-selected-bg: #dcecff;--dg-row-hover-bg: #eef6ff;--dg-detail-row-bg: #edf6ff;--dg-dropdown-item-active-bg: #dcecff;--dg-dropdown-item-active-color: #0f56bd;--dg-focus-ring: #1769e0;--dg-focus-border: rgba(23, 105, 224, .48);--dg-focus-shadow: 0 0 0 .2rem rgba(23, 105, 224, .16)}.ngb-grid[data-theme=bootstrap-main-dark],.ngb-datagrid-floating-panel[data-theme=bootstrap-main-dark]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #172033;--dg-surface-muted: #202b42;--dg-surface-subtle: #273653;--dg-surface-config: #172a4f;--dg-surface-filter-row: #2c2714;--dg-surface-sticky-row: #2e2810;--dg-border: #33425f;--dg-border-strong: #4a5d80;--dg-text: #edf2ff;--dg-text-muted: #b8c3d9;--dg-text-subtle: #93a2bd;--dg-primary: #38bdf8;--dg-primary-hover: #7dd3fc;--dg-primary-active: #bae6fd;--dg-primary-soft: #12344f;--dg-primary-border-subtle: #0284c7;--dg-accent: #38bdf8;--dg-on-primary: #ffffff;--dg-placeholder: #93a2bd;--dg-locked-bg: #1e2a40;--dg-row-selected-bg: #153a67;--dg-row-hover-bg: #22304a;--dg-row-odd-bg: #172033;--dg-row-even-bg: #1b263a;--dg-detail-row-bg: #182d4c;--dg-dropdown-item-active-bg: #183b70;--dg-dropdown-item-active-color: #bfdbfe;--dg-focus-ring: #60a5fa;--dg-focus-border: rgba(96, 165, 250, .6);--dg-focus-shadow: 0 0 0 .2rem rgba(96, 165, 250, .2);--dg-shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--dg-shadow-md: 0 14px 32px rgba(0, 0, 0, .36);--dg-pager-surface: #111827;--dg-pager-text: #dbeafe;--dg-pager-control-bg: #172033;--dg-pager-control-hover-bg: #22304a;--dg-pager-control-border: #4a5d80;--dg-pager-link-text: #dbeafe;--dg-pager-active-bg: #38bdf8;--dg-pager-active-border: #38bdf8;--dg-pager-active-text: #0f172a;--dg-pager-select-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\")}.ngb-grid[data-theme=bootstrap-nordic],.ngb-datagrid-floating-panel[data-theme=bootstrap-nordic]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #ffffff;--dg-surface-muted: #f2f7f8;--dg-surface-subtle: #e6f0f2;--dg-surface-config: #e4f8fb;--dg-surface-filter-row: #fff7ed;--dg-border: #d5e4e7;--dg-border-strong: #a9c8cf;--dg-text: #263243;--dg-text-muted: #64748b;--dg-primary: #0ea5b7;--dg-primary-hover: #0b8798;--dg-primary-active: #0f6b7a;--dg-primary-soft: #d7f5f8;--dg-primary-border-subtle: #9be4ec;--dg-accent: #e85d75;--dg-row-selected-bg: #e7f8fb;--dg-row-hover-bg: #f0fbfd;--dg-row-odd-bg: transparent;--dg-row-even-bg: #fbfeff;--dg-detail-row-bg: #f4fbfc;--dg-dropdown-item-active-bg: #e7f8fb;--dg-dropdown-item-active-color: #0b8798;--dg-focus-ring: #0ea5b7;--dg-focus-border: rgba(14, 165, 183, .45);--dg-focus-shadow: 0 0 0 .2rem rgba(14, 165, 183, .15);--dg-font-size-cell: .88rem;--dg-cell-padding-y: .82rem;--dg-pager-surface: #f8ffff;--dg-pager-text: #526173;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #e7f8fb;--dg-pager-control-border: #b9dce2;--dg-pager-link-text: #0b8798;--dg-pager-active-bg: #0ea5b7;--dg-pager-active-border: #0ea5b7;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=bootstrap-urban],.ngb-datagrid-floating-panel[data-theme=bootstrap-urban]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #ffffff;--dg-surface-muted: #f5f8fa;--dg-surface-subtle: #edf4f7;--dg-surface-config: #e8f4f9;--dg-border: #d9e5ea;--dg-border-strong: #adc6d3;--dg-text: #263445;--dg-text-muted: #5f6f84;--dg-primary: #468faf;--dg-primary-hover: #36748f;--dg-primary-active: #285b72;--dg-primary-soft: #e0f0f6;--dg-primary-border-subtle: #b9dbe8;--dg-accent: #ff7f50;--dg-row-selected-bg: #e8f4f9;--dg-row-hover-bg: #fff2eb;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-dropdown-item-active-bg: #e8f4f9;--dg-dropdown-item-active-color: #36748f;--dg-focus-ring: #468faf;--dg-focus-border: rgba(70, 143, 175, .48);--dg-focus-shadow: 0 0 0 .2rem rgba(70, 143, 175, .16);--dg-cell-padding-y: .86rem;--dg-cell-padding-x: .95rem;--dg-pager-surface: #fffaf7;--dg-pager-text: #5f6f84;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #fff2eb;--dg-pager-control-border: #d4e1e7;--dg-pager-link-text: #36748f;--dg-pager-active-bg: #468faf;--dg-pager-active-border: #468faf;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=bootstrap-vintage],.ngb-datagrid-floating-panel[data-theme=bootstrap-vintage]{--dg-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-surface-muted: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-surface-subtle: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-surface-config: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-surface-filter-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-surface-sticky-row: var(--ngb-surface-container, var(--bs-warning-bg-subtle, #fff3cd));--dg-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-border-strong: var(--ngb-border-color, var(--bs-border-color-translucent, #ced4da));--dg-text: var(--ngb-on-surface, var(--bs-body-color, #212529));--dg-text-muted: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-text-subtle: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #6c757d));--dg-primary: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-primary-hover: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-active: var(--ngb-primary-hover, var(--bs-link-hover-color, #0a58ca));--dg-primary-soft: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-primary-border-subtle: var(--ngb-border-color, var(--bs-primary-border-subtle, #9ec5fe));--dg-accent: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-on-primary: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-placeholder: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-success: var(--ngb-success, var(--bs-success, #198754));--dg-success-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-success-text: var(--bs-success-text-emphasis, #0a3622);--dg-success-border-subtle: var(--bs-success-border-subtle, #a3cfbb);--dg-danger: var(--ngb-danger, var(--bs-danger, #dc3545));--dg-danger-soft: var(--bs-danger-bg-subtle, #f8d7da);--dg-danger-text: var(--bs-danger-text-emphasis, #58151c);--dg-danger-border-subtle: var(--bs-danger-border-subtle, #f1aeb5);--dg-warning-soft: var(--bs-warning-bg-subtle, #fff3cd);--dg-warning-border: var(--bs-warning-border-subtle, #ffe69c);--dg-warning-text: var(--bs-warning-text-emphasis, #664d03);--dg-filter-multi-icon: var(--ngb-success, var(--bs-success, #198754));--dg-filter-multi-icon-soft: var(--bs-success-bg-subtle, #d1e7dd);--dg-neutral-pill-bg: var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));--dg-locked-bg: var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));--dg-row-selected-bg: var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));--dg-row-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: var(--ngb-surface-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-search-highlight-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-border: var(--bs-warning-border-subtle, #ffe69c);--dg-sticky-badge-bg: var(--bs-warning-bg-subtle, #fff3cd);--dg-sticky-badge-text: var(--bs-warning-text-emphasis, #664d03);--dg-dropdown-item-active-bg: var(--ngb-primary-container, var(--bs-primary-bg-subtle, #cfe2ff));--dg-dropdown-item-active-color: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-focus-ring: var(--ngb-focus-ring, var(--bs-focus-ring-color, var(--bs-primary, #0d6efd)));--dg-focus-border: var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), .45));--dg-font-size-cell: var(--ngb-font-size-sm, .84rem);--dg-focus-shadow: 0 0 0 .25rem var(--ngb-focus-ring, rgba(var(--bs-primary-rgb, 13, 110, 253), var(--bs-focus-ring-opacity, .25)));--dg-pin-shadow-start: 1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-pin-shadow-end: -1px 0 0 var(--bs-border-color-translucent, rgba(0, 0, 0, .08));--dg-backdrop: rgba(var(--bs-emphasis-color-rgb, 33, 37, 41), .5);--dg-loading-overlay: color-mix(in srgb, var(--dg-surface) 55%, transparent);--dg-primary-selection-overlay: var(--ngb-selected-bg, rgba(var(--bs-primary-rgb, 13, 110, 253), .18));--dg-filter-divider: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0, 0, 0, .1)));--dg-shadow-sm: var(--ngb-elevation-1, var(--bs-box-shadow-sm, 0 .125rem .25rem rgba(0, 0, 0, .075)));--dg-shadow-md: var(--ngb-elevation-2, var(--bs-box-shadow, 0 .5rem 1rem rgba(0, 0, 0, .15)));--dg-radius-lg: var(--ngb-radius-lg, var(--bs-border-radius-lg, .5rem));--dg-radius-md: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--dg-radius-sm: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem));--dg-pager-surface: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-text: var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d));--dg-pager-control-bg: var(--ngb-surface, var(--bs-body-bg, #ffffff));--dg-pager-control-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--dg-pager-control-border: var(--ngb-border-color, var(--bs-border-color, #dee2e6));--dg-pager-link-text: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-bg: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-border: var(--ngb-primary, var(--bs-primary, #0d6efd));--dg-pager-active-text: var(--ngb-on-primary, var(--bs-btn-color, #fff));--dg-pager-select-icon: var(--ngb-select-icon, url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\"));--dg-surface: #fffdf8;--dg-surface-muted: #f6f0e7;--dg-surface-subtle: #eee4d8;--dg-surface-config: #f2e7ef;--dg-border: #dfd2c2;--dg-border-strong: #c8b8a5;--dg-text: #3d3440;--dg-text-muted: #766a72;--dg-primary: #7f4f68;--dg-primary-hover: #684057;--dg-primary-active: #523246;--dg-primary-soft: #efdde8;--dg-primary-border-subtle: #d8b9ca;--dg-accent: #88b0b7;--dg-row-selected-bg: #f1e4ec;--dg-row-hover-bg: #fbf1e5;--dg-row-odd-bg: #fffdf8;--dg-row-even-bg: #fbf7ef;--dg-detail-row-bg: #fbf6ef;--dg-dropdown-item-active-bg: #f1e4ec;--dg-dropdown-item-active-color: #684057;--dg-focus-ring: #7f4f68;--dg-focus-border: rgba(127, 79, 104, .5);--dg-focus-shadow: 0 0 0 .2rem rgba(127, 79, 104, .16);--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-pager-surface: #fffdf8;--dg-pager-text: #766a72;--dg-pager-control-bg: #fffaf2;--dg-pager-control-hover-bg: #fbf1e5;--dg-pager-control-border: #dfd2c2;--dg-pager-link-text: #684057;--dg-pager-active-bg: #7f4f68;--dg-pager-active-border: #7f4f68;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=material],.ngb-grid[data-theme=material-main],.ngb-datagrid-floating-panel[data-theme=material],.ngb-datagrid-floating-panel[data-theme=material-main]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0}.ngb-grid[data-theme=material-indigo],.ngb-datagrid-floating-panel[data-theme=material-indigo]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0;--dg-primary: #3f51b5;--dg-primary-hover: #303f9f;--dg-primary-active: #283593;--dg-primary-soft: #e8eaf6;--dg-primary-border-subtle: #c5cae9;--dg-dropdown-item-active-bg: #e8eaf6;--dg-dropdown-item-active-color: #303f9f;--dg-focus-ring: #3f51b5;--dg-focus-border: rgba(63, 81, 181, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(63, 81, 181, .16);--dg-row-hover-bg: #f0f2ff}.ngb-grid[data-theme=material-deep-purple],.ngb-datagrid-floating-panel[data-theme=material-deep-purple]{--dg-surface: #fffbfe;--dg-surface-muted: #f4eff4;--dg-surface-subtle: #e7e0ec;--dg-surface-config: #eaddff;--dg-border: #cac4d0;--dg-border-strong: #938f99;--dg-text: #1c1b1f;--dg-text-muted: #49454f;--dg-primary: #6750a4;--dg-primary-hover: #59468d;--dg-primary-active: #4f378b;--dg-primary-soft: #eaddff;--dg-primary-border-subtle: #d0bcff;--dg-accent: #7d5260;--dg-row-selected-bg: #eaddff;--dg-row-hover-bg: #f5efff;--dg-row-odd-bg: transparent;--dg-row-even-bg: transparent;--dg-detail-row-bg: #f7f2fa;--dg-dropdown-item-active-bg: #eaddff;--dg-dropdown-item-active-color: #4f378b;--dg-focus-ring: #6750a4;--dg-focus-border: rgba(103, 80, 164, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(103, 80, 164, .16);--dg-radius-lg: .75rem;--dg-radius-md: .65rem;--dg-radius-sm: .5rem;--dg-font-size-header: .78rem;--dg-font-size-cell: .86rem;--dg-cell-padding-y: .8rem;--dg-table-border-width: 0;--dg-pager-control-bg: #fffbfe;--dg-pager-control-hover-bg: #f4eff4;--dg-pager-control-border: #cac4d0;--dg-primary: #7e57c2;--dg-primary-hover: #673ab7;--dg-primary-active: #512da8;--dg-primary-soft: #ede7f6;--dg-primary-border-subtle: #d1c4e9;--dg-accent: #ff7043;--dg-row-selected-bg: #ede7f6;--dg-row-hover-bg: #f5edff;--dg-dropdown-item-active-bg: #ede7f6;--dg-dropdown-item-active-color: #512da8;--dg-focus-ring: #7e57c2;--dg-focus-border: rgba(126, 87, 194, .5);--dg-focus-shadow: 0 0 0 .18rem rgba(126, 87, 194, .16)}.ngb-grid[data-theme=tailwind],.ngb-grid[data-theme=tailwind-main],.ngb-datagrid-floating-panel[data-theme=tailwind],.ngb-datagrid-floating-panel[data-theme=tailwind-main]{--dg-surface: #ffffff;--dg-surface-muted: #f8fafc;--dg-surface-subtle: #f1f5f9;--dg-border: #cbd5e1;--dg-border-strong: #94a3b8;--dg-text: #0f172a;--dg-text-muted: #475569;--dg-primary: #2563eb;--dg-primary-hover: #1d4ed8;--dg-primary-active: #1e40af;--dg-primary-soft: #dbeafe;--dg-primary-border-subtle: #bfdbfe;--dg-dropdown-item-active-bg: #dbeafe;--dg-dropdown-item-active-color: #1d4ed8;--dg-focus-ring: #2563eb;--dg-focus-border: rgba(37, 99, 235, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(37, 99, 235, .16);--dg-row-hover-bg: #eff6ff;--dg-font-size-header: .75rem;--dg-font-size-cell: .85rem;--dg-cell-padding-y: .68rem;--dg-cell-padding-x: .8rem;--dg-table-border-width: 1px;--dg-pager-surface: #ffffff;--dg-pager-text: #475569;--dg-pager-control-bg: #ffffff;--dg-pager-control-hover-bg: #eff6ff;--dg-pager-control-border: #bfdbfe;--dg-pager-link-text: #1d4ed8;--dg-pager-active-bg: #2563eb;--dg-pager-active-border: #2563eb;--dg-pager-active-text: #ffffff}.ngb-grid[data-theme=tailwind-slate],.ngb-datagrid-floating-panel[data-theme=tailwind-slate]{--dg-surface: #f8fafc;--dg-surface-muted: #e2e8f0;--dg-surface-subtle: #cbd5e1;--dg-border: #cbd5e1;--dg-border-strong: #64748b;--dg-text: #0f172a;--dg-text-muted: #475569;--dg-primary: #475569;--dg-primary-hover: #334155;--dg-primary-active: #1e293b;--dg-primary-soft: #e2e8f0;--dg-primary-border-subtle: #94a3b8;--dg-dropdown-item-active-bg: #e2e8f0;--dg-dropdown-item-active-color: #334155;--dg-focus-ring: #475569;--dg-row-hover-bg: #e2e8f0;--dg-row-odd-bg: #f8fafc;--dg-row-even-bg: #f1f5f9;--dg-focus-border: rgba(71, 85, 105, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(71, 85, 105, .16)}.ngb-grid[data-theme=tailwind-emerald],.ngb-datagrid-floating-panel[data-theme=tailwind-emerald]{--dg-surface: #ffffff;--dg-surface-muted: #ecfdf5;--dg-surface-subtle: #d1fae5;--dg-border: #a7f3d0;--dg-border-strong: #34d399;--dg-text: #064e3b;--dg-text-muted: #047857;--dg-primary: #059669;--dg-primary-hover: #047857;--dg-primary-active: #065f46;--dg-primary-soft: #d1fae5;--dg-primary-border-subtle: #6ee7b7;--dg-dropdown-item-active-bg: #d1fae5;--dg-dropdown-item-active-color: #047857;--dg-focus-ring: #059669;--dg-focus-border: rgba(5, 150, 105, .48);--dg-focus-shadow: 0 0 0 .18rem rgba(5, 150, 105, .16)}.ngb-datagrid-floating-panel{font-family:var(--ngb-font-family, inherit);color:var(--dg-text)}.ngb-datagrid-floating-panel.grid-filter-menu-popover,.ngb-datagrid-floating-panel.dropdown-menu{position:fixed!important;z-index:1200;display:block;visibility:visible;opacity:1;pointer-events:auto;max-height:min(28rem,100vh - 1.5rem);overflow:auto;margin:0!important;border-radius:var(--dg-radius-md);border:1px solid var(--dg-border);background:var(--dg-surface);box-shadow:var(--dg-shadow-md)}.ngb-datagrid-floating-panel.dropdown-menu{min-width:12rem;padding:.35rem 0}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item{display:block;width:100%;padding:.5rem .85rem;border:0;background:transparent;font-size:.8125rem;font-weight:600;color:var(--dg-text);text-align:left}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel.grid-filter-operator-menu .dropdown-item.active{color:var(--dg-dropdown-item-active-color);background:var(--dg-dropdown-item-active-bg)}.ngb-datagrid-floating-panel.dropdown-menu .dropdown-item{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;color:var(--dg-text)}.ngb-datagrid-floating-panel.dropdown-menu .dropdown-item:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel.grid-filter-menu-popover{min-width:18rem;padding:0}.ngb-datagrid-floating-panel .grid-filter-menu-surface{display:block;min-width:18rem;padding:1rem;border-radius:var(--dg-radius-md);background:var(--dg-surface)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__header{margin-bottom:.875rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--dg-text-muted)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__title{margin-top:.15rem;font-size:.95rem;font-weight:700;color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-stack{display:flex;flex-direction:column;gap:.75rem}.ngb-datagrid-floating-panel .grid-filter-stack__label{font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-datagrid-floating-panel .grid-filter-stack--multi{gap:.65rem}.ngb-datagrid-floating-panel .grid-filter-condition{display:flex;flex-direction:column;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-operator-select,.ngb-grid .grid-filter-operator-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.875rem;color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-operator-select--compact,.ngb-grid .grid-filter-operator-select--compact{width:auto;min-width:2.25rem;max-width:2.5rem;padding:.35rem .25rem;font-size:0}.ngb-datagrid-floating-panel .grid-filter-logic-select,.ngb-grid .grid-filter-logic-select{display:flex;justify-content:center;margin:.15rem 0}.ngb-datagrid-floating-panel .grid-filter-logic-select select,.ngb-grid .grid-filter-logic-select select{width:auto;min-width:4.5rem;min-height:1.75rem;padding:.2rem 1.5rem .2rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.8125rem;font-weight:600;color:var(--dg-text);text-align:center}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions--split,.ngb-grid .grid-filter-menu-surface__actions--split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-apply--secondary,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary,.ngb-grid .grid-filter-apply--secondary,.ngb-grid .grid-filter-cancel--secondary{width:100%;border:1px solid var(--dg-border-strong);background:var(--dg-surface-muted);color:var(--dg-text);font-weight:600}.ngb-datagrid-floating-panel .grid-filter-apply--secondary:hover,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary:hover,.ngb-grid .grid-filter-apply--secondary:hover,.ngb-grid .grid-filter-cancel--secondary:hover{background:var(--dg-surface-subtle)}.ngb-datagrid-floating-panel .grid-filter-multi-panel,.ngb-grid .grid-filter-multi-panel{display:flex;flex-direction:column;gap:.5rem;min-width:16.5rem}.ngb-datagrid-floating-panel .grid-filter-join-select,.ngb-grid .grid-filter-join-select{display:inline-block;width:fit-content;max-width:100%;margin:.1rem 0}.ngb-datagrid-floating-panel .grid-filter-join-select__control,.ngb-grid .grid-filter-join-select__control{width:100%;min-height:1.75rem;padding:.2rem 1.25rem .2rem .5rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);font-size:.8125rem;font-weight:600;text-align:left}.ngb-datagrid-floating-panel .grid-filter-field{position:relative;width:100%;min-width:0}.ngb-datagrid-floating-panel .grid-filter-field--with-icon .grid-filter-control,.ngb-datagrid-floating-panel .grid-filter-field--with-icon .grid-filter-value-input{padding-right:2.25rem}.ngb-datagrid-floating-panel .grid-filter-field__icon{position:absolute;right:.8rem;top:50%;transform:translateY(-50%);color:var(--dg-placeholder);pointer-events:none}.ngb-datagrid-floating-panel .grid-filter-control,.ngb-datagrid-floating-panel .grid-filter-value-input,.ngb-datagrid-floating-panel .grid-filter-value-select,.ngb-grid .grid-filter-value-input,.ngb-grid .grid-filter-value-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface);color:var(--dg-text);font-size:.875rem}.ngb-datagrid-floating-panel .grid-filter-apply--secondary:disabled,.ngb-datagrid-floating-panel .grid-filter-cancel--secondary:disabled,.ngb-grid .grid-filter-apply--secondary:disabled,.ngb-grid .grid-filter-cancel--secondary:disabled{opacity:var(--ngb-disabled-opacity, .45);cursor:not-allowed}.ngb-datagrid-floating-panel .grid-filter-condition__join{margin:.15rem 0;font-size:.75rem;font-weight:700;color:var(--dg-text-muted);text-align:center}.ngb-datagrid-floating-panel .grid-filter-stack__footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.ngb-datagrid-floating-panel .grid-filter-operator__button{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;color:var(--dg-text-muted);border:1px solid var(--dg-border);border-radius:var(--dg-radius-sm);background:var(--dg-surface)}.ngb-datagrid-floating-panel .grid-filter-clear,.ngb-datagrid-floating-panel .grid-filter-apply,.ngb-datagrid-floating-panel .grid-filter-cancel{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;border-radius:var(--dg-radius-sm)}.ngb-datagrid-floating-panel .grid-filter-apply{border:1px solid var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-datagrid-floating-panel .grid-filter-cancel,.ngb-datagrid-floating-panel .grid-filter-clear{border:1px solid var(--dg-border-strong);background:var(--dg-surface);color:var(--dg-text)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--dg-border)}.ngb-datagrid-floating-panel .grid-filter-menu-surface__multi{display:flex;flex-direction:column;gap:.5rem;width:100%;min-width:16rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__search{border:1px solid var(--dg-border);border-radius:var(--dg-radius-md);min-height:2rem;padding:.4rem .65rem;font-size:.8125rem;width:100%}.ngb-datagrid-floating-panel .grid-multi-filter-list{max-height:11.5rem;overflow:auto;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border)}.ngb-datagrid-floating-panel .grid-multi-filter-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;padding:.45rem .75rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);cursor:pointer}.ngb-datagrid-floating-panel .grid-multi-filter-option__main{display:flex;align-items:center;gap:.5rem}.ngb-datagrid-floating-panel .grid-filter-menu-surface__actions--multi{justify-content:space-between}.ngb-datagrid-floating-panel[data-theme=bootstrap].dropdown-menu .dropdown-item{font-weight:400}.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-operator-select,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-value-input,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-value-select,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-menu-surface__search,.ngb-datagrid-floating-panel[data-theme=bootstrap] .grid-filter-join-select__control{border-radius:var(--ngb-radius-md, var(--bs-border-radius, var(--dg-radius-sm)))}ngb-datagrid{display:block}.ngb-grid{color:var(--dg-text);font-family:var(--ngb-font-family, inherit);--dg-group-sticky-row-height: 3rem}.ngb-grid.ngb-grid--compact{--dg-group-sticky-row-height: 2.5rem}.ngb-grid .table{margin-bottom:0}.ngb-grid .datagrid-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.ngb-grid .datagrid-toolbar__search{flex:1 1 20rem;min-width:16rem}.ngb-grid .datagrid-toolbar__search-label{display:block;margin-bottom:.35rem;font-size:.875rem;font-weight:500;color:var(--dg-text-muted)}.ngb-grid .datagrid-toolbar__search-shell{display:flex;align-items:center;gap:.625rem;min-height:calc(var(--dg-control-height) + 4px);padding:0 .875rem;border:1px solid var(--dg-border);border-radius:999px;background:var(--dg-surface);box-shadow:var(--dg-shadow-sm)}.ngb-grid .datagrid-toolbar__search-icon{color:var(--dg-text-muted)}.ngb-grid .datagrid-toolbar__search-input{flex:1 1 auto;width:100%;min-width:0;border:0;background:transparent;color:var(--dg-text);outline:none;font-size:.95rem;padding:.625rem 0}.ngb-grid .datagrid-toolbar__search-input::placeholder{color:var(--dg-placeholder)}.ngb-grid .datagrid-toolbar__actions{display:flex;align-items:center;justify-content:flex-end;gap:.625rem;flex-wrap:wrap}.ngb-grid .datagrid-toolbar__button,.ngb-grid .grid-row-action,.ngb-grid .grid-filter-apply,.ngb-grid .grid-filter-clear,.ngb-grid .grid-filter-cancel,.ngb-grid .grid-filter-operator__button,.ngb-grid .grid-filter-menu-trigger,.ngb-grid .grid-detail-toggle{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:var(--dg-control-height);border-radius:var(--dg-radius-md);border:1px solid var(--dg-border);background:var(--dg-surface);color:var(--dg-text);box-shadow:none;font:inherit;text-decoration:none;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease}.ngb-grid .datagrid-toolbar__button:hover,.ngb-grid .grid-row-action:hover,.ngb-grid .grid-filter-apply:hover,.ngb-grid .grid-filter-clear:hover,.ngb-grid .grid-filter-cancel:hover,.ngb-grid .grid-filter-operator__button:hover,.ngb-grid .grid-filter-menu-trigger:hover,.ngb-grid .grid-detail-toggle:hover{border-color:var(--dg-border-strong);background:var(--dg-surface-subtle);color:var(--dg-text);text-decoration:none}.ngb-grid .datagrid-toolbar__button:focus-visible,.ngb-grid .grid-row-action:focus-visible,.ngb-grid .grid-filter-apply:focus-visible,.ngb-grid .grid-filter-clear:focus-visible,.ngb-grid .grid-filter-cancel:focus-visible,.ngb-grid .grid-filter-operator__button:focus-visible,.ngb-grid .grid-filter-menu-trigger:focus-visible,.ngb-grid .grid-detail-toggle:focus-visible,.ngb-grid .grid-sort-button:focus-visible,.ngb-grid .grid-edit-control:focus-visible,.ngb-grid .grid-filter-control:focus-visible,.ngb-grid .datagrid-toolbar__search-input:focus-visible{outline:none;border-color:var(--dg-focus-border);box-shadow:var(--dg-focus-shadow)}.ngb-grid .datagrid-toolbar__button{padding:.625rem 1rem;font-size:.875rem;font-weight:400}.ngb-grid .datagrid-toolbar__button--primary{border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-grid .datagrid-toolbar__button--primary:hover{background:var(--dg-primary-hover);border-color:var(--dg-primary-hover);color:var(--dg-on-primary)}.ngb-grid .datagrid-toolbar__button--secondary{background:var(--dg-surface);color:var(--dg-text)}.ngb-grid .ngb-grid__group-panel{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;min-height:3.25rem;margin-bottom:.9rem;padding:.75rem .9rem;border:1px dashed var(--dg-border-strong);border-radius:var(--dg-radius-md);background:color-mix(in srgb,var(--dg-surface-muted) 72%,white);transition:border-color .12s ease,background-color .12s ease,box-shadow .12s ease}.ngb-grid .ngb-grid__group-panel--active{border-color:var(--dg-primary);background:color-mix(in srgb,var(--dg-primary-soft) 45%,white);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--dg-primary) 22%,transparent)}.ngb-grid .ngb-grid__group-panel--denied{border-color:var(--dg-danger, #dc3545);background:color-mix(in srgb,var(--dg-danger, #dc3545) 8%,var(--dg-surface))}.ngb-grid .ngb-grid__group-panel-label{font-size:.875rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .ngb-grid__group-chip-list{display:inline-flex;align-items:center;gap:.55rem;flex-wrap:wrap}.ngb-grid .ngb-grid__group-chip{display:inline-flex;align-items:center;gap:.25rem;border:1px solid color-mix(in srgb,var(--dg-primary) 26%,var(--dg-border));border-radius:999px;background:var(--dg-surface);box-shadow:var(--dg-shadow-sm)}.ngb-grid .ngb-grid__group-chip-button,.ngb-grid .ngb-grid__group-chip-remove{display:inline-flex;align-items:center;gap:.4rem;min-height:2rem;border:0;background:transparent;color:var(--dg-text)}.ngb-grid .ngb-grid__group-chip-button{padding:.35rem .55rem .35rem .8rem;font-size:.8125rem;font-weight:600}.ngb-grid .ngb-grid__group-chip-remove{padding:.35rem .75rem .35rem .15rem;color:var(--dg-text-muted)}.ngb-grid .ngb-grid__group-chip-button:hover,.ngb-grid .ngb-grid__group-chip-remove:hover{color:var(--dg-primary)}.ngb-grid .ngb-grid__group-chip-button:focus-visible,.ngb-grid .ngb-grid__group-chip-remove:focus-visible,.ngb-grid .grid-column-group-handle:focus-visible,.ngb-grid .grid-group-row__toggle:focus-visible{outline:none;box-shadow:var(--dg-focus-shadow);border-radius:999px}.ngb-grid .ngb-grid__group-chip-dir{font-size:.8rem;color:var(--dg-primary)}.ngb-grid .table-wrapper{position:relative;overflow-x:hidden;overflow-y:clip;border:var(--dg-table-border-width) solid var(--dg-border);border-radius:var(--dg-radius-lg);background:var(--dg-surface);box-shadow:var(--dg-shadow-sm);isolation:isolate}.ngb-grid .table-body-scroll{max-height:24rem;overflow-y:auto;overflow-x:auto;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border);scrollbar-gutter:stable both-edges;position:relative;z-index:0}.ngb-grid .ngb-grid__group-sticky-layer{position:absolute;inset-inline-start:0;z-index:35;min-width:100%;pointer-events:none}.ngb-grid .ngb-grid__group-sticky-layer--top,.ngb-grid .ngb-grid__group-sticky-layer--bottom{top:0}.ngb-grid .grid-group-sticky-table{min-width:100%;pointer-events:auto}.ngb-grid .grid-table{width:max-content;min-width:100%;table-layout:fixed;margin:0;border-collapse:separate;border-spacing:0}.ngb-grid.ngb-grid--resizable .grid-table{min-width:0;width:max-content}.ngb-grid.ngb-grid--resizable .grid-table th,.ngb-grid.ngb-grid--resizable .grid-table td{box-sizing:border-box}.ngb-grid .grid-header-shell{position:relative;z-index:20;overflow:hidden}.ngb-grid .grid-header{position:relative;z-index:20;overflow:visible}.ngb-grid .grid-header thead tr:first-child th:first-child{border-top-left-radius:var(--dg-radius-lg)}.ngb-grid .grid-header thead tr:first-child th:last-child{border-top-right-radius:var(--dg-radius-lg)}.ngb-grid .grid-header thead th{background:var(--dg-surface-muted);border-bottom:var(--dg-table-border-width) solid var(--dg-border);color:var(--dg-text);font-size:var(--dg-font-size-header);font-weight:600;text-transform:none;letter-spacing:.01em;overflow:visible}.ngb-grid .grid-table th,.ngb-grid .grid-table td{vertical-align:middle;border-bottom:var(--dg-table-border-width) solid var(--dg-border);padding:var(--dg-cell-padding-y) var(--dg-cell-padding-x);font-size:var(--dg-font-size-cell)}.ngb-grid .grid-table th{padding:var(--dg-header-padding-y) var(--dg-header-padding-x)}.ngb-grid .grid-table td{height:var(--ngb-density-row-height, auto);background:var(--dg-surface);color:var(--dg-text);font-weight:400}.ngb-grid .grid-table th{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-header .grid-table th{overflow:visible}.ngb-grid .grid-header thead tr:first-child th.grid-header__column--resizable{position:relative}.ngb-grid .grid-column-resize-handle{position:absolute;top:0;right:0;width:.45rem;height:100%;cursor:col-resize;touch-action:none;-webkit-user-select:none;user-select:none;z-index:3}.ngb-grid .grid-column-resize-handle:after{content:\"\";position:absolute;top:.35rem;bottom:.35rem;right:.1rem;width:2px;border-radius:1px;background:var(--dg-border-strong);opacity:0;transition:opacity .15s ease}.ngb-grid .grid-header__column--resizable:hover .grid-column-resize-handle:after,.ngb-grid .grid-column-resize-handle:focus-visible:after{opacity:1}body.ngb-datagrid-column-resizing{cursor:col-resize!important;-webkit-user-select:none;user-select:none}.ngb-grid.ngb-grid--column-reorderable .grid-header thead tr:first-child th.grid-header__column--reorderable{position:relative}.ngb-grid .grid-column-reorder-handle{flex:0 0 auto;margin-right:.15rem;padding:.1rem .18rem;border-radius:999px;color:var(--dg-text-muted);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;opacity:.82;line-height:1;font-size:.95rem}.ngb-grid .grid-header__column--reorderable:hover .grid-column-reorder-handle,.ngb-grid .grid-column-reorder-handle:focus-visible{opacity:1;background:color-mix(in srgb,var(--dg-accent) 12%,transparent)}.ngb-grid .grid-column-group-handle{flex:0 0 auto;padding:.15rem .25rem;border-radius:999px;color:var(--dg-text-muted);cursor:grab;-webkit-user-select:none;user-select:none;line-height:1;font-size:.9rem}.ngb-grid .grid-column-group-handle--active,.ngb-grid .grid-column-group-handle:hover{color:var(--dg-primary);background:color-mix(in srgb,var(--dg-primary-soft) 55%,transparent)}.ngb-grid .grid-header__column--drag-over{background:color-mix(in srgb,var(--dg-accent) 12%,transparent);box-shadow:inset 0 -2px 0 var(--dg-accent)}.ngb-grid .grid-header__cell{display:flex;align-items:center;justify-content:space-between;gap:.625rem;width:100%;overflow:visible}.ngb-grid .grid-sort-button{display:inline-flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%;padding:0;border:0;background:transparent;color:inherit;text-align:left}.ngb-grid .grid-sort-button__label{min-width:0;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-sort-button__indicator{flex:0 0 auto;font-size:.8rem;color:var(--dg-placeholder)}.ngb-grid .grid-sort-button__indicator--active{color:var(--dg-primary)}.ngb-grid .grid-filter-menu-host{position:relative;display:inline-flex;flex:0 0 auto;z-index:30}.ngb-grid .grid-filter-menu-popover:not(.ngb-datagrid-floating-panel){position:absolute;top:calc(100% + .5rem);right:0;z-index:120}.ngb-grid .grid-filter-menu-popover .grid-filter-menu-surface{position:static;top:auto;right:auto}.ngb-grid .grid-filter-menu-trigger{min-width:var(--dg-control-height);width:var(--dg-control-height);height:var(--dg-control-height);padding:0}.ngb-grid .grid-filter-menu-trigger--active,.ngb-grid .filter-menu-active .grid-filter-menu-trigger{border-color:var(--dg-focus-border);background:var(--dg-primary-soft);color:var(--dg-primary)}.ngb-grid .grid-filter-menu-trigger--check .bi{color:var(--dg-placeholder)}.ngb-grid .grid-filter-menu-trigger--check.grid-filter-menu-trigger--active,.ngb-grid .filter-menu-active .grid-filter-menu-trigger--check{border-color:var(--dg-focus-border);background:var(--dg-primary-soft);color:var(--dg-primary)}.ngb-grid .grid-filter-menu-trigger--check.grid-filter-menu-trigger--active .bi,.ngb-grid .filter-menu-active .grid-filter-menu-trigger--check .bi{color:var(--dg-primary)}.ngb-grid .grid-filter-menu-surface{position:absolute;top:calc(100% + .5rem);right:0;min-width:18rem;padding:1rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-md);background:var(--dg-surface);box-shadow:var(--dg-shadow-md);z-index:120}.ngb-grid .grid-filter-menu-surface__header{margin-bottom:.875rem}.ngb-grid .grid-filter-menu-surface__eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--dg-text-subtle)}.ngb-grid .grid-filter-menu-surface__title{margin-top:.15rem;font-size:.95rem;font-weight:700;color:var(--dg-text)}.ngb-grid .grid-filter-stack{display:flex;flex-direction:column;gap:.75rem}.ngb-grid .grid-filter-stack--multi{gap:.65rem}.ngb-grid .grid-filter-operator-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .375rem);background:var(--dg-surface);font-size:.875rem;color:var(--dg-text)}.ngb-grid .grid-filter-operator-select--compact{width:auto;min-width:2.25rem;max-width:3.5rem;padding:.35rem .25rem;font-size:.6875rem}.ngb-grid .grid-filter-logic-select{display:flex;justify-content:center;margin:.15rem 0}.ngb-grid .grid-filter-logic-select select{width:auto;min-width:4.5rem;min-height:1.75rem;padding:.2rem 1.5rem .2rem .65rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .375rem);background:var(--dg-surface);font-size:.8125rem;font-weight:600}.ngb-grid .grid-filter-menu-surface__actions--split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.ngb-grid .grid-filter-apply--secondary,.ngb-grid .grid-filter-cancel--secondary{width:100%;border:1px solid var(--dg-border-strong);background:var(--dg-surface-muted);color:var(--dg-text);font-weight:600}.ngb-grid .grid-filter-apply--secondary:hover,.ngb-grid .grid-filter-cancel--secondary:hover{background:var(--dg-surface-subtle)}.ngb-grid .grid-filter-multi-panel{display:flex;flex-direction:column;gap:.5rem;min-width:16.5rem}.ngb-grid .grid-filter-join-select{display:inline-block;width:fit-content;max-width:100%;margin:.1rem 0}.ngb-grid .grid-filter-join-select__control{width:100%;min-height:1.75rem;padding:.2rem 1.25rem .2rem .5rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .375rem);background:var(--dg-surface);font-size:.8125rem;font-weight:600;text-align:left}.ngb-grid .grid-filter-value-input,.ngb-grid .grid-filter-value-select{width:100%;min-height:var(--dg-control-height);padding:.45rem .65rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .375rem);background:var(--dg-surface);font-size:.875rem}.ngb-grid .grid-filter-apply--secondary:disabled,.ngb-grid .grid-filter-cancel--secondary:disabled{opacity:var(--ngb-disabled-opacity, .45);cursor:not-allowed}.ngb-grid .grid-group-row td,.ngb-grid .grid-group-footer-row td{background:color-mix(in srgb,var(--dg-surface-muted) 88%,white);border-bottom:1px solid var(--dg-border)}.ngb-grid .grid-group-row--overlay td{box-shadow:inset 0 -1px 0 var(--dg-border),0 1px color-mix(in srgb,var(--dg-border) 36%,transparent)}.ngb-grid .grid-group-footer-row--overlay td{box-shadow:inset 0 1px 0 var(--dg-border),0 -1px color-mix(in srgb,var(--dg-border) 36%,transparent)}.ngb-grid .grid-group-row__cell{padding:0;vertical-align:top}.ngb-grid .grid-group-footer-row__cell,.ngb-grid .grid-group-row__utility-cell{padding:.7rem .75rem;vertical-align:top}.ngb-grid .grid-group-row__toggle{display:flex;align-items:center;gap:.55rem;width:100%;padding:.7rem 1rem;border:0;background:transparent;color:var(--dg-text);text-align:left;font-size:.875rem;font-weight:600}.ngb-grid .grid-group-row__cell--lead .grid-group-row__toggle{padding-inline-end:.75rem}.ngb-grid .grid-group-row__toggle:hover{background:color-mix(in srgb,var(--dg-primary-soft) 34%,transparent)}.ngb-grid .grid-group-row__content{display:inline-flex;align-items:center;gap:.5rem;min-width:0}.ngb-grid .grid-group-row__label{color:var(--dg-text)}.ngb-grid .grid-group-row__count{font-size:.75rem;font-weight:700;color:var(--dg-text-muted)}.ngb-grid .grid-group-row__column-slot{padding:.25rem .75rem .75rem;font-size:.8125rem;color:var(--dg-text-muted)}.ngb-grid .grid-group-row__cell--lead .grid-group-row__column-slot{padding-inline-start:2.75rem}.ngb-grid .grid-group-footer-row td{background:color-mix(in srgb,var(--dg-surface-muted) 94%,white)}.ngb-grid .grid-filter-menu-popover .grid-filter-menu-surface:has(.grid-filter-menu-surface__multi){width:16.25rem;max-width:min(16.25rem,92vw);padding:.75rem}.ngb-grid .grid-filter-menu-surface__multi{display:flex;flex-direction:column;gap:.5rem;width:100%}.ngb-grid .grid-filter-menu-surface__multi .grid-filter-menu-surface__search{border-radius:.5rem;min-height:2rem;padding:.4rem .65rem;font-size:.8125rem}.ngb-grid .grid-multi-filter-list{max-height:11.5rem;overflow:auto;margin:0 -.75rem;padding:.15rem 0;border-top:1px solid var(--dg-border);border-bottom:1px solid var(--dg-border)}.ngb-grid .grid-multi-filter-option{display:flex;align-items:center;justify-content:space-between;gap:.75rem;width:100%;padding:.45rem .75rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);cursor:pointer}.ngb-grid .grid-multi-filter-option+.grid-multi-filter-option{border-top:1px solid var(--dg-filter-divider)}.ngb-grid .grid-multi-filter-option--summary{font-weight:700}.ngb-grid .grid-multi-filter-option__main{display:inline-flex;align-items:center;gap:.75rem;min-width:0}.ngb-grid .grid-multi-filter-option__main input{width:1rem;height:1rem;margin:0;accent-color:var(--dg-primary);flex:0 0 auto}.ngb-grid .grid-multi-filter-option__count{font-size:.75rem;font-weight:700;color:var(--dg-text-muted)}.ngb-grid .grid-filter-stack__label{font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-filter-stack__footer,.ngb-grid .grid-filter-menu-surface__actions{display:flex;align-items:center;justify-content:space-between;gap:.625rem}.ngb-grid .grid-filter-inline{display:flex;align-items:center;gap:.45rem;min-width:0;width:100%}.ngb-grid .grid-filter-field{position:relative;min-width:12rem;flex:1 1 auto}.ngb-grid .grid-filter-field--with-icon .grid-filter-control{padding-right:2.25rem}.ngb-grid .grid-filter-field__icon{position:absolute;right:.8rem;top:50%;transform:translateY(-50%);color:var(--dg-placeholder);pointer-events:none}.ngb-grid .grid-filter-control,.ngb-grid .grid-edit-control{width:100%;min-width:0;min-height:var(--dg-control-height);padding:.5rem .75rem;border:1px solid var(--dg-border);border-radius:var(--ngb-radius-md, .3rem);background:var(--dg-surface);color:var(--dg-text);font-size:.875rem}.ngb-grid .grid-edit-checkbox{width:1rem;height:1rem;margin-top:0}.ngb-grid .grid-filter-operator{position:relative;flex:0 0 auto}.ngb-grid .grid-filter-operator__button{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-filter-operator__button--compact{min-width:var(--dg-control-height);width:var(--dg-control-height);padding:0}.ngb-grid .grid-filter-operator__button--active{border-color:var(--dg-primary);color:var(--dg-primary)}.ngb-grid .grid-filter-operator .dropdown-menu:not(.ngb-datagrid-floating-panel){position:absolute;inset:calc(100% + .35rem) 0 auto auto;min-width:12rem;margin:0;border-radius:.9rem;border-color:var(--dg-border);box-shadow:var(--dg-shadow-md);z-index:120}.ngb-grid .grid-filter-clear{padding:.55rem .8rem;font-size:.8125rem;color:var(--dg-text-muted)}.ngb-grid .grid-filter-apply{padding:.625rem .95rem;border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary);font-size:.875rem;font-weight:600}.ngb-grid .grid-filter-apply:hover{border-color:var(--dg-primary-active);background:var(--dg-primary-active);color:var(--dg-on-primary)}.ngb-grid .grid-filter-menu-surface__actions--multi{justify-content:space-between;margin-top:.35rem}.ngb-grid .grid-filter-menu-surface__multi .grid-filter-apply{min-width:5.25rem;padding:.5rem 1.15rem;font-size:.8125rem}.ngb-grid .grid-filter-cancel{padding:.5rem .85rem;font-size:.8125rem;font-weight:600;color:var(--dg-text);border:1px solid var(--dg-border-strong);background:var(--dg-surface)}.ngb-grid .grid-filter-cancel:hover{border-color:var(--dg-border-strong);background:var(--dg-surface-subtle);color:var(--dg-text)}.ngb-grid .filter-row th{background:var(--dg-surface-filter-row);padding-top:.625rem;padding-bottom:.625rem;overflow:visible;position:relative;z-index:25}.ngb-grid.ngb-grid--menu-open .filter-row th{z-index:85}.ngb-grid .column-pinned-start,.ngb-grid .column-pinned-end{position:sticky;background:inherit;z-index:2}.ngb-grid .grid-header .column-pinned-start,.ngb-grid .grid-header .column-pinned-end{z-index:6}.ngb-grid .column-pinned-start{box-shadow:var(--dg-pin-shadow-start)}.ngb-grid .column-pinned-start:has(+.column-pinned-start){box-shadow:none}.ngb-grid .column-pinned-end{box-shadow:var(--dg-pin-shadow-end)}.ngb-grid .column-locked{background:var(--dg-locked-bg)}.ngb-grid .sticky-row,.ngb-grid .sticky-row td{background:var(--dg-surface-sticky-row);box-shadow:inset 0 0 0 1px var(--dg-sticky-border)}.ngb-grid .sticky-row{position:sticky;z-index:4}.ngb-grid .grid-sticky-badge{display:inline-flex;align-items:center;margin-left:.45rem;padding:.12rem .4rem;border-radius:.25rem;background:var(--dg-sticky-badge-bg);color:var(--dg-sticky-badge-text);font-size:.62rem;font-weight:800;letter-spacing:.04em;vertical-align:middle}.ngb-grid .grid-row-action--icon{min-width:2.05rem;width:2.05rem;height:2.05rem;min-height:2.05rem;padding:0;border-radius:var(--dg-radius-md)}.ngb-grid .grid-row-action--edit-icon{border-color:var(--dg-primary);background:var(--dg-primary);color:var(--dg-on-primary)}.ngb-grid .grid-row-action--edit-icon:hover{border-color:var(--dg-primary-hover);background:var(--dg-primary-hover);color:var(--dg-on-primary)}.ngb-grid.ngb-grid--zebra .grid-body tbody tr:nth-child(2n):not(.sticky-row):not(.row-selected) td{background:var(--dg-row-even-bg, var(--dg-surface-muted))}.ngb-grid:not(.ngb-grid--zebra) .grid-body tbody tr:nth-child(odd):not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-odd-bg)}.ngb-grid:not(.ngb-grid--zebra) .grid-body tbody tr:nth-child(2n):not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-even-bg)}.ngb-grid .grid-body tbody tr.grid-data-row:hover:not(.sticky-row):not(.row-selected):not(.row-highlight) td{background:var(--dg-row-hover-bg)}.ngb-grid .row-selected,.ngb-grid .row-selected td{background:var(--dg-row-selected-bg)}.ngb-grid .row-highlight,.ngb-grid .row-highlight td{background:var(--dg-warning-soft)}.ngb-grid .grid-header th.column-pinned-start,.ngb-grid .grid-header th.column-pinned-end,.ngb-grid .grid-body tbody td.column-pinned-start,.ngb-grid .grid-body tbody td.column-pinned-end{background:var(--dg-surface)}.ngb-grid .grid-header th.column-locked,.ngb-grid .grid-body tbody td.column-locked{background:var(--dg-locked-bg)!important}.ngb-grid .grid-body tbody tr.row-selected td.column-locked{background:var(--dg-row-selected-bg)!important}.ngb-grid .cell-highlight{background:var(--dg-primary-soft)}.ngb-grid .grid-search-highlight{padding:0;border-radius:.15rem;background:var(--dg-sticky-badge-bg);color:inherit;font-weight:inherit}.ngb-grid .grid-detail-toggle{min-width:2rem;width:2rem;height:2rem;padding:0;border-radius:999px}.ngb-grid .grid-cell-content{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis}.ngb-grid .grid-cell-content,.ngb-grid .grid-cell-text{font-weight:400}.ngb-grid .grid-cell--emphasis .grid-cell-content,.ngb-grid .grid-cell--emphasis .grid-cell-text{font-weight:700}.ngb-grid .grid-boolean-pill{display:inline-flex;align-items:center;justify-content:center;min-width:3.5rem;padding:.25rem .55rem;border-radius:999px;background:var(--dg-neutral-pill-bg);color:var(--dg-text-muted);font-size:.75rem;font-weight:700}.ngb-grid .grid-boolean-pill--true{background:var(--dg-success-soft);color:var(--dg-success-text)}.ngb-grid .grid-row-action{padding:.55rem .8rem;font-size:.8125rem;font-weight:600;white-space:nowrap}.ngb-grid .grid-actions-cell{overflow:visible;text-overflow:clip;white-space:normal}.ngb-grid .grid-actions-cell__inner{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;flex-wrap:nowrap}.ngb-grid .grid-row-action--secondary{color:var(--dg-primary);background:var(--dg-primary-soft);border-color:var(--dg-primary-border-subtle)}.ngb-grid .grid-row-action--danger{color:var(--dg-danger-text);background:var(--dg-danger-soft);border-color:var(--dg-danger-border-subtle)}.ngb-grid .grid-row-action--success{color:var(--dg-success-text);background:var(--dg-success-soft);border-color:var(--dg-success-border-subtle)}.ngb-grid .grid-row-action--neutral{color:var(--dg-text-muted);background:var(--dg-locked-bg);border-color:var(--dg-border)}.ngb-grid .grid-detail-row__cell{padding:0;background:var(--dg-detail-row-bg)}.ngb-grid .grid-detail-row__content{padding:1rem 1.25rem}.ngb-grid.ngb-grid--compact .grid-table th,.ngb-grid.ngb-grid--compact .grid-table td{padding:.55rem .65rem}.ngb-grid.ngb-grid--compact .datagrid-toolbar__button,.ngb-grid.ngb-grid--compact .grid-row-action,.ngb-grid.ngb-grid--compact .grid-filter-apply,.ngb-grid.ngb-grid--compact .grid-filter-clear,.ngb-grid.ngb-grid--compact .grid-filter-operator__button,.ngb-grid.ngb-grid--compact .grid-filter-menu-trigger,.ngb-grid.ngb-grid--compact .grid-detail-toggle,.ngb-grid.ngb-grid--compact .grid-filter-control,.ngb-grid.ngb-grid--compact .grid-edit-control{min-height:32px;font-size:.8125rem}.ngb-grid .grid-row--reorderable{cursor:grab}.ngb-grid .grid-row--reorderable.ngb-dnd-dragging{cursor:grabbing;opacity:.82}.ngb-grid .ngb-dnd-placeholder{display:table-row;background:transparent}.ngb-grid tbody.ngb-dnd-list,.ngb-grid tbody.ngb-dnd-list.ngb-dnd-over[data-drop-valid=true],.ngb-grid tbody.ngb-dnd-list.ngb-dnd-over[data-drop-valid=false]{border:0;border-radius:0;background:transparent;box-shadow:none}.ngb-grid .ngb-dnd-placeholder>td{padding:0;border:0;background:transparent}.ngb-grid .ngb-dnd-placeholder__bar{display:block;height:.35rem;background:var(--dg-primary-selection-overlay)}.ngb-grid.ngb-grid--stacked .grid-header-shell,.ngb-grid.ngb-grid--stacked .grid-header{display:none}.ngb-grid.ngb-grid--stacked .table-wrapper{width:100%}.ngb-grid.ngb-grid--stacked .table-body-scroll{width:100%;max-height:none;overflow:visible;border-top:0;border-bottom:0}.ngb-grid.ngb-grid--stacked .grid-table.grid-body{width:100%;min-width:0;max-width:100%;table-layout:auto}.ngb-grid.ngb-grid--stacked .grid-table.grid-body colgroup{display:none}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody{display:block;width:100%}.ngb-grid.ngb-grid--menu-open .grid-header-shell,.ngb-grid.ngb-grid--row-operator-open .grid-header-shell,.ngb-grid.ngb-grid--row-operator-open .filter-row th{overflow:visible}.ngb-grid.ngb-grid--menu-open .grid-header-shell,.ngb-grid.ngb-grid--menu-open .grid-header{z-index:80}.ngb-grid.ngb-grid--menu-open .grid-header thead th.filter-menu-open{position:relative;z-index:95;overflow:visible}.ngb-grid.ngb-grid--menu-open .grid-filter-menu-host{z-index:90}.ngb-grid__filter-menu-overlay{pointer-events:auto}.ngb-grid__layout-toolbar-host:empty{display:none}.ngb-grid__layout-toolbar-host:not(:empty){border-bottom:1px solid var(--dg-border)}.ngb-grid .table-wrapper{position:relative}.ngb-grid.ngb-grid--loading .table-wrapper{pointer-events:none}.ngb-grid.ngb-grid--loading .table-wrapper .grid-table{opacity:var(--ngb-disabled-opacity, .45)}.ngb-grid__loading-overlay{position:absolute;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;background:var(--dg-loading-overlay);pointer-events:none}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody tr{display:grid;width:100%;box-sizing:border-box;grid-template-columns:minmax(0,1fr);gap:.65rem;border-bottom:1px solid var(--dg-border);padding:.9rem 1rem}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody td{display:grid;width:100%;min-width:0;box-sizing:border-box;white-space:normal;border-bottom:0;padding:.35rem 0;position:static!important;left:auto!important;right:auto!important}.ngb-grid.ngb-grid--stacked .grid-table.grid-body tbody td:not([data-title]){grid-column:1/-1}.ngb-grid.ngb-grid--stacked:not(.ngb-grid--stacked-cards) .grid-table.grid-body tbody td[data-title]{grid-template-columns:minmax(5.5rem,34%) minmax(0,1fr);align-items:baseline;column-gap:.75rem}.ngb-grid.ngb-grid--stacked:not(.ngb-grid--stacked-cards) .grid-table.grid-body tbody td:before{content:attr(data-title);font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);line-height:1.3}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody tr{display:block;width:100%;padding:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody td.ngb-stacked-card-cell{display:block;width:100%;padding:.9rem 1rem;border-bottom:1px solid var(--dg-border)}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card,.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{width:100%;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem}@media(min-width:40rem){.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__layout{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);align-items:start;column-gap:1.5rem}}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__group{display:flex;flex-direction:column;gap:.85rem;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__field{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__label{font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);line-height:1.3}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .ngb-stacked-card__value{width:100%;min-width:0}.ngb-grid.ngb-grid--stacked.ngb-grid--stacked-cards .grid-table.grid-body tbody td:not([data-title]):not(.ngb-stacked-card-cell){display:block;width:100%;padding:.65rem 1rem 0;border-bottom:0}.ngb-grid[data-theme=material] .datagrid-toolbar__button--primary,.ngb-grid[data-theme=tailwind] .datagrid-toolbar__button--primary,.ngb-grid[data-theme=material] .grid-filter-apply,.ngb-grid[data-theme=tailwind] .grid-filter-apply{border-color:var(--dg-primary);background:var(--dg-primary)}.ngb-grid.ngb-responsive .table{width:100%}@media(max-width:992px){.ngb-grid .grid-filter-inline{min-width:11rem}.ngb-grid .grid-filter-field{min-width:10rem}}@media(max-width:768px){.ngb-grid .datagrid-toolbar{align-items:stretch}.ngb-grid .datagrid-toolbar__actions{justify-content:stretch}.ngb-grid .datagrid-toolbar__button{flex:1 1 auto}.ngb-grid .grid-filter-inline{width:100%}.ngb-grid.ngb-responsive thead{display:none}.ngb-grid.ngb-responsive tbody tr{display:grid;grid-template-columns:1fr;gap:.5rem;border:1px solid var(--dg-border);border-radius:.75rem;padding:.75rem;margin-bottom:.75rem}.ngb-grid.ngb-responsive tbody td{display:grid;grid-template-columns:8rem 1fr}.ngb-grid.ngb-responsive tbody td:before{content:attr(data-title);font-weight:600;opacity:.75;padding-right:.5rem}}.ngb-grid .datagrid-editing-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.75rem 1rem;border:1px solid var(--dg-border);border-bottom:0;border-radius:var(--dg-radius-lg) var(--dg-radius-lg) 0 0;background:var(--dg-surface)}.ngb-grid .datagrid-editing-toolbar__start,.ngb-grid .datagrid-editing-toolbar__end{display:inline-flex;align-items:center;gap:.5rem}.ngb-grid .datagrid-editing-toolbar__save[hidden],.ngb-grid .datagrid-editing-toolbar__cancel[hidden]{display:none!important}.ngb-grid .datagrid-editing-toolbar__hint{flex:1 1 auto;text-align:center;font-size:.875rem;font-weight:600;color:var(--dg-text-muted)}.ngb-grid .grid-cell--incell{cursor:cell}.ngb-grid .grid-cell--incell:not(.grid-cell--editing) .grid-cell-content,.ngb-grid .grid-cell--incell:not(.grid-cell--editing) .grid-cell-content *{pointer-events:none}.ngb-grid .grid-cell--editing .grid-edit-control{border-color:var(--dg-primary);box-shadow:var(--dg-focus-shadow)}.ngb-grid .grid-external-editor{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:1.5rem}.ngb-grid .grid-external-editor__backdrop{position:absolute;inset:0;border:0;background:var(--dg-backdrop);cursor:pointer}.ngb-grid .grid-external-editor__panel{position:relative;z-index:1;width:min(32rem,100%);max-height:min(90vh,40rem);overflow:auto;padding:1.25rem;border:1px solid var(--dg-border);border-radius:var(--dg-radius-lg);background:var(--dg-surface);box-shadow:var(--dg-shadow-md)}.ngb-grid .grid-external-editor__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.ngb-grid .grid-external-editor__title{margin:0;font-size:1.125rem;font-weight:700}.ngb-grid .grid-external-editor__close{border:0;background:transparent;color:var(--dg-text-muted);padding:.25rem;cursor:pointer}.ngb-grid .grid-external-editor__form{display:grid;gap:.85rem}.ngb-grid .grid-external-editor__field{display:grid;gap:.35rem}.ngb-grid .grid-external-editor__label{font-size:.8125rem;font-weight:700;color:var(--dg-text-muted);text-transform:uppercase;letter-spacing:.03em}.ngb-grid .grid-external-editor__error{font-size:.75rem;color:var(--dg-danger)}.ngb-grid .grid-external-editor__actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}.ngb-grid__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ngb-grid .grid-body td[role=gridcell]:focus-visible,.ngb-grid .grid-body td[role=gridcell].grid-cell--focused{outline:2px solid var(--dg-focus-ring);outline-offset:-2px}.ngb-grid--rtl .grid-column-reorder-handle{transform:scaleX(-1)}.ngb-grid--rtl .column-pinned-start{left:auto;right:var(--dg-pin-start, 0)}.ngb-grid--rtl .column-pinned-end{right:auto;left:var(--dg-pin-end, 0)}.ngb-grid .grid-footer{width:100%;color:var(--dg-pager-text)}.ngb-grid .grid-footer--top{margin-bottom:0;border-bottom:var(--dg-table-border-width) solid var(--dg-border)}.ngb-grid .grid-footer--custom{width:100%}\n"] }]
|
|
10580
10553
|
}], propDecorators: { columns: [{
|
|
10581
10554
|
type: Input
|
|
10582
10555
|
}], data: [{
|
|
@@ -13157,18 +13130,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
13157
13130
|
}] } });
|
|
13158
13131
|
|
|
13159
13132
|
const NGB_DATAGRID_THEME_OPTIONS = [
|
|
13160
|
-
{ value: 'bootstrap', label: 'Classic', group: 'Bootstrap', swatches: ['#ffffff', '#0d6efd', '#
|
|
13133
|
+
{ value: 'bootstrap', label: 'Classic', group: 'Bootstrap', swatches: ['var(--bs-body-bg, #ffffff)', 'var(--bs-primary, #0d6efd)', 'var(--bs-body-color, #212529)'] },
|
|
13161
13134
|
{ value: 'bootstrap-main', label: 'Ocean', group: 'Bootstrap', swatches: ['#f8fbff', '#1769e0', '#172554'] },
|
|
13162
|
-
{ value: 'bootstrap-main-dark', label: 'Midnight', group: 'Bootstrap', swatches: ['#
|
|
13163
|
-
{ value: 'bootstrap-nordic', label: 'Aqua Rose', group: 'Bootstrap', swatches: ['#
|
|
13164
|
-
{ value: 'bootstrap-urban', label: 'Clay', group: 'Bootstrap', swatches: ['#
|
|
13165
|
-
{ value: 'bootstrap-vintage', label: 'Sage', group: 'Bootstrap', swatches: ['#
|
|
13166
|
-
{ value: 'material-main', label: 'Orchid', group: 'Material', swatches: ['#fffbfe', '#
|
|
13167
|
-
{ value: 'material-indigo', label: 'Indigo', group: 'Material', swatches: ['#
|
|
13168
|
-
{ value: 'material-deep-purple', label: 'Plum', group: 'Material', swatches: ['#
|
|
13169
|
-
{ value: 'tailwind-main', label: 'Sky', group: 'Tailwind', swatches: ['#ffffff', '#
|
|
13170
|
-
{ value: 'tailwind-slate', label: 'Graphite', group: 'Tailwind', swatches: ['#f8fafc', '#
|
|
13171
|
-
{ value: 'tailwind-emerald', label: 'Mint', group: 'Tailwind', swatches: ['#
|
|
13135
|
+
{ value: 'bootstrap-main-dark', label: 'Midnight', group: 'Bootstrap', swatches: ['#172033', '#38bdf8', '#edf2ff'], dark: true },
|
|
13136
|
+
{ value: 'bootstrap-nordic', label: 'Aqua Rose', group: 'Bootstrap', swatches: ['#ffffff', '#0ea5b7', '#263243'] },
|
|
13137
|
+
{ value: 'bootstrap-urban', label: 'Clay', group: 'Bootstrap', swatches: ['#ffffff', '#468faf', '#263445'] },
|
|
13138
|
+
{ value: 'bootstrap-vintage', label: 'Sage', group: 'Bootstrap', swatches: ['#fffdf8', '#7f4f68', '#3d3440'] },
|
|
13139
|
+
{ value: 'material-main', label: 'Orchid', group: 'Material', swatches: ['#fffbfe', '#6750a4', '#1c1b1f'] },
|
|
13140
|
+
{ value: 'material-indigo', label: 'Indigo', group: 'Material', swatches: ['#fffbfe', '#3f51b5', '#1c1b1f'] },
|
|
13141
|
+
{ value: 'material-deep-purple', label: 'Plum', group: 'Material', swatches: ['#fffbfe', '#7e57c2', '#1c1b1f'] },
|
|
13142
|
+
{ value: 'tailwind-main', label: 'Sky', group: 'Tailwind', swatches: ['#ffffff', '#2563eb', '#0f172a'] },
|
|
13143
|
+
{ value: 'tailwind-slate', label: 'Graphite', group: 'Tailwind', swatches: ['#f8fafc', '#475569', '#0f172a'] },
|
|
13144
|
+
{ value: 'tailwind-emerald', label: 'Mint', group: 'Tailwind', swatches: ['#ffffff', '#059669', '#064e3b'] },
|
|
13172
13145
|
];
|
|
13173
13146
|
|
|
13174
13147
|
class NgbDatagridThemePickerComponent {
|
|
@@ -13238,7 +13211,7 @@ class NgbDatagridThemePickerComponent {
|
|
|
13238
13211
|
(click)="toggle()"
|
|
13239
13212
|
>
|
|
13240
13213
|
<span class="ngb-datagrid-theme-picker__swatches" aria-hidden="true">
|
|
13241
|
-
@for (color of selectedTheme.swatches; track
|
|
13214
|
+
@for (color of selectedTheme.swatches; track $index) {
|
|
13242
13215
|
<span
|
|
13243
13216
|
class="ngb-datagrid-theme-picker__swatch"
|
|
13244
13217
|
[style.background]="color"
|
|
@@ -13263,7 +13236,7 @@ class NgbDatagridThemePickerComponent {
|
|
|
13263
13236
|
(click)="select(theme)"
|
|
13264
13237
|
>
|
|
13265
13238
|
<span class="ngb-datagrid-theme-picker__swatches" aria-hidden="true">
|
|
13266
|
-
@for (color of theme.swatches; track
|
|
13239
|
+
@for (color of theme.swatches; track $index) {
|
|
13267
13240
|
<span
|
|
13268
13241
|
class="ngb-datagrid-theme-picker__swatch"
|
|
13269
13242
|
[style.background]="color"
|
|
@@ -13300,7 +13273,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
13300
13273
|
(click)="toggle()"
|
|
13301
13274
|
>
|
|
13302
13275
|
<span class="ngb-datagrid-theme-picker__swatches" aria-hidden="true">
|
|
13303
|
-
@for (color of selectedTheme.swatches; track
|
|
13276
|
+
@for (color of selectedTheme.swatches; track $index) {
|
|
13304
13277
|
<span
|
|
13305
13278
|
class="ngb-datagrid-theme-picker__swatch"
|
|
13306
13279
|
[style.background]="color"
|
|
@@ -13325,7 +13298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
13325
13298
|
(click)="select(theme)"
|
|
13326
13299
|
>
|
|
13327
13300
|
<span class="ngb-datagrid-theme-picker__swatches" aria-hidden="true">
|
|
13328
|
-
@for (color of theme.swatches; track
|
|
13301
|
+
@for (color of theme.swatches; track $index) {
|
|
13329
13302
|
<span
|
|
13330
13303
|
class="ngb-datagrid-theme-picker__swatch"
|
|
13331
13304
|
[style.background]="color"
|
|
@@ -13360,6 +13333,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
13360
13333
|
args: ['keydown.escape']
|
|
13361
13334
|
}] } });
|
|
13362
13335
|
|
|
13336
|
+
class NgbGridHighlightDirective {
|
|
13337
|
+
grid;
|
|
13338
|
+
rowKey;
|
|
13339
|
+
highlightColumnIndex;
|
|
13340
|
+
highlightedIndex = [];
|
|
13341
|
+
constructor(grid) {
|
|
13342
|
+
this.grid = grid;
|
|
13343
|
+
}
|
|
13344
|
+
ngOnInit() {
|
|
13345
|
+
this.apply();
|
|
13346
|
+
}
|
|
13347
|
+
ngOnChanges(_ch) {
|
|
13348
|
+
this.apply();
|
|
13349
|
+
}
|
|
13350
|
+
apply() {
|
|
13351
|
+
if (!this.grid)
|
|
13352
|
+
return;
|
|
13353
|
+
this.grid.highlightRowKey = this.rowKey ?? null;
|
|
13354
|
+
this.grid.highlightColKey = this.highlightColumnIndex ?? null;
|
|
13355
|
+
this.grid.highlightedIndex = this.highlightedIndex ?? [];
|
|
13356
|
+
this.grid.updateHighlightCache();
|
|
13357
|
+
}
|
|
13358
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbGridHighlightDirective, deps: [{ token: Datagrid, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
13359
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: NgbGridHighlightDirective, isStandalone: true, selector: "[ngbGridHighlight]", inputs: { rowKey: ["ngbGridHighlight", "rowKey"], highlightColumnIndex: "highlightColumnIndex", highlightedIndex: "highlightedIndex" }, usesOnChanges: true, ngImport: i0 });
|
|
13360
|
+
}
|
|
13361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbGridHighlightDirective, decorators: [{
|
|
13362
|
+
type: Directive,
|
|
13363
|
+
args: [{
|
|
13364
|
+
selector: '[ngbGridHighlight]',
|
|
13365
|
+
standalone: true
|
|
13366
|
+
}]
|
|
13367
|
+
}], ctorParameters: () => [{ type: Datagrid, decorators: [{
|
|
13368
|
+
type: Optional
|
|
13369
|
+
}] }], propDecorators: { rowKey: [{
|
|
13370
|
+
type: Input,
|
|
13371
|
+
args: ['ngbGridHighlight']
|
|
13372
|
+
}], highlightColumnIndex: [{
|
|
13373
|
+
type: Input
|
|
13374
|
+
}], highlightedIndex: [{
|
|
13375
|
+
type: Input
|
|
13376
|
+
}] } });
|
|
13377
|
+
|
|
13363
13378
|
class NgbDndHandleDirective {
|
|
13364
13379
|
item;
|
|
13365
13380
|
constructor(item) {
|
|
@@ -13419,13 +13434,13 @@ class NgbJsonPreviewComponent {
|
|
|
13419
13434
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbJsonPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13420
13435
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: NgbJsonPreviewComponent, isStandalone: true, selector: "ngb-json-preview", inputs: { value: "value", indent: "indent", fallback: "fallback", maxHeight: "maxHeight" }, ngImport: i0, template: `
|
|
13421
13436
|
<pre class="ngb-json-preview" [style.max-height.px]="maxHeight"><code>{{ formattedJson }}</code></pre>
|
|
13422
|
-
`, isInline: true, styles: [":host{display:block}.ngb-json-preview{margin:0;overflow:auto;padding
|
|
13437
|
+
`, isInline: true, styles: [":host{display:block}.ngb-json-preview{margin:0;overflow:auto;padding:var(--ngb-space-3, .75rem) var(--ngb-space-4, 1rem);border:0;background:var(--ngb-surface, var(--bs-body-bg, #fff));color:var(--ngb-on-surface, var(--bs-body-color, #212529));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:var(--ngb-font-size-sm, .875rem);line-height:1.4;white-space:pre}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13423
13438
|
}
|
|
13424
13439
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbJsonPreviewComponent, decorators: [{
|
|
13425
13440
|
type: Component,
|
|
13426
13441
|
args: [{ selector: 'ngb-json-preview', standalone: true, template: `
|
|
13427
13442
|
<pre class="ngb-json-preview" [style.max-height.px]="maxHeight"><code>{{ formattedJson }}</code></pre>
|
|
13428
|
-
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.ngb-json-preview{margin:0;overflow:auto;padding
|
|
13443
|
+
`, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.ngb-json-preview{margin:0;overflow:auto;padding:var(--ngb-space-3, .75rem) var(--ngb-space-4, 1rem);border:0;background:var(--ngb-surface, var(--bs-body-bg, #fff));color:var(--ngb-on-surface, var(--bs-body-color, #212529));font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:var(--ngb-font-size-sm, .875rem);line-height:1.4;white-space:pre}\n"] }]
|
|
13429
13444
|
}], propDecorators: { value: [{
|
|
13430
13445
|
type: Input
|
|
13431
13446
|
}], indent: [{
|
|
@@ -13641,11 +13656,11 @@ class NgbStepperComponent {
|
|
|
13641
13656
|
});
|
|
13642
13657
|
}
|
|
13643
13658
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13644
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NgbStepperComponent, isStandalone: true, selector: "ngb-stepper", inputs: { steps: "steps", orientation: "orientation", labelPosition: "labelPosition", contentPosition: "contentPosition", allowRevisit: "allowRevisit", lazy: "lazy", theme: "theme", responsive: "responsive", disableAnimation: "disableAnimation", animationDuration: "animationDuration", nextLabel: "nextLabel", previousLabel: "previousLabel", resetLabel: "resetLabel", cancelLabel: "cancelLabel", optionalLabel: "optionalLabel", stateIcons: "stateIcons", selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange", selectionChange: "selectionChange", nextClicked: "nextClicked", prevClicked: "prevClicked", resetClicked: "resetClicked", cancelClicked: "cancelClicked" }, queries: [{ propertyName: "stepLabelTplDir", first: true, predicate: NgbStepLabelDirective, descendants: true }, { propertyName: "customIconTpl", first: true, predicate: ["ngbStepperIcon"], descendants: true, read: TemplateRef }, { propertyName: "stepContentTpl", first: true, predicate: ["stepContent"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div\n class=\"ngb-stepper\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.ngb-responsive]=\"responsive\"\n [class.bootstrap]=\"theme === 'bootstrap'\"\n [class.material]=\"theme === 'material'\"\n [class.tailwind]=\"theme === 'tailwind'\"\n role=\"tablist\"\n [attr.aria-orientation]=\"orientation\"\n>\n <!-- HEADER / LABELS -->\n <div class=\"ngb-stepper-header\">\n <ol class=\"ngb-stepper-steps\" role=\"presentation\">\n @for (step of steps; track step; let i = $index) {\n <li\n class=\"ngb-stepper-step\"\n [class.active]=\"i === selectedIndex\"\n [class.done]=\"i < selectedIndex && !isStepInError(i)\"\n [class.error]=\"isStepInError(i)\"\n [class.disabled]=\"step.disabled\"\n role=\"tab\"\n [attr.id]=\"stepId(i)\"\n [attr.aria-controls]=\"contentId(i)\"\n [attr.aria-selected]=\"i === selectedIndex\"\n [attr.aria-disabled]=\"step.disabled || (!allowRevisit && i < visitedFrom && i !== selectedIndex)\"\n tabindex=\"{{ i === selectedIndex ? 0 : -1 }}\"\n (click)=\"onHeaderClick(i)\"\n (keydown.enter)=\"onHeaderKeydown($event, i)\"\n (keydown.space)=\"onHeaderKeydown($event, i)\"\n >\n <div\n class=\"ngb-stepper-indicator\"\n [ngClass]=\"indicatorClass(i)\"\n aria-hidden=\"true\"\n >\n @if (customIconTpl) {\n <ng-container\n [ngTemplateOutlet]=\"customIconTpl\"\n [ngTemplateOutletContext]=\"{ index: i, state: stepState(i) }\"\n ></ng-container>\n } @else {\n {{ defaultIconForState(stepState(i), i) }}\n }\n </div>\n\n <div\n class=\"ngb-stepper-label-container\"\n [ngClass]=\"labelPositionClass\"\n >\n @if (stepLabelTpl) {\n <div class=\"ngb-stepper-label\">\n <ng-container\n [ngTemplateOutlet]=\"stepLabelTpl\"\n [ngTemplateOutletContext]=\"{ index: i, step: step }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ngb-stepper-label-text\">\n {{ step.label || ('Step ' + (i + 1)) }}\n </div>\n }\n @if (step.optional) {\n <div class=\"ngb-stepper-optional\">\n {{ optionalLabel }}\n </div>\n }\n </div>\n </li>\n }\n </ol>\n </div>\n\n <!-- CONTENT -->\n <div class=\"ngb-stepper-content\" [class.ngb-stepper-content-top]=\"contentPosition === 'top'\">\n @if (lazy) {\n <div\n class=\"fade-step\"\n [style.--ngb-stepper-animation-duration]=\"(disableAnimation ? 0 : animationDuration) + 'ms'\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"stepId(selectedIndex)\"\n [attr.id]=\"contentId(selectedIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"stepContentTpl; context: { index: selectedIndex }\"></ng-container>\n @if (currentErrorMessage) {\n <div class=\"ngb-stepper-error\" role=\"alert\">\n {{ currentErrorMessage }}\n </div>\n }\n </div>\n } @else {\n <div\n class=\"fade-step\"\n [style.--ngb-stepper-animation-duration]=\"(disableAnimation ? 0 : animationDuration) + 'ms'\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"stepId(selectedIndex)\"\n [attr.id]=\"contentId(selectedIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"stepContentTpl; context: { index: selectedIndex }\"></ng-container>\n @if (currentErrorMessage) {\n <div class=\"ngb-stepper-error\" role=\"alert\">\n {{ currentErrorMessage }}\n </div>\n }\n </div>\n }\n </div>\n\n <!-- ACTIONS -->\n <div class=\"ngb-stepper-buttons\">\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"onCancel()\"\n >\n {{ cancelLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"onReset()\"\n >\n {{ resetLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"prev()\"\n [disabled]=\"selectedIndex <= 0 || !allowRevisit\"\n >\n {{ previousLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-primary\"\n (click)=\"next()\"\n [disabled]=\"selectedIndex >= steps.length - 1 || steps[selectedIndex]?.disabled\"\n >\n {{ nextLabel }}\n </button>\n </div>\n</div>\n", styles: [".ngb-stepper{display:flex;flex-direction:column}.ngb-stepper.horizontal .ngb-stepper-header{display:flex;overflow-x:auto}.ngb-stepper.vertical .ngb-stepper-header{display:block}.ngb-stepper-header{margin-bottom:1rem}.ngb-stepper-steps{list-style:none;padding:0;margin:0;display:flex;flex-wrap:nowrap}.ngb-stepper.vertical .ngb-stepper-steps{flex-direction:column}.ngb-stepper-step{position:relative;display:flex;align-items:center;cursor:pointer}.ngb-stepper.horizontal .ngb-stepper-step{padding:.5rem .75rem}.ngb-stepper.vertical .ngb-stepper-step{padding:.5rem 0}.ngb-stepper-step.disabled{cursor:default;opacity:.6}.ngb-stepper-indicator{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;margin-right:.5rem;flex-shrink:0}.ngb-stepper.bootstrap .ngb-stepper-indicator{border:1px solid var(--bs-border-color, #dee2e6);background-color:var(--bs-body-bg, #fff)}.ngb-stepper.bootstrap .ngb-stepper-step.active .ngb-stepper-indicator{background-color:var(--bs-primary, #0d6efd);color:#fff}.ngb-stepper.bootstrap .ngb-stepper-step.done .ngb-stepper-indicator{background-color:var(--bs-success, #198754);color:#fff}.ngb-stepper.bootstrap .ngb-stepper-step.error .ngb-stepper-indicator{background-color:var(--bs-danger, #dc3545);color:#fff}.ngb-stepper-label-container{display:flex;flex-direction:column}.ngb-stepper-label-top{flex-direction:column-reverse}.ngb-stepper-label-bottom{flex-direction:column}.ngb-stepper-label-left{flex-direction:row-reverse}.ngb-stepper-label-right{flex-direction:row}.ngb-stepper-content{position:relative}.ngb-stepper-content-top{order:-1}.ngb-stepper-buttons{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.ngb-stepper-error{color:var(--bs-danger, #dc3545);font-size:.875rem;margin-top:.25rem}.ngb-stepper-optional{font-size:.75rem;opacity:.7}.ngb-stepper .fade-step{animation:ngb-stepper-fade var(--ngb-stepper-animation-duration, .15s) ease-in-out;animation-fill-mode:both}@keyframes ngb-stepper-fade{0%{opacity:0;transform:translateY(.35rem)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13659
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NgbStepperComponent, isStandalone: true, selector: "ngb-stepper", inputs: { steps: "steps", orientation: "orientation", labelPosition: "labelPosition", contentPosition: "contentPosition", allowRevisit: "allowRevisit", lazy: "lazy", theme: "theme", responsive: "responsive", disableAnimation: "disableAnimation", animationDuration: "animationDuration", nextLabel: "nextLabel", previousLabel: "previousLabel", resetLabel: "resetLabel", cancelLabel: "cancelLabel", optionalLabel: "optionalLabel", stateIcons: "stateIcons", selectedIndex: "selectedIndex" }, outputs: { selectedIndexChange: "selectedIndexChange", selectionChange: "selectionChange", nextClicked: "nextClicked", prevClicked: "prevClicked", resetClicked: "resetClicked", cancelClicked: "cancelClicked" }, queries: [{ propertyName: "stepLabelTplDir", first: true, predicate: NgbStepLabelDirective, descendants: true }, { propertyName: "customIconTpl", first: true, predicate: ["ngbStepperIcon"], descendants: true, read: TemplateRef }, { propertyName: "stepContentTpl", first: true, predicate: ["stepContent"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div\n class=\"ngb-stepper\"\n [attr.data-ngb-theme]=\"theme === 'bootstrap' ? null : theme\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.ngb-responsive]=\"responsive\"\n [class.bootstrap]=\"theme === 'bootstrap'\"\n [class.material]=\"theme === 'material'\"\n [class.tailwind]=\"theme === 'tailwind'\"\n role=\"tablist\"\n [attr.aria-orientation]=\"orientation\"\n>\n <!-- HEADER / LABELS -->\n <div class=\"ngb-stepper-header\">\n <ol class=\"ngb-stepper-steps\" role=\"presentation\">\n @for (step of steps; track step; let i = $index) {\n <li\n class=\"ngb-stepper-step\"\n [class.active]=\"i === selectedIndex\"\n [class.done]=\"i < selectedIndex && !isStepInError(i)\"\n [class.error]=\"isStepInError(i)\"\n [class.disabled]=\"step.disabled\"\n role=\"tab\"\n [attr.id]=\"stepId(i)\"\n [attr.aria-controls]=\"contentId(i)\"\n [attr.aria-selected]=\"i === selectedIndex\"\n [attr.aria-disabled]=\"step.disabled || (!allowRevisit && i < visitedFrom && i !== selectedIndex)\"\n tabindex=\"{{ i === selectedIndex ? 0 : -1 }}\"\n (click)=\"onHeaderClick(i)\"\n (keydown.enter)=\"onHeaderKeydown($event, i)\"\n (keydown.space)=\"onHeaderKeydown($event, i)\"\n >\n <div\n class=\"ngb-stepper-indicator\"\n [ngClass]=\"indicatorClass(i)\"\n aria-hidden=\"true\"\n >\n @if (customIconTpl) {\n <ng-container\n [ngTemplateOutlet]=\"customIconTpl\"\n [ngTemplateOutletContext]=\"{ index: i, state: stepState(i) }\"\n ></ng-container>\n } @else {\n {{ defaultIconForState(stepState(i), i) }}\n }\n </div>\n\n <div\n class=\"ngb-stepper-label-container\"\n [ngClass]=\"labelPositionClass\"\n >\n @if (stepLabelTpl) {\n <div class=\"ngb-stepper-label\">\n <ng-container\n [ngTemplateOutlet]=\"stepLabelTpl\"\n [ngTemplateOutletContext]=\"{ index: i, step: step }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ngb-stepper-label-text\">\n {{ step.label || ('Step ' + (i + 1)) }}\n </div>\n }\n @if (step.optional) {\n <div class=\"ngb-stepper-optional\">\n {{ optionalLabel }}\n </div>\n }\n </div>\n </li>\n }\n </ol>\n </div>\n\n <!-- CONTENT -->\n <div class=\"ngb-stepper-content\" [class.ngb-stepper-content-top]=\"contentPosition === 'top'\">\n @if (lazy) {\n <div\n class=\"fade-step\"\n [style.--ngb-stepper-animation-duration]=\"(disableAnimation ? 0 : animationDuration) + 'ms'\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"stepId(selectedIndex)\"\n [attr.id]=\"contentId(selectedIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"stepContentTpl; context: { index: selectedIndex }\"></ng-container>\n @if (currentErrorMessage) {\n <div class=\"ngb-stepper-error\" role=\"alert\">\n {{ currentErrorMessage }}\n </div>\n }\n </div>\n } @else {\n <div\n class=\"fade-step\"\n [style.--ngb-stepper-animation-duration]=\"(disableAnimation ? 0 : animationDuration) + 'ms'\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"stepId(selectedIndex)\"\n [attr.id]=\"contentId(selectedIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"stepContentTpl; context: { index: selectedIndex }\"></ng-container>\n @if (currentErrorMessage) {\n <div class=\"ngb-stepper-error\" role=\"alert\">\n {{ currentErrorMessage }}\n </div>\n }\n </div>\n }\n </div>\n\n <!-- ACTIONS -->\n <div class=\"ngb-stepper-buttons\">\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"onCancel()\"\n >\n {{ cancelLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"onReset()\"\n >\n {{ resetLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"prev()\"\n [disabled]=\"selectedIndex <= 0 || !allowRevisit\"\n >\n {{ previousLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-primary\"\n (click)=\"next()\"\n [disabled]=\"selectedIndex >= steps.length - 1 || steps[selectedIndex]?.disabled\"\n >\n {{ nextLabel }}\n </button>\n </div>\n</div>\n", styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.ngb-stepper{display:flex;flex-direction:column}.ngb-stepper.horizontal .ngb-stepper-header{display:flex;overflow-x:auto}.ngb-stepper.vertical .ngb-stepper-header{display:block}.ngb-stepper-header{margin-bottom:1rem}.ngb-stepper-steps{list-style:none;padding:0;margin:0;display:flex;flex-wrap:nowrap}.ngb-stepper.vertical .ngb-stepper-steps{flex-direction:column}.ngb-stepper-step{position:relative;display:flex;align-items:center;cursor:pointer}.ngb-stepper.horizontal .ngb-stepper-step{padding:.5rem .75rem}.ngb-stepper.vertical .ngb-stepper-step{padding:.5rem 0}.ngb-stepper-step.disabled{cursor:default;opacity:var(--ngb-disabled-opacity, .6)}.ngb-stepper-indicator{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;margin-right:.5rem;flex-shrink:0}.ngb-stepper .ngb-stepper-indicator{border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));background-color:var(--ngb-surface, var(--bs-body-bg, #fff))}.ngb-stepper .ngb-stepper-step.active .ngb-stepper-indicator{background-color:var(--ngb-primary, var(--bs-primary, #0d6efd));color:var(--ngb-on-primary, #fff)}.ngb-stepper .ngb-stepper-step.done .ngb-stepper-indicator{background-color:var(--ngb-success, var(--bs-success, #198754));color:var(--ngb-on-success, #fff)}.ngb-stepper .ngb-stepper-step.error .ngb-stepper-indicator{background-color:var(--ngb-danger, var(--bs-danger, #dc3545));color:var(--ngb-on-danger, #fff)}.ngb-stepper-label-container{display:flex;flex-direction:column}.ngb-stepper-label-top{flex-direction:column-reverse}.ngb-stepper-label-bottom{flex-direction:column}.ngb-stepper-label-left{flex-direction:row-reverse}.ngb-stepper-label-right{flex-direction:row}.ngb-stepper-content{position:relative}.ngb-stepper-content-top{order:-1}.ngb-stepper-buttons{display:flex;justify-content:flex-end;gap:var(--ngb-space-2, .5rem);margin-top:var(--ngb-space-4, 1rem)}.ngb-stepper-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));font-size:.875rem;margin-top:.25rem}.ngb-stepper-optional{font-size:.75rem;opacity:.7}.ngb-stepper .fade-step{animation:ngb-stepper-fade var(--ngb-stepper-animation-duration, .15s) ease-in-out;animation-fill-mode:both}@keyframes ngb-stepper-fade{0%{opacity:0;transform:translateY(.35rem)}to{opacity:1;transform:translateY(0)}}.ngb-stepper-step:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13645
13660
|
}
|
|
13646
13661
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbStepperComponent, decorators: [{
|
|
13647
13662
|
type: Component,
|
|
13648
|
-
args: [{ selector: 'ngb-stepper', standalone: true, imports: [CommonModule, NgbStepLabelDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ngb-stepper\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.ngb-responsive]=\"responsive\"\n [class.bootstrap]=\"theme === 'bootstrap'\"\n [class.material]=\"theme === 'material'\"\n [class.tailwind]=\"theme === 'tailwind'\"\n role=\"tablist\"\n [attr.aria-orientation]=\"orientation\"\n>\n <!-- HEADER / LABELS -->\n <div class=\"ngb-stepper-header\">\n <ol class=\"ngb-stepper-steps\" role=\"presentation\">\n @for (step of steps; track step; let i = $index) {\n <li\n class=\"ngb-stepper-step\"\n [class.active]=\"i === selectedIndex\"\n [class.done]=\"i < selectedIndex && !isStepInError(i)\"\n [class.error]=\"isStepInError(i)\"\n [class.disabled]=\"step.disabled\"\n role=\"tab\"\n [attr.id]=\"stepId(i)\"\n [attr.aria-controls]=\"contentId(i)\"\n [attr.aria-selected]=\"i === selectedIndex\"\n [attr.aria-disabled]=\"step.disabled || (!allowRevisit && i < visitedFrom && i !== selectedIndex)\"\n tabindex=\"{{ i === selectedIndex ? 0 : -1 }}\"\n (click)=\"onHeaderClick(i)\"\n (keydown.enter)=\"onHeaderKeydown($event, i)\"\n (keydown.space)=\"onHeaderKeydown($event, i)\"\n >\n <div\n class=\"ngb-stepper-indicator\"\n [ngClass]=\"indicatorClass(i)\"\n aria-hidden=\"true\"\n >\n @if (customIconTpl) {\n <ng-container\n [ngTemplateOutlet]=\"customIconTpl\"\n [ngTemplateOutletContext]=\"{ index: i, state: stepState(i) }\"\n ></ng-container>\n } @else {\n {{ defaultIconForState(stepState(i), i) }}\n }\n </div>\n\n <div\n class=\"ngb-stepper-label-container\"\n [ngClass]=\"labelPositionClass\"\n >\n @if (stepLabelTpl) {\n <div class=\"ngb-stepper-label\">\n <ng-container\n [ngTemplateOutlet]=\"stepLabelTpl\"\n [ngTemplateOutletContext]=\"{ index: i, step: step }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ngb-stepper-label-text\">\n {{ step.label || ('Step ' + (i + 1)) }}\n </div>\n }\n @if (step.optional) {\n <div class=\"ngb-stepper-optional\">\n {{ optionalLabel }}\n </div>\n }\n </div>\n </li>\n }\n </ol>\n </div>\n\n <!-- CONTENT -->\n <div class=\"ngb-stepper-content\" [class.ngb-stepper-content-top]=\"contentPosition === 'top'\">\n @if (lazy) {\n <div\n class=\"fade-step\"\n [style.--ngb-stepper-animation-duration]=\"(disableAnimation ? 0 : animationDuration) + 'ms'\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"stepId(selectedIndex)\"\n [attr.id]=\"contentId(selectedIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"stepContentTpl; context: { index: selectedIndex }\"></ng-container>\n @if (currentErrorMessage) {\n <div class=\"ngb-stepper-error\" role=\"alert\">\n {{ currentErrorMessage }}\n </div>\n }\n </div>\n } @else {\n <div\n class=\"fade-step\"\n [style.--ngb-stepper-animation-duration]=\"(disableAnimation ? 0 : animationDuration) + 'ms'\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"stepId(selectedIndex)\"\n [attr.id]=\"contentId(selectedIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"stepContentTpl; context: { index: selectedIndex }\"></ng-container>\n @if (currentErrorMessage) {\n <div class=\"ngb-stepper-error\" role=\"alert\">\n {{ currentErrorMessage }}\n </div>\n }\n </div>\n }\n </div>\n\n <!-- ACTIONS -->\n <div class=\"ngb-stepper-buttons\">\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"onCancel()\"\n >\n {{ cancelLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"onReset()\"\n >\n {{ resetLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"prev()\"\n [disabled]=\"selectedIndex <= 0 || !allowRevisit\"\n >\n {{ previousLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-primary\"\n (click)=\"next()\"\n [disabled]=\"selectedIndex >= steps.length - 1 || steps[selectedIndex]?.disabled\"\n >\n {{ nextLabel }}\n </button>\n </div>\n</div>\n", styles: [".ngb-stepper{display:flex;flex-direction:column}.ngb-stepper.horizontal .ngb-stepper-header{display:flex;overflow-x:auto}.ngb-stepper.vertical .ngb-stepper-header{display:block}.ngb-stepper-header{margin-bottom:1rem}.ngb-stepper-steps{list-style:none;padding:0;margin:0;display:flex;flex-wrap:nowrap}.ngb-stepper.vertical .ngb-stepper-steps{flex-direction:column}.ngb-stepper-step{position:relative;display:flex;align-items:center;cursor:pointer}.ngb-stepper.horizontal .ngb-stepper-step{padding:.5rem .75rem}.ngb-stepper.vertical .ngb-stepper-step{padding:.5rem 0}.ngb-stepper-step.disabled{cursor:default;opacity:.6}.ngb-stepper-indicator{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;margin-right:.5rem;flex-shrink:0}.ngb-stepper.bootstrap .ngb-stepper-indicator{border:1px solid var(--bs-border-color, #dee2e6);background-color:var(--bs-body-bg, #fff)}.ngb-stepper.bootstrap .ngb-stepper-step.active .ngb-stepper-indicator{background-color:var(--bs-primary, #0d6efd);color:#fff}.ngb-stepper.bootstrap .ngb-stepper-step.done .ngb-stepper-indicator{background-color:var(--bs-success, #198754);color:#fff}.ngb-stepper.bootstrap .ngb-stepper-step.error .ngb-stepper-indicator{background-color:var(--bs-danger, #dc3545);color:#fff}.ngb-stepper-label-container{display:flex;flex-direction:column}.ngb-stepper-label-top{flex-direction:column-reverse}.ngb-stepper-label-bottom{flex-direction:column}.ngb-stepper-label-left{flex-direction:row-reverse}.ngb-stepper-label-right{flex-direction:row}.ngb-stepper-content{position:relative}.ngb-stepper-content-top{order:-1}.ngb-stepper-buttons{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.ngb-stepper-error{color:var(--bs-danger, #dc3545);font-size:.875rem;margin-top:.25rem}.ngb-stepper-optional{font-size:.75rem;opacity:.7}.ngb-stepper .fade-step{animation:ngb-stepper-fade var(--ngb-stepper-animation-duration, .15s) ease-in-out;animation-fill-mode:both}@keyframes ngb-stepper-fade{0%{opacity:0;transform:translateY(.35rem)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
13663
|
+
args: [{ selector: 'ngb-stepper', standalone: true, imports: [CommonModule, NgbStepLabelDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ngb-stepper\"\n [attr.data-ngb-theme]=\"theme === 'bootstrap' ? null : theme\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.ngb-responsive]=\"responsive\"\n [class.bootstrap]=\"theme === 'bootstrap'\"\n [class.material]=\"theme === 'material'\"\n [class.tailwind]=\"theme === 'tailwind'\"\n role=\"tablist\"\n [attr.aria-orientation]=\"orientation\"\n>\n <!-- HEADER / LABELS -->\n <div class=\"ngb-stepper-header\">\n <ol class=\"ngb-stepper-steps\" role=\"presentation\">\n @for (step of steps; track step; let i = $index) {\n <li\n class=\"ngb-stepper-step\"\n [class.active]=\"i === selectedIndex\"\n [class.done]=\"i < selectedIndex && !isStepInError(i)\"\n [class.error]=\"isStepInError(i)\"\n [class.disabled]=\"step.disabled\"\n role=\"tab\"\n [attr.id]=\"stepId(i)\"\n [attr.aria-controls]=\"contentId(i)\"\n [attr.aria-selected]=\"i === selectedIndex\"\n [attr.aria-disabled]=\"step.disabled || (!allowRevisit && i < visitedFrom && i !== selectedIndex)\"\n tabindex=\"{{ i === selectedIndex ? 0 : -1 }}\"\n (click)=\"onHeaderClick(i)\"\n (keydown.enter)=\"onHeaderKeydown($event, i)\"\n (keydown.space)=\"onHeaderKeydown($event, i)\"\n >\n <div\n class=\"ngb-stepper-indicator\"\n [ngClass]=\"indicatorClass(i)\"\n aria-hidden=\"true\"\n >\n @if (customIconTpl) {\n <ng-container\n [ngTemplateOutlet]=\"customIconTpl\"\n [ngTemplateOutletContext]=\"{ index: i, state: stepState(i) }\"\n ></ng-container>\n } @else {\n {{ defaultIconForState(stepState(i), i) }}\n }\n </div>\n\n <div\n class=\"ngb-stepper-label-container\"\n [ngClass]=\"labelPositionClass\"\n >\n @if (stepLabelTpl) {\n <div class=\"ngb-stepper-label\">\n <ng-container\n [ngTemplateOutlet]=\"stepLabelTpl\"\n [ngTemplateOutletContext]=\"{ index: i, step: step }\"\n ></ng-container>\n </div>\n } @else {\n <div class=\"ngb-stepper-label-text\">\n {{ step.label || ('Step ' + (i + 1)) }}\n </div>\n }\n @if (step.optional) {\n <div class=\"ngb-stepper-optional\">\n {{ optionalLabel }}\n </div>\n }\n </div>\n </li>\n }\n </ol>\n </div>\n\n <!-- CONTENT -->\n <div class=\"ngb-stepper-content\" [class.ngb-stepper-content-top]=\"contentPosition === 'top'\">\n @if (lazy) {\n <div\n class=\"fade-step\"\n [style.--ngb-stepper-animation-duration]=\"(disableAnimation ? 0 : animationDuration) + 'ms'\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"stepId(selectedIndex)\"\n [attr.id]=\"contentId(selectedIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"stepContentTpl; context: { index: selectedIndex }\"></ng-container>\n @if (currentErrorMessage) {\n <div class=\"ngb-stepper-error\" role=\"alert\">\n {{ currentErrorMessage }}\n </div>\n }\n </div>\n } @else {\n <div\n class=\"fade-step\"\n [style.--ngb-stepper-animation-duration]=\"(disableAnimation ? 0 : animationDuration) + 'ms'\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"stepId(selectedIndex)\"\n [attr.id]=\"contentId(selectedIndex)\"\n >\n <ng-container *ngTemplateOutlet=\"stepContentTpl; context: { index: selectedIndex }\"></ng-container>\n @if (currentErrorMessage) {\n <div class=\"ngb-stepper-error\" role=\"alert\">\n {{ currentErrorMessage }}\n </div>\n }\n </div>\n }\n </div>\n\n <!-- ACTIONS -->\n <div class=\"ngb-stepper-buttons\">\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"onCancel()\"\n >\n {{ cancelLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"onReset()\"\n >\n {{ resetLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-outline-secondary\"\n (click)=\"prev()\"\n [disabled]=\"selectedIndex <= 0 || !allowRevisit\"\n >\n {{ previousLabel }}\n </button>\n\n <button\n type=\"button\"\n class=\"btn btn-sm btn-primary\"\n (click)=\"next()\"\n [disabled]=\"selectedIndex >= steps.length - 1 || steps[selectedIndex]?.disabled\"\n >\n {{ nextLabel }}\n </button>\n </div>\n</div>\n", styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.ngb-stepper{display:flex;flex-direction:column}.ngb-stepper.horizontal .ngb-stepper-header{display:flex;overflow-x:auto}.ngb-stepper.vertical .ngb-stepper-header{display:block}.ngb-stepper-header{margin-bottom:1rem}.ngb-stepper-steps{list-style:none;padding:0;margin:0;display:flex;flex-wrap:nowrap}.ngb-stepper.vertical .ngb-stepper-steps{flex-direction:column}.ngb-stepper-step{position:relative;display:flex;align-items:center;cursor:pointer}.ngb-stepper.horizontal .ngb-stepper-step{padding:.5rem .75rem}.ngb-stepper.vertical .ngb-stepper-step{padding:.5rem 0}.ngb-stepper-step.disabled{cursor:default;opacity:var(--ngb-disabled-opacity, .6)}.ngb-stepper-indicator{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;margin-right:.5rem;flex-shrink:0}.ngb-stepper .ngb-stepper-indicator{border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));background-color:var(--ngb-surface, var(--bs-body-bg, #fff))}.ngb-stepper .ngb-stepper-step.active .ngb-stepper-indicator{background-color:var(--ngb-primary, var(--bs-primary, #0d6efd));color:var(--ngb-on-primary, #fff)}.ngb-stepper .ngb-stepper-step.done .ngb-stepper-indicator{background-color:var(--ngb-success, var(--bs-success, #198754));color:var(--ngb-on-success, #fff)}.ngb-stepper .ngb-stepper-step.error .ngb-stepper-indicator{background-color:var(--ngb-danger, var(--bs-danger, #dc3545));color:var(--ngb-on-danger, #fff)}.ngb-stepper-label-container{display:flex;flex-direction:column}.ngb-stepper-label-top{flex-direction:column-reverse}.ngb-stepper-label-bottom{flex-direction:column}.ngb-stepper-label-left{flex-direction:row-reverse}.ngb-stepper-label-right{flex-direction:row}.ngb-stepper-content{position:relative}.ngb-stepper-content-top{order:-1}.ngb-stepper-buttons{display:flex;justify-content:flex-end;gap:var(--ngb-space-2, .5rem);margin-top:var(--ngb-space-4, 1rem)}.ngb-stepper-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));font-size:.875rem;margin-top:.25rem}.ngb-stepper-optional{font-size:.75rem;opacity:.7}.ngb-stepper .fade-step{animation:ngb-stepper-fade var(--ngb-stepper-animation-duration, .15s) ease-in-out;animation-fill-mode:both}@keyframes ngb-stepper-fade{0%{opacity:0;transform:translateY(.35rem)}to{opacity:1;transform:translateY(0)}}.ngb-stepper-step:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}\n"] }]
|
|
13649
13664
|
}], propDecorators: { steps: [{
|
|
13650
13665
|
type: Input
|
|
13651
13666
|
}], orientation: [{
|
|
@@ -13750,11 +13765,11 @@ class NgbSplitterComponent {
|
|
|
13750
13765
|
panes;
|
|
13751
13766
|
orientation = 'horizontal';
|
|
13752
13767
|
handleThickness = 12;
|
|
13753
|
-
handleIconColor = '#000';
|
|
13768
|
+
handleIconColor = 'var(--ngb-on-surface, #000)';
|
|
13754
13769
|
verticalMinHeight = '280px';
|
|
13755
13770
|
resizable = true; // New Resize Input
|
|
13756
|
-
barColor = '#ccc'; // Custom Bar Color
|
|
13757
|
-
lineColor = '#000'; // Custom Line Color
|
|
13771
|
+
barColor = 'var(--ngb-border-color, #ccc)'; // Custom Bar Color
|
|
13772
|
+
lineColor = 'var(--ngb-on-surface, #000)'; // Custom Line Color
|
|
13758
13773
|
isDragging = false;
|
|
13759
13774
|
currentHandleIndex = -1;
|
|
13760
13775
|
constructor(el) {
|
|
@@ -13997,7 +14012,7 @@ class NgbSplitterComponent {
|
|
|
13997
14012
|
}
|
|
13998
14013
|
}
|
|
13999
14014
|
</div>
|
|
14000
|
-
`, isInline: true, styles: [":host{display:block;width:100%}.splitter-container{display:flex;height:100%;width:100%}.splitter-container.vertical{flex-direction:column}.splitbar{background
|
|
14015
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit);display:block;width:100%}.splitter-container{display:flex;height:100%;width:100%}.splitbar:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:-2px}.splitter-container.vertical{flex-direction:column}.splitbar{background:var(--ngb-border-color, #ccc);width:5px;position:relative;align-items:center;justify-content:center;flex:0 0 auto;z-index:10}.splitbar.resizable{cursor:col-resize}.splitbar:hover{filter:brightness(90%)}.handle-line{border-radius:2px;opacity:.8;left:45%;position:absolute;top:45%;display:flex;align-items:center;justify-content:center}.splitter-container:not(.vertical) .handle-line{width:2px;height:10px}.pane-wrapper{position:relative;min-width:0;min-height:0;overflow:hidden;flex-shrink:1}.vertical .handle-line{height:2px;width:10px}.vertical .splitbar.resizable{cursor:row-resize}.splitter-container.vertical .splitter-container .splitbar.resizable{cursor:col-resize}.vertical .splitbar{width:100%}.collapse-btn{cursor:pointer;background:var(--ngb-on-surface-variant, #666);width:10px;height:10px;position:absolute;top:50%}.collapse-arrow{font-size:.95rem;-webkit-user-select:none;user-select:none;cursor:pointer;line-height:1;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;position:absolute;top:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14001
14016
|
}
|
|
14002
14017
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbSplitterComponent, decorators: [{
|
|
14003
14018
|
type: Component,
|
|
@@ -14046,7 +14061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
14046
14061
|
}
|
|
14047
14062
|
}
|
|
14048
14063
|
</div>
|
|
14049
|
-
`, styles: [":host{display:block;width:100%}.splitter-container{display:flex;height:100%;width:100%}.splitter-container.vertical{flex-direction:column}.splitbar{background
|
|
14064
|
+
`, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit);display:block;width:100%}.splitter-container{display:flex;height:100%;width:100%}.splitbar:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:-2px}.splitter-container.vertical{flex-direction:column}.splitbar{background:var(--ngb-border-color, #ccc);width:5px;position:relative;align-items:center;justify-content:center;flex:0 0 auto;z-index:10}.splitbar.resizable{cursor:col-resize}.splitbar:hover{filter:brightness(90%)}.handle-line{border-radius:2px;opacity:.8;left:45%;position:absolute;top:45%;display:flex;align-items:center;justify-content:center}.splitter-container:not(.vertical) .handle-line{width:2px;height:10px}.pane-wrapper{position:relative;min-width:0;min-height:0;overflow:hidden;flex-shrink:1}.vertical .handle-line{height:2px;width:10px}.vertical .splitbar.resizable{cursor:row-resize}.splitter-container.vertical .splitter-container .splitbar.resizable{cursor:col-resize}.vertical .splitbar{width:100%}.collapse-btn{cursor:pointer;background:var(--ngb-on-surface-variant, #666);width:10px;height:10px;position:absolute;top:50%}.collapse-arrow{font-size:.95rem;-webkit-user-select:none;user-select:none;cursor:pointer;line-height:1;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;position:absolute;top:100%}\n"] }]
|
|
14050
14065
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { panes: [{
|
|
14051
14066
|
type: ContentChildren,
|
|
14052
14067
|
args: [NgbSplitterPaneComponent]
|
|
@@ -14083,7 +14098,7 @@ class NgbChipsComponent {
|
|
|
14083
14098
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NgbChipsComponent, isStandalone: true, selector: "ngb-chips", inputs: { items: "items", removable: "removable", ariaLabel: "ariaLabel", removeLabel: "removeLabel" }, outputs: { remove: "remove" }, ngImport: i0, template: `
|
|
14084
14099
|
<div class="ngb-chips" [attr.aria-label]="ariaLabel">
|
|
14085
14100
|
@for (item of items; track trackById($index, item)) {
|
|
14086
|
-
<span class="badge rounded-pill
|
|
14101
|
+
<span class="badge rounded-pill ngb-chip" [class.ngb-chip-disabled]="!!item.disabled">
|
|
14087
14102
|
<span class="ngb-chip-label">{{ item.label }}</span>
|
|
14088
14103
|
@if (removable) {
|
|
14089
14104
|
<button
|
|
@@ -14099,14 +14114,14 @@ class NgbChipsComponent {
|
|
|
14099
14114
|
</span>
|
|
14100
14115
|
}
|
|
14101
14116
|
</div>
|
|
14102
|
-
`, isInline: true, styles: [":host{display:block}.ngb-chips{display:flex;flex-wrap:wrap;gap
|
|
14117
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit);display:block}.ngb-chips{display:flex;flex-wrap:wrap;gap:var(--ngb-space-1, .35rem);align-items:center}.ngb-chip{background-color:var(--ngb-selected-bg, var(--bs-secondary, #6c757d));color:var(--ngb-on-surface, #fff);display:inline-flex;align-items:center;gap:.25rem;max-width:100%}.ngb-chip-disabled{opacity:var(--ngb-disabled-opacity, .5)}.ngb-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngb-chip-remove{border:0;background:transparent;color:inherit;padding:0;line-height:1;cursor:pointer;font-size:1rem;opacity:.85}.ngb-chip-remove:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-chip-remove:disabled{cursor:default;opacity:var(--ngb-disabled-opacity, .4)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14103
14118
|
}
|
|
14104
14119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbChipsComponent, decorators: [{
|
|
14105
14120
|
type: Component,
|
|
14106
14121
|
args: [{ selector: 'ngb-chips', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
14107
14122
|
<div class="ngb-chips" [attr.aria-label]="ariaLabel">
|
|
14108
14123
|
@for (item of items; track trackById($index, item)) {
|
|
14109
|
-
<span class="badge rounded-pill
|
|
14124
|
+
<span class="badge rounded-pill ngb-chip" [class.ngb-chip-disabled]="!!item.disabled">
|
|
14110
14125
|
<span class="ngb-chip-label">{{ item.label }}</span>
|
|
14111
14126
|
@if (removable) {
|
|
14112
14127
|
<button
|
|
@@ -14122,7 +14137,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
14122
14137
|
</span>
|
|
14123
14138
|
}
|
|
14124
14139
|
</div>
|
|
14125
|
-
`, styles: [":host{display:block}.ngb-chips{display:flex;flex-wrap:wrap;gap
|
|
14140
|
+
`, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit);display:block}.ngb-chips{display:flex;flex-wrap:wrap;gap:var(--ngb-space-1, .35rem);align-items:center}.ngb-chip{background-color:var(--ngb-selected-bg, var(--bs-secondary, #6c757d));color:var(--ngb-on-surface, #fff);display:inline-flex;align-items:center;gap:.25rem;max-width:100%}.ngb-chip-disabled{opacity:var(--ngb-disabled-opacity, .5)}.ngb-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ngb-chip-remove{border:0;background:transparent;color:inherit;padding:0;line-height:1;cursor:pointer;font-size:1rem;opacity:.85}.ngb-chip-remove:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-chip-remove:disabled{cursor:default;opacity:var(--ngb-disabled-opacity, .4)}\n"] }]
|
|
14126
14141
|
}], propDecorators: { items: [{
|
|
14127
14142
|
type: Input
|
|
14128
14143
|
}], removable: [{
|
|
@@ -14991,7 +15006,7 @@ class NgbTypeaheadComponent {
|
|
|
14991
15006
|
</div>
|
|
14992
15007
|
}
|
|
14993
15008
|
</div>
|
|
14994
|
-
`, isInline: true, styles: [":host{display:block}.typeahead-root{position:relative}.typeahead-chips-control{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;min-height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem}.typeahead-chips-control input{border:0;outline:0;flex:1 1 9rem;min-width:6rem;padding:0;margin:0;background:transparent}.typeahead-chips-control input:focus{outline:0;box-shadow:none}.typeahead-panel{position:absolute;top:calc(100% + .25rem);left:0;right:0;z-index:1050;max-height:240px;overflow:auto;opacity:0;transform:translateY(-.25rem);pointer-events:none;transition:opacity .12s ease,transform .12s ease}.typeahead-panel.show{opacity:1;transform:translateY(0);pointer-events:auto}.typeahead-item{display:flex;align-items:center;gap:.5rem}.typeahead-item-checkbox{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgbChipsComponent, selector: "ngb-chips", inputs: ["items", "removable", "ariaLabel", "removeLabel"], outputs: ["remove"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15009
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}\n", ":host{display:block}.typeahead-root{position:relative}.typeahead-chips-control{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;min-height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem}.typeahead-chips-control input{border:0;outline:0;flex:1 1 9rem;min-width:6rem;padding:0;margin:0;background:transparent;color:inherit}.typeahead-chips-control input:focus{outline:0;box-shadow:none}.typeahead-panel{position:absolute;top:calc(100% + .25rem);left:0;right:0;z-index:1050;max-height:240px;overflow:auto;opacity:0;transform:translateY(-.25rem);pointer-events:none;transition:opacity .12s ease,transform .12s ease}.typeahead-panel.show{opacity:1;transform:translateY(0);pointer-events:auto}.typeahead-item{display:flex;align-items:center;gap:.5rem}.typeahead-item-checkbox{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgbChipsComponent, selector: "ngb-chips", inputs: ["items", "removable", "ariaLabel", "removeLabel"], outputs: ["remove"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
14995
15010
|
}
|
|
14996
15011
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbTypeaheadComponent, decorators: [{
|
|
14997
15012
|
type: Component,
|
|
@@ -15150,7 +15165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
15150
15165
|
</div>
|
|
15151
15166
|
}
|
|
15152
15167
|
</div>
|
|
15153
|
-
`, styles: [":host{display:block}.typeahead-root{position:relative}.typeahead-chips-control{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;min-height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem}.typeahead-chips-control input{border:0;outline:0;flex:1 1 9rem;min-width:6rem;padding:0;margin:0;background:transparent}.typeahead-chips-control input:focus{outline:0;box-shadow:none}.typeahead-panel{position:absolute;top:calc(100% + .25rem);left:0;right:0;z-index:1050;max-height:240px;overflow:auto;opacity:0;transform:translateY(-.25rem);pointer-events:none;transition:opacity .12s ease,transform .12s ease}.typeahead-panel.show{opacity:1;transform:translateY(0);pointer-events:auto}.typeahead-item{display:flex;align-items:center;gap:.5rem}.typeahead-item-checkbox{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem}\n"] }]
|
|
15168
|
+
`, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}\n", ":host{display:block}.typeahead-root{position:relative}.typeahead-chips-control{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;min-height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem}.typeahead-chips-control input{border:0;outline:0;flex:1 1 9rem;min-width:6rem;padding:0;margin:0;background:transparent;color:inherit}.typeahead-chips-control input:focus{outline:0;box-shadow:none}.typeahead-panel{position:absolute;top:calc(100% + .25rem);left:0;right:0;z-index:1050;max-height:240px;overflow:auto;opacity:0;transform:translateY(-.25rem);pointer-events:none;transition:opacity .12s ease,transform .12s ease}.typeahead-panel.show{opacity:1;transform:translateY(0);pointer-events:auto}.typeahead-item{display:flex;align-items:center;gap:.5rem}.typeahead-item-checkbox{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem}\n"] }]
|
|
15154
15169
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { data: [{
|
|
15155
15170
|
type: Input
|
|
15156
15171
|
}], debounceTime: [{
|
|
@@ -15396,16 +15411,11 @@ class NgbTreeComponent {
|
|
|
15396
15411
|
</ul>
|
|
15397
15412
|
}
|
|
15398
15413
|
</ng-template>
|
|
15399
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15414
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15400
15415
|
}
|
|
15401
15416
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbTreeComponent, decorators: [{
|
|
15402
15417
|
type: Component,
|
|
15403
|
-
args: [{
|
|
15404
|
-
selector: 'ngb-tree',
|
|
15405
|
-
standalone: true,
|
|
15406
|
-
imports: [CommonModule],
|
|
15407
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
15408
|
-
template: `
|
|
15418
|
+
args: [{ selector: 'ngb-tree', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
15409
15419
|
<div class="d-flex gap-2 mb-2">
|
|
15410
15420
|
<button type="button" class="btn btn-sm btn-outline-secondary" (click)="expandAllNodes()" [attr.aria-label]="i18n?.expandAll || 'Expand all'">
|
|
15411
15421
|
{{ i18n?.expandAll || 'Expand all' }}
|
|
@@ -15473,8 +15483,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
15473
15483
|
</ul>
|
|
15474
15484
|
}
|
|
15475
15485
|
</ng-template>
|
|
15476
|
-
`,
|
|
15477
|
-
}]
|
|
15486
|
+
`, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}\n"] }]
|
|
15478
15487
|
}], propDecorators: { nodes: [{
|
|
15479
15488
|
type: Input
|
|
15480
15489
|
}], type: [{
|
|
@@ -15506,9 +15515,515 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
15506
15515
|
args: ['nodeBtn', { read: ElementRef }]
|
|
15507
15516
|
}] } });
|
|
15508
15517
|
|
|
15518
|
+
let nextPromptId = 0;
|
|
15519
|
+
class NgbPromptBoxComponent {
|
|
15520
|
+
descriptionId = `ngb-ai-prompt-help-${nextPromptId++}`;
|
|
15521
|
+
value = model("", /* @ts-ignore */
|
|
15522
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
15523
|
+
label = input("Your request", /* @ts-ignore */
|
|
15524
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
15525
|
+
placeholder = input("Describe what you need…", /* @ts-ignore */
|
|
15526
|
+
...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
15527
|
+
submitLabel = input("Send", /* @ts-ignore */
|
|
15528
|
+
...(ngDevMode ? [{ debugName: "submitLabel" }] : /* istanbul ignore next */ []));
|
|
15529
|
+
stopLabel = input("Stop", /* @ts-ignore */
|
|
15530
|
+
...(ngDevMode ? [{ debugName: "stopLabel" }] : /* istanbul ignore next */ []));
|
|
15531
|
+
suggestions = input([], /* @ts-ignore */
|
|
15532
|
+
...(ngDevMode ? [{ debugName: "suggestions" }] : /* istanbul ignore next */ []));
|
|
15533
|
+
disabled = input(false, /* @ts-ignore */
|
|
15534
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
15535
|
+
busy = input(false, /* @ts-ignore */
|
|
15536
|
+
...(ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []));
|
|
15537
|
+
maxLength = input(4000, /* @ts-ignore */
|
|
15538
|
+
...(ngDevMode ? [{ debugName: "maxLength" }] : /* istanbul ignore next */ []));
|
|
15539
|
+
submitOnEnter = input(true, /* @ts-ignore */
|
|
15540
|
+
...(ngDevMode ? [{ debugName: "submitOnEnter" }] : /* istanbul ignore next */ []));
|
|
15541
|
+
clearOnSubmit = input(true, /* @ts-ignore */
|
|
15542
|
+
...(ngDevMode ? [{ debugName: "clearOnSubmit" }] : /* istanbul ignore next */ []));
|
|
15543
|
+
promptSubmit = output();
|
|
15544
|
+
stop = output();
|
|
15545
|
+
limit = computed(() => Number.isFinite(this.maxLength())
|
|
15546
|
+
? Math.max(1, Math.floor(this.maxLength()))
|
|
15547
|
+
: 4000, /* @ts-ignore */
|
|
15548
|
+
...(ngDevMode ? [{ debugName: "limit" }] : /* istanbul ignore next */ []));
|
|
15549
|
+
canSubmit = computed(() => !this.disabled() &&
|
|
15550
|
+
!this.busy() &&
|
|
15551
|
+
!!this.value().trim() &&
|
|
15552
|
+
this.value().length <= this.limit(), /* @ts-ignore */
|
|
15553
|
+
...(ngDevMode ? [{ debugName: "canSubmit" }] : /* istanbul ignore next */ []));
|
|
15554
|
+
updateValue(event) {
|
|
15555
|
+
this.value.set(event.target.value);
|
|
15556
|
+
}
|
|
15557
|
+
choose(value) {
|
|
15558
|
+
if (!this.disabled() && !this.busy())
|
|
15559
|
+
this.value.set(value.slice(0, this.limit()));
|
|
15560
|
+
}
|
|
15561
|
+
submit() {
|
|
15562
|
+
if (!this.canSubmit())
|
|
15563
|
+
return;
|
|
15564
|
+
const value = this.value().trim();
|
|
15565
|
+
if (this.clearOnSubmit())
|
|
15566
|
+
this.value.set("");
|
|
15567
|
+
this.promptSubmit.emit(value);
|
|
15568
|
+
}
|
|
15569
|
+
onKeydown(event) {
|
|
15570
|
+
if (event.key === "Enter" &&
|
|
15571
|
+
!event.shiftKey &&
|
|
15572
|
+
!event.isComposing &&
|
|
15573
|
+
this.submitOnEnter()) {
|
|
15574
|
+
event.preventDefault();
|
|
15575
|
+
this.submit();
|
|
15576
|
+
}
|
|
15577
|
+
}
|
|
15578
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbPromptBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15579
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NgbPromptBoxComponent, isStandalone: true, selector: "ngb-prompt-box", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, submitLabel: { classPropertyName: "submitLabel", publicName: "submitLabel", isSignal: true, isRequired: false, transformFunction: null }, stopLabel: { classPropertyName: "stopLabel", publicName: "stopLabel", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, submitOnEnter: { classPropertyName: "submitOnEnter", publicName: "submitOnEnter", isSignal: true, isRequired: false, transformFunction: null }, clearOnSubmit: { classPropertyName: "clearOnSubmit", publicName: "clearOnSubmit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", promptSubmit: "promptSubmit", stop: "stop" }, ngImport: i0, template: `
|
|
15580
|
+
<div class="ngb-ai-composer" [attr.aria-busy]="busy()">
|
|
15581
|
+
<label class="ngb-ai-label">
|
|
15582
|
+
{{ label() }}
|
|
15583
|
+
<textarea class="form-control" rows="3" [value]="value()"
|
|
15584
|
+
[placeholder]="placeholder()" [disabled]="disabled()" [readOnly]="busy()" [attr.aria-describedby]="descriptionId"
|
|
15585
|
+
[attr.maxlength]="limit()" (input)="updateValue($event)"
|
|
15586
|
+
(keydown)="onKeydown($event)"></textarea>
|
|
15587
|
+
</label>
|
|
15588
|
+
@if (suggestions().length) {
|
|
15589
|
+
<div class="ngb-ai-actions" role="group" aria-label="Suggested prompts">
|
|
15590
|
+
@for (suggestion of suggestions(); track $index) {
|
|
15591
|
+
<button type="button" class="btn btn-sm btn-outline-secondary"
|
|
15592
|
+
[disabled]="disabled() || busy()" (click)="choose(suggestion)">{{ suggestion }}</button>
|
|
15593
|
+
}
|
|
15594
|
+
</div>
|
|
15595
|
+
}
|
|
15596
|
+
<div class="ngb-ai-composer-footer">
|
|
15597
|
+
<span class="ngb-ai-muted small">{{ value().length }} / {{ limit() }}</span>
|
|
15598
|
+
<button type="button" class="btn btn-sm" [class.btn-outline-secondary]="busy()" [class.btn-primary]="!busy()" [disabled]="disabled() || (!busy() && !canSubmit())" (click)="busy() ? stop.emit() : submit()">{{ busy() ? stopLabel() : submitLabel() }}</button>
|
|
15599
|
+
</div>
|
|
15600
|
+
<span class="visually-hidden" [id]="descriptionId">{{ submitOnEnter() ? 'Enter sends. Shift+Enter adds a new line.' : 'Enter adds a new line. Use the submit button to send.' }} Maximum {{ limit() }} characters.</span>
|
|
15601
|
+
</div>
|
|
15602
|
+
<span class="visually-hidden" role="status" aria-live="polite">{{ busy() ? 'Request in progress. Use Stop to cancel.' : '' }}</span>
|
|
15603
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15604
|
+
}
|
|
15605
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbPromptBoxComponent, decorators: [{
|
|
15606
|
+
type: Component,
|
|
15607
|
+
args: [{ selector: "ngb-prompt-box", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
15608
|
+
<div class="ngb-ai-composer" [attr.aria-busy]="busy()">
|
|
15609
|
+
<label class="ngb-ai-label">
|
|
15610
|
+
{{ label() }}
|
|
15611
|
+
<textarea class="form-control" rows="3" [value]="value()"
|
|
15612
|
+
[placeholder]="placeholder()" [disabled]="disabled()" [readOnly]="busy()" [attr.aria-describedby]="descriptionId"
|
|
15613
|
+
[attr.maxlength]="limit()" (input)="updateValue($event)"
|
|
15614
|
+
(keydown)="onKeydown($event)"></textarea>
|
|
15615
|
+
</label>
|
|
15616
|
+
@if (suggestions().length) {
|
|
15617
|
+
<div class="ngb-ai-actions" role="group" aria-label="Suggested prompts">
|
|
15618
|
+
@for (suggestion of suggestions(); track $index) {
|
|
15619
|
+
<button type="button" class="btn btn-sm btn-outline-secondary"
|
|
15620
|
+
[disabled]="disabled() || busy()" (click)="choose(suggestion)">{{ suggestion }}</button>
|
|
15621
|
+
}
|
|
15622
|
+
</div>
|
|
15623
|
+
}
|
|
15624
|
+
<div class="ngb-ai-composer-footer">
|
|
15625
|
+
<span class="ngb-ai-muted small">{{ value().length }} / {{ limit() }}</span>
|
|
15626
|
+
<button type="button" class="btn btn-sm" [class.btn-outline-secondary]="busy()" [class.btn-primary]="!busy()" [disabled]="disabled() || (!busy() && !canSubmit())" (click)="busy() ? stop.emit() : submit()">{{ busy() ? stopLabel() : submitLabel() }}</button>
|
|
15627
|
+
</div>
|
|
15628
|
+
<span class="visually-hidden" [id]="descriptionId">{{ submitOnEnter() ? 'Enter sends. Shift+Enter adds a new line.' : 'Enter adds a new line. Use the submit button to send.' }} Maximum {{ limit() }} characters.</span>
|
|
15629
|
+
</div>
|
|
15630
|
+
<span class="visually-hidden" role="status" aria-live="polite">{{ busy() ? 'Request in progress. Use Stop to cancel.' : '' }}</span>
|
|
15631
|
+
`, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"] }]
|
|
15632
|
+
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], submitLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitLabel", required: false }] }], stopLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "stopLabel", required: false }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], submitOnEnter: [{ type: i0.Input, args: [{ isSignal: true, alias: "submitOnEnter", required: false }] }], clearOnSubmit: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearOnSubmit", required: false }] }], promptSubmit: [{ type: i0.Output, args: ["promptSubmit"] }], stop: [{ type: i0.Output, args: ["stop"] }] } });
|
|
15633
|
+
|
|
15634
|
+
class NgbAiChatComponent {
|
|
15635
|
+
label = input("Workspace assistant", /* @ts-ignore */
|
|
15636
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
15637
|
+
userLabel = input("You", /* @ts-ignore */
|
|
15638
|
+
...(ngDevMode ? [{ debugName: "userLabel" }] : /* istanbul ignore next */ []));
|
|
15639
|
+
assistantLabel = input("Assistant", /* @ts-ignore */
|
|
15640
|
+
...(ngDevMode ? [{ debugName: "assistantLabel" }] : /* istanbul ignore next */ []));
|
|
15641
|
+
emptyText = input("Start a conversation about your work.", /* @ts-ignore */
|
|
15642
|
+
...(ngDevMode ? [{ debugName: "emptyText" }] : /* istanbul ignore next */ []));
|
|
15643
|
+
messages = input([], /* @ts-ignore */
|
|
15644
|
+
...(ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []));
|
|
15645
|
+
suggestions = input([], /* @ts-ignore */
|
|
15646
|
+
...(ngDevMode ? [{ debugName: "suggestions" }] : /* istanbul ignore next */ []));
|
|
15647
|
+
busy = input(false, /* @ts-ignore */
|
|
15648
|
+
...(ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []));
|
|
15649
|
+
disabled = input(false, /* @ts-ignore */
|
|
15650
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
15651
|
+
error = input("", /* @ts-ignore */
|
|
15652
|
+
...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
|
|
15653
|
+
promptSubmit = output();
|
|
15654
|
+
stop = output();
|
|
15655
|
+
retry = output();
|
|
15656
|
+
feedback = output();
|
|
15657
|
+
ratings = signal({}, /* @ts-ignore */
|
|
15658
|
+
...(ngDevMode ? [{ debugName: "ratings" }] : /* istanbul ignore next */ []));
|
|
15659
|
+
rate(id, value) {
|
|
15660
|
+
if (this.disabled())
|
|
15661
|
+
return;
|
|
15662
|
+
const next = this.ratings()[id] === value ? null : value;
|
|
15663
|
+
this.ratings.update((current) => ({ ...current, [id]: next }));
|
|
15664
|
+
this.feedback.emit({ id, value: next });
|
|
15665
|
+
}
|
|
15666
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbAiChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15667
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NgbAiChatComponent, isStandalone: true, selector: "ngb-ai-chat", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, userLabel: { classPropertyName: "userLabel", publicName: "userLabel", isSignal: true, isRequired: false, transformFunction: null }, assistantLabel: { classPropertyName: "assistantLabel", publicName: "assistantLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { promptSubmit: "promptSubmit", stop: "stop", retry: "retry", feedback: "feedback" }, ngImport: i0, template: `
|
|
15668
|
+
<section class="ngb-ai-panel ngb-ai-chat" [attr.aria-label]="label()">
|
|
15669
|
+
<header class="ngb-ai-header"><h2 class="h6 mb-0">{{ label() }}</h2><span class="ngb-ai-muted small">{{ busy() ? 'Responding…' : 'Ready' }}</span></header>
|
|
15670
|
+
<div class="ngb-ai-transcript" role="log" aria-live="polite" aria-relevant="additions text" [attr.aria-busy]="busy()" tabindex="0" [attr.aria-label]="label() + ' messages'">
|
|
15671
|
+
@for (message of messages(); track message.id) {
|
|
15672
|
+
<article class="ngb-ai-message" [class.ngb-ai-message-user]="message.role === 'user'">
|
|
15673
|
+
<strong class="small">{{ message.role === 'user' ? userLabel() : message.role === 'assistant' ? assistantLabel() : 'Notice' }}</strong>
|
|
15674
|
+
<p class="ngb-ai-text">{{ message.content }}</p>
|
|
15675
|
+
@if (message.status === 'streaming') { <span class="ngb-ai-muted small">Receiving response…</span> }
|
|
15676
|
+
@if (message.status === 'error') {
|
|
15677
|
+
<p class="ngb-ai-error" role="alert">{{ message.error || 'The response could not be completed.' }}</p>
|
|
15678
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="busy() || disabled()" (click)="retry.emit(message.id)">Retry</button>
|
|
15679
|
+
}
|
|
15680
|
+
@if (message.role === 'assistant' && message.status !== 'streaming' && message.status !== 'error') {
|
|
15681
|
+
<div class="ngb-ai-actions" role="group" aria-label="Response feedback">
|
|
15682
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="disabled()" [attr.aria-pressed]="ratings()[message.id] === 'helpful'" (click)="rate(message.id, 'helpful')">Helpful</button>
|
|
15683
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="disabled()" [attr.aria-pressed]="ratings()[message.id] === 'unhelpful'" (click)="rate(message.id, 'unhelpful')">Needs work</button>
|
|
15684
|
+
</div>
|
|
15685
|
+
}
|
|
15686
|
+
</article>
|
|
15687
|
+
} @empty { <p class="ngb-ai-muted">{{ emptyText() }}</p> }
|
|
15688
|
+
</div>
|
|
15689
|
+
@if (error()) { <p class="ngb-ai-error" role="alert">{{ error() }}</p> }
|
|
15690
|
+
<ngb-prompt-box [busy]="busy()" [disabled]="disabled()" [suggestions]="suggestions()" (promptSubmit)="promptSubmit.emit($event)" (stop)="stop.emit()" />
|
|
15691
|
+
</section>
|
|
15692
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"], dependencies: [{ kind: "component", type: NgbPromptBoxComponent, selector: "ngb-prompt-box", inputs: ["value", "label", "placeholder", "submitLabel", "stopLabel", "suggestions", "disabled", "busy", "maxLength", "submitOnEnter", "clearOnSubmit"], outputs: ["valueChange", "promptSubmit", "stop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15693
|
+
}
|
|
15694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbAiChatComponent, decorators: [{
|
|
15695
|
+
type: Component,
|
|
15696
|
+
args: [{ selector: "ngb-ai-chat", standalone: true, imports: [NgbPromptBoxComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
15697
|
+
<section class="ngb-ai-panel ngb-ai-chat" [attr.aria-label]="label()">
|
|
15698
|
+
<header class="ngb-ai-header"><h2 class="h6 mb-0">{{ label() }}</h2><span class="ngb-ai-muted small">{{ busy() ? 'Responding…' : 'Ready' }}</span></header>
|
|
15699
|
+
<div class="ngb-ai-transcript" role="log" aria-live="polite" aria-relevant="additions text" [attr.aria-busy]="busy()" tabindex="0" [attr.aria-label]="label() + ' messages'">
|
|
15700
|
+
@for (message of messages(); track message.id) {
|
|
15701
|
+
<article class="ngb-ai-message" [class.ngb-ai-message-user]="message.role === 'user'">
|
|
15702
|
+
<strong class="small">{{ message.role === 'user' ? userLabel() : message.role === 'assistant' ? assistantLabel() : 'Notice' }}</strong>
|
|
15703
|
+
<p class="ngb-ai-text">{{ message.content }}</p>
|
|
15704
|
+
@if (message.status === 'streaming') { <span class="ngb-ai-muted small">Receiving response…</span> }
|
|
15705
|
+
@if (message.status === 'error') {
|
|
15706
|
+
<p class="ngb-ai-error" role="alert">{{ message.error || 'The response could not be completed.' }}</p>
|
|
15707
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="busy() || disabled()" (click)="retry.emit(message.id)">Retry</button>
|
|
15708
|
+
}
|
|
15709
|
+
@if (message.role === 'assistant' && message.status !== 'streaming' && message.status !== 'error') {
|
|
15710
|
+
<div class="ngb-ai-actions" role="group" aria-label="Response feedback">
|
|
15711
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="disabled()" [attr.aria-pressed]="ratings()[message.id] === 'helpful'" (click)="rate(message.id, 'helpful')">Helpful</button>
|
|
15712
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="disabled()" [attr.aria-pressed]="ratings()[message.id] === 'unhelpful'" (click)="rate(message.id, 'unhelpful')">Needs work</button>
|
|
15713
|
+
</div>
|
|
15714
|
+
}
|
|
15715
|
+
</article>
|
|
15716
|
+
} @empty { <p class="ngb-ai-muted">{{ emptyText() }}</p> }
|
|
15717
|
+
</div>
|
|
15718
|
+
@if (error()) { <p class="ngb-ai-error" role="alert">{{ error() }}</p> }
|
|
15719
|
+
<ngb-prompt-box [busy]="busy()" [disabled]="disabled()" [suggestions]="suggestions()" (promptSubmit)="promptSubmit.emit($event)" (stop)="stop.emit()" />
|
|
15720
|
+
</section>
|
|
15721
|
+
`, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"] }]
|
|
15722
|
+
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], userLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "userLabel", required: false }] }], assistantLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "assistantLabel", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }], messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: false }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], promptSubmit: [{ type: i0.Output, args: ["promptSubmit"] }], stop: [{ type: i0.Output, args: ["stop"] }], retry: [{ type: i0.Output, args: ["retry"] }], feedback: [{ type: i0.Output, args: ["feedback"] }] } });
|
|
15723
|
+
|
|
15724
|
+
class NgbAiPromptComponent {
|
|
15725
|
+
label = input("Draft workspace", /* @ts-ignore */
|
|
15726
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
15727
|
+
promptLabel = input("Describe the draft", /* @ts-ignore */
|
|
15728
|
+
...(ngDevMode ? [{ debugName: "promptLabel" }] : /* istanbul ignore next */ []));
|
|
15729
|
+
emptyText = input("Generated drafts appear here for review.", /* @ts-ignore */
|
|
15730
|
+
...(ngDevMode ? [{ debugName: "emptyText" }] : /* istanbul ignore next */ []));
|
|
15731
|
+
responses = input([], /* @ts-ignore */
|
|
15732
|
+
...(ngDevMode ? [{ debugName: "responses" }] : /* istanbul ignore next */ []));
|
|
15733
|
+
suggestions = input([], /* @ts-ignore */
|
|
15734
|
+
...(ngDevMode ? [{ debugName: "suggestions" }] : /* istanbul ignore next */ []));
|
|
15735
|
+
busy = input(false, /* @ts-ignore */
|
|
15736
|
+
...(ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []));
|
|
15737
|
+
disabled = input(false, /* @ts-ignore */
|
|
15738
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
15739
|
+
error = input("", /* @ts-ignore */
|
|
15740
|
+
...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
|
|
15741
|
+
promptSubmit = output();
|
|
15742
|
+
stop = output();
|
|
15743
|
+
responseApply = output();
|
|
15744
|
+
regenerate = output();
|
|
15745
|
+
responseDismiss = output();
|
|
15746
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbAiPromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15747
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NgbAiPromptComponent, isStandalone: true, selector: "ngb-ai-prompt", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, promptLabel: { classPropertyName: "promptLabel", publicName: "promptLabel", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, responses: { classPropertyName: "responses", publicName: "responses", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { promptSubmit: "promptSubmit", stop: "stop", responseApply: "responseApply", regenerate: "regenerate", responseDismiss: "responseDismiss" }, ngImport: i0, template: `
|
|
15748
|
+
<section class="ngb-ai-panel ngb-ai-workspace" [attr.aria-label]="label()">
|
|
15749
|
+
<header class="ngb-ai-header"><h2 class="h6 mb-0">{{ label() }}</h2><span class="ngb-ai-muted small">{{ responses().length }} {{ responses().length === 1 ? 'draft' : 'drafts' }}</span></header>
|
|
15750
|
+
<div class="ngb-ai-workspace-grid">
|
|
15751
|
+
<div class="ngb-ai-brief"><span class="ngb-ai-section-label">01 · Brief</span>
|
|
15752
|
+
<ngb-prompt-box [label]="promptLabel()" submitLabel="Create draft" [clearOnSubmit]="false" [busy]="busy()" [disabled]="disabled()" [suggestions]="suggestions()" (promptSubmit)="promptSubmit.emit($event)" (stop)="stop.emit()" />
|
|
15753
|
+
@if (error()) { <p class="ngb-ai-error" role="alert">{{ error() }}</p> }
|
|
15754
|
+
</div>
|
|
15755
|
+
<div class="ngb-ai-drafts" role="region" aria-label="Generated drafts" tabindex="0" aria-live="polite" [attr.aria-busy]="busy()">
|
|
15756
|
+
<span class="ngb-ai-section-label">02 · Review drafts</span>
|
|
15757
|
+
@for (response of responses(); track response.id) {
|
|
15758
|
+
<article class="ngb-ai-result">
|
|
15759
|
+
<h3 class="h6">{{ response.prompt }}</h3><p class="ngb-ai-text">{{ response.text }}</p>
|
|
15760
|
+
<div class="ngb-ai-actions">
|
|
15761
|
+
<button type="button" class="btn btn-sm btn-primary" [disabled]="busy() || disabled()" (click)="responseApply.emit(response)">Use draft</button>
|
|
15762
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="busy() || disabled()" (click)="regenerate.emit(response)">Try again</button>
|
|
15763
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="busy() || disabled()" (click)="responseDismiss.emit(response.id)">Dismiss</button>
|
|
15764
|
+
</div>
|
|
15765
|
+
</article>
|
|
15766
|
+
} @empty { <p class="ngb-ai-muted mt-3">{{ emptyText() }}</p> }
|
|
15767
|
+
</div>
|
|
15768
|
+
</div>
|
|
15769
|
+
</section>
|
|
15770
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"], dependencies: [{ kind: "component", type: NgbPromptBoxComponent, selector: "ngb-prompt-box", inputs: ["value", "label", "placeholder", "submitLabel", "stopLabel", "suggestions", "disabled", "busy", "maxLength", "submitOnEnter", "clearOnSubmit"], outputs: ["valueChange", "promptSubmit", "stop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15771
|
+
}
|
|
15772
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbAiPromptComponent, decorators: [{
|
|
15773
|
+
type: Component,
|
|
15774
|
+
args: [{ selector: "ngb-ai-prompt", standalone: true, imports: [NgbPromptBoxComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
15775
|
+
<section class="ngb-ai-panel ngb-ai-workspace" [attr.aria-label]="label()">
|
|
15776
|
+
<header class="ngb-ai-header"><h2 class="h6 mb-0">{{ label() }}</h2><span class="ngb-ai-muted small">{{ responses().length }} {{ responses().length === 1 ? 'draft' : 'drafts' }}</span></header>
|
|
15777
|
+
<div class="ngb-ai-workspace-grid">
|
|
15778
|
+
<div class="ngb-ai-brief"><span class="ngb-ai-section-label">01 · Brief</span>
|
|
15779
|
+
<ngb-prompt-box [label]="promptLabel()" submitLabel="Create draft" [clearOnSubmit]="false" [busy]="busy()" [disabled]="disabled()" [suggestions]="suggestions()" (promptSubmit)="promptSubmit.emit($event)" (stop)="stop.emit()" />
|
|
15780
|
+
@if (error()) { <p class="ngb-ai-error" role="alert">{{ error() }}</p> }
|
|
15781
|
+
</div>
|
|
15782
|
+
<div class="ngb-ai-drafts" role="region" aria-label="Generated drafts" tabindex="0" aria-live="polite" [attr.aria-busy]="busy()">
|
|
15783
|
+
<span class="ngb-ai-section-label">02 · Review drafts</span>
|
|
15784
|
+
@for (response of responses(); track response.id) {
|
|
15785
|
+
<article class="ngb-ai-result">
|
|
15786
|
+
<h3 class="h6">{{ response.prompt }}</h3><p class="ngb-ai-text">{{ response.text }}</p>
|
|
15787
|
+
<div class="ngb-ai-actions">
|
|
15788
|
+
<button type="button" class="btn btn-sm btn-primary" [disabled]="busy() || disabled()" (click)="responseApply.emit(response)">Use draft</button>
|
|
15789
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="busy() || disabled()" (click)="regenerate.emit(response)">Try again</button>
|
|
15790
|
+
<button type="button" class="btn btn-sm btn-outline-secondary" [disabled]="busy() || disabled()" (click)="responseDismiss.emit(response.id)">Dismiss</button>
|
|
15791
|
+
</div>
|
|
15792
|
+
</article>
|
|
15793
|
+
} @empty { <p class="ngb-ai-muted mt-3">{{ emptyText() }}</p> }
|
|
15794
|
+
</div>
|
|
15795
|
+
</div>
|
|
15796
|
+
</section>
|
|
15797
|
+
`, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"] }]
|
|
15798
|
+
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], promptLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "promptLabel", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }], responses: [{ type: i0.Input, args: [{ isSignal: true, alias: "responses", required: false }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], promptSubmit: [{ type: i0.Output, args: ["promptSubmit"] }], stop: [{ type: i0.Output, args: ["stop"] }], responseApply: [{ type: i0.Output, args: ["responseApply"] }], regenerate: [{ type: i0.Output, args: ["regenerate"] }], responseDismiss: [{ type: i0.Output, args: ["responseDismiss"] }] } });
|
|
15799
|
+
|
|
15800
|
+
let nextInlineId = 0;
|
|
15801
|
+
class NgbInlineAiPromptComponent {
|
|
15802
|
+
panelId = `ngb-ai-inline-${nextInlineId++}`;
|
|
15803
|
+
label = input("Assist with this text", /* @ts-ignore */
|
|
15804
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
15805
|
+
context = input("", /* @ts-ignore */
|
|
15806
|
+
...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
|
|
15807
|
+
suggestions = input([
|
|
15808
|
+
"Make it shorter",
|
|
15809
|
+
"Make the next action clear",
|
|
15810
|
+
], /* @ts-ignore */
|
|
15811
|
+
...(ngDevMode ? [{ debugName: "suggestions" }] : /* istanbul ignore next */ []));
|
|
15812
|
+
response = input("", /* @ts-ignore */
|
|
15813
|
+
...(ngDevMode ? [{ debugName: "response" }] : /* istanbul ignore next */ []));
|
|
15814
|
+
error = input("", /* @ts-ignore */
|
|
15815
|
+
...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
|
|
15816
|
+
busy = input(false, /* @ts-ignore */
|
|
15817
|
+
...(ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []));
|
|
15818
|
+
disabled = input(false, /* @ts-ignore */
|
|
15819
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
15820
|
+
promptSubmit = output();
|
|
15821
|
+
responseApply = output();
|
|
15822
|
+
stop = output();
|
|
15823
|
+
closed = output();
|
|
15824
|
+
open = signal(false, /* @ts-ignore */
|
|
15825
|
+
...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
15826
|
+
trigger = viewChild("trigger", /* @ts-ignore */
|
|
15827
|
+
...(ngDevMode ? [{ debugName: "trigger" }] : /* istanbul ignore next */ []));
|
|
15828
|
+
toggle() {
|
|
15829
|
+
if (this.disabled())
|
|
15830
|
+
return;
|
|
15831
|
+
if (this.open())
|
|
15832
|
+
this.close();
|
|
15833
|
+
else
|
|
15834
|
+
this.open.set(true);
|
|
15835
|
+
}
|
|
15836
|
+
request(instruction) {
|
|
15837
|
+
if (!this.busy() && !this.disabled() && instruction.trim())
|
|
15838
|
+
this.promptSubmit.emit({
|
|
15839
|
+
instruction: instruction.trim(),
|
|
15840
|
+
context: this.context(),
|
|
15841
|
+
});
|
|
15842
|
+
}
|
|
15843
|
+
apply() {
|
|
15844
|
+
if (this.disabled() || this.busy() || !this.response().trim())
|
|
15845
|
+
return;
|
|
15846
|
+
this.responseApply.emit(this.response());
|
|
15847
|
+
this.close();
|
|
15848
|
+
}
|
|
15849
|
+
close(event) {
|
|
15850
|
+
event?.stopPropagation();
|
|
15851
|
+
if (this.busy())
|
|
15852
|
+
this.stop.emit();
|
|
15853
|
+
this.open.set(false);
|
|
15854
|
+
this.closed.emit();
|
|
15855
|
+
this.trigger()?.nativeElement.focus();
|
|
15856
|
+
}
|
|
15857
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbInlineAiPromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15858
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NgbInlineAiPromptComponent, isStandalone: true, selector: "ngb-inline-ai-prompt", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, response: { classPropertyName: "response", publicName: "response", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { promptSubmit: "promptSubmit", responseApply: "responseApply", stop: "stop", closed: "closed" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
15859
|
+
<button #trigger type="button" class="btn btn-sm btn-outline-secondary" [disabled]="disabled()" [attr.aria-expanded]="open()" [attr.aria-controls]="open() ? panelId : null" (click)="toggle()">{{ label() }}</button>
|
|
15860
|
+
@if (open()) {
|
|
15861
|
+
<section [id]="panelId" class="ngb-ai-panel ngb-ai-inline" [attr.aria-label]="label()" (keydown.escape)="close($event)">
|
|
15862
|
+
<div class="ngb-ai-header"><strong class="small">Selected context</strong><button type="button" class="btn btn-sm btn-outline-secondary" (click)="close()">Close</button></div>
|
|
15863
|
+
<blockquote class="ngb-ai-context">{{ context() }}</blockquote>
|
|
15864
|
+
<ngb-prompt-box label="How should this change?" submitLabel="Suggest edit" [suggestions]="suggestions()" [busy]="busy()" [disabled]="disabled()" (promptSubmit)="request($event)" (stop)="stop.emit()" />
|
|
15865
|
+
@if (error()) { <p class="ngb-ai-error" role="alert">{{ error() }}</p> }
|
|
15866
|
+
<span class="visually-hidden" role="status">{{ response() ? 'Proposed edit ready for review.' : '' }}</span>
|
|
15867
|
+
@if (response()) {
|
|
15868
|
+
<div class="ngb-ai-result"><strong class="small">Proposed edit</strong><p class="ngb-ai-text">{{ response() }}</p>
|
|
15869
|
+
<button type="button" class="btn btn-sm btn-primary" [disabled]="busy() || disabled()" (click)="apply()">Apply edit</button>
|
|
15870
|
+
</div>
|
|
15871
|
+
}
|
|
15872
|
+
</section>
|
|
15873
|
+
}
|
|
15874
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"], dependencies: [{ kind: "component", type: NgbPromptBoxComponent, selector: "ngb-prompt-box", inputs: ["value", "label", "placeholder", "submitLabel", "stopLabel", "suggestions", "disabled", "busy", "maxLength", "submitOnEnter", "clearOnSubmit"], outputs: ["valueChange", "promptSubmit", "stop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15875
|
+
}
|
|
15876
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbInlineAiPromptComponent, decorators: [{
|
|
15877
|
+
type: Component,
|
|
15878
|
+
args: [{ selector: "ngb-inline-ai-prompt", standalone: true, imports: [NgbPromptBoxComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
15879
|
+
<button #trigger type="button" class="btn btn-sm btn-outline-secondary" [disabled]="disabled()" [attr.aria-expanded]="open()" [attr.aria-controls]="open() ? panelId : null" (click)="toggle()">{{ label() }}</button>
|
|
15880
|
+
@if (open()) {
|
|
15881
|
+
<section [id]="panelId" class="ngb-ai-panel ngb-ai-inline" [attr.aria-label]="label()" (keydown.escape)="close($event)">
|
|
15882
|
+
<div class="ngb-ai-header"><strong class="small">Selected context</strong><button type="button" class="btn btn-sm btn-outline-secondary" (click)="close()">Close</button></div>
|
|
15883
|
+
<blockquote class="ngb-ai-context">{{ context() }}</blockquote>
|
|
15884
|
+
<ngb-prompt-box label="How should this change?" submitLabel="Suggest edit" [suggestions]="suggestions()" [busy]="busy()" [disabled]="disabled()" (promptSubmit)="request($event)" (stop)="stop.emit()" />
|
|
15885
|
+
@if (error()) { <p class="ngb-ai-error" role="alert">{{ error() }}</p> }
|
|
15886
|
+
<span class="visually-hidden" role="status">{{ response() ? 'Proposed edit ready for review.' : '' }}</span>
|
|
15887
|
+
@if (response()) {
|
|
15888
|
+
<div class="ngb-ai-result"><strong class="small">Proposed edit</strong><p class="ngb-ai-text">{{ response() }}</p>
|
|
15889
|
+
<button type="button" class="btn btn-sm btn-primary" [disabled]="busy() || disabled()" (click)="apply()">Apply edit</button>
|
|
15890
|
+
</div>
|
|
15891
|
+
}
|
|
15892
|
+
</section>
|
|
15893
|
+
}
|
|
15894
|
+
`, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"] }]
|
|
15895
|
+
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: false }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], response: [{ type: i0.Input, args: [{ isSignal: true, alias: "response", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], promptSubmit: [{ type: i0.Output, args: ["promptSubmit"] }], responseApply: [{ type: i0.Output, args: ["responseApply"] }], stop: [{ type: i0.Output, args: ["stop"] }], closed: [{ type: i0.Output, args: ["closed"] }], trigger: [{ type: i0.ViewChild, args: ["trigger", { isSignal: true }] }] } });
|
|
15896
|
+
|
|
15897
|
+
class NgbSmartPasteComponent {
|
|
15898
|
+
label = input("Fill from a note", /* @ts-ignore */
|
|
15899
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
15900
|
+
emptyText = input("Paste a note, then review the proposed field values here.", /* @ts-ignore */
|
|
15901
|
+
...(ngDevMode ? [{ debugName: "emptyText" }] : /* istanbul ignore next */ []));
|
|
15902
|
+
fields = input([], /* @ts-ignore */
|
|
15903
|
+
...(ngDevMode ? [{ debugName: "fields" }] : /* istanbul ignore next */ []));
|
|
15904
|
+
suggestions = input([], /* @ts-ignore */
|
|
15905
|
+
...(ngDevMode ? [{ debugName: "suggestions" }] : /* istanbul ignore next */ []));
|
|
15906
|
+
disabled = input(false, /* @ts-ignore */
|
|
15907
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
15908
|
+
busy = input(false, /* @ts-ignore */
|
|
15909
|
+
...(ngDevMode ? [{ debugName: "busy" }] : /* istanbul ignore next */ []));
|
|
15910
|
+
error = input("", /* @ts-ignore */
|
|
15911
|
+
...(ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []));
|
|
15912
|
+
mappingRequest = output();
|
|
15913
|
+
valuesApply = output();
|
|
15914
|
+
stop = output();
|
|
15915
|
+
source = model("", /* @ts-ignore */
|
|
15916
|
+
...(ngDevMode ? [{ debugName: "source" }] : /* istanbul ignore next */ []));
|
|
15917
|
+
excluded = signal(new Set(), /* @ts-ignore */
|
|
15918
|
+
...(ngDevMode ? [{ debugName: "excluded" }] : /* istanbul ignore next */ []));
|
|
15919
|
+
edits = signal(new Map(), /* @ts-ignore */
|
|
15920
|
+
...(ngDevMode ? [{ debugName: "edits" }] : /* istanbul ignore next */ []));
|
|
15921
|
+
candidates = computed(() => {
|
|
15922
|
+
const seen = new Set();
|
|
15923
|
+
const result = [];
|
|
15924
|
+
for (const field of this.fields()) {
|
|
15925
|
+
if (seen.has(field.key))
|
|
15926
|
+
continue;
|
|
15927
|
+
seen.add(field.key);
|
|
15928
|
+
const candidate = this.suggestions().find((s) => s.field === field.key && typeof s.value === "string");
|
|
15929
|
+
if (candidate)
|
|
15930
|
+
result.push({ field, value: candidate.value });
|
|
15931
|
+
}
|
|
15932
|
+
return result;
|
|
15933
|
+
}, /* @ts-ignore */
|
|
15934
|
+
...(ngDevMode ? [{ debugName: "candidates" }] : /* istanbul ignore next */ []));
|
|
15935
|
+
selected = computed(() => this.candidates()
|
|
15936
|
+
.filter((c) => !this.excluded().has(c.field.key))
|
|
15937
|
+
.map((c) => ({
|
|
15938
|
+
field: c.field.key,
|
|
15939
|
+
value: this.edits().get(c.field.key) ?? c.value,
|
|
15940
|
+
})), /* @ts-ignore */
|
|
15941
|
+
...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
|
|
15942
|
+
constructor() {
|
|
15943
|
+
effect(() => {
|
|
15944
|
+
this.suggestions();
|
|
15945
|
+
this.fields();
|
|
15946
|
+
this.excluded.set(new Set());
|
|
15947
|
+
this.edits.set(new Map());
|
|
15948
|
+
});
|
|
15949
|
+
}
|
|
15950
|
+
request(text) {
|
|
15951
|
+
if (this.disabled() || this.busy() || !text.trim() || !this.fields().length)
|
|
15952
|
+
return;
|
|
15953
|
+
this.mappingRequest.emit({
|
|
15954
|
+
text: text.trim(),
|
|
15955
|
+
fields: this.fields().map((field) => ({ ...field })),
|
|
15956
|
+
});
|
|
15957
|
+
}
|
|
15958
|
+
toggle(key) {
|
|
15959
|
+
this.excluded.update((current) => {
|
|
15960
|
+
const next = new Set(current);
|
|
15961
|
+
next.has(key) ? next.delete(key) : next.add(key);
|
|
15962
|
+
return next;
|
|
15963
|
+
});
|
|
15964
|
+
}
|
|
15965
|
+
edit(key, event) {
|
|
15966
|
+
this.edits.update((current) => new Map(current).set(key, event.target.value));
|
|
15967
|
+
}
|
|
15968
|
+
apply() {
|
|
15969
|
+
if (!this.disabled() && !this.busy() && this.selected().length)
|
|
15970
|
+
this.valuesApply.emit(this.selected());
|
|
15971
|
+
}
|
|
15972
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbSmartPasteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15973
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: NgbSmartPasteComponent, isStandalone: true, selector: "ngb-smart-paste", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, fields: { classPropertyName: "fields", publicName: "fields", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mappingRequest: "mappingRequest", valuesApply: "valuesApply", stop: "stop", source: "sourceChange" }, ngImport: i0, template: `
|
|
15974
|
+
<section class="ngb-ai-panel" [attr.aria-label]="label()">
|
|
15975
|
+
<header class="ngb-ai-header"><h2 class="h6 mb-0">{{ label() }}</h2><span class="ngb-ai-muted small">Review before applying</span></header>
|
|
15976
|
+
<ngb-prompt-box label="Paste source text" submitLabel="Find field values" [submitOnEnter]="false" [clearOnSubmit]="false" [value]="source()" (valueChange)="source.set($event)" [busy]="busy()" [disabled]="disabled() || !fields().length" (promptSubmit)="request($event)" (stop)="stop.emit()" />
|
|
15977
|
+
@if (error()) { <p class="ngb-ai-error" role="alert">{{ error() }}</p> }
|
|
15978
|
+
<span class="visually-hidden" role="status" aria-live="polite">{{ candidates().length ? candidates().length + ' proposed fields ready for review.' : '' }}</span>
|
|
15979
|
+
@if (candidates().length) {
|
|
15980
|
+
<fieldset class="ngb-ai-review" [disabled]="busy() || disabled()">
|
|
15981
|
+
<legend class="h6">Choose values to apply</legend>
|
|
15982
|
+
@for (candidate of candidates(); track candidate.field.key) {
|
|
15983
|
+
<div class="ngb-ai-field">
|
|
15984
|
+
<label class="ngb-ai-check"><input type="checkbox" class="form-check-input" [checked]="!excluded().has(candidate.field.key)" (change)="toggle(candidate.field.key)" /> {{ candidate.field.label }}</label>
|
|
15985
|
+
<span class="ngb-ai-muted small">Current: {{ candidate.field.value || 'Empty' }}</span>
|
|
15986
|
+
<label class="ngb-ai-label small">Proposed {{ candidate.field.label }}
|
|
15987
|
+
<input type="text" class="form-control form-control-sm" [value]="edits().get(candidate.field.key) ?? candidate.value" (input)="edit(candidate.field.key, $event)" />
|
|
15988
|
+
</label>
|
|
15989
|
+
</div>
|
|
15990
|
+
}
|
|
15991
|
+
</fieldset>
|
|
15992
|
+
<button type="button" class="btn btn-sm btn-primary" [disabled]="busy() || disabled() || !selected().length" (click)="apply()">Apply {{ selected().length }} values</button>
|
|
15993
|
+
} @else { <p class="ngb-ai-muted mt-3">{{ emptyText() }}</p> }
|
|
15994
|
+
</section>
|
|
15995
|
+
`, isInline: true, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"], dependencies: [{ kind: "component", type: NgbPromptBoxComponent, selector: "ngb-prompt-box", inputs: ["value", "label", "placeholder", "submitLabel", "stopLabel", "suggestions", "disabled", "busy", "maxLength", "submitOnEnter", "clearOnSubmit"], outputs: ["valueChange", "promptSubmit", "stop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
15996
|
+
}
|
|
15997
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NgbSmartPasteComponent, decorators: [{
|
|
15998
|
+
type: Component,
|
|
15999
|
+
args: [{ selector: "ngb-smart-paste", standalone: true, imports: [NgbPromptBoxComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
16000
|
+
<section class="ngb-ai-panel" [attr.aria-label]="label()">
|
|
16001
|
+
<header class="ngb-ai-header"><h2 class="h6 mb-0">{{ label() }}</h2><span class="ngb-ai-muted small">Review before applying</span></header>
|
|
16002
|
+
<ngb-prompt-box label="Paste source text" submitLabel="Find field values" [submitOnEnter]="false" [clearOnSubmit]="false" [value]="source()" (valueChange)="source.set($event)" [busy]="busy()" [disabled]="disabled() || !fields().length" (promptSubmit)="request($event)" (stop)="stop.emit()" />
|
|
16003
|
+
@if (error()) { <p class="ngb-ai-error" role="alert">{{ error() }}</p> }
|
|
16004
|
+
<span class="visually-hidden" role="status" aria-live="polite">{{ candidates().length ? candidates().length + ' proposed fields ready for review.' : '' }}</span>
|
|
16005
|
+
@if (candidates().length) {
|
|
16006
|
+
<fieldset class="ngb-ai-review" [disabled]="busy() || disabled()">
|
|
16007
|
+
<legend class="h6">Choose values to apply</legend>
|
|
16008
|
+
@for (candidate of candidates(); track candidate.field.key) {
|
|
16009
|
+
<div class="ngb-ai-field">
|
|
16010
|
+
<label class="ngb-ai-check"><input type="checkbox" class="form-check-input" [checked]="!excluded().has(candidate.field.key)" (change)="toggle(candidate.field.key)" /> {{ candidate.field.label }}</label>
|
|
16011
|
+
<span class="ngb-ai-muted small">Current: {{ candidate.field.value || 'Empty' }}</span>
|
|
16012
|
+
<label class="ngb-ai-label small">Proposed {{ candidate.field.label }}
|
|
16013
|
+
<input type="text" class="form-control form-control-sm" [value]="edits().get(candidate.field.key) ?? candidate.value" (input)="edit(candidate.field.key, $event)" />
|
|
16014
|
+
</label>
|
|
16015
|
+
</div>
|
|
16016
|
+
}
|
|
16017
|
+
</fieldset>
|
|
16018
|
+
<button type="button" class="btn btn-sm btn-primary" [disabled]="busy() || disabled() || !selected().length" (click)="apply()">Apply {{ selected().length }} values</button>
|
|
16019
|
+
} @else { <p class="ngb-ai-muted mt-3">{{ emptyText() }}</p> }
|
|
16020
|
+
</section>
|
|
16021
|
+
`, styles: [":host{font-family:var(--ngb-font-family, inherit);color:var(--ngb-on-surface, inherit)}.btn{--bs-btn-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-btn-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-btn-disabled-opacity: var(--ngb-disabled-opacity, .65)}.btn-primary{--bs-btn-bg: var(--ngb-primary, #0d6efd);--bs-btn-border-color: var(--ngb-primary, #0d6efd);--bs-btn-color: var(--ngb-on-primary, #fff);--bs-btn-hover-bg: var(--ngb-primary-hover, #0b5ed7);--bs-btn-hover-border-color: var(--ngb-primary-hover, #0a58ca);--bs-btn-hover-color: var(--ngb-on-primary, #fff);--bs-btn-active-bg: var(--ngb-primary-hover, #0a58ca);--bs-btn-active-border-color: var(--ngb-primary-hover, #0a53be);--bs-btn-active-color: var(--ngb-on-primary, #fff);--bs-btn-disabled-bg: var(--ngb-primary, #0d6efd);--bs-btn-disabled-border-color: var(--ngb-primary, #0d6efd);--bs-btn-disabled-color: var(--ngb-on-primary, #fff)}.btn-outline-secondary{--bs-btn-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-border-color: var(--ngb-border-color, #6c757d);--bs-btn-hover-bg: var(--ngb-hover-bg, #6c757d);--bs-btn-hover-color: var(--ngb-on-surface, #fff);--bs-btn-hover-border-color: var(--ngb-border-color, #6c757d);--bs-btn-active-bg: var(--ngb-selected-bg, #6c757d);--bs-btn-active-color: var(--ngb-on-surface, #fff);--bs-btn-active-border-color: var(--ngb-border-color, #6c757d);--bs-btn-disabled-color: var(--ngb-on-surface-variant, #6c757d);--bs-btn-disabled-border-color: var(--ngb-border-color, #6c757d)}.form-control,.form-select{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, var(--bs-border-radius, .375rem))}.form-control::placeholder{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.form-control:disabled,.form-select:disabled{background-color:var(--ngb-surface-variant, var(--bs-secondary-bg, #e9ecef));opacity:var(--ngb-disabled-opacity, 1)}.form-check-input{background-color:var(--ngb-surface, var(--bs-body-bg, #fff));border-color:var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.form-check-input:checked,.form-check-input:indeterminate{background-color:var(--ngb-primary, #0d6efd);border-color:var(--ngb-primary, #0d6efd)}.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--ngb-primary, #86b7fe);box-shadow:0 0 0 .25rem var(--ngb-focus-ring, rgba(13, 110, 253, .25))}.btn:focus-visible,.page-link:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.dropdown-menu{--bs-dropdown-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-bg: var(--ngb-surface, var(--bs-body-bg, #fff));--bs-dropdown-border-color: var(--ngb-border-color, var(--bs-border-color-translucent, rgba(0,0,0,.175)));--bs-dropdown-border-radius: var(--ngb-radius-md, var(--bs-border-radius, .375rem));--bs-dropdown-link-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-hover-bg: var(--ngb-hover-bg, var(--bs-tertiary-bg, #f8f9fa));--bs-dropdown-link-hover-color: var(--ngb-on-surface, var(--bs-body-color, #212529));--bs-dropdown-link-active-bg: var(--ngb-primary, #0d6efd);--bs-dropdown-link-active-color: var(--ngb-on-primary, #fff);--bs-dropdown-link-disabled-color: var(--ngb-on-surface-variant, var(--bs-tertiary-color, #adb5bd));box-shadow:var(--ngb-elevation-2, none)}.form-select{background-image:var(--ngb-select-icon, var(--bs-form-select-bg-img))}.form-check-input:disabled{opacity:var(--ngb-disabled-opacity, .5)}.btn-sm{--bs-btn-border-radius: var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}.form-control-sm,.form-select-sm{border-radius:var(--ngb-radius-sm, var(--bs-border-radius-sm, .25rem))}:host{display:block;min-width:0}.ngb-ai-panel{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-lg, .5rem);padding:var(--ngb-space-4, 1rem)}.ngb-ai-composer{color:var(--ngb-on-surface, var(--bs-body-color, #212529));background:var(--ngb-surface, var(--bs-body-bg, #fff));border-radius:var(--ngb-radius-md, .375rem);padding:var(--ngb-space-3, .75rem)}.ngb-ai-header,.ngb-ai-composer-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem}.ngb-ai-composer-footer{margin-top:.75rem;margin-bottom:0}.ngb-ai-label{display:flex;flex-direction:column;gap:.4rem;width:100%;font-weight:500}textarea{resize:vertical;min-height:6rem}.ngb-ai-actions{display:flex;gap:var(--ngb-space-2, .5rem);flex-wrap:wrap;margin-top:.75rem}.ngb-ai-actions [aria-pressed=true]{background:var(--ngb-selected-bg, var(--bs-primary-bg-subtle, #cfe2ff));color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-muted{color:var(--ngb-on-surface-variant, var(--bs-secondary-color, #6c757d))}.ngb-ai-transcript{max-height:28rem;overflow:auto;padding:.25rem;margin-bottom:1rem}.ngb-ai-transcript:focus-visible{outline:2px solid var(--ngb-focus-ring, #86b7fe);outline-offset:2px}.ngb-ai-message{padding:.85rem;margin-bottom:.75rem;border-inline-start:3px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-message-user{background:var(--ngb-surface-container, var(--bs-tertiary-bg, #f8f9fa));border-color:var(--ngb-primary, var(--bs-primary, #0d6efd));border-radius:var(--ngb-radius-sm, .25rem)}.ngb-ai-text,.ngb-ai-context{white-space:pre-wrap;overflow-wrap:anywhere;margin:.5rem 0}.ngb-ai-error{color:var(--ngb-danger, var(--bs-danger, #dc3545));margin-block:.75rem}.ngb-ai-result{margin-top:1rem;padding:1rem;border:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6));border-radius:var(--ngb-radius-md, .375rem)}.ngb-ai-inline{margin-top:.75rem;box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-context{border-inline-start:3px solid var(--ngb-border-color, #dee2e6);padding-inline-start:.75rem;max-height:12rem;overflow:auto}.ngb-ai-review{margin-block:1rem}.ngb-ai-field{display:grid;gap:.35rem;padding-block:.75rem;border-bottom:1px solid var(--ngb-border-color, var(--bs-border-color, #dee2e6))}.ngb-ai-check{display:flex;gap:.5rem;align-items:center}.ngb-ai-composer{border:1px solid var(--ngb-border-color, #dee2e6);box-shadow:var(--ngb-elevation-1, 0 1px 3px rgba(0, 0, 0, .0666666667))}.ngb-ai-chat .ngb-ai-transcript{min-height:16rem}.ngb-ai-chat .ngb-ai-message{border:0;max-width:90%;padding:.8rem 1rem}.ngb-ai-chat .ngb-ai-message-user{margin-inline-start:auto;max-width:80%;border-radius:var(--ngb-radius-lg, .5rem);background:var(--ngb-selected-bg, #cfe2ff)}.ngb-ai-chat .ngb-ai-message:not(.ngb-ai-message-user)>strong{color:var(--ngb-primary, #0d6efd)}.ngb-ai-workspace-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:1.25rem}.ngb-ai-brief,.ngb-ai-drafts{min-width:0}.ngb-ai-drafts{max-height:38rem;overflow:auto;padding:.25rem}.ngb-ai-section-label{display:block;margin-bottom:.8rem;color:var(--ngb-on-surface-variant, #6c757d);font-size:var(--ngb-font-size-sm, .875rem);font-weight:600}.ngb-ai-workspace .ngb-ai-result{background:var(--ngb-surface-container, #f8f9fa)}.ngb-ai-inline{border-inline-start:3px solid var(--ngb-primary, #0d6efd)}.ngb-ai-inline .ngb-ai-result{background:var(--ngb-selected-bg, #cfe2ff)}@media(max-width:640px){.ngb-ai-workspace-grid{grid-template-columns:minmax(0,1fr)}.ngb-ai-chat .ngb-ai-message,.ngb-ai-chat .ngb-ai-message-user{max-width:100%}}.ngb-ai-panel h2,.ngb-ai-panel h3{color:var(--ngb-on-surface, var(--bs-body-color, #212529))}.ngb-ai-drafts:focus-visible{outline:2px solid var(--ngb-primary, #0d6efd);outline-offset:2px}\n"] }]
|
|
16022
|
+
}], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }], fields: [{ type: i0.Input, args: [{ isSignal: true, alias: "fields", required: false }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], mappingRequest: [{ type: i0.Output, args: ["mappingRequest"] }], valuesApply: [{ type: i0.Output, args: ["valuesApply"] }], stop: [{ type: i0.Output, args: ["stop"] }], source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: false }] }, { type: i0.Output, args: ["sourceChange"] }] } });
|
|
16023
|
+
|
|
15509
16024
|
/**
|
|
15510
16025
|
* Generated bundle index. Do not edit.
|
|
15511
16026
|
*/
|
|
15512
16027
|
|
|
15513
|
-
export { BrowserExcelExportAdapter, DATAGRID_COLUMN_DIRECTIVES, DATAGRID_TEMPLATE_DIRECTIVES, DND_I18N, DND_LIVE_ANNOUNCE, Datagrid, ExcelExportAdapter, ExportButtonDirective, JsPdfAdapter, NGB_BOOLEAN_FILTER_OPERATORS, NGB_DATAGRID_DEFAULT_LABELS, NGB_DATAGRID_DEFAULT_PAGEABLE, NGB_DATAGRID_HOST, NGB_DATAGRID_KEYBOARD_SHORTCUTS, NGB_DATAGRID_PAGER_BREAKPOINTS, NGB_DATAGRID_THEME_OPTIONS, NGB_DATE_FILTER_OPERATORS, NGB_NUMERIC_FILTER_OPERATORS, NGB_PAGER_BREAKPOINTS, NGB_PAGER_DEFAULT_SETTINGS, NGB_SELECT_FILTER_OPERATORS, NGB_TEXT_FILTER_OPERATORS, NgbAdvancedSearchComponent, NgbCellTemplate, NgbChipsComponent, NgbDataChartComponent, NgbDataGridGroupFooterTemplateDirective, NgbDataGridGroupHeaderColumnTemplateDirective, NgbDataGridGroupHeaderTemplateDirective, NgbDataSparklineComponent, NgbDatagridButtonDirective, NgbDatagridColumnChooserToolComponent, NgbDatagridControlDirective, NgbDatagridDefaultEditService, NgbDatagridFieldShellComponent, NgbDatagridFilterToolComponent, NgbDatagridFloatingPanelDirective, NgbDatagridLayoutToolbarComponent, NgbDatagridLayoutToolbarSpacerComponent, NgbDatagridSortToolComponent, NgbDatagridSurfaceCardComponent, NgbDatagridThemePickerComponent, NgbDndHandleDirective, NgbDndItemDirective, NgbDndListDirective, NgbDndState, NgbEditorTemplate, NgbExportService, NgbFilterMenuTemplate, NgbFilterTemplate, NgbGlobalFilterTemplate, NgbGridChartComponent, NgbGridColumnDirective, NgbGridHighlightDirective, NgbJsonPreviewComponent, NgbLiveAnnouncer, NgbPagerComponent, NgbPagerTemplate, NgbPaginationComponent, NgbRowDetailTemplate, NgbSearchHighlightComponent, NgbSplitterComponent, NgbSplitterPaneComponent, NgbStepLabelDirective, NgbStepperComponent, NgbTreeComponent, NgbTypeaheadComponent, PdfExportAdapter, defaultDndI18n, ngbAggregateValues, ngbAllowedFilterOperators, ngbApplyDataGridOperations, ngbBuildChartJsConfig, ngbBuildColumnSelectionChartData, ngbBuildFullGridChartData, ngbBuildRowSelectionChartData, ngbBuildSparklinePoints, ngbCalculateDataGridAggregates, ngbChartPalette, ngbColumnTypeToFilterType, ngbDatagridPagerSettings, ngbDefaultFilterOperator, ngbFilterOperatorLabel, ngbFindFieldFilterDescriptor, ngbFlattenFilterDescriptors, ngbFormatDatagridLabel, ngbFormatPagerRangeLabel, ngbGroupData, ngbIsCompositeFilter, ngbOperatorRequiresFilterValue, ngbPagerButtonCountForDensity, ngbResolveDatagridPagerSettings, ngbResolvePageableSettings, ngbResolvePagerDensity, ngbResolvePagerPageSizeOptions, ngbResolvePagerSettings, ngbSetFieldFilter };
|
|
16028
|
+
export { BrowserExcelExportAdapter, DATAGRID_COLUMN_DIRECTIVES, DATAGRID_TEMPLATE_DIRECTIVES, DND_I18N, DND_LIVE_ANNOUNCE, Datagrid, ExcelExportAdapter, ExportButtonDirective, JsPdfAdapter, NGB_BOOLEAN_FILTER_OPERATORS, NGB_DATAGRID_DEFAULT_LABELS, NGB_DATAGRID_DEFAULT_PAGEABLE, NGB_DATAGRID_HOST, NGB_DATAGRID_KEYBOARD_SHORTCUTS, NGB_DATAGRID_PAGER_BREAKPOINTS, NGB_DATAGRID_THEME_OPTIONS, NGB_DATE_FILTER_OPERATORS, NGB_NUMERIC_FILTER_OPERATORS, NGB_PAGER_BREAKPOINTS, NGB_PAGER_DEFAULT_SETTINGS, NGB_SELECT_FILTER_OPERATORS, NGB_TEXT_FILTER_OPERATORS, NgbAdvancedSearchComponent, NgbAiChatComponent, NgbAiPromptComponent, NgbCellTemplate, NgbChipsComponent, NgbDataChartComponent, NgbDataGridGroupFooterTemplateDirective, NgbDataGridGroupHeaderColumnTemplateDirective, NgbDataGridGroupHeaderTemplateDirective, NgbDataSparklineComponent, NgbDatagridButtonDirective, NgbDatagridColumnChooserToolComponent, NgbDatagridControlDirective, NgbDatagridDefaultEditService, NgbDatagridFieldShellComponent, NgbDatagridFilterToolComponent, NgbDatagridFloatingPanelDirective, NgbDatagridLayoutToolbarComponent, NgbDatagridLayoutToolbarSpacerComponent, NgbDatagridSortToolComponent, NgbDatagridSurfaceCardComponent, NgbDatagridThemePickerComponent, NgbDndHandleDirective, NgbDndItemDirective, NgbDndListDirective, NgbDndState, NgbEditorTemplate, NgbExportService, NgbFilterMenuTemplate, NgbFilterTemplate, NgbGlobalFilterTemplate, NgbGridChartComponent, NgbGridColumnDirective, NgbGridHighlightDirective, NgbInlineAiPromptComponent, NgbJsonPreviewComponent, NgbLiveAnnouncer, NgbPagerComponent, NgbPagerTemplate, NgbPaginationComponent, NgbPromptBoxComponent, NgbRowDetailTemplate, NgbSearchHighlightComponent, NgbSmartPasteComponent, NgbSplitterComponent, NgbSplitterPaneComponent, NgbStepLabelDirective, NgbStepperComponent, NgbTreeComponent, NgbTypeaheadComponent, PdfExportAdapter, defaultDndI18n, ngbAggregateValues, ngbAllowedFilterOperators, ngbApplyDataGridOperations, ngbBuildChartJsConfig, ngbBuildColumnSelectionChartData, ngbBuildFullGridChartData, ngbBuildRowSelectionChartData, ngbBuildSparklinePoints, ngbCalculateDataGridAggregates, ngbChartPalette, ngbColumnTypeToFilterType, ngbDatagridPagerSettings, ngbDefaultFilterOperator, ngbFilterOperatorLabel, ngbFindFieldFilterDescriptor, ngbFlattenFilterDescriptors, ngbFormatDatagridLabel, ngbFormatPagerRangeLabel, ngbGroupData, ngbIsCompositeFilter, ngbOperatorRequiresFilterValue, ngbPagerButtonCountForDensity, ngbResolveDatagridPagerSettings, ngbResolvePageableSettings, ngbResolvePagerDensity, ngbResolvePagerPageSizeOptions, ngbResolvePagerSettings, ngbSetFieldFilter };
|
|
15514
16029
|
//# sourceMappingURL=angular-bootstrap-ngbootstrap.mjs.map
|