@praxisui/table 9.0.59 → 9.0.61

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, EventEmitter, Output, Input, Optional, Inject, Component, ChangeDetectionStrategy, Injectable, LOCALE_ID, inject, DestroyRef, Directive, ElementRef, ChangeDetectorRef, ViewChild, HostListener, ENVIRONMENT_INITIALIZER, effect, booleanAttribute, HostBinding, ContentChild } from '@angular/core';
2
+ import { InjectionToken, signal, EventEmitter, ElementRef, Output, Input, ViewChild, Optional, Inject, Component, ChangeDetectionStrategy, Injectable, LOCALE_ID, inject, DestroyRef, Directive, ChangeDetectorRef, HostListener, ENVIRONMENT_INITIALIZER, effect, booleanAttribute, HostBinding, ContentChild } from '@angular/core';
3
3
  import * as i10$1 from '@angular/common';
4
4
  import { NgTemplateOutlet, UpperCasePipe, LowerCasePipe, TitleCasePipe, PercentPipe, CurrencyPipe, DecimalPipe, DatePipe, CommonModule } from '@angular/common';
5
5
  import { DomSanitizer } from '@angular/platform-browser';
@@ -115,6 +115,9 @@ const PRAXIS_TABLE_RUNTIME_I18N_CONFIG = {
115
115
  'table.export.deferred': 'Exportação enviada para processamento.',
116
116
  'table.export.error': 'Não foi possível exportar os dados.',
117
117
  'table.chrome.moreActions': 'Mais ações',
118
+ 'table.chrome.compactGroup.actions': 'Ações',
119
+ 'table.chrome.compactGroup.export': 'Exportar',
120
+ 'table.chrome.compactGroup.view': 'Visualização',
118
121
  'table.chrome.rowActions.more': 'Mais ações',
119
122
  'table.chrome.rowActions.loading': 'Carregando ações contextuais',
120
123
  'table.chrome.rowActions.view': 'Visualizar',
@@ -272,6 +275,9 @@ const PRAXIS_TABLE_RUNTIME_I18N_CONFIG = {
272
275
  'table.export.deferred': 'Export submitted for processing.',
273
276
  'table.export.error': 'Could not export the data.',
274
277
  'table.chrome.moreActions': 'More actions',
278
+ 'table.chrome.compactGroup.actions': 'Actions',
279
+ 'table.chrome.compactGroup.export': 'Export',
280
+ 'table.chrome.compactGroup.view': 'View',
275
281
  'table.chrome.rowActions.more': 'More actions',
276
282
  'table.chrome.rowActions.loading': 'Loading contextual actions',
277
283
  'table.chrome.rowActions.view': 'View',
@@ -436,14 +442,17 @@ function resolveTableRuntimeFallback(key, locale) {
436
442
  }
437
443
  function translateTableRuntimeText(i18n, key, fallback, params, locale) {
438
444
  const explicitLocale = typeof locale === 'string' && locale.trim() ? locale.trim() : '';
439
- const runtimeFallback = resolveTableRuntimeFallback(key, explicitLocale)
440
- || resolveTableRuntimeFallback(key, explicitLocale || i18n?.getLocale?.() || i18n?.getFallbackLocale?.() || 'pt-BR')
441
- || fallback
442
- || key;
445
+ const runtimeFallback = resolveTableRuntimeFallback(key, explicitLocale) ||
446
+ resolveTableRuntimeFallback(key, explicitLocale ||
447
+ i18n?.getLocale?.() ||
448
+ i18n?.getFallbackLocale?.() ||
449
+ 'pt-BR') ||
450
+ fallback ||
451
+ key;
443
452
  if (explicitLocale) {
444
453
  return interpolateTableRuntimeText(runtimeFallback, params);
445
454
  }
446
- return i18n?.t(key, params, runtimeFallback, PRAXIS_TABLE_RUNTIME_I18N_NAMESPACE) || interpolateTableRuntimeText(runtimeFallback, params);
455
+ return (i18n?.t(key, params, runtimeFallback, PRAXIS_TABLE_RUNTIME_I18N_NAMESPACE) || interpolateTableRuntimeText(runtimeFallback, params));
447
456
  }
448
457
  function interpolateTableRuntimeText(template, params) {
449
458
  if (!params)
@@ -632,8 +641,16 @@ class PraxisTableToolbar {
632
641
  i18n;
633
642
  defaultAppearance;
634
643
  tokenPresets;
644
+ toolbarRoot;
645
+ toolbarIdentity;
646
+ fullActionsGroup;
647
+ endActionsGroup;
635
648
  activeOverflowMenuTrigger;
636
649
  activeOverflowMenuTriggerElement;
650
+ actionsCompacted = signal(false, ...(ngDevMode ? [{ debugName: "actionsCompacted" }] : /* istanbul ignore next */ []));
651
+ actionCapacityObserver;
652
+ actionCapacityMutationObserver;
653
+ actionCapacityFrame = null;
637
654
  config;
638
655
  appearance = null;
639
656
  backgroundColor = null;
@@ -689,6 +706,15 @@ class PraxisTableToolbar {
689
706
  getToolbarActionsLabel() {
690
707
  return this.tx('table.chrome.toolbarActions', 'Ações da tabela');
691
708
  }
709
+ getCompactActionsGroupLabel() {
710
+ return this.tx('table.chrome.compactGroup.actions', 'Ações');
711
+ }
712
+ getCompactExportGroupLabel() {
713
+ return this.tx('table.chrome.compactGroup.export', 'Exportar');
714
+ }
715
+ getCompactViewGroupLabel() {
716
+ return this.tx('table.chrome.compactGroup.view', 'Visualização');
717
+ }
692
718
  getToolbarConfigurationLabel() {
693
719
  return this.tx('table.chrome.toolbarConfiguration', 'Configuração e assistente');
694
720
  }
@@ -936,7 +962,117 @@ class PraxisTableToolbar {
936
962
  return template;
937
963
  return Object.entries(params).reduce((current, [key, value]) => current.replace(new RegExp(`\\{${key}\\}`, 'g'), String(value ?? '')), template);
938
964
  }
939
- ngOnDestroy() { }
965
+ ngAfterViewInit() {
966
+ if (typeof getComputedStyle === 'undefined')
967
+ return;
968
+ this.scheduleActionCapacityCheck();
969
+ const capacityTargets = [
970
+ this.toolbarRoot?.nativeElement,
971
+ this.toolbarIdentity?.nativeElement,
972
+ this.fullActionsGroup?.nativeElement,
973
+ this.endActionsGroup?.nativeElement,
974
+ ].filter((target) => !!target);
975
+ if (typeof ResizeObserver !== 'undefined') {
976
+ this.actionCapacityObserver = new ResizeObserver(() => {
977
+ this.scheduleActionCapacityCheck();
978
+ });
979
+ for (const target of capacityTargets) {
980
+ this.actionCapacityObserver.observe(target);
981
+ }
982
+ }
983
+ if (typeof MutationObserver !== 'undefined') {
984
+ this.actionCapacityMutationObserver = new MutationObserver(() => {
985
+ this.scheduleActionCapacityCheck();
986
+ });
987
+ const toolbarRoot = this.toolbarRoot?.nativeElement;
988
+ if (toolbarRoot) {
989
+ this.actionCapacityMutationObserver.observe(toolbarRoot, {
990
+ childList: true,
991
+ characterData: true,
992
+ subtree: true,
993
+ });
994
+ }
995
+ }
996
+ }
997
+ ngOnDestroy() {
998
+ this.actionCapacityObserver?.disconnect();
999
+ this.actionCapacityMutationObserver?.disconnect();
1000
+ if (this.actionCapacityFrame !== null &&
1001
+ typeof cancelAnimationFrame !== 'undefined') {
1002
+ cancelAnimationFrame(this.actionCapacityFrame);
1003
+ }
1004
+ }
1005
+ scheduleActionCapacityCheck() {
1006
+ if (typeof requestAnimationFrame === 'undefined') {
1007
+ this.updateActionCapacity();
1008
+ return;
1009
+ }
1010
+ if (this.actionCapacityFrame !== null) {
1011
+ cancelAnimationFrame(this.actionCapacityFrame);
1012
+ }
1013
+ this.actionCapacityFrame = requestAnimationFrame(() => {
1014
+ this.actionCapacityFrame = null;
1015
+ this.updateActionCapacity();
1016
+ });
1017
+ }
1018
+ updateActionCapacity() {
1019
+ const toolbar = this.toolbarRoot?.nativeElement;
1020
+ const actions = this.fullActionsGroup?.nativeElement;
1021
+ if (!toolbar ||
1022
+ !actions ||
1023
+ !this.showActionsGroup ||
1024
+ !this.showMobileActions ||
1025
+ !this.hasCompactCommands()) {
1026
+ this.actionsCompacted.set(false);
1027
+ return;
1028
+ }
1029
+ const toolbarStyle = getComputedStyle(toolbar);
1030
+ const contentWidth = Math.max(0, toolbar.clientWidth -
1031
+ this.readPixelValue(toolbarStyle.paddingInlineStart) -
1032
+ this.readPixelValue(toolbarStyle.paddingInlineEnd));
1033
+ if (contentWidth <= 0) {
1034
+ this.actionsCompacted.set(false);
1035
+ return;
1036
+ }
1037
+ const identityWidth = this.getIdentityRequiredWidth();
1038
+ const endActions = this.endActionsGroup?.nativeElement;
1039
+ const endActionsWidth = endActions && getComputedStyle(endActions).display !== 'none'
1040
+ ? Math.max(endActions.scrollWidth, endActions.getBoundingClientRect().width)
1041
+ : 0;
1042
+ const columnGap = identityWidth > 0 ? this.readPixelValue(toolbarStyle.columnGap) : 0;
1043
+ const actionsHostStyle = getComputedStyle(actions.parentElement ?? toolbar);
1044
+ const actionsGap = endActionsWidth > 0
1045
+ ? this.readPixelValue(actionsHostStyle.columnGap || actionsHostStyle.gap)
1046
+ : 0;
1047
+ const availableWidth = Math.max(0, contentWidth - identityWidth - endActionsWidth - columnGap - actionsGap);
1048
+ const actionsStyle = getComputedStyle(actions);
1049
+ const actionGroups = Array.from(actions.children).filter((child) => child instanceof HTMLElement &&
1050
+ getComputedStyle(child).display !== 'none');
1051
+ const intrinsicChildrenWidth = actionGroups.reduce((total, child) => total +
1052
+ Math.max(child.scrollWidth, child.getBoundingClientRect().width), 0);
1053
+ const groupGaps = Math.max(0, actionGroups.length - 1) *
1054
+ this.readPixelValue(actionsStyle.columnGap || actionsStyle.gap);
1055
+ const requiredWidth = Math.max(actions.scrollWidth, actions.getBoundingClientRect().width, intrinsicChildrenWidth + groupGaps);
1056
+ const capacityBuffer = this.actionsCompacted() ? 16 : 0;
1057
+ this.actionsCompacted.set(requiredWidth + capacityBuffer > availableWidth + 0.5);
1058
+ }
1059
+ getIdentityRequiredWidth() {
1060
+ const identity = this.toolbarIdentity?.nativeElement;
1061
+ if (!identity || getComputedStyle(identity).display === 'none')
1062
+ return 0;
1063
+ const style = getComputedStyle(identity);
1064
+ const copy = identity.querySelector('.toolbar-identity__copy');
1065
+ const icon = identity.querySelector('.toolbar-identity__icon');
1066
+ return ((copy?.scrollWidth ?? 0) +
1067
+ (icon?.getBoundingClientRect().width ?? 0) +
1068
+ (copy && icon ? this.readPixelValue(style.columnGap || style.gap) : 0) +
1069
+ this.readPixelValue(style.paddingInlineStart) +
1070
+ this.readPixelValue(style.paddingInlineEnd));
1071
+ }
1072
+ readPixelValue(value) {
1073
+ const parsed = Number.parseFloat(value);
1074
+ return Number.isFinite(parsed) ? parsed : 0;
1075
+ }
940
1076
  getToolbarVariant() {
941
1077
  const value = this.resolveToolbarAppearance().variant;
942
1078
  return value === 'flat' ||
@@ -1256,6 +1392,23 @@ class PraxisTableToolbar {
1256
1392
  ? this.resolveDisabledActionReason(action)
1257
1393
  : null;
1258
1394
  }
1395
+ getCompactOverflowCommonDisabledReason() {
1396
+ const reasons = this.getOverflowActions()
1397
+ .map((action) => this.getActionDisabledReason(action))
1398
+ .filter((reason) => !!reason);
1399
+ if (reasons.length < 2)
1400
+ return null;
1401
+ const commonReason = reasons[0];
1402
+ return reasons.every((reason) => reason === commonReason)
1403
+ ? commonReason
1404
+ : null;
1405
+ }
1406
+ getCompactActionSpecificDisabledReason(action) {
1407
+ const reason = this.getActionDisabledReason(action);
1408
+ return reason === this.getCompactOverflowCommonDisabledReason()
1409
+ ? null
1410
+ : reason;
1411
+ }
1259
1412
  getActionAriaDisabled(action) {
1260
1413
  return this.isActionDisabled(action) ? 'true' : null;
1261
1414
  }
@@ -1781,11 +1934,13 @@ class PraxisTableToolbar {
1781
1934
  }
1782
1935
  }
1783
1936
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisTableToolbar, deps: [{ token: i0.ElementRef }, { token: i1.LoggerService, optional: true }, { token: i1.PraxisI18nService, optional: true }, { token: PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, optional: true }, { token: PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1784
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisTableToolbar, isStandalone: true, selector: "praxis-table-toolbar", inputs: { config: "config", appearance: "appearance", backgroundColor: "backgroundColor", placement: "placement", focusScope: "focusScope", showMain: "showMain", showActionsGroup: "showActionsGroup", showEndActions: "showEndActions", showMobileActions: "showMobileActions", exportBusy: "exportBusy", exportStatusMessage: "exportStatusMessage", evaluationContext: "evaluationContext", activeQuickFilterId: "activeQuickFilterId", activeDensity: "activeDensity", columnVisibilityController: "columnVisibilityController" }, outputs: { toolbarAction: "toolbarAction", exportAction: "exportAction", columnVisibilityToggle: "columnVisibilityToggle", quickFilterChange: "quickFilterChange", densityChange: "densityChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)" }, properties: { "class.praxis-toolbar-footer": "placement === 'footer'" } }, ngImport: i0, template: `
1937
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisTableToolbar, isStandalone: true, selector: "praxis-table-toolbar", inputs: { config: "config", appearance: "appearance", backgroundColor: "backgroundColor", placement: "placement", focusScope: "focusScope", showMain: "showMain", showActionsGroup: "showActionsGroup", showEndActions: "showEndActions", showMobileActions: "showMobileActions", exportBusy: "exportBusy", exportStatusMessage: "exportStatusMessage", evaluationContext: "evaluationContext", activeQuickFilterId: "activeQuickFilterId", activeDensity: "activeDensity", columnVisibilityController: "columnVisibilityController" }, outputs: { toolbarAction: "toolbarAction", exportAction: "exportAction", columnVisibilityToggle: "columnVisibilityToggle", quickFilterChange: "quickFilterChange", densityChange: "densityChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)" }, properties: { "class.praxis-toolbar-footer": "placement === 'footer'" } }, viewQueries: [{ propertyName: "toolbarRoot", first: true, predicate: ["toolbarRoot"], descendants: true, read: ElementRef }, { propertyName: "toolbarIdentity", first: true, predicate: ["toolbarIdentity"], descendants: true, read: ElementRef }, { propertyName: "fullActionsGroup", first: true, predicate: ["fullActionsGroup"], descendants: true, read: ElementRef }, { propertyName: "endActionsGroup", first: true, predicate: ["endActionsGroup"], descendants: true, read: ElementRef }], ngImport: i0, template: `
1785
1938
  <mat-toolbar
1939
+ #toolbarRoot
1786
1940
  class="praxis-toolbar"
1787
1941
  role="group"
1788
1942
  [attr.aria-label]="getToolbarAriaLabel()"
1943
+ [class.praxis-toolbar--compact-actions]="actionsCompacted()"
1789
1944
  [class.praxis-toolbar--has-identity]="showMain && hasToolbarIdentity()"
1790
1945
  [class.praxis-toolbar--has-query]="showMain"
1791
1946
  [class.praxis-toolbar--has-scope]="showMain && shouldShowQuickFilters()"
@@ -1876,6 +2031,7 @@ class PraxisTableToolbar {
1876
2031
  >
1877
2032
  @if (showMain && hasToolbarIdentity()) {
1878
2033
  <div
2034
+ #toolbarIdentity
1879
2035
  class="toolbar-identity"
1880
2036
  role="group"
1881
2037
  data-toolbar-region="identity"
@@ -1914,6 +2070,9 @@ class PraxisTableToolbar {
1914
2070
  @if (shouldShowQuickFilters()) {
1915
2071
  <div
1916
2072
  class="praxis-table-quick-filters"
2073
+ [class.praxis-table-quick-filters--binary]="
2074
+ getQuickFilters().length === 2
2075
+ "
1917
2076
  role="group"
1918
2077
  data-toolbar-region="scope"
1919
2078
  [attr.aria-label]="getQuickFiltersLabel()"
@@ -1958,6 +2117,7 @@ class PraxisTableToolbar {
1958
2117
  <div class="toolbar-actions" data-toolbar-region="commands">
1959
2118
  @if (showActionsGroup) {
1960
2119
  <div
2120
+ #fullActionsGroup
1961
2121
  class="actions-group"
1962
2122
  role="group"
1963
2123
  [class.actions-group--has-business]="hasBusinessActions()"
@@ -2032,7 +2192,11 @@ class PraxisTableToolbar {
2032
2192
  }
2033
2193
  {{ action.label }}
2034
2194
  </button>
2035
- <mat-menu #startActionMenu="matMenu">
2195
+ <mat-menu
2196
+ #startActionMenu="matMenu"
2197
+ yPosition="below"
2198
+ [overlapTrigger]="false"
2199
+ >
2036
2200
  @for (
2037
2201
  child of getVisibleActionChildren(action);
2038
2202
  track getActionId(child)
@@ -2245,7 +2409,11 @@ class PraxisTableToolbar {
2245
2409
  }
2246
2410
  {{ action.label }}
2247
2411
  </button>
2248
- <mat-menu #endActionMenu="matMenu">
2412
+ <mat-menu
2413
+ #endActionMenu="matMenu"
2414
+ yPosition="below"
2415
+ [overlapTrigger]="false"
2416
+ >
2249
2417
  @for (
2250
2418
  child of getVisibleActionChildren(action);
2251
2419
  track getActionId(child)
@@ -2435,7 +2603,11 @@ class PraxisTableToolbar {
2435
2603
  {{ exportStatusMessage }}
2436
2604
  </span>
2437
2605
  }
2438
- <mat-menu #exportMenu="matMenu">
2606
+ <mat-menu
2607
+ #exportMenu="matMenu"
2608
+ yPosition="below"
2609
+ [overlapTrigger]="false"
2610
+ >
2439
2611
  @for (format of config?.export?.formats; track format) {
2440
2612
  <button
2441
2613
  mat-menu-item
@@ -2480,6 +2652,8 @@ class PraxisTableToolbar {
2480
2652
  <mat-menu
2481
2653
  #columnsMenu="matMenu"
2482
2654
  class="praxis-table-columns-menu"
2655
+ yPosition="below"
2656
+ [overlapTrigger]="false"
2483
2657
  >
2484
2658
  @for (column of config?.columns; track column.field) {
2485
2659
  <button
@@ -2545,6 +2719,8 @@ class PraxisTableToolbar {
2545
2719
  <mat-menu
2546
2720
  #densityMenu="matMenu"
2547
2721
  class="praxis-table-density-menu"
2722
+ yPosition="below"
2723
+ [overlapTrigger]="false"
2548
2724
  >
2549
2725
  @for (density of getDensityOptions(); track density) {
2550
2726
  <button
@@ -2572,6 +2748,7 @@ class PraxisTableToolbar {
2572
2748
  }
2573
2749
  @if (showEndActions) {
2574
2750
  <div
2751
+ #endActionsGroup
2575
2752
  class="end-actions"
2576
2753
  role="group"
2577
2754
  [attr.aria-label]="getToolbarConfigurationLabel()"
@@ -2607,99 +2784,143 @@ class PraxisTableToolbar {
2607
2784
  [matTooltip]="getMoreActionsLabel()"
2608
2785
  matTooltipPosition="below"
2609
2786
  ></button>
2610
- <mat-menu #compactCommandsMenu="matMenu">
2787
+ <mat-menu
2788
+ #compactCommandsMenu="matMenu"
2789
+ yPosition="below"
2790
+ [overlapTrigger]="false"
2791
+ >
2792
+ @if (getOverflowActions().length) {
2793
+ <div
2794
+ class="praxis-table-compact-command-group"
2795
+ role="heading"
2796
+ aria-level="3"
2797
+ >
2798
+ {{ getCompactActionsGroupLabel() }}
2799
+ </div>
2800
+ @if (
2801
+ getCompactOverflowCommonDisabledReason();
2802
+ as commonDisabledReason
2803
+ ) {
2804
+ <p class="praxis-table-compact-command-group__hint">
2805
+ {{ commonDisabledReason }}
2806
+ </p>
2807
+ }
2808
+ }
2611
2809
  @for (
2612
2810
  action of getOverflowActions();
2613
2811
  track getActionId(action)
2614
2812
  ) {
2615
- <button
2616
- mat-menu-item
2617
- [disabled]="isActionDisabled(action)"
2618
- [attr.aria-label]="getActionAriaLabel(action)"
2619
- [matTooltip]="getActionTooltip(action)"
2620
- (click)="
2621
- emitOverflowToolbarAction(
2622
- $event,
2623
- getActionId(action),
2624
- action
2625
- )
2626
- "
2627
- >
2628
- @if (action.icon) {
2629
- <mat-icon [praxisIcon]="action.icon"></mat-icon>
2630
- }
2631
- <span class="praxis-toolbar-menu-action__label">
2632
- {{ action.label }}
2633
- </span>
2634
- @if (getActionDisabledReason(action); as reason) {
2635
- <span class="praxis-toolbar-menu-action__reason">
2636
- {{ reason }}
2813
+ @if (
2814
+ getActionType(action) === 'menu' &&
2815
+ getVisibleActionChildren(action).length
2816
+ ) {
2817
+ <button
2818
+ mat-menu-item
2819
+ [disabled]="isActionDisabled(action)"
2820
+ [matMenuTriggerFor]="
2821
+ isActionDisabled(action) ? null : compactActionMenu
2822
+ "
2823
+ [attr.aria-label]="getActionAriaLabel(action)"
2824
+ >
2825
+ @if (action.icon) {
2826
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
2827
+ }
2828
+ <span class="praxis-toolbar-menu-action__label">
2829
+ {{ action.label }}
2637
2830
  </span>
2638
- }
2639
- </button>
2640
- }
2641
- @if (config?.export?.enabled) {
2642
- <button
2643
- mat-menu-item
2644
- [matMenuTriggerFor]="mobileExportMenu"
2645
- [disabled]="exportBusy"
2646
- class="praxis-table-compact-command--export"
2647
- >
2648
- <mat-icon
2649
- [class.praxis-table-export-progress-icon]="exportBusy"
2650
- [praxisIcon]="
2651
- exportBusy ? 'progress_activity' : 'download'
2831
+ </button>
2832
+ <mat-menu #compactActionMenu="matMenu">
2833
+ @for (
2834
+ child of getVisibleActionChildren(action);
2835
+ track getActionId(child)
2836
+ ) {
2837
+ <button
2838
+ mat-menu-item
2839
+ [disabled]="isActionDisabled(child)"
2840
+ [attr.aria-label]="getActionAriaLabel(child)"
2841
+ (click)="
2842
+ emitOverflowToolbarAction(
2843
+ $event,
2844
+ getActionId(child),
2845
+ child
2846
+ )
2847
+ "
2848
+ >
2849
+ @if (child.icon) {
2850
+ <mat-icon [praxisIcon]="child.icon"></mat-icon>
2851
+ }
2852
+ <span class="praxis-toolbar-menu-action__label">
2853
+ {{ child.label || getActionId(child) }}
2854
+ </span>
2855
+ @if (getActionDisabledReason(child); as reason) {
2856
+ <span class="praxis-toolbar-menu-action__reason">
2857
+ {{ reason }}
2858
+ </span>
2859
+ }
2860
+ </button>
2861
+ }
2862
+ </mat-menu>
2863
+ } @else {
2864
+ <button
2865
+ mat-menu-item
2866
+ [disabled]="isActionDisabled(action)"
2867
+ [attr.aria-label]="getActionAriaLabel(action)"
2868
+ (click)="
2869
+ emitOverflowToolbarAction(
2870
+ $event,
2871
+ getActionId(action),
2872
+ action
2873
+ )
2652
2874
  "
2653
- ></mat-icon>
2654
- {{ getExportDataLabel() }}
2655
- </button>
2656
- }
2657
- @if (isColumnsVisibilityEnabled()) {
2658
- <button
2659
- mat-menu-item
2660
- [matMenuTriggerFor]="mobileColumnsMenu"
2661
- class="praxis-table-compact-command--columns"
2662
- >
2663
- <mat-icon
2664
- [praxisIcon]="getColumnsVisibilityIcon()"
2665
- ></mat-icon>
2666
- {{ getColumnsVisibilityLabel() }}
2667
- </button>
2668
- }
2669
- @if (isDensityToggleEnabled()) {
2670
- <button
2671
- mat-menu-item
2672
- [matMenuTriggerFor]="mobileDensityMenu"
2673
- class="praxis-table-toolbar-action--density"
2674
- >
2675
- <mat-icon [praxisIcon]="'density_medium'"></mat-icon>
2676
- {{ getDensityToggleLabel() }}
2677
- </button>
2875
+ >
2876
+ @if (action.icon) {
2877
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
2878
+ }
2879
+ <span class="praxis-toolbar-menu-action__label">
2880
+ {{ action.label }}
2881
+ </span>
2882
+ @if (
2883
+ getCompactActionSpecificDisabledReason(action);
2884
+ as reason
2885
+ ) {
2886
+ <span class="praxis-toolbar-menu-action__reason">
2887
+ {{ reason }}
2888
+ </span>
2889
+ }
2890
+ </button>
2891
+ }
2678
2892
  }
2679
- </mat-menu>
2680
-
2681
- <mat-menu #mobileExportMenu="matMenu">
2682
2893
  @if (config?.export?.enabled) {
2894
+ <div
2895
+ class="praxis-table-compact-command-group"
2896
+ role="heading"
2897
+ aria-level="3"
2898
+ >
2899
+ {{ getCompactExportGroupLabel() }}
2900
+ </div>
2683
2901
  @for (format of config?.export?.formats; track format) {
2684
2902
  <button
2685
2903
  mat-menu-item
2686
- class="praxis-table-export-menu-item"
2904
+ class="praxis-table-export-menu-item praxis-table-compact-command--export"
2687
2905
  [disabled]="exportBusy"
2688
- [matTooltip]="getExportFormatTooltip(format)"
2689
2906
  [attr.aria-label]="getExportFormatAriaLabel(format)"
2690
2907
  (click)="emitExportAction($event, format)"
2691
2908
  >
2692
2909
  <mat-icon
2693
- [praxisIcon]="getExportIcon(format)"
2910
+ [class.praxis-table-export-progress-icon]="exportBusy"
2911
+ [praxisIcon]="
2912
+ exportBusy
2913
+ ? 'progress_activity'
2914
+ : getExportIcon(format)
2915
+ "
2694
2916
  ></mat-icon>
2695
2917
  {{ getExportFormatLabel(format) }}
2696
2918
  </button>
2697
2919
  @if (isVisibleExcelExportEnabled(format)) {
2698
2920
  <button
2699
2921
  mat-menu-item
2700
- class="praxis-table-export-menu-item"
2922
+ class="praxis-table-export-menu-item praxis-table-compact-command--export"
2701
2923
  [disabled]="exportBusy"
2702
- [matTooltip]="getVisibleExcelExportDescription()"
2703
2924
  [attr.aria-label]="getVisibleExcelExportAriaLabel()"
2704
2925
  (click)="emitVisibleExcelExportAction($event)"
2705
2926
  >
@@ -2709,6 +2930,52 @@ class PraxisTableToolbar {
2709
2930
  }
2710
2931
  }
2711
2932
  }
2933
+ @if (
2934
+ isColumnsVisibilityEnabled() || isDensityToggleEnabled()
2935
+ ) {
2936
+ <div
2937
+ class="praxis-table-compact-command-group"
2938
+ role="heading"
2939
+ aria-level="3"
2940
+ >
2941
+ {{ getCompactViewGroupLabel() }}
2942
+ </div>
2943
+ }
2944
+ @if (isColumnsVisibilityEnabled()) {
2945
+ <button
2946
+ mat-menu-item
2947
+ [matMenuTriggerFor]="mobileColumnsMenu"
2948
+ class="praxis-table-compact-command--columns"
2949
+ >
2950
+ <mat-icon
2951
+ [praxisIcon]="getColumnsVisibilityIcon()"
2952
+ ></mat-icon>
2953
+ {{ getColumnsVisibilityLabel() }}
2954
+ </button>
2955
+ }
2956
+ @if (isDensityToggleEnabled()) {
2957
+ @for (density of getDensityOptions(); track density) {
2958
+ <button
2959
+ mat-menu-item
2960
+ type="button"
2961
+ class="praxis-table-toolbar-action--density"
2962
+ [attr.aria-current]="
2963
+ isDensityActive(density) ? 'true' : null
2964
+ "
2965
+ (click)="emitDensityChange($event, density)"
2966
+ >
2967
+ <mat-icon
2968
+ [praxisIcon]="
2969
+ isDensityActive(density)
2970
+ ? 'check'
2971
+ : getDensityIcon(density)
2972
+ "
2973
+ ></mat-icon>
2974
+ {{ getDensityToggleLabel() }}:
2975
+ {{ getDensityLabel(density) }}
2976
+ </button>
2977
+ }
2978
+ }
2712
2979
  </mat-menu>
2713
2980
 
2714
2981
  <mat-menu
@@ -2767,40 +3034,13 @@ class PraxisTableToolbar {
2767
3034
  }
2768
3035
  }
2769
3036
  </mat-menu>
2770
-
2771
- <mat-menu
2772
- #mobileDensityMenu="matMenu"
2773
- class="praxis-table-density-menu"
2774
- >
2775
- @if (isDensityToggleEnabled()) {
2776
- @for (density of getDensityOptions(); track density) {
2777
- <button
2778
- mat-menu-item
2779
- type="button"
2780
- [attr.aria-current]="
2781
- isDensityActive(density) ? 'true' : null
2782
- "
2783
- (click)="emitDensityChange($event, density)"
2784
- >
2785
- <mat-icon
2786
- [praxisIcon]="
2787
- isDensityActive(density)
2788
- ? 'check'
2789
- : getDensityIcon(density)
2790
- "
2791
- ></mat-icon>
2792
- {{ getDensityLabel(density) }}
2793
- </button>
2794
- }
2795
- }
2796
- </mat-menu>
2797
3037
  }
2798
3038
  </div>
2799
3039
  }
2800
3040
  </div>
2801
3041
  </ng-template>
2802
3042
  </mat-toolbar>
2803
- `, isInline: true, styles: [":host{display:block;container-name:praxis-table-toolbar;container-type:inline-size}.praxis-toolbar{--p-table-toolbar-bg-default: linear-gradient( 180deg, color-mix( in srgb, var(--md-sys-color-surface, #fff) 96%, transparent ), color-mix( in srgb, var(--md-sys-color-surface-container-low, #f6f8fc) 100%, transparent ) );--p-table-toolbar-fg-default: var( --md-sys-color-on-surface, currentColor );--p-table-toolbar-border-color-default: color-mix( in srgb, var(--md-sys-color-outline-variant, #d7dbe5) 78%, transparent );--p-table-toolbar-divider-color-default: color-mix( in srgb, var(--md-sys-color-outline) 42%, transparent );--p-table-toolbar-action-hover-bg-default: color-mix( in srgb, var(--md-sys-color-primary) 10%, transparent );--p-table-toolbar-action-active-bg-default: color-mix( in srgb, var(--md-sys-color-primary) 16%, transparent );--p-table-toolbar-action-focus-ring-default: color-mix( in srgb, var(--md-sys-color-primary) 52%, transparent );--p-table-toolbar-ai-accent-color-default: var( --md-sys-color-primary, #0b72d9 );--p-table-toolbar-status-fg-default: var( --md-sys-color-on-surface-variant, currentColor );background:var( --p-table-toolbar-bg, var(--p-table-toolbar-bg-default) );color:var(--p-table-toolbar-fg, var(--p-table-toolbar-fg-default));box-shadow:var(--p-table-toolbar-shadow, none);padding:var( --p-table-toolbar-layout-padding, var(--p-table-toolbar-padding-block, var(--pfx-toolbar-pad-y, 6px)) var( --p-table-toolbar-padding-inline, var(--pfx-toolbar-pad-x, 12px) ) );min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) );display:grid;grid-template-areas:\"actions actions actions\";grid-template-columns:max-content minmax(0,1fr) auto;align-items:center;column-gap:max(var(--p-table-toolbar-gap, 8px),12px);row-gap:var(--p-table-toolbar-identity-filter-gap, 8px);border:var(--p-table-toolbar-border-width, 1px) solid var( --p-table-toolbar-border-color, var(--p-table-toolbar-border-color-default) );border-radius:var(--p-table-toolbar-radius, 10px)}.praxis-toolbar.p-table-toolbar--flat{--p-table-toolbar-border-width: 0;--p-table-toolbar-shadow: none}.praxis-toolbar.p-table-toolbar--elevated{--p-table-toolbar-shadow: 0 12px 28px color-mix(in srgb, var(--md-sys-color-shadow, #000) 12%, transparent)}.praxis-toolbar.p-table-toolbar--integrated{--p-table-toolbar-bg: transparent;--p-table-toolbar-border-width: 0;--p-table-toolbar-radius: 0}.praxis-toolbar.p-table-toolbar--layout-separator{border-block-end-width:1px;border-block-end-style:solid;border-block-end-color:var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.praxis-toolbar.p-table-toolbar--compact{--p-table-toolbar-min-height: 36px;--p-table-toolbar-padding-block: 4px;--p-table-toolbar-padding-inline: 10px;--p-table-toolbar-gap: 4px;--p-table-toolbar-actions-gap: 4px;--p-table-toolbar-action-size: var(--praxis-action-control-compact-height, 36px);--p-table-toolbar-action-radius: var(--praxis-action-control-radius, 8px)}.praxis-toolbar.p-table-toolbar--comfortable{--p-table-toolbar-min-height: 44px;--p-table-toolbar-action-size: var(--praxis-action-control-height, 40px)}.praxis-toolbar.p-table-toolbar--spacious{--p-table-toolbar-min-height: 52px;--p-table-toolbar-padding-block: 8px;--p-table-toolbar-padding-inline: 16px;--p-table-toolbar-gap: 8px;--p-table-toolbar-actions-gap: 8px;--p-table-toolbar-action-size: var(--praxis-action-control-spacious-height, 44px)}.praxis-toolbar.p-table-toolbar--square{--p-table-toolbar-radius: 0;--p-table-toolbar-action-radius: 4px}.praxis-toolbar.p-table-toolbar--pill{--p-table-toolbar-radius: 999px;--p-table-toolbar-action-radius: 999px}:host(.praxis-toolbar-stack-top) .praxis-toolbar{border-bottom-left-radius:0;border-bottom-right-radius:0}:host(.praxis-toolbar-footer) .praxis-toolbar{border-top-left-radius:0;border-top-right-radius:0}:host(.praxis-toolbar-footer.footer-flat) .praxis-toolbar{border-bottom-left-radius:0;border-bottom-right-radius:0}.praxis-toolbar.mat-toolbar-single-row,.praxis-toolbar .mat-toolbar-row{height:auto}.praxis-toolbar.mat-toolbar-multiple-rows{min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) )}.praxis-toolbar.praxis-toolbar--has-query{grid-template-areas:\"query query actions\"}.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope query actions\"}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope query query\"}.toolbar-query{grid-area:query;display:grid;grid-template-columns:minmax(0,1fr) fit-content(40%);align-items:start;min-width:0;column-gap:var(--p-table-toolbar-gap, 8px);row-gap:var(--p-table-toolbar-identity-filter-gap, 8px)}.toolbar-query>*{min-width:0}.toolbar-query>:is(praxis-filter,[advancedFilter]){grid-column:1}.toolbar-shortcuts{grid-column:2;display:inline-flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--p-table-toolbar-gap, 8px);min-width:0;max-width:100%}.toolbar-shortcuts ::ng-deep>[toolbar]{min-width:0;max-width:100%}.toolbar-shortcuts:not(:has(*)){display:none}.toolbar-identity{grid-area:identity;display:flex;align-items:center;gap:var(--p-table-toolbar-identity-gap, 8px);min-width:0;max-width:100%;min-height:var(--p-table-toolbar-identity-min-height, 30px);margin-block-end:var(--p-table-toolbar-identity-margin-bottom, 0);padding-inline:2px;color:var( --p-table-toolbar-title-fg, var(--p-table-toolbar-fg, var(--p-table-toolbar-fg-default)) )}.toolbar-identity--center{text-align:center;justify-content:center}.toolbar-identity--end{text-align:end;justify-content:flex-end}.toolbar-identity--center .toolbar-identity__copy{align-items:center}.toolbar-identity--end .toolbar-identity__copy{align-items:flex-end}.toolbar-identity__icon{width:var(--p-table-toolbar-identity-icon-size, 28px);height:var(--p-table-toolbar-identity-icon-size, 28px);border-radius:var(--p-table-toolbar-identity-icon-radius, 8px);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) );background:color-mix(in srgb,var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) ) 8%,transparent);border:1px solid color-mix(in srgb,var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) ) 18%,transparent)}.toolbar-identity__icon .mat-icon{font-size:18px;width:18px;height:18px;line-height:18px}.toolbar-identity__copy{display:flex;flex-direction:column;min-width:0;max-width:100%;gap:1px}.toolbar-identity__title,.toolbar-identity__subtitle{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar-identity__title{font-size:var(--p-table-toolbar-title-font-size, 14px);font-weight:var(--p-table-toolbar-title-font-weight, 700);line-height:1.2;letter-spacing:0;color:var(--p-table-toolbar-title-fg, currentColor)}.toolbar-identity__subtitle{font-size:var(--p-table-toolbar-subtitle-font-size, 11.5px);line-height:1.25;color:var( --p-table-toolbar-subtitle-fg, var( --p-table-toolbar-status-fg, var(--p-table-toolbar-status-fg-default) ) )}.toolbar-actions{grid-area:actions;display:flex;align-items:center;align-self:start;justify-self:end;justify-content:flex-end;gap:var(--p-table-toolbar-gap, 6px);min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) );min-width:0}.praxis-toolbar.p-table-toolbar--align-start .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-start .toolbar-actions{justify-self:start}.praxis-toolbar.p-table-toolbar--align-center .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-center .toolbar-actions{justify-self:center}.praxis-toolbar.p-table-toolbar--align-end .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-end .toolbar-actions{justify-self:end}.actions-group{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px)}.business-actions,.utility-actions{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px);min-width:0}.business-actions:empty,.utility-actions:empty{display:none}.action-btn:not(.praxis-icon-button){width:fit-content;max-width:100%;height:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));min-width:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));padding-inline:var(--praxis-action-control-padding-inline, 12px);border-radius:var(--p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px));gap:var(--praxis-action-control-gap, 8px);font-size:var(--praxis-action-control-font-size, .875rem);font-weight:var(--praxis-action-control-font-weight, 500);line-height:var(--praxis-action-control-line-height, 1.25rem);color:var(--p-table-toolbar-action-fg, inherit);background:var(--p-table-toolbar-action-bg, transparent)}.action-btn:not(.praxis-icon-button):hover:not(:disabled):not([aria-disabled=true]){background:var( --p-table-toolbar-action-hover-bg, var(--p-table-toolbar-action-hover-bg-default) )}.action-btn:not(.praxis-icon-button):focus-visible{outline:2px solid var( --p-table-toolbar-action-focus-ring, var(--praxis-action-control-focus-ring, var(--p-table-toolbar-action-focus-ring-default)) );outline-offset:2px}.toolbar-icon-btn{width:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));height:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));border-radius:var(--p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px));color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary) 9%,transparent);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.toolbar-icon-btn:hover:not(:disabled){color:var(--md-sys-color-on-primary-container);background:color-mix(in srgb,var(--md-sys-color-primary) 16%,transparent);border-color:color-mix(in srgb,var(--md-sys-color-primary) 36%,transparent)}.action-btn--fab{width:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));height:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));box-shadow:none}.pfx-tonal{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.pfx-tonal:hover{background:var(--md-sys-color-secondary-container)}.mobile-actions{display:none;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px)}.overflow-trigger{height:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px))}.action-btn .mat-icon,.action-btn--fab .mat-icon,.overflow-trigger .mat-icon{margin:0;font-size:var(--praxis-action-control-icon-size, 18px);width:var(--praxis-action-control-icon-size, 18px);height:var(--praxis-action-control-icon-size, 18px);line-height:var(--praxis-action-control-icon-size, 18px)}.praxis-table-export-status{max-width:13rem;overflow:hidden;color:var(--p-table-toolbar-status-fg, currentColor);font-size:.75rem;font-weight:600;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.praxis-table-export-progress-icon{animation:praxis-table-export-spin .9s linear infinite}@keyframes praxis-table-export-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.praxis-table-export-progress-icon{animation:none}}.praxis-table-column-menu-item.mat-mdc-menu-item{min-height:40px}.praxis-table-export-menu-item.mat-mdc-menu-item{min-width:280px;white-space:nowrap}.praxis-table-column-menu-content{align-items:center;display:flex;gap:10px;min-height:40px;width:100%}.praxis-table-column-menu-check.mat-icon{color:var(--md-sys-color-primary, currentColor);flex:0 0 20px;font-size:20px;height:20px;line-height:20px;margin-inline-end:0;width:20px}.praxis-table-quick-filters{grid-area:scope;align-self:start;align-items:center;display:flex;flex-wrap:nowrap;gap:6px;min-height:var(--p-table-toolbar-min-height, 44px)}.praxis-table-quick-filter.mat-mdc-outlined-button{min-height:40px;padding-inline:14px;white-space:nowrap}.praxis-table-quick-filter--active.mat-mdc-outlined-button{background:color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent);border-color:var(--md-sys-color-primary);color:var(--md-sys-color-primary)}.action-btn.mat-mdc-button-base,.action-btn--fab.mat-mdc-button-base,.overflow-trigger.mat-mdc-button-base,.toolbar-icon-btn.mat-mdc-button-base{--mdc-text-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-filled-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-protected-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-outlined-button-container-height: var( --p-table-toolbar-action-size, 36px )}.action-btn.mat-mdc-unelevated-button:not(:disabled):not([aria-disabled=true]),.action-btn.mat-mdc-outlined-button:not(:disabled):not([aria-disabled=true]),.action-btn.pfx-tonal:not(:disabled):not([aria-disabled=true]){border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #d7dbe5) 82%,transparent)}.action-btn.mat-mdc-unelevated-button:not(:disabled):not([aria-disabled=true]){box-shadow:none}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]),.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]){--praxis-toolbar-primary: var( --mat-sys-primary, var(--md-sys-color-primary) );--praxis-toolbar-on-primary: var( --mat-sys-on-primary, var(--md-sys-color-on-primary) );--praxis-toolbar-primary-action-container: var( --p-table-toolbar-primary-action-container, color-mix( in srgb, var(--praxis-toolbar-primary) 70%, var(--mat-sys-shadow, #000) 30% ) );--mdc-filled-button-container-color: var( --praxis-toolbar-primary-action-container );--mdc-filled-button-label-text-color: var( --praxis-toolbar-on-primary );--mat-filled-button-state-layer-color: var( --praxis-toolbar-on-primary );background:var(--praxis-toolbar-primary-action-container)!important;border-color:transparent;color:var(--praxis-toolbar-on-primary)!important;box-shadow:0 2px 6px color-mix(in srgb,var(--praxis-toolbar-primary-action-container) 22%,transparent)}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]):hover,.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]):hover{background:color-mix(in srgb,var(--praxis-toolbar-primary-action-container) 88%,var(--praxis-toolbar-on-primary) 12%)!important}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]) .mat-icon,.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]) .mat-icon{color:var(--praxis-toolbar-on-primary)!important}.action-btn.mat-mdc-button-base{padding-inline:var(--praxis-action-control-padding-inline, 12px)}.action-btn[aria-disabled=true],.action-btn--fab[aria-disabled=true]{--mdc-text-button-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-filled-button-container-color: color-mix( in srgb, var(--md-sys-color-surface-container-high) 78%, transparent );--mdc-filled-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-outlined-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-protected-button-label-text-color: var( --md-sys-color-on-surface-variant );background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 78%,transparent)!important;color:var(--md-sys-color-on-surface-variant)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--md-sys-color-outline) 62%,transparent)!important;cursor:not-allowed;filter:saturate(.55);opacity:var(--praxis-action-control-disabled-opacity, .62)}.action-btn[aria-disabled=true] .mat-icon,.action-btn--fab[aria-disabled=true] .mat-icon{color:currentColor!important}.action-btn[aria-disabled=true]:focus-visible,.action-btn--fab[aria-disabled=true]:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.mat-mdc-menu-item[aria-disabled=true]{color:var(--md-sys-color-on-surface-variant);cursor:not-allowed;opacity:1}.praxis-toolbar-menu-action__label,.praxis-toolbar-menu-action__reason{display:block}.praxis-toolbar-menu-action__reason{max-width:280px;color:var(--md-sys-color-on-surface-variant);font-size:12px;font-weight:400;line-height:1.35;white-space:normal}.end-actions{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px);margin-inline-start:4px;padding-inline-start:12px;border-inline-start:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.end-actions:empty{display:none;gap:0;margin-inline-start:0;padding-inline-start:0;border-inline-start:0}.praxis-toolbar-icon-action--primary{color:var(--md-sys-color-primary)}.praxis-toolbar-icon-action--accent{color:var(--md-sys-color-tertiary)}.praxis-toolbar-icon-action--warn{color:var(--md-sys-color-error)}.praxis-toolbar.p-table-toolbar--divider-between-groups .actions-group--has-business .utility-actions:not(:empty){margin-inline-start:4px;padding-inline-start:12px;border-inline-start:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.praxis-toolbar.p-table-toolbar--divider-start:not(.praxis-toolbar--has-identity) .toolbar-query{padding-inline-end:12px;border-inline-end:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.end-actions ::ng-deep .praxis-table-toolbar-action--ai,.end-actions ::ng-deep .praxis-table-ai-trigger{color:var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) );background:color-mix(in srgb,var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) ) 10%,transparent);border:1px solid color-mix(in srgb,var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) ) 24%,transparent)}.end-actions ::ng-deep [data-role=table-settings]{color:var( --p-table-toolbar-status-fg, var(--p-table-toolbar-status-fg-default) )}@container praxis-table-toolbar (max-width: 960px){.actions-group{display:none}.mobile-actions{display:flex}.toolbar-actions{justify-content:flex-end}}@container praxis-table-toolbar (max-width: 720px){.praxis-toolbar.praxis-toolbar--has-query{grid-template-areas:\"query query query\" \"actions actions actions\"}.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope scope scope\" \"query query query\" \"actions actions actions\"}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope scope scope\" \"query query query\"}.toolbar-query{grid-template-columns:minmax(0,1fr)}.toolbar-query>:is(praxis-filter,[advancedFilter]),.toolbar-shortcuts{grid-column:1}.toolbar-shortcuts{justify-content:flex-start}.praxis-table-quick-filters{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}}@container praxis-table-toolbar (max-width: 540px){.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity identity\" \"actions actions actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity identity\" \"actions actions actions\" \"scope scope scope\" \"query query query\"}.toolbar-actions{justify-self:stretch;justify-content:flex-end}.toolbar-actions,.toolbar-query{--p-table-toolbar-action-size: var(--praxis-action-control-spacious-height, 44px)}.toolbar-identity__subtitle{display:none}.praxis-table-quick-filter.mat-mdc-outlined-button{min-height:44px}}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
3043
+ `, isInline: true, styles: [":host{display:block;container-name:praxis-table-toolbar;container-type:inline-size}.praxis-toolbar{--p-table-toolbar-bg-default: linear-gradient( 180deg, color-mix( in srgb, var(--md-sys-color-surface, #fff) 96%, transparent ), color-mix( in srgb, var(--md-sys-color-surface-container-low, #f6f8fc) 100%, transparent ) );--p-table-toolbar-fg-default: var( --md-sys-color-on-surface, currentColor );--p-table-toolbar-border-color-default: color-mix( in srgb, var(--md-sys-color-outline-variant, #d7dbe5) 78%, transparent );--p-table-toolbar-divider-color-default: color-mix( in srgb, var(--md-sys-color-outline) 42%, transparent );--p-table-toolbar-action-hover-bg-default: color-mix( in srgb, var(--md-sys-color-primary) 10%, transparent );--p-table-toolbar-action-active-bg-default: color-mix( in srgb, var(--md-sys-color-primary) 16%, transparent );--p-table-toolbar-action-focus-ring-default: color-mix( in srgb, var(--md-sys-color-primary) 52%, transparent );--p-table-toolbar-ai-accent-color-default: var( --md-sys-color-primary, #0b72d9 );--p-table-toolbar-status-fg-default: var( --md-sys-color-on-surface-variant, currentColor );background:var( --p-table-toolbar-bg, var(--p-table-toolbar-bg-default) );color:var(--p-table-toolbar-fg, var(--p-table-toolbar-fg-default));box-shadow:var(--p-table-toolbar-shadow, none);padding:var( --p-table-toolbar-layout-padding, var(--p-table-toolbar-padding-block, var(--pfx-toolbar-pad-y, 6px)) var( --p-table-toolbar-padding-inline, var(--pfx-toolbar-pad-x, 12px) ) );min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) );display:grid;grid-template-areas:\"actions actions actions\";grid-template-columns:max-content minmax(0,1fr) auto;align-items:center;column-gap:max(var(--p-table-toolbar-gap, 8px),12px);row-gap:var(--p-table-toolbar-identity-filter-gap, 8px);border:var(--p-table-toolbar-border-width, 1px) solid var( --p-table-toolbar-border-color, var(--p-table-toolbar-border-color-default) );border-radius:var(--p-table-toolbar-radius, 10px)}.praxis-toolbar.p-table-toolbar--flat{--p-table-toolbar-border-width: 0;--p-table-toolbar-shadow: none}.praxis-toolbar.p-table-toolbar--elevated{--p-table-toolbar-shadow: 0 12px 28px color-mix(in srgb, var(--md-sys-color-shadow, #000) 12%, transparent)}.praxis-toolbar.p-table-toolbar--integrated{--p-table-toolbar-bg: transparent;--p-table-toolbar-border-width: 0;--p-table-toolbar-radius: 0}.praxis-toolbar.p-table-toolbar--layout-separator{border-block-end-width:1px;border-block-end-style:solid;border-block-end-color:var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.praxis-toolbar.p-table-toolbar--compact{--p-table-toolbar-min-height: 36px;--p-table-toolbar-padding-block: 4px;--p-table-toolbar-padding-inline: 10px;--p-table-toolbar-gap: 4px;--p-table-toolbar-actions-gap: 4px;--p-table-toolbar-action-size: var( --praxis-action-control-compact-height, 36px );--p-table-toolbar-action-radius: var( --praxis-action-control-radius, 8px )}.praxis-toolbar.p-table-toolbar--comfortable{--p-table-toolbar-min-height: 44px;--p-table-toolbar-action-size: var( --praxis-action-control-height, 40px )}.praxis-toolbar.p-table-toolbar--spacious{--p-table-toolbar-min-height: 52px;--p-table-toolbar-padding-block: 8px;--p-table-toolbar-padding-inline: 16px;--p-table-toolbar-gap: 8px;--p-table-toolbar-actions-gap: 8px;--p-table-toolbar-action-size: var( --praxis-action-control-spacious-height, 44px )}.praxis-toolbar.p-table-toolbar--square{--p-table-toolbar-radius: 0;--p-table-toolbar-action-radius: 4px}.praxis-toolbar.p-table-toolbar--pill{--p-table-toolbar-radius: 999px;--p-table-toolbar-action-radius: 999px}:host(.praxis-toolbar-stack-top) .praxis-toolbar{border-bottom-left-radius:0;border-bottom-right-radius:0}:host(.praxis-toolbar-footer) .praxis-toolbar{border-top-left-radius:0;border-top-right-radius:0}:host(.praxis-toolbar-footer.footer-flat) .praxis-toolbar{border-bottom-left-radius:0;border-bottom-right-radius:0}.praxis-toolbar.mat-toolbar-single-row,.praxis-toolbar .mat-toolbar-row{height:auto}.praxis-toolbar.mat-toolbar-multiple-rows{min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) )}.praxis-toolbar.praxis-toolbar--has-query{grid-template-areas:\"query query actions\"}.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope query actions\"}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope query query\"}.toolbar-query{grid-area:query;display:flex;flex-wrap:wrap;align-items:start;min-width:0;column-gap:var(--p-table-toolbar-gap, 8px);row-gap:var(--p-table-toolbar-identity-filter-gap, 8px)}.toolbar-query>*{min-width:0}.toolbar-query>:is(praxis-filter,[advancedFilter]){flex:1 1 620px}.toolbar-shortcuts{flex:0 1 auto;display:inline-flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--p-table-toolbar-gap, 8px);min-width:0;max-width:100%;margin-inline-start:auto}.toolbar-shortcuts ::ng-deep>[toolbar]{min-width:0;max-width:100%}.toolbar-shortcuts ::ng-deep>[toolbar].mat-mdc-button-base{--mdc-text-button-container-height: var( --p-table-toolbar-query-control-height, 40px );--mdc-outlined-button-container-height: var( --p-table-toolbar-query-control-height, 40px );min-height:var(--p-table-toolbar-query-control-height, 40px);border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) )}.toolbar-shortcuts:not(:has(*)){display:none}.toolbar-identity{grid-area:identity;display:flex;align-items:center;gap:var(--p-table-toolbar-identity-gap, 8px);min-width:0;max-width:100%;min-height:var(--p-table-toolbar-identity-min-height, 30px);margin-block-end:var(--p-table-toolbar-identity-margin-bottom, 0);padding-inline:2px;color:var( --p-table-toolbar-title-fg, var(--p-table-toolbar-fg, var(--p-table-toolbar-fg-default)) )}.toolbar-identity--center{text-align:center;justify-content:center}.toolbar-identity--end{text-align:end;justify-content:flex-end}.toolbar-identity--center .toolbar-identity__copy{align-items:center}.toolbar-identity--end .toolbar-identity__copy{align-items:flex-end}.toolbar-identity__icon{width:var(--p-table-toolbar-identity-icon-size, 28px);height:var(--p-table-toolbar-identity-icon-size, 28px);border-radius:var(--p-table-toolbar-identity-icon-radius, 8px);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) );background:color-mix(in srgb,var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) ) 8%,transparent);border:1px solid color-mix(in srgb,var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) ) 18%,transparent)}.toolbar-identity__icon .mat-icon{font-size:18px;width:18px;height:18px;line-height:18px}.toolbar-identity__copy{display:flex;flex-direction:column;min-width:0;max-width:100%;gap:1px}.toolbar-identity__title,.toolbar-identity__subtitle{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar-identity__title{font-size:var(--p-table-toolbar-title-font-size, 14px);font-weight:var(--p-table-toolbar-title-font-weight, 700);line-height:1.2;letter-spacing:0;color:var(--p-table-toolbar-title-fg, currentColor)}.toolbar-identity__subtitle{font-size:var(--p-table-toolbar-subtitle-font-size, 11.5px);line-height:1.25;color:var( --p-table-toolbar-subtitle-fg, var( --p-table-toolbar-status-fg, var(--p-table-toolbar-status-fg-default) ) )}.toolbar-actions{grid-area:actions;display:flex;align-items:center;align-self:start;justify-self:end;justify-content:flex-end;gap:var(--p-table-toolbar-gap, 6px);min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) );min-width:0}.praxis-toolbar.p-table-toolbar--align-start .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-start .toolbar-actions{justify-self:start}.praxis-toolbar.p-table-toolbar--align-center .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-center .toolbar-actions{justify-self:center}.praxis-toolbar.p-table-toolbar--align-end .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-end .toolbar-actions{justify-self:end}.actions-group{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px)}.praxis-toolbar--compact-actions .actions-group{position:fixed;inset-block-start:-10000px;inset-inline-start:0;inline-size:max-content;max-inline-size:none;visibility:hidden;pointer-events:none}.praxis-toolbar--compact-actions .mobile-actions{display:flex}.praxis-toolbar--compact-actions .toolbar-query{flex-direction:column}.praxis-toolbar--compact-actions .toolbar-shortcuts{justify-content:flex-start;margin-inline-start:0}.business-actions,.utility-actions{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px);min-width:0}.business-actions:empty,.utility-actions:empty{display:none}.action-btn:not(.praxis-icon-button){width:fit-content;max-width:100%;height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );min-width:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );padding-inline:var(--praxis-action-control-padding-inline, 12px);border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) );gap:var(--praxis-action-control-gap, 8px);font-size:var(--praxis-action-control-font-size, .875rem);font-weight:var(--praxis-action-control-font-weight, 500);line-height:var(--praxis-action-control-line-height, 1.25rem);color:var(--p-table-toolbar-action-fg, inherit);background:var(--p-table-toolbar-action-bg, transparent)}.action-btn:not(.praxis-icon-button):hover:not(:disabled):not([aria-disabled=true]){background:var( --p-table-toolbar-action-hover-bg, var(--p-table-toolbar-action-hover-bg-default) )}.action-btn:not(.praxis-icon-button):focus-visible{outline:2px solid var( --p-table-toolbar-action-focus-ring, var( --praxis-action-control-focus-ring, var(--p-table-toolbar-action-focus-ring-default) ) );outline-offset:2px}.toolbar-icon-btn{width:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) );color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary) 9%,transparent);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.toolbar-icon-btn:hover:not(:disabled){color:var(--md-sys-color-on-primary-container);background:color-mix(in srgb,var(--md-sys-color-primary) 16%,transparent);border-color:color-mix(in srgb,var(--md-sys-color-primary) 36%,transparent)}.action-btn--fab{width:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );box-shadow:none}.pfx-tonal{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.pfx-tonal:hover{background:var(--md-sys-color-secondary-container)}.mobile-actions{display:none;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px)}.overflow-trigger{height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) )}.action-btn .mat-icon,.action-btn--fab .mat-icon,.overflow-trigger .mat-icon{margin:0;font-size:var(--praxis-action-control-icon-size, 18px);width:var(--praxis-action-control-icon-size, 18px);height:var(--praxis-action-control-icon-size, 18px);line-height:var(--praxis-action-control-icon-size, 18px)}.praxis-table-export-status{max-width:13rem;overflow:hidden;color:var(--p-table-toolbar-status-fg, currentColor);font-size:.75rem;font-weight:600;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.praxis-table-export-progress-icon{animation:praxis-table-export-spin .9s linear infinite}@keyframes praxis-table-export-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.praxis-table-export-progress-icon{animation:none}}.praxis-table-column-menu-item.mat-mdc-menu-item{min-height:40px}.praxis-table-export-menu-item.mat-mdc-menu-item{min-width:280px;white-space:nowrap}.praxis-table-column-menu-content{align-items:center;display:flex;gap:10px;min-height:40px;width:100%}.praxis-table-column-menu-check.mat-icon{color:var(--md-sys-color-primary, currentColor);flex:0 0 20px;font-size:20px;height:20px;line-height:20px;margin-inline-end:0;width:20px}.praxis-table-quick-filters{grid-area:scope;align-self:start;align-items:center;display:flex;flex-wrap:nowrap;gap:0;min-height:var(--p-table-toolbar-min-height, 44px)}.praxis-table-quick-filter.mat-mdc-outlined-button{--mdc-outlined-button-container-height: var( --p-table-toolbar-query-control-height, 40px );min-height:var(--p-table-toolbar-query-control-height, 40px);padding-inline:14px;border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) );position:relative;z-index:0;white-space:nowrap}.praxis-table-quick-filter+.praxis-table-quick-filter{margin-inline-start:-1px}.praxis-table-quick-filter:first-child:not(:only-child){border-start-end-radius:0;border-end-end-radius:0}.praxis-table-quick-filter:not(:first-child):not(:last-child){border-radius:0}.praxis-table-quick-filter:last-child:not(:only-child){border-start-start-radius:0;border-end-start-radius:0}.praxis-table-quick-filter:only-child{border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) )}.praxis-table-quick-filter--active.mat-mdc-outlined-button{background:color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent);border-color:var(--md-sys-color-primary);color:var(--md-sys-color-primary);z-index:1}.praxis-table-quick-filter:focus-visible{z-index:2}.action-btn.mat-mdc-button-base,.action-btn--fab.mat-mdc-button-base,.overflow-trigger.mat-mdc-button-base,.toolbar-icon-btn.mat-mdc-button-base{--mdc-text-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-filled-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-protected-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-outlined-button-container-height: var( --p-table-toolbar-action-size, 36px )}.action-btn.mat-mdc-unelevated-button:not(:disabled):not([aria-disabled=true]),.action-btn.mat-mdc-outlined-button:not(:disabled):not([aria-disabled=true]),.action-btn.pfx-tonal:not(:disabled):not([aria-disabled=true]){border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #d7dbe5) 82%,transparent)}.action-btn.mat-mdc-unelevated-button:not(:disabled):not([aria-disabled=true]){box-shadow:none}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]),.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]){--praxis-toolbar-primary: var( --mat-sys-primary, var(--md-sys-color-primary) );--praxis-toolbar-on-primary: var( --mat-sys-on-primary, var(--md-sys-color-on-primary) );--praxis-toolbar-primary-action-container: var( --p-table-toolbar-primary-action-container, color-mix( in srgb, var(--praxis-toolbar-primary) 70%, var(--mat-sys-shadow, #000) 30% ) );--mdc-filled-button-container-color: var( --praxis-toolbar-primary-action-container );--mdc-filled-button-label-text-color: var(--praxis-toolbar-on-primary);--mat-filled-button-state-layer-color: var(--praxis-toolbar-on-primary);background:var(--praxis-toolbar-primary-action-container)!important;border-color:transparent;color:var(--praxis-toolbar-on-primary)!important;box-shadow:0 2px 6px color-mix(in srgb,var(--praxis-toolbar-primary-action-container) 22%,transparent)}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]):hover,.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]):hover{background:color-mix(in srgb,var(--praxis-toolbar-primary-action-container) 88%,var(--praxis-toolbar-on-primary) 12%)!important}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]) .mat-icon,.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]) .mat-icon{color:var(--praxis-toolbar-on-primary)!important}.action-btn.mat-mdc-button-base{padding-inline:var(--praxis-action-control-padding-inline, 12px)}.action-btn[aria-disabled=true],.action-btn--fab[aria-disabled=true]{--mdc-text-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-filled-button-container-color: color-mix( in srgb, var(--md-sys-color-surface-container-high) 78%, transparent );--mdc-filled-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-outlined-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-protected-button-label-text-color: var( --md-sys-color-on-surface-variant );background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 78%,transparent)!important;color:var(--md-sys-color-on-surface-variant)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--md-sys-color-outline) 62%,transparent)!important;cursor:not-allowed;filter:saturate(.55);opacity:var(--praxis-action-control-disabled-opacity, .62)}.action-btn[aria-disabled=true] .mat-icon,.action-btn--fab[aria-disabled=true] .mat-icon{color:currentColor!important}.action-btn[aria-disabled=true]:focus-visible,.action-btn--fab[aria-disabled=true]:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.mat-mdc-menu-item[aria-disabled=true],.mat-mdc-menu-item.mat-mdc-menu-item-disabled{color:var(--md-sys-color-on-surface-variant)!important;cursor:not-allowed;opacity:1!important}.praxis-toolbar-menu-action__label,.praxis-toolbar-menu-action__reason{display:block}.praxis-toolbar-menu-action__reason{max-width:280px;color:var(--md-sys-color-on-surface-variant)!important;font-size:12px;font-weight:400;line-height:1.35;white-space:normal}.praxis-table-compact-command-group{box-sizing:border-box;margin:6px 12px 2px;padding:8px 4px 4px;border-block-start:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 74%,transparent);color:var(--md-sys-color-on-surface-variant);font-size:.75rem;font-weight:600;line-height:1rem;letter-spacing:.04em;text-transform:uppercase}.praxis-table-compact-command-group:first-child{margin-block-start:2px;padding-block-start:4px;border-block-start:0}.praxis-table-compact-command-group__hint{max-width:280px;margin:0 16px 6px;color:var(--md-sys-color-on-surface-variant);font-size:.75rem;font-weight:400;line-height:1.35;white-space:normal}.mat-mdc-menu-item[aria-disabled=true] .praxis-toolbar-menu-action__reason,.mat-mdc-menu-item.mat-mdc-menu-item-disabled .praxis-toolbar-menu-action__reason{opacity:1!important}.end-actions{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px);margin-inline-start:4px;padding-inline-start:12px;border-inline-start:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.end-actions ::ng-deep>[end-actions]{height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );min-height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) )}.end-actions ::ng-deep>[end-actions].mat-mdc-button-base{--mdc-text-button-container-height: var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );--mdc-filled-button-container-height: var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );--mdc-protected-button-container-height: var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );--mdc-outlined-button-container-height: var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) )}.end-actions:empty{display:none;gap:0;margin-inline-start:0;padding-inline-start:0;border-inline-start:0}.praxis-toolbar-icon-action--primary{color:var(--md-sys-color-primary)}.praxis-toolbar-icon-action--accent{color:var(--md-sys-color-tertiary)}.praxis-toolbar-icon-action--warn{color:var(--md-sys-color-error)}.praxis-toolbar.p-table-toolbar--divider-between-groups .actions-group--has-business .utility-actions:not(:empty){margin-inline-start:4px;padding-inline-start:12px;border-inline-start:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.praxis-toolbar.p-table-toolbar--divider-start:not(.praxis-toolbar--has-identity) .toolbar-query{padding-inline-end:12px;border-inline-end:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.end-actions ::ng-deep .praxis-table-toolbar-action--ai,.end-actions ::ng-deep .praxis-table-ai-trigger{color:var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) );background:color-mix(in srgb,var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) ) 10%,transparent);border:1px solid color-mix(in srgb,var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) ) 24%,transparent)}.end-actions ::ng-deep [data-role=table-settings]{color:var( --p-table-toolbar-status-fg, var(--p-table-toolbar-status-fg-default) )}@container praxis-table-toolbar (max-width: 1200px){.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope scope actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope scope scope\" \"query query query\"}.toolbar-query{width:100%}}@container praxis-table-toolbar (max-width: 960px){.actions-group{display:none}.mobile-actions{display:flex}.toolbar-actions{justify-content:flex-end}}@container praxis-table-toolbar (max-width: 720px){.praxis-toolbar.praxis-toolbar--has-query{grid-template-areas:\"query query query\" \"actions actions actions\"}.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope scope scope\" \"query query query\" \"actions actions actions\"}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope scope scope\" \"query query query\"}.toolbar-query{flex-direction:column}.toolbar-shortcuts{justify-content:flex-start;margin-inline-start:0}.praxis-table-quick-filters{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}}@container praxis-table-toolbar (max-width: 540px){.praxis-toolbar{--p-table-toolbar-query-control-height: 44px}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity identity\" \"actions actions actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity identity\" \"actions actions actions\" \"scope scope scope\" \"query query query\"}.toolbar-actions{justify-self:stretch;justify-content:flex-end}.toolbar-actions,.toolbar-query{--p-table-toolbar-action-size: var( --praxis-action-control-spacious-height, 44px )}.toolbar-identity__subtitle{display:none}.praxis-table-quick-filter.mat-mdc-outlined-button{min-height:44px}.praxis-table-quick-filters--binary{width:100%;min-width:0}.praxis-table-quick-filters--binary .praxis-table-quick-filter.mat-mdc-outlined-button{flex:1 1 0;min-width:0}}\n"], dependencies: [{ kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
2804
3044
  }
2805
3045
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisTableToolbar, decorators: [{
2806
3046
  type: Component,
@@ -2815,9 +3055,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2815
3055
  NgTemplateOutlet,
2816
3056
  ], template: `
2817
3057
  <mat-toolbar
3058
+ #toolbarRoot
2818
3059
  class="praxis-toolbar"
2819
3060
  role="group"
2820
3061
  [attr.aria-label]="getToolbarAriaLabel()"
3062
+ [class.praxis-toolbar--compact-actions]="actionsCompacted()"
2821
3063
  [class.praxis-toolbar--has-identity]="showMain && hasToolbarIdentity()"
2822
3064
  [class.praxis-toolbar--has-query]="showMain"
2823
3065
  [class.praxis-toolbar--has-scope]="showMain && shouldShowQuickFilters()"
@@ -2908,6 +3150,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2908
3150
  >
2909
3151
  @if (showMain && hasToolbarIdentity()) {
2910
3152
  <div
3153
+ #toolbarIdentity
2911
3154
  class="toolbar-identity"
2912
3155
  role="group"
2913
3156
  data-toolbar-region="identity"
@@ -2946,6 +3189,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2946
3189
  @if (shouldShowQuickFilters()) {
2947
3190
  <div
2948
3191
  class="praxis-table-quick-filters"
3192
+ [class.praxis-table-quick-filters--binary]="
3193
+ getQuickFilters().length === 2
3194
+ "
2949
3195
  role="group"
2950
3196
  data-toolbar-region="scope"
2951
3197
  [attr.aria-label]="getQuickFiltersLabel()"
@@ -2990,6 +3236,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2990
3236
  <div class="toolbar-actions" data-toolbar-region="commands">
2991
3237
  @if (showActionsGroup) {
2992
3238
  <div
3239
+ #fullActionsGroup
2993
3240
  class="actions-group"
2994
3241
  role="group"
2995
3242
  [class.actions-group--has-business]="hasBusinessActions()"
@@ -3064,7 +3311,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3064
3311
  }
3065
3312
  {{ action.label }}
3066
3313
  </button>
3067
- <mat-menu #startActionMenu="matMenu">
3314
+ <mat-menu
3315
+ #startActionMenu="matMenu"
3316
+ yPosition="below"
3317
+ [overlapTrigger]="false"
3318
+ >
3068
3319
  @for (
3069
3320
  child of getVisibleActionChildren(action);
3070
3321
  track getActionId(child)
@@ -3277,7 +3528,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3277
3528
  }
3278
3529
  {{ action.label }}
3279
3530
  </button>
3280
- <mat-menu #endActionMenu="matMenu">
3531
+ <mat-menu
3532
+ #endActionMenu="matMenu"
3533
+ yPosition="below"
3534
+ [overlapTrigger]="false"
3535
+ >
3281
3536
  @for (
3282
3537
  child of getVisibleActionChildren(action);
3283
3538
  track getActionId(child)
@@ -3467,7 +3722,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3467
3722
  {{ exportStatusMessage }}
3468
3723
  </span>
3469
3724
  }
3470
- <mat-menu #exportMenu="matMenu">
3725
+ <mat-menu
3726
+ #exportMenu="matMenu"
3727
+ yPosition="below"
3728
+ [overlapTrigger]="false"
3729
+ >
3471
3730
  @for (format of config?.export?.formats; track format) {
3472
3731
  <button
3473
3732
  mat-menu-item
@@ -3512,6 +3771,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3512
3771
  <mat-menu
3513
3772
  #columnsMenu="matMenu"
3514
3773
  class="praxis-table-columns-menu"
3774
+ yPosition="below"
3775
+ [overlapTrigger]="false"
3515
3776
  >
3516
3777
  @for (column of config?.columns; track column.field) {
3517
3778
  <button
@@ -3577,6 +3838,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3577
3838
  <mat-menu
3578
3839
  #densityMenu="matMenu"
3579
3840
  class="praxis-table-density-menu"
3841
+ yPosition="below"
3842
+ [overlapTrigger]="false"
3580
3843
  >
3581
3844
  @for (density of getDensityOptions(); track density) {
3582
3845
  <button
@@ -3604,6 +3867,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3604
3867
  }
3605
3868
  @if (showEndActions) {
3606
3869
  <div
3870
+ #endActionsGroup
3607
3871
  class="end-actions"
3608
3872
  role="group"
3609
3873
  [attr.aria-label]="getToolbarConfigurationLabel()"
@@ -3639,99 +3903,143 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3639
3903
  [matTooltip]="getMoreActionsLabel()"
3640
3904
  matTooltipPosition="below"
3641
3905
  ></button>
3642
- <mat-menu #compactCommandsMenu="matMenu">
3906
+ <mat-menu
3907
+ #compactCommandsMenu="matMenu"
3908
+ yPosition="below"
3909
+ [overlapTrigger]="false"
3910
+ >
3911
+ @if (getOverflowActions().length) {
3912
+ <div
3913
+ class="praxis-table-compact-command-group"
3914
+ role="heading"
3915
+ aria-level="3"
3916
+ >
3917
+ {{ getCompactActionsGroupLabel() }}
3918
+ </div>
3919
+ @if (
3920
+ getCompactOverflowCommonDisabledReason();
3921
+ as commonDisabledReason
3922
+ ) {
3923
+ <p class="praxis-table-compact-command-group__hint">
3924
+ {{ commonDisabledReason }}
3925
+ </p>
3926
+ }
3927
+ }
3643
3928
  @for (
3644
3929
  action of getOverflowActions();
3645
3930
  track getActionId(action)
3646
3931
  ) {
3647
- <button
3648
- mat-menu-item
3649
- [disabled]="isActionDisabled(action)"
3650
- [attr.aria-label]="getActionAriaLabel(action)"
3651
- [matTooltip]="getActionTooltip(action)"
3652
- (click)="
3653
- emitOverflowToolbarAction(
3654
- $event,
3655
- getActionId(action),
3656
- action
3657
- )
3658
- "
3659
- >
3660
- @if (action.icon) {
3661
- <mat-icon [praxisIcon]="action.icon"></mat-icon>
3662
- }
3663
- <span class="praxis-toolbar-menu-action__label">
3664
- {{ action.label }}
3665
- </span>
3666
- @if (getActionDisabledReason(action); as reason) {
3667
- <span class="praxis-toolbar-menu-action__reason">
3668
- {{ reason }}
3932
+ @if (
3933
+ getActionType(action) === 'menu' &&
3934
+ getVisibleActionChildren(action).length
3935
+ ) {
3936
+ <button
3937
+ mat-menu-item
3938
+ [disabled]="isActionDisabled(action)"
3939
+ [matMenuTriggerFor]="
3940
+ isActionDisabled(action) ? null : compactActionMenu
3941
+ "
3942
+ [attr.aria-label]="getActionAriaLabel(action)"
3943
+ >
3944
+ @if (action.icon) {
3945
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
3946
+ }
3947
+ <span class="praxis-toolbar-menu-action__label">
3948
+ {{ action.label }}
3669
3949
  </span>
3670
- }
3671
- </button>
3672
- }
3673
- @if (config?.export?.enabled) {
3674
- <button
3675
- mat-menu-item
3676
- [matMenuTriggerFor]="mobileExportMenu"
3677
- [disabled]="exportBusy"
3678
- class="praxis-table-compact-command--export"
3679
- >
3680
- <mat-icon
3681
- [class.praxis-table-export-progress-icon]="exportBusy"
3682
- [praxisIcon]="
3683
- exportBusy ? 'progress_activity' : 'download'
3950
+ </button>
3951
+ <mat-menu #compactActionMenu="matMenu">
3952
+ @for (
3953
+ child of getVisibleActionChildren(action);
3954
+ track getActionId(child)
3955
+ ) {
3956
+ <button
3957
+ mat-menu-item
3958
+ [disabled]="isActionDisabled(child)"
3959
+ [attr.aria-label]="getActionAriaLabel(child)"
3960
+ (click)="
3961
+ emitOverflowToolbarAction(
3962
+ $event,
3963
+ getActionId(child),
3964
+ child
3965
+ )
3966
+ "
3967
+ >
3968
+ @if (child.icon) {
3969
+ <mat-icon [praxisIcon]="child.icon"></mat-icon>
3970
+ }
3971
+ <span class="praxis-toolbar-menu-action__label">
3972
+ {{ child.label || getActionId(child) }}
3973
+ </span>
3974
+ @if (getActionDisabledReason(child); as reason) {
3975
+ <span class="praxis-toolbar-menu-action__reason">
3976
+ {{ reason }}
3977
+ </span>
3978
+ }
3979
+ </button>
3980
+ }
3981
+ </mat-menu>
3982
+ } @else {
3983
+ <button
3984
+ mat-menu-item
3985
+ [disabled]="isActionDisabled(action)"
3986
+ [attr.aria-label]="getActionAriaLabel(action)"
3987
+ (click)="
3988
+ emitOverflowToolbarAction(
3989
+ $event,
3990
+ getActionId(action),
3991
+ action
3992
+ )
3684
3993
  "
3685
- ></mat-icon>
3686
- {{ getExportDataLabel() }}
3687
- </button>
3688
- }
3689
- @if (isColumnsVisibilityEnabled()) {
3690
- <button
3691
- mat-menu-item
3692
- [matMenuTriggerFor]="mobileColumnsMenu"
3693
- class="praxis-table-compact-command--columns"
3694
- >
3695
- <mat-icon
3696
- [praxisIcon]="getColumnsVisibilityIcon()"
3697
- ></mat-icon>
3698
- {{ getColumnsVisibilityLabel() }}
3699
- </button>
3700
- }
3701
- @if (isDensityToggleEnabled()) {
3702
- <button
3703
- mat-menu-item
3704
- [matMenuTriggerFor]="mobileDensityMenu"
3705
- class="praxis-table-toolbar-action--density"
3706
- >
3707
- <mat-icon [praxisIcon]="'density_medium'"></mat-icon>
3708
- {{ getDensityToggleLabel() }}
3709
- </button>
3994
+ >
3995
+ @if (action.icon) {
3996
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
3997
+ }
3998
+ <span class="praxis-toolbar-menu-action__label">
3999
+ {{ action.label }}
4000
+ </span>
4001
+ @if (
4002
+ getCompactActionSpecificDisabledReason(action);
4003
+ as reason
4004
+ ) {
4005
+ <span class="praxis-toolbar-menu-action__reason">
4006
+ {{ reason }}
4007
+ </span>
4008
+ }
4009
+ </button>
4010
+ }
3710
4011
  }
3711
- </mat-menu>
3712
-
3713
- <mat-menu #mobileExportMenu="matMenu">
3714
4012
  @if (config?.export?.enabled) {
4013
+ <div
4014
+ class="praxis-table-compact-command-group"
4015
+ role="heading"
4016
+ aria-level="3"
4017
+ >
4018
+ {{ getCompactExportGroupLabel() }}
4019
+ </div>
3715
4020
  @for (format of config?.export?.formats; track format) {
3716
4021
  <button
3717
4022
  mat-menu-item
3718
- class="praxis-table-export-menu-item"
4023
+ class="praxis-table-export-menu-item praxis-table-compact-command--export"
3719
4024
  [disabled]="exportBusy"
3720
- [matTooltip]="getExportFormatTooltip(format)"
3721
4025
  [attr.aria-label]="getExportFormatAriaLabel(format)"
3722
4026
  (click)="emitExportAction($event, format)"
3723
4027
  >
3724
4028
  <mat-icon
3725
- [praxisIcon]="getExportIcon(format)"
4029
+ [class.praxis-table-export-progress-icon]="exportBusy"
4030
+ [praxisIcon]="
4031
+ exportBusy
4032
+ ? 'progress_activity'
4033
+ : getExportIcon(format)
4034
+ "
3726
4035
  ></mat-icon>
3727
4036
  {{ getExportFormatLabel(format) }}
3728
4037
  </button>
3729
4038
  @if (isVisibleExcelExportEnabled(format)) {
3730
4039
  <button
3731
4040
  mat-menu-item
3732
- class="praxis-table-export-menu-item"
4041
+ class="praxis-table-export-menu-item praxis-table-compact-command--export"
3733
4042
  [disabled]="exportBusy"
3734
- [matTooltip]="getVisibleExcelExportDescription()"
3735
4043
  [attr.aria-label]="getVisibleExcelExportAriaLabel()"
3736
4044
  (click)="emitVisibleExcelExportAction($event)"
3737
4045
  >
@@ -3741,6 +4049,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3741
4049
  }
3742
4050
  }
3743
4051
  }
4052
+ @if (
4053
+ isColumnsVisibilityEnabled() || isDensityToggleEnabled()
4054
+ ) {
4055
+ <div
4056
+ class="praxis-table-compact-command-group"
4057
+ role="heading"
4058
+ aria-level="3"
4059
+ >
4060
+ {{ getCompactViewGroupLabel() }}
4061
+ </div>
4062
+ }
4063
+ @if (isColumnsVisibilityEnabled()) {
4064
+ <button
4065
+ mat-menu-item
4066
+ [matMenuTriggerFor]="mobileColumnsMenu"
4067
+ class="praxis-table-compact-command--columns"
4068
+ >
4069
+ <mat-icon
4070
+ [praxisIcon]="getColumnsVisibilityIcon()"
4071
+ ></mat-icon>
4072
+ {{ getColumnsVisibilityLabel() }}
4073
+ </button>
4074
+ }
4075
+ @if (isDensityToggleEnabled()) {
4076
+ @for (density of getDensityOptions(); track density) {
4077
+ <button
4078
+ mat-menu-item
4079
+ type="button"
4080
+ class="praxis-table-toolbar-action--density"
4081
+ [attr.aria-current]="
4082
+ isDensityActive(density) ? 'true' : null
4083
+ "
4084
+ (click)="emitDensityChange($event, density)"
4085
+ >
4086
+ <mat-icon
4087
+ [praxisIcon]="
4088
+ isDensityActive(density)
4089
+ ? 'check'
4090
+ : getDensityIcon(density)
4091
+ "
4092
+ ></mat-icon>
4093
+ {{ getDensityToggleLabel() }}:
4094
+ {{ getDensityLabel(density) }}
4095
+ </button>
4096
+ }
4097
+ }
3744
4098
  </mat-menu>
3745
4099
 
3746
4100
  <mat-menu
@@ -3799,33 +4153,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3799
4153
  }
3800
4154
  }
3801
4155
  </mat-menu>
3802
-
3803
- <mat-menu
3804
- #mobileDensityMenu="matMenu"
3805
- class="praxis-table-density-menu"
3806
- >
3807
- @if (isDensityToggleEnabled()) {
3808
- @for (density of getDensityOptions(); track density) {
3809
- <button
3810
- mat-menu-item
3811
- type="button"
3812
- [attr.aria-current]="
3813
- isDensityActive(density) ? 'true' : null
3814
- "
3815
- (click)="emitDensityChange($event, density)"
3816
- >
3817
- <mat-icon
3818
- [praxisIcon]="
3819
- isDensityActive(density)
3820
- ? 'check'
3821
- : getDensityIcon(density)
3822
- "
3823
- ></mat-icon>
3824
- {{ getDensityLabel(density) }}
3825
- </button>
3826
- }
3827
- }
3828
- </mat-menu>
3829
4156
  }
3830
4157
  </div>
3831
4158
  }
@@ -3835,7 +4162,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3835
4162
  `, host: {
3836
4163
  '[class.praxis-toolbar-footer]': "placement === 'footer'",
3837
4164
  '(document:keydown)': 'onDocumentKeydown($event)',
3838
- }, styles: [":host{display:block;container-name:praxis-table-toolbar;container-type:inline-size}.praxis-toolbar{--p-table-toolbar-bg-default: linear-gradient( 180deg, color-mix( in srgb, var(--md-sys-color-surface, #fff) 96%, transparent ), color-mix( in srgb, var(--md-sys-color-surface-container-low, #f6f8fc) 100%, transparent ) );--p-table-toolbar-fg-default: var( --md-sys-color-on-surface, currentColor );--p-table-toolbar-border-color-default: color-mix( in srgb, var(--md-sys-color-outline-variant, #d7dbe5) 78%, transparent );--p-table-toolbar-divider-color-default: color-mix( in srgb, var(--md-sys-color-outline) 42%, transparent );--p-table-toolbar-action-hover-bg-default: color-mix( in srgb, var(--md-sys-color-primary) 10%, transparent );--p-table-toolbar-action-active-bg-default: color-mix( in srgb, var(--md-sys-color-primary) 16%, transparent );--p-table-toolbar-action-focus-ring-default: color-mix( in srgb, var(--md-sys-color-primary) 52%, transparent );--p-table-toolbar-ai-accent-color-default: var( --md-sys-color-primary, #0b72d9 );--p-table-toolbar-status-fg-default: var( --md-sys-color-on-surface-variant, currentColor );background:var( --p-table-toolbar-bg, var(--p-table-toolbar-bg-default) );color:var(--p-table-toolbar-fg, var(--p-table-toolbar-fg-default));box-shadow:var(--p-table-toolbar-shadow, none);padding:var( --p-table-toolbar-layout-padding, var(--p-table-toolbar-padding-block, var(--pfx-toolbar-pad-y, 6px)) var( --p-table-toolbar-padding-inline, var(--pfx-toolbar-pad-x, 12px) ) );min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) );display:grid;grid-template-areas:\"actions actions actions\";grid-template-columns:max-content minmax(0,1fr) auto;align-items:center;column-gap:max(var(--p-table-toolbar-gap, 8px),12px);row-gap:var(--p-table-toolbar-identity-filter-gap, 8px);border:var(--p-table-toolbar-border-width, 1px) solid var( --p-table-toolbar-border-color, var(--p-table-toolbar-border-color-default) );border-radius:var(--p-table-toolbar-radius, 10px)}.praxis-toolbar.p-table-toolbar--flat{--p-table-toolbar-border-width: 0;--p-table-toolbar-shadow: none}.praxis-toolbar.p-table-toolbar--elevated{--p-table-toolbar-shadow: 0 12px 28px color-mix(in srgb, var(--md-sys-color-shadow, #000) 12%, transparent)}.praxis-toolbar.p-table-toolbar--integrated{--p-table-toolbar-bg: transparent;--p-table-toolbar-border-width: 0;--p-table-toolbar-radius: 0}.praxis-toolbar.p-table-toolbar--layout-separator{border-block-end-width:1px;border-block-end-style:solid;border-block-end-color:var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.praxis-toolbar.p-table-toolbar--compact{--p-table-toolbar-min-height: 36px;--p-table-toolbar-padding-block: 4px;--p-table-toolbar-padding-inline: 10px;--p-table-toolbar-gap: 4px;--p-table-toolbar-actions-gap: 4px;--p-table-toolbar-action-size: var(--praxis-action-control-compact-height, 36px);--p-table-toolbar-action-radius: var(--praxis-action-control-radius, 8px)}.praxis-toolbar.p-table-toolbar--comfortable{--p-table-toolbar-min-height: 44px;--p-table-toolbar-action-size: var(--praxis-action-control-height, 40px)}.praxis-toolbar.p-table-toolbar--spacious{--p-table-toolbar-min-height: 52px;--p-table-toolbar-padding-block: 8px;--p-table-toolbar-padding-inline: 16px;--p-table-toolbar-gap: 8px;--p-table-toolbar-actions-gap: 8px;--p-table-toolbar-action-size: var(--praxis-action-control-spacious-height, 44px)}.praxis-toolbar.p-table-toolbar--square{--p-table-toolbar-radius: 0;--p-table-toolbar-action-radius: 4px}.praxis-toolbar.p-table-toolbar--pill{--p-table-toolbar-radius: 999px;--p-table-toolbar-action-radius: 999px}:host(.praxis-toolbar-stack-top) .praxis-toolbar{border-bottom-left-radius:0;border-bottom-right-radius:0}:host(.praxis-toolbar-footer) .praxis-toolbar{border-top-left-radius:0;border-top-right-radius:0}:host(.praxis-toolbar-footer.footer-flat) .praxis-toolbar{border-bottom-left-radius:0;border-bottom-right-radius:0}.praxis-toolbar.mat-toolbar-single-row,.praxis-toolbar .mat-toolbar-row{height:auto}.praxis-toolbar.mat-toolbar-multiple-rows{min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) )}.praxis-toolbar.praxis-toolbar--has-query{grid-template-areas:\"query query actions\"}.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope query actions\"}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope query query\"}.toolbar-query{grid-area:query;display:grid;grid-template-columns:minmax(0,1fr) fit-content(40%);align-items:start;min-width:0;column-gap:var(--p-table-toolbar-gap, 8px);row-gap:var(--p-table-toolbar-identity-filter-gap, 8px)}.toolbar-query>*{min-width:0}.toolbar-query>:is(praxis-filter,[advancedFilter]){grid-column:1}.toolbar-shortcuts{grid-column:2;display:inline-flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--p-table-toolbar-gap, 8px);min-width:0;max-width:100%}.toolbar-shortcuts ::ng-deep>[toolbar]{min-width:0;max-width:100%}.toolbar-shortcuts:not(:has(*)){display:none}.toolbar-identity{grid-area:identity;display:flex;align-items:center;gap:var(--p-table-toolbar-identity-gap, 8px);min-width:0;max-width:100%;min-height:var(--p-table-toolbar-identity-min-height, 30px);margin-block-end:var(--p-table-toolbar-identity-margin-bottom, 0);padding-inline:2px;color:var( --p-table-toolbar-title-fg, var(--p-table-toolbar-fg, var(--p-table-toolbar-fg-default)) )}.toolbar-identity--center{text-align:center;justify-content:center}.toolbar-identity--end{text-align:end;justify-content:flex-end}.toolbar-identity--center .toolbar-identity__copy{align-items:center}.toolbar-identity--end .toolbar-identity__copy{align-items:flex-end}.toolbar-identity__icon{width:var(--p-table-toolbar-identity-icon-size, 28px);height:var(--p-table-toolbar-identity-icon-size, 28px);border-radius:var(--p-table-toolbar-identity-icon-radius, 8px);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) );background:color-mix(in srgb,var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) ) 8%,transparent);border:1px solid color-mix(in srgb,var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) ) 18%,transparent)}.toolbar-identity__icon .mat-icon{font-size:18px;width:18px;height:18px;line-height:18px}.toolbar-identity__copy{display:flex;flex-direction:column;min-width:0;max-width:100%;gap:1px}.toolbar-identity__title,.toolbar-identity__subtitle{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar-identity__title{font-size:var(--p-table-toolbar-title-font-size, 14px);font-weight:var(--p-table-toolbar-title-font-weight, 700);line-height:1.2;letter-spacing:0;color:var(--p-table-toolbar-title-fg, currentColor)}.toolbar-identity__subtitle{font-size:var(--p-table-toolbar-subtitle-font-size, 11.5px);line-height:1.25;color:var( --p-table-toolbar-subtitle-fg, var( --p-table-toolbar-status-fg, var(--p-table-toolbar-status-fg-default) ) )}.toolbar-actions{grid-area:actions;display:flex;align-items:center;align-self:start;justify-self:end;justify-content:flex-end;gap:var(--p-table-toolbar-gap, 6px);min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) );min-width:0}.praxis-toolbar.p-table-toolbar--align-start .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-start .toolbar-actions{justify-self:start}.praxis-toolbar.p-table-toolbar--align-center .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-center .toolbar-actions{justify-self:center}.praxis-toolbar.p-table-toolbar--align-end .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-end .toolbar-actions{justify-self:end}.actions-group{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px)}.business-actions,.utility-actions{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px);min-width:0}.business-actions:empty,.utility-actions:empty{display:none}.action-btn:not(.praxis-icon-button){width:fit-content;max-width:100%;height:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));min-width:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));padding-inline:var(--praxis-action-control-padding-inline, 12px);border-radius:var(--p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px));gap:var(--praxis-action-control-gap, 8px);font-size:var(--praxis-action-control-font-size, .875rem);font-weight:var(--praxis-action-control-font-weight, 500);line-height:var(--praxis-action-control-line-height, 1.25rem);color:var(--p-table-toolbar-action-fg, inherit);background:var(--p-table-toolbar-action-bg, transparent)}.action-btn:not(.praxis-icon-button):hover:not(:disabled):not([aria-disabled=true]){background:var( --p-table-toolbar-action-hover-bg, var(--p-table-toolbar-action-hover-bg-default) )}.action-btn:not(.praxis-icon-button):focus-visible{outline:2px solid var( --p-table-toolbar-action-focus-ring, var(--praxis-action-control-focus-ring, var(--p-table-toolbar-action-focus-ring-default)) );outline-offset:2px}.toolbar-icon-btn{width:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));height:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));border-radius:var(--p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px));color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary) 9%,transparent);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.toolbar-icon-btn:hover:not(:disabled){color:var(--md-sys-color-on-primary-container);background:color-mix(in srgb,var(--md-sys-color-primary) 16%,transparent);border-color:color-mix(in srgb,var(--md-sys-color-primary) 36%,transparent)}.action-btn--fab{width:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));height:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px));box-shadow:none}.pfx-tonal{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.pfx-tonal:hover{background:var(--md-sys-color-secondary-container)}.mobile-actions{display:none;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px)}.overflow-trigger{height:var(--p-table-toolbar-action-size, var(--praxis-action-control-height, 40px))}.action-btn .mat-icon,.action-btn--fab .mat-icon,.overflow-trigger .mat-icon{margin:0;font-size:var(--praxis-action-control-icon-size, 18px);width:var(--praxis-action-control-icon-size, 18px);height:var(--praxis-action-control-icon-size, 18px);line-height:var(--praxis-action-control-icon-size, 18px)}.praxis-table-export-status{max-width:13rem;overflow:hidden;color:var(--p-table-toolbar-status-fg, currentColor);font-size:.75rem;font-weight:600;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.praxis-table-export-progress-icon{animation:praxis-table-export-spin .9s linear infinite}@keyframes praxis-table-export-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.praxis-table-export-progress-icon{animation:none}}.praxis-table-column-menu-item.mat-mdc-menu-item{min-height:40px}.praxis-table-export-menu-item.mat-mdc-menu-item{min-width:280px;white-space:nowrap}.praxis-table-column-menu-content{align-items:center;display:flex;gap:10px;min-height:40px;width:100%}.praxis-table-column-menu-check.mat-icon{color:var(--md-sys-color-primary, currentColor);flex:0 0 20px;font-size:20px;height:20px;line-height:20px;margin-inline-end:0;width:20px}.praxis-table-quick-filters{grid-area:scope;align-self:start;align-items:center;display:flex;flex-wrap:nowrap;gap:6px;min-height:var(--p-table-toolbar-min-height, 44px)}.praxis-table-quick-filter.mat-mdc-outlined-button{min-height:40px;padding-inline:14px;white-space:nowrap}.praxis-table-quick-filter--active.mat-mdc-outlined-button{background:color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent);border-color:var(--md-sys-color-primary);color:var(--md-sys-color-primary)}.action-btn.mat-mdc-button-base,.action-btn--fab.mat-mdc-button-base,.overflow-trigger.mat-mdc-button-base,.toolbar-icon-btn.mat-mdc-button-base{--mdc-text-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-filled-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-protected-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-outlined-button-container-height: var( --p-table-toolbar-action-size, 36px )}.action-btn.mat-mdc-unelevated-button:not(:disabled):not([aria-disabled=true]),.action-btn.mat-mdc-outlined-button:not(:disabled):not([aria-disabled=true]),.action-btn.pfx-tonal:not(:disabled):not([aria-disabled=true]){border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #d7dbe5) 82%,transparent)}.action-btn.mat-mdc-unelevated-button:not(:disabled):not([aria-disabled=true]){box-shadow:none}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]),.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]){--praxis-toolbar-primary: var( --mat-sys-primary, var(--md-sys-color-primary) );--praxis-toolbar-on-primary: var( --mat-sys-on-primary, var(--md-sys-color-on-primary) );--praxis-toolbar-primary-action-container: var( --p-table-toolbar-primary-action-container, color-mix( in srgb, var(--praxis-toolbar-primary) 70%, var(--mat-sys-shadow, #000) 30% ) );--mdc-filled-button-container-color: var( --praxis-toolbar-primary-action-container );--mdc-filled-button-label-text-color: var( --praxis-toolbar-on-primary );--mat-filled-button-state-layer-color: var( --praxis-toolbar-on-primary );background:var(--praxis-toolbar-primary-action-container)!important;border-color:transparent;color:var(--praxis-toolbar-on-primary)!important;box-shadow:0 2px 6px color-mix(in srgb,var(--praxis-toolbar-primary-action-container) 22%,transparent)}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]):hover,.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]):hover{background:color-mix(in srgb,var(--praxis-toolbar-primary-action-container) 88%,var(--praxis-toolbar-on-primary) 12%)!important}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]) .mat-icon,.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]) .mat-icon{color:var(--praxis-toolbar-on-primary)!important}.action-btn.mat-mdc-button-base{padding-inline:var(--praxis-action-control-padding-inline, 12px)}.action-btn[aria-disabled=true],.action-btn--fab[aria-disabled=true]{--mdc-text-button-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-filled-button-container-color: color-mix( in srgb, var(--md-sys-color-surface-container-high) 78%, transparent );--mdc-filled-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-outlined-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-protected-button-label-text-color: var( --md-sys-color-on-surface-variant );background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 78%,transparent)!important;color:var(--md-sys-color-on-surface-variant)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--md-sys-color-outline) 62%,transparent)!important;cursor:not-allowed;filter:saturate(.55);opacity:var(--praxis-action-control-disabled-opacity, .62)}.action-btn[aria-disabled=true] .mat-icon,.action-btn--fab[aria-disabled=true] .mat-icon{color:currentColor!important}.action-btn[aria-disabled=true]:focus-visible,.action-btn--fab[aria-disabled=true]:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.mat-mdc-menu-item[aria-disabled=true]{color:var(--md-sys-color-on-surface-variant);cursor:not-allowed;opacity:1}.praxis-toolbar-menu-action__label,.praxis-toolbar-menu-action__reason{display:block}.praxis-toolbar-menu-action__reason{max-width:280px;color:var(--md-sys-color-on-surface-variant);font-size:12px;font-weight:400;line-height:1.35;white-space:normal}.end-actions{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px);margin-inline-start:4px;padding-inline-start:12px;border-inline-start:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.end-actions:empty{display:none;gap:0;margin-inline-start:0;padding-inline-start:0;border-inline-start:0}.praxis-toolbar-icon-action--primary{color:var(--md-sys-color-primary)}.praxis-toolbar-icon-action--accent{color:var(--md-sys-color-tertiary)}.praxis-toolbar-icon-action--warn{color:var(--md-sys-color-error)}.praxis-toolbar.p-table-toolbar--divider-between-groups .actions-group--has-business .utility-actions:not(:empty){margin-inline-start:4px;padding-inline-start:12px;border-inline-start:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.praxis-toolbar.p-table-toolbar--divider-start:not(.praxis-toolbar--has-identity) .toolbar-query{padding-inline-end:12px;border-inline-end:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.end-actions ::ng-deep .praxis-table-toolbar-action--ai,.end-actions ::ng-deep .praxis-table-ai-trigger{color:var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) );background:color-mix(in srgb,var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) ) 10%,transparent);border:1px solid color-mix(in srgb,var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) ) 24%,transparent)}.end-actions ::ng-deep [data-role=table-settings]{color:var( --p-table-toolbar-status-fg, var(--p-table-toolbar-status-fg-default) )}@container praxis-table-toolbar (max-width: 960px){.actions-group{display:none}.mobile-actions{display:flex}.toolbar-actions{justify-content:flex-end}}@container praxis-table-toolbar (max-width: 720px){.praxis-toolbar.praxis-toolbar--has-query{grid-template-areas:\"query query query\" \"actions actions actions\"}.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope scope scope\" \"query query query\" \"actions actions actions\"}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope scope scope\" \"query query query\"}.toolbar-query{grid-template-columns:minmax(0,1fr)}.toolbar-query>:is(praxis-filter,[advancedFilter]),.toolbar-shortcuts{grid-column:1}.toolbar-shortcuts{justify-content:flex-start}.praxis-table-quick-filters{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}}@container praxis-table-toolbar (max-width: 540px){.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity identity\" \"actions actions actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity identity\" \"actions actions actions\" \"scope scope scope\" \"query query query\"}.toolbar-actions{justify-self:stretch;justify-content:flex-end}.toolbar-actions,.toolbar-query{--p-table-toolbar-action-size: var(--praxis-action-control-spacious-height, 44px)}.toolbar-identity__subtitle{display:none}.praxis-table-quick-filter.mat-mdc-outlined-button{min-height:44px}}\n"] }]
4165
+ }, styles: [":host{display:block;container-name:praxis-table-toolbar;container-type:inline-size}.praxis-toolbar{--p-table-toolbar-bg-default: linear-gradient( 180deg, color-mix( in srgb, var(--md-sys-color-surface, #fff) 96%, transparent ), color-mix( in srgb, var(--md-sys-color-surface-container-low, #f6f8fc) 100%, transparent ) );--p-table-toolbar-fg-default: var( --md-sys-color-on-surface, currentColor );--p-table-toolbar-border-color-default: color-mix( in srgb, var(--md-sys-color-outline-variant, #d7dbe5) 78%, transparent );--p-table-toolbar-divider-color-default: color-mix( in srgb, var(--md-sys-color-outline) 42%, transparent );--p-table-toolbar-action-hover-bg-default: color-mix( in srgb, var(--md-sys-color-primary) 10%, transparent );--p-table-toolbar-action-active-bg-default: color-mix( in srgb, var(--md-sys-color-primary) 16%, transparent );--p-table-toolbar-action-focus-ring-default: color-mix( in srgb, var(--md-sys-color-primary) 52%, transparent );--p-table-toolbar-ai-accent-color-default: var( --md-sys-color-primary, #0b72d9 );--p-table-toolbar-status-fg-default: var( --md-sys-color-on-surface-variant, currentColor );background:var( --p-table-toolbar-bg, var(--p-table-toolbar-bg-default) );color:var(--p-table-toolbar-fg, var(--p-table-toolbar-fg-default));box-shadow:var(--p-table-toolbar-shadow, none);padding:var( --p-table-toolbar-layout-padding, var(--p-table-toolbar-padding-block, var(--pfx-toolbar-pad-y, 6px)) var( --p-table-toolbar-padding-inline, var(--pfx-toolbar-pad-x, 12px) ) );min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) );display:grid;grid-template-areas:\"actions actions actions\";grid-template-columns:max-content minmax(0,1fr) auto;align-items:center;column-gap:max(var(--p-table-toolbar-gap, 8px),12px);row-gap:var(--p-table-toolbar-identity-filter-gap, 8px);border:var(--p-table-toolbar-border-width, 1px) solid var( --p-table-toolbar-border-color, var(--p-table-toolbar-border-color-default) );border-radius:var(--p-table-toolbar-radius, 10px)}.praxis-toolbar.p-table-toolbar--flat{--p-table-toolbar-border-width: 0;--p-table-toolbar-shadow: none}.praxis-toolbar.p-table-toolbar--elevated{--p-table-toolbar-shadow: 0 12px 28px color-mix(in srgb, var(--md-sys-color-shadow, #000) 12%, transparent)}.praxis-toolbar.p-table-toolbar--integrated{--p-table-toolbar-bg: transparent;--p-table-toolbar-border-width: 0;--p-table-toolbar-radius: 0}.praxis-toolbar.p-table-toolbar--layout-separator{border-block-end-width:1px;border-block-end-style:solid;border-block-end-color:var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.praxis-toolbar.p-table-toolbar--compact{--p-table-toolbar-min-height: 36px;--p-table-toolbar-padding-block: 4px;--p-table-toolbar-padding-inline: 10px;--p-table-toolbar-gap: 4px;--p-table-toolbar-actions-gap: 4px;--p-table-toolbar-action-size: var( --praxis-action-control-compact-height, 36px );--p-table-toolbar-action-radius: var( --praxis-action-control-radius, 8px )}.praxis-toolbar.p-table-toolbar--comfortable{--p-table-toolbar-min-height: 44px;--p-table-toolbar-action-size: var( --praxis-action-control-height, 40px )}.praxis-toolbar.p-table-toolbar--spacious{--p-table-toolbar-min-height: 52px;--p-table-toolbar-padding-block: 8px;--p-table-toolbar-padding-inline: 16px;--p-table-toolbar-gap: 8px;--p-table-toolbar-actions-gap: 8px;--p-table-toolbar-action-size: var( --praxis-action-control-spacious-height, 44px )}.praxis-toolbar.p-table-toolbar--square{--p-table-toolbar-radius: 0;--p-table-toolbar-action-radius: 4px}.praxis-toolbar.p-table-toolbar--pill{--p-table-toolbar-radius: 999px;--p-table-toolbar-action-radius: 999px}:host(.praxis-toolbar-stack-top) .praxis-toolbar{border-bottom-left-radius:0;border-bottom-right-radius:0}:host(.praxis-toolbar-footer) .praxis-toolbar{border-top-left-radius:0;border-top-right-radius:0}:host(.praxis-toolbar-footer.footer-flat) .praxis-toolbar{border-bottom-left-radius:0;border-bottom-right-radius:0}.praxis-toolbar.mat-toolbar-single-row,.praxis-toolbar .mat-toolbar-row{height:auto}.praxis-toolbar.mat-toolbar-multiple-rows{min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) )}.praxis-toolbar.praxis-toolbar--has-query{grid-template-areas:\"query query actions\"}.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope query actions\"}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope query query\"}.toolbar-query{grid-area:query;display:flex;flex-wrap:wrap;align-items:start;min-width:0;column-gap:var(--p-table-toolbar-gap, 8px);row-gap:var(--p-table-toolbar-identity-filter-gap, 8px)}.toolbar-query>*{min-width:0}.toolbar-query>:is(praxis-filter,[advancedFilter]){flex:1 1 620px}.toolbar-shortcuts{flex:0 1 auto;display:inline-flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--p-table-toolbar-gap, 8px);min-width:0;max-width:100%;margin-inline-start:auto}.toolbar-shortcuts ::ng-deep>[toolbar]{min-width:0;max-width:100%}.toolbar-shortcuts ::ng-deep>[toolbar].mat-mdc-button-base{--mdc-text-button-container-height: var( --p-table-toolbar-query-control-height, 40px );--mdc-outlined-button-container-height: var( --p-table-toolbar-query-control-height, 40px );min-height:var(--p-table-toolbar-query-control-height, 40px);border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) )}.toolbar-shortcuts:not(:has(*)){display:none}.toolbar-identity{grid-area:identity;display:flex;align-items:center;gap:var(--p-table-toolbar-identity-gap, 8px);min-width:0;max-width:100%;min-height:var(--p-table-toolbar-identity-min-height, 30px);margin-block-end:var(--p-table-toolbar-identity-margin-bottom, 0);padding-inline:2px;color:var( --p-table-toolbar-title-fg, var(--p-table-toolbar-fg, var(--p-table-toolbar-fg-default)) )}.toolbar-identity--center{text-align:center;justify-content:center}.toolbar-identity--end{text-align:end;justify-content:flex-end}.toolbar-identity--center .toolbar-identity__copy{align-items:center}.toolbar-identity--end .toolbar-identity__copy{align-items:flex-end}.toolbar-identity__icon{width:var(--p-table-toolbar-identity-icon-size, 28px);height:var(--p-table-toolbar-identity-icon-size, 28px);border-radius:var(--p-table-toolbar-identity-icon-radius, 8px);display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) );background:color-mix(in srgb,var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) ) 8%,transparent);border:1px solid color-mix(in srgb,var( --p-table-toolbar-icon-fg, var(--md-sys-color-primary, currentColor) ) 18%,transparent)}.toolbar-identity__icon .mat-icon{font-size:18px;width:18px;height:18px;line-height:18px}.toolbar-identity__copy{display:flex;flex-direction:column;min-width:0;max-width:100%;gap:1px}.toolbar-identity__title,.toolbar-identity__subtitle{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbar-identity__title{font-size:var(--p-table-toolbar-title-font-size, 14px);font-weight:var(--p-table-toolbar-title-font-weight, 700);line-height:1.2;letter-spacing:0;color:var(--p-table-toolbar-title-fg, currentColor)}.toolbar-identity__subtitle{font-size:var(--p-table-toolbar-subtitle-font-size, 11.5px);line-height:1.25;color:var( --p-table-toolbar-subtitle-fg, var( --p-table-toolbar-status-fg, var(--p-table-toolbar-status-fg-default) ) )}.toolbar-actions{grid-area:actions;display:flex;align-items:center;align-self:start;justify-self:end;justify-content:flex-end;gap:var(--p-table-toolbar-gap, 6px);min-height:var( --p-table-toolbar-min-height, var(--pfx-filter-h, 44px) );min-width:0}.praxis-toolbar.p-table-toolbar--align-start .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-start .toolbar-actions{justify-self:start}.praxis-toolbar.p-table-toolbar--align-center .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-center .toolbar-actions{justify-self:center}.praxis-toolbar.p-table-toolbar--align-end .toolbar-identity,.praxis-toolbar.p-table-toolbar--align-end .toolbar-actions{justify-self:end}.actions-group{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px)}.praxis-toolbar--compact-actions .actions-group{position:fixed;inset-block-start:-10000px;inset-inline-start:0;inline-size:max-content;max-inline-size:none;visibility:hidden;pointer-events:none}.praxis-toolbar--compact-actions .mobile-actions{display:flex}.praxis-toolbar--compact-actions .toolbar-query{flex-direction:column}.praxis-toolbar--compact-actions .toolbar-shortcuts{justify-content:flex-start;margin-inline-start:0}.business-actions,.utility-actions{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px);min-width:0}.business-actions:empty,.utility-actions:empty{display:none}.action-btn:not(.praxis-icon-button){width:fit-content;max-width:100%;height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );min-width:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );padding-inline:var(--praxis-action-control-padding-inline, 12px);border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) );gap:var(--praxis-action-control-gap, 8px);font-size:var(--praxis-action-control-font-size, .875rem);font-weight:var(--praxis-action-control-font-weight, 500);line-height:var(--praxis-action-control-line-height, 1.25rem);color:var(--p-table-toolbar-action-fg, inherit);background:var(--p-table-toolbar-action-bg, transparent)}.action-btn:not(.praxis-icon-button):hover:not(:disabled):not([aria-disabled=true]){background:var( --p-table-toolbar-action-hover-bg, var(--p-table-toolbar-action-hover-bg-default) )}.action-btn:not(.praxis-icon-button):focus-visible{outline:2px solid var( --p-table-toolbar-action-focus-ring, var( --praxis-action-control-focus-ring, var(--p-table-toolbar-action-focus-ring-default) ) );outline-offset:2px}.toolbar-icon-btn{width:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) );color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary) 9%,transparent);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 22%,transparent)}.toolbar-icon-btn:hover:not(:disabled){color:var(--md-sys-color-on-primary-container);background:color-mix(in srgb,var(--md-sys-color-primary) 16%,transparent);border-color:color-mix(in srgb,var(--md-sys-color-primary) 36%,transparent)}.action-btn--fab{width:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );box-shadow:none}.pfx-tonal{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.pfx-tonal:hover{background:var(--md-sys-color-secondary-container)}.mobile-actions{display:none;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px)}.overflow-trigger{height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) )}.action-btn .mat-icon,.action-btn--fab .mat-icon,.overflow-trigger .mat-icon{margin:0;font-size:var(--praxis-action-control-icon-size, 18px);width:var(--praxis-action-control-icon-size, 18px);height:var(--praxis-action-control-icon-size, 18px);line-height:var(--praxis-action-control-icon-size, 18px)}.praxis-table-export-status{max-width:13rem;overflow:hidden;color:var(--p-table-toolbar-status-fg, currentColor);font-size:.75rem;font-weight:600;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.praxis-table-export-progress-icon{animation:praxis-table-export-spin .9s linear infinite}@keyframes praxis-table-export-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.praxis-table-export-progress-icon{animation:none}}.praxis-table-column-menu-item.mat-mdc-menu-item{min-height:40px}.praxis-table-export-menu-item.mat-mdc-menu-item{min-width:280px;white-space:nowrap}.praxis-table-column-menu-content{align-items:center;display:flex;gap:10px;min-height:40px;width:100%}.praxis-table-column-menu-check.mat-icon{color:var(--md-sys-color-primary, currentColor);flex:0 0 20px;font-size:20px;height:20px;line-height:20px;margin-inline-end:0;width:20px}.praxis-table-quick-filters{grid-area:scope;align-self:start;align-items:center;display:flex;flex-wrap:nowrap;gap:0;min-height:var(--p-table-toolbar-min-height, 44px)}.praxis-table-quick-filter.mat-mdc-outlined-button{--mdc-outlined-button-container-height: var( --p-table-toolbar-query-control-height, 40px );min-height:var(--p-table-toolbar-query-control-height, 40px);padding-inline:14px;border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) );position:relative;z-index:0;white-space:nowrap}.praxis-table-quick-filter+.praxis-table-quick-filter{margin-inline-start:-1px}.praxis-table-quick-filter:first-child:not(:only-child){border-start-end-radius:0;border-end-end-radius:0}.praxis-table-quick-filter:not(:first-child):not(:last-child){border-radius:0}.praxis-table-quick-filter:last-child:not(:only-child){border-start-start-radius:0;border-end-start-radius:0}.praxis-table-quick-filter:only-child{border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) )}.praxis-table-quick-filter--active.mat-mdc-outlined-button{background:color-mix(in srgb,var(--md-sys-color-primary) 12%,transparent);border-color:var(--md-sys-color-primary);color:var(--md-sys-color-primary);z-index:1}.praxis-table-quick-filter:focus-visible{z-index:2}.action-btn.mat-mdc-button-base,.action-btn--fab.mat-mdc-button-base,.overflow-trigger.mat-mdc-button-base,.toolbar-icon-btn.mat-mdc-button-base{--mdc-text-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-filled-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-protected-button-container-height: var( --p-table-toolbar-action-size, 36px );--mdc-outlined-button-container-height: var( --p-table-toolbar-action-size, 36px )}.action-btn.mat-mdc-unelevated-button:not(:disabled):not([aria-disabled=true]),.action-btn.mat-mdc-outlined-button:not(:disabled):not([aria-disabled=true]),.action-btn.pfx-tonal:not(:disabled):not([aria-disabled=true]){border-color:color-mix(in srgb,var(--md-sys-color-outline-variant, #d7dbe5) 82%,transparent)}.action-btn.mat-mdc-unelevated-button:not(:disabled):not([aria-disabled=true]){box-shadow:none}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]),.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]){--praxis-toolbar-primary: var( --mat-sys-primary, var(--md-sys-color-primary) );--praxis-toolbar-on-primary: var( --mat-sys-on-primary, var(--md-sys-color-on-primary) );--praxis-toolbar-primary-action-container: var( --p-table-toolbar-primary-action-container, color-mix( in srgb, var(--praxis-toolbar-primary) 70%, var(--mat-sys-shadow, #000) 30% ) );--mdc-filled-button-container-color: var( --praxis-toolbar-primary-action-container );--mdc-filled-button-label-text-color: var(--praxis-toolbar-on-primary);--mat-filled-button-state-layer-color: var(--praxis-toolbar-on-primary);background:var(--praxis-toolbar-primary-action-container)!important;border-color:transparent;color:var(--praxis-toolbar-on-primary)!important;box-shadow:0 2px 6px color-mix(in srgb,var(--praxis-toolbar-primary-action-container) 22%,transparent)}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]):hover,.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]):hover{background:color-mix(in srgb,var(--praxis-toolbar-primary-action-container) 88%,var(--praxis-toolbar-on-primary) 12%)!important}.action-btn.mat-mdc-unelevated-button.mat-primary:not(:disabled):not([aria-disabled=true]) .mat-icon,.action-btn.praxis-toolbar-action--filled-primary:not(:disabled):not([aria-disabled=true]) .mat-icon{color:var(--praxis-toolbar-on-primary)!important}.action-btn.mat-mdc-button-base{padding-inline:var(--praxis-action-control-padding-inline, 12px)}.action-btn[aria-disabled=true],.action-btn--fab[aria-disabled=true]{--mdc-text-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-filled-button-container-color: color-mix( in srgb, var(--md-sys-color-surface-container-high) 78%, transparent );--mdc-filled-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-outlined-button-label-text-color: var( --md-sys-color-on-surface-variant );--mdc-protected-button-label-text-color: var( --md-sys-color-on-surface-variant );background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 78%,transparent)!important;color:var(--md-sys-color-on-surface-variant)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--md-sys-color-outline) 62%,transparent)!important;cursor:not-allowed;filter:saturate(.55);opacity:var(--praxis-action-control-disabled-opacity, .62)}.action-btn[aria-disabled=true] .mat-icon,.action-btn--fab[aria-disabled=true] .mat-icon{color:currentColor!important}.action-btn[aria-disabled=true]:focus-visible,.action-btn--fab[aria-disabled=true]:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.mat-mdc-menu-item[aria-disabled=true],.mat-mdc-menu-item.mat-mdc-menu-item-disabled{color:var(--md-sys-color-on-surface-variant)!important;cursor:not-allowed;opacity:1!important}.praxis-toolbar-menu-action__label,.praxis-toolbar-menu-action__reason{display:block}.praxis-toolbar-menu-action__reason{max-width:280px;color:var(--md-sys-color-on-surface-variant)!important;font-size:12px;font-weight:400;line-height:1.35;white-space:normal}.praxis-table-compact-command-group{box-sizing:border-box;margin:6px 12px 2px;padding:8px 4px 4px;border-block-start:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 74%,transparent);color:var(--md-sys-color-on-surface-variant);font-size:.75rem;font-weight:600;line-height:1rem;letter-spacing:.04em;text-transform:uppercase}.praxis-table-compact-command-group:first-child{margin-block-start:2px;padding-block-start:4px;border-block-start:0}.praxis-table-compact-command-group__hint{max-width:280px;margin:0 16px 6px;color:var(--md-sys-color-on-surface-variant);font-size:.75rem;font-weight:400;line-height:1.35;white-space:normal}.mat-mdc-menu-item[aria-disabled=true] .praxis-toolbar-menu-action__reason,.mat-mdc-menu-item.mat-mdc-menu-item-disabled .praxis-toolbar-menu-action__reason{opacity:1!important}.end-actions{display:flex;align-items:center;gap:var(--p-table-toolbar-actions-gap, 8px);margin-inline-start:4px;padding-inline-start:12px;border-inline-start:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.end-actions ::ng-deep>[end-actions]{height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );min-height:var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );border-radius:var( --p-table-toolbar-action-radius, var(--praxis-action-control-radius, 8px) )}.end-actions ::ng-deep>[end-actions].mat-mdc-button-base{--mdc-text-button-container-height: var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );--mdc-filled-button-container-height: var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );--mdc-protected-button-container-height: var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) );--mdc-outlined-button-container-height: var( --p-table-toolbar-action-size, var(--praxis-action-control-height, 40px) )}.end-actions:empty{display:none;gap:0;margin-inline-start:0;padding-inline-start:0;border-inline-start:0}.praxis-toolbar-icon-action--primary{color:var(--md-sys-color-primary)}.praxis-toolbar-icon-action--accent{color:var(--md-sys-color-tertiary)}.praxis-toolbar-icon-action--warn{color:var(--md-sys-color-error)}.praxis-toolbar.p-table-toolbar--divider-between-groups .actions-group--has-business .utility-actions:not(:empty){margin-inline-start:4px;padding-inline-start:12px;border-inline-start:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.praxis-toolbar.p-table-toolbar--divider-start:not(.praxis-toolbar--has-identity) .toolbar-query{padding-inline-end:12px;border-inline-end:1px solid var( --p-table-toolbar-divider-color, var(--p-table-toolbar-divider-color-default) )}.end-actions ::ng-deep .praxis-table-toolbar-action--ai,.end-actions ::ng-deep .praxis-table-ai-trigger{color:var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) );background:color-mix(in srgb,var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) ) 10%,transparent);border:1px solid color-mix(in srgb,var( --p-table-toolbar-ai-accent-color, var(--p-table-toolbar-ai-accent-color-default) ) 24%,transparent)}.end-actions ::ng-deep [data-role=table-settings]{color:var( --p-table-toolbar-status-fg, var(--p-table-toolbar-status-fg-default) )}@container praxis-table-toolbar (max-width: 1200px){.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope scope actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope scope scope\" \"query query query\"}.toolbar-query{width:100%}}@container praxis-table-toolbar (max-width: 960px){.actions-group{display:none}.mobile-actions{display:flex}.toolbar-actions{justify-content:flex-end}}@container praxis-table-toolbar (max-width: 720px){.praxis-toolbar.praxis-toolbar--has-query{grid-template-areas:\"query query query\" \"actions actions actions\"}.praxis-toolbar.praxis-toolbar--has-query.praxis-toolbar--has-scope{grid-template-areas:\"scope scope scope\" \"query query query\" \"actions actions actions\"}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity actions\" \"scope scope scope\" \"query query query\"}.toolbar-query{flex-direction:column}.toolbar-shortcuts{justify-content:flex-start;margin-inline-start:0}.praxis-table-quick-filters{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}}@container praxis-table-toolbar (max-width: 540px){.praxis-toolbar{--p-table-toolbar-query-control-height: 44px}.praxis-toolbar.praxis-toolbar--has-identity{grid-template-areas:\"identity identity identity\" \"actions actions actions\" \"query query query\"}.praxis-toolbar.praxis-toolbar--has-identity.praxis-toolbar--has-scope{grid-template-areas:\"identity identity identity\" \"actions actions actions\" \"scope scope scope\" \"query query query\"}.toolbar-actions{justify-self:stretch;justify-content:flex-end}.toolbar-actions,.toolbar-query{--p-table-toolbar-action-size: var( --praxis-action-control-spacious-height, 44px )}.toolbar-identity__subtitle{display:none}.praxis-table-quick-filter.mat-mdc-outlined-button{min-height:44px}.praxis-table-quick-filters--binary{width:100%;min-width:0}.praxis-table-quick-filters--binary .praxis-table-quick-filter.mat-mdc-outlined-button{flex:1 1 0;min-width:0}}\n"] }]
3839
4166
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.LoggerService, decorators: [{
3840
4167
  type: Optional
3841
4168
  }] }, { type: i1.PraxisI18nService, decorators: [{
@@ -3850,7 +4177,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3850
4177
  }, {
3851
4178
  type: Inject,
3852
4179
  args: [PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS]
3853
- }] }], propDecorators: { config: [{
4180
+ }] }], propDecorators: { toolbarRoot: [{
4181
+ type: ViewChild,
4182
+ args: ['toolbarRoot', { read: ElementRef }]
4183
+ }], toolbarIdentity: [{
4184
+ type: ViewChild,
4185
+ args: ['toolbarIdentity', { read: ElementRef }]
4186
+ }], fullActionsGroup: [{
4187
+ type: ViewChild,
4188
+ args: ['fullActionsGroup', { read: ElementRef }]
4189
+ }], endActionsGroup: [{
4190
+ type: ViewChild,
4191
+ args: ['endActionsGroup', { read: ElementRef }]
4192
+ }], config: [{
3854
4193
  type: Input
3855
4194
  }], appearance: [{
3856
4195
  type: Input
@@ -28484,19 +28823,19 @@ class FilterConfigService {
28484
28823
  /**
28485
28824
  * Persist a filter configuration for the given key.
28486
28825
  */
28487
- save(key, config) {
28826
+ async save(key, config) {
28488
28827
  const storageKey = this.PREFIX + key;
28489
28828
  this.localStorage.saveConfig(storageKey, config);
28490
- this.storage.saveConfig(storageKey, config).subscribe({ error: () => { } });
28829
+ await firstValueFrom(this.storage.saveConfig(storageKey, config));
28491
28830
  }
28492
28831
  /**
28493
28832
  * Clear the persisted filter configuration from both remote storage and the
28494
28833
  * local fallback cache so reset/reopen cannot revive stale preferences.
28495
28834
  */
28496
- clear(key) {
28835
+ async clear(key) {
28497
28836
  const storageKey = this.PREFIX + key;
28498
28837
  this.localStorage.clearConfig(storageKey);
28499
- this.storage.clearConfig(storageKey).subscribe({ error: () => { } });
28838
+ await firstValueFrom(this.storage.clearConfig(storageKey));
28500
28839
  }
28501
28840
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FilterConfigService, deps: [{ token: ASYNC_CONFIG_STORAGE }, { token: i1.LocalStorageConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
28502
28841
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FilterConfigService, providedIn: 'root' });
@@ -28509,6 +28848,68 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
28509
28848
  args: [ASYNC_CONFIG_STORAGE]
28510
28849
  }] }, { type: i1.LocalStorageConfigService }] });
28511
28850
 
28851
+ const unsafeObjectKeys = new Set(['__proto__', 'constructor', 'prototype']);
28852
+ function isPlainObject(value) {
28853
+ if (!value || typeof value !== 'object' || Array.isArray(value))
28854
+ return false;
28855
+ const prototype = Object.getPrototypeOf(value);
28856
+ return prototype === Object.prototype || prototype === null;
28857
+ }
28858
+ function clonePatchValue(value, depth) {
28859
+ if (depth > 12)
28860
+ return undefined;
28861
+ if (Array.isArray(value)) {
28862
+ return value
28863
+ .map((item) => clonePatchValue(item, depth + 1))
28864
+ .filter((item) => item !== undefined);
28865
+ }
28866
+ if (!isPlainObject(value))
28867
+ return value;
28868
+ const clone = {};
28869
+ Object.keys(value).forEach((key) => {
28870
+ if (unsafeObjectKeys.has(key))
28871
+ return;
28872
+ const nested = clonePatchValue(value[key], depth + 1);
28873
+ if (nested !== undefined)
28874
+ clone[key] = nested;
28875
+ });
28876
+ return clone;
28877
+ }
28878
+ /**
28879
+ * Applies RFC 7396 JSON Merge Patch semantics.
28880
+ *
28881
+ * Objects merge recursively, arrays and scalar values replace the target, and
28882
+ * `null` removes the addressed property. Unsafe prototype keys are ignored.
28883
+ */
28884
+ function applyJsonMergePatch(base, patch, depth = 0) {
28885
+ if (depth > 8)
28886
+ return clonePatchValue(patch, depth);
28887
+ if (patch === null)
28888
+ return undefined;
28889
+ if (!isPlainObject(patch))
28890
+ return clonePatchValue(patch, depth);
28891
+ const target = isPlainObject(base)
28892
+ ? clonePatchValue(base, depth)
28893
+ : {};
28894
+ Object.keys(patch).forEach((key) => {
28895
+ if (unsafeObjectKeys.has(key))
28896
+ return;
28897
+ const patchValue = patch[key];
28898
+ if (patchValue === null) {
28899
+ delete target[key];
28900
+ return;
28901
+ }
28902
+ const next = applyJsonMergePatch(target[key], patchValue, depth + 1);
28903
+ if (next === undefined) {
28904
+ delete target[key];
28905
+ }
28906
+ else {
28907
+ target[key] = next;
28908
+ }
28909
+ });
28910
+ return target;
28911
+ }
28912
+
28512
28913
  const { SELECT: INLINE_SELECT_CONTROL_TYPE$1, SEARCHABLE_SELECT: INLINE_SEARCHABLE_SELECT_CONTROL_TYPE$1, MULTI_SELECT: INLINE_MULTI_SELECT_CONTROL_TYPE$1, INPUT: INLINE_INPUT_CONTROL_TYPE$1, PHONE: INLINE_PHONE_CONTROL_TYPE$1, TOGGLE: INLINE_TOGGLE_CONTROL_TYPE$1, RANGE: INLINE_RANGE_CONTROL_TYPE$1, ASYNC_SELECT: INLINE_ASYNC_SELECT_CONTROL_TYPE$1, ENTITY_LOOKUP: INLINE_ENTITY_LOOKUP_CONTROL_TYPE$1, AUTOCOMPLETE: INLINE_AUTOCOMPLETE_CONTROL_TYPE$1, NUMBER: INLINE_NUMBER_CONTROL_TYPE$1, CURRENCY: INLINE_CURRENCY_CONTROL_TYPE$1, CURRENCY_RANGE: INLINE_CURRENCY_RANGE_CONTROL_TYPE$1, DATE: INLINE_DATE_CONTROL_TYPE$1, DATE_RANGE: INLINE_DATE_RANGE_CONTROL_TYPE$1, TIME: INLINE_TIME_CONTROL_TYPE$1, TIME_RANGE: INLINE_TIME_RANGE_CONTROL_TYPE$1, TREE_SELECT: INLINE_TREE_SELECT_CONTROL_TYPE$1, RATING: INLINE_RATING_CONTROL_TYPE$1, DISTANCE_RADIUS: INLINE_DISTANCE_RADIUS_CONTROL_TYPE$1, PIPELINE_STATUS: INLINE_PIPELINE_STATUS_CONTROL_TYPE$1, SCORE_PRIORITY: INLINE_SCORE_PRIORITY_CONTROL_TYPE$1, RELATIVE_PERIOD: INLINE_RELATIVE_PERIOD_CONTROL_TYPE$1, SENTIMENT: INLINE_SENTIMENT_CONTROL_TYPE$1, COLOR_LABEL: INLINE_COLOR_LABEL_CONTROL_TYPE$1, } = INLINE_FILTER_CONTROL_TYPES;
28513
28914
  const KNOWN_FILTER_SETTINGS_CONTROL_TYPES = new Set([
28514
28915
  ...Object.values(FieldControlType).map((type) => String(type).toLowerCase()),
@@ -28782,21 +29183,25 @@ class FilterSettingsComponent {
28782
29183
  optional: true,
28783
29184
  });
28784
29185
  /** Clears persisted preferences for this filter, falling back to globals. */
28785
- resetPreferences() {
29186
+ async resetPreferences() {
28786
29187
  const key = this.configKey;
28787
29188
  if (!key)
28788
29189
  return;
28789
29190
  try {
28790
- this.filterConfigService.clear(key);
28791
- this.storage.clearConfig(`filter-dto:${key}`).pipe(take$1(1)).subscribe();
28792
- void this.clearPersistedSchemaStateByConfigKey(key);
29191
+ await Promise.all([
29192
+ this.filterConfigService.clear(key),
29193
+ firstValueFrom(this.storage.clearConfig(`filter-dto:${key}`).pipe(take$1(1))),
29194
+ this.clearPersistedSchemaStateByConfigKey(key),
29195
+ ]);
28793
29196
  this.reset(); // Reset form to initial/default values
28794
29197
  this.form.markAsPristine();
28795
29198
  this.snackBar.open('Preferências do filtro redefinidas', undefined, {
28796
29199
  duration: 2000,
28797
29200
  });
28798
29201
  }
28799
- catch { }
29202
+ catch {
29203
+ this.snackBar.open('Não foi possível redefinir as preferências do filtro', 'Fechar', { duration: 5000 });
29204
+ }
28800
29205
  }
28801
29206
  constructor(fb) {
28802
29207
  this.fb = fb;
@@ -28918,30 +29323,20 @@ class FilterSettingsComponent {
28918
29323
  const legacyHash = String(legacyMeta?.serverHash || '').trim();
28919
29324
  if (legacyHash)
28920
29325
  hashes.add(legacyHash);
29326
+ const keysToClear = [];
28921
29327
  for (const schemaId of schemaIds) {
28922
29328
  const key = this.schemaMetaKeyForSchemaId(configKey, schemaId);
28923
29329
  const meta = await firstValueFrom(this.storage.loadConfig(key).pipe(take$1(1))).catch(() => null);
28924
29330
  const hash = String(meta?.serverHash || '').trim();
28925
29331
  if (hash)
28926
29332
  hashes.add(hash);
28927
- this.storage.clearConfig(key).pipe(take$1(1)).subscribe();
29333
+ keysToClear.push(key);
28928
29334
  }
28929
- this.storage.clearConfig(indexKey).pipe(take$1(1)).subscribe();
28930
- this.storage.clearConfig(scopeKey).pipe(take$1(1)).subscribe();
29335
+ keysToClear.push(indexKey, scopeKey);
28931
29336
  hashes.forEach((hash) => {
28932
- this.storage
28933
- .clearConfig(this.filterSchemaIgnoreKey(configKey, hash))
28934
- .pipe(take$1(1))
28935
- .subscribe();
28936
- this.storage
28937
- .clearConfig(this.filterSchemaSnoozeKey(configKey, hash))
28938
- .pipe(take$1(1))
28939
- .subscribe();
28940
- this.storage
28941
- .clearConfig(this.filterSchemaNotifiedKey(configKey, hash))
28942
- .pipe(take$1(1))
28943
- .subscribe();
29337
+ keysToClear.push(this.filterSchemaIgnoreKey(configKey, hash), this.filterSchemaSnoozeKey(configKey, hash), this.filterSchemaNotifiedKey(configKey, hash));
28944
29338
  });
29339
+ await Promise.all(keysToClear.map((key) => firstValueFrom(this.storage.clearConfig(key).pipe(take$1(1)))));
28945
29340
  }
28946
29341
  async loadTags() {
28947
29342
  const key = this.tagsKey();
@@ -29907,33 +30302,6 @@ class FilterSettingsComponent {
29907
30302
  isPlainObject(value) {
29908
30303
  return !!value && typeof value === 'object' && !Array.isArray(value);
29909
30304
  }
29910
- applyJsonMergePatch(base, patch, depth = 0) {
29911
- if (depth > 8)
29912
- return this.cloneUnknown(patch);
29913
- if (patch === null)
29914
- return undefined;
29915
- if (!this.isPlainObject(patch))
29916
- return this.cloneUnknown(patch);
29917
- const target = this.isPlainObject(base) ? { ...base } : {};
29918
- Object.keys(patch).forEach((key) => {
29919
- const patchValue = patch[key];
29920
- if (patchValue === null) {
29921
- delete target[key];
29922
- return;
29923
- }
29924
- if (this.isPlainObject(patchValue)) {
29925
- const next = this.applyJsonMergePatch(target[key], patchValue, depth + 1);
29926
- if (this.isPlainObject(next) && !Object.keys(next).length) {
29927
- delete target[key];
29928
- return;
29929
- }
29930
- target[key] = next;
29931
- return;
29932
- }
29933
- target[key] = this.cloneUnknown(patchValue);
29934
- });
29935
- return target;
29936
- }
29937
30305
  applyAlwaysVisibleMetadataPatch(fieldName, patch) {
29938
30306
  if (!patch || typeof patch !== 'object' || Array.isArray(patch))
29939
30307
  return;
@@ -29943,7 +30311,7 @@ class FilterSettingsComponent {
29943
30311
  if (!normalized || !Object.keys(normalized).length)
29944
30312
  return;
29945
30313
  const current = this.getAlwaysVisibleOverridesMap();
29946
- const merged = this.applyJsonMergePatch(current[fieldName] || {}, normalized);
30314
+ const merged = applyJsonMergePatch(current[fieldName] || {}, normalized);
29947
30315
  if (this.isPlainObject(merged) && Object.keys(merged).length) {
29948
30316
  current[fieldName] = merged;
29949
30317
  }
@@ -36845,14 +37213,14 @@ const PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION = 'praxis.filter-view-context.v1
36845
37213
 
36846
37214
  const DEFAULT_I18N = {
36847
37215
  searchPlaceholder: 'Buscar',
36848
- advanced: 'Avançado',
37216
+ advanced: 'Filtro avançado',
36849
37217
  advancedTitle: 'Filtro avançado',
36850
37218
  advancedOpening: 'Abrindo filtro avançado...',
36851
37219
  advancedUnavailable: 'Todos os campos já estão visíveis na toolbar',
36852
37220
  clear: 'Limpar filtros',
36853
37221
  apply: 'Pesquisar',
36854
- add: 'Gerenciar filtros',
36855
- filtersAdd: 'Gerenciar filtros',
37222
+ add: 'Gerenciar campos',
37223
+ filtersAdd: 'Gerenciar campos',
36856
37224
  filtersSearch: 'Buscar filtros',
36857
37225
  addCount: 'Gerenciar campos de filtro ({count} exibidos)',
36858
37226
  addCountSingular: 'Gerenciar campos de filtro ({count} exibido)',
@@ -36864,6 +37232,8 @@ const DEFAULT_I18N = {
36864
37232
  selectedFieldsCount: '{count} campos exibidos',
36865
37233
  selectedFieldsCountSingular: '{count} campo exibido',
36866
37234
  selectedFieldsSectionTitle: 'Campos exibidos',
37235
+ fixedFieldsSectionTitle: 'Campos fixos',
37236
+ fixedFieldDescription: 'Campo fixo, sempre exibido na barra de filtros',
36867
37237
  availableFieldsSectionTitle: 'Campos disponíveis',
36868
37238
  manageFieldsApply: 'Aplicar',
36869
37239
  selectAllResults: 'Selecionar todos os resultados',
@@ -36897,7 +37267,7 @@ const DEFAULT_I18N = {
36897
37267
  cancel: 'Cancelar',
36898
37268
  shortcutsLabel: 'Atalhos',
36899
37269
  shortcutSaved: 'Atalho salvo',
36900
- readonlyShortcut: 'Atalho predefinido (somente leitura)',
37270
+ readonlyShortcut: 'Atalho predefinido (somente leitura). Ao aplicar, substitui os filtros atuais.',
36901
37271
  shortcutRemoved: 'Atalho removido',
36902
37272
  undo: 'Desfazer',
36903
37273
  };
@@ -36957,11 +37327,11 @@ function normalizeCorporateLoggerEnvironment$1(candidate) {
36957
37327
  return 'dev';
36958
37328
  if (value === 'qa' || value === 'test' || value === 'testing')
36959
37329
  return 'qa';
36960
- if (value === 'hml'
36961
- || value === 'homolog'
36962
- || value === 'homologacao'
36963
- || value === 'stage'
36964
- || value === 'staging') {
37330
+ if (value === 'hml' ||
37331
+ value === 'homolog' ||
37332
+ value === 'homologacao' ||
37333
+ value === 'stage' ||
37334
+ value === 'staging') {
36965
37335
  return 'hml';
36966
37336
  }
36967
37337
  return 'prod';
@@ -37175,9 +37545,22 @@ class PraxisFilter {
37175
37545
  addManagerItemMotion = null;
37176
37546
  addManagerTitleId = `praxis-filter-fields-title-${Math.random().toString(36).slice(2)}`;
37177
37547
  addManagerDescriptionId = `praxis-filter-fields-description-${Math.random().toString(36).slice(2)}`;
37548
+ addManagerViewportMargin = 8;
37178
37549
  addOverlayPositions = [
37179
- { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 8 },
37180
- { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -8 },
37550
+ {
37551
+ originX: 'end',
37552
+ originY: 'bottom',
37553
+ overlayX: 'end',
37554
+ overlayY: 'top',
37555
+ offsetY: 8,
37556
+ },
37557
+ {
37558
+ originX: 'end',
37559
+ originY: 'top',
37560
+ overlayX: 'end',
37561
+ overlayY: 'bottom',
37562
+ offsetY: -8,
37563
+ },
37181
37564
  ];
37182
37565
  applySchemaQueued = false;
37183
37566
  shortcutPromptOpen = false;
@@ -37219,21 +37602,29 @@ class PraxisFilter {
37219
37602
  autoOpenSettingsOnOutdated: false,
37220
37603
  };
37221
37604
  resolveSchemaPrefs() {
37222
- const DEFAULTS = { notifyIfOutdated: 'both', snoozeMs: 24 * 60 * 60 * 1000, autoOpenSettingsOnOutdated: false };
37605
+ const DEFAULTS = {
37606
+ notifyIfOutdated: 'both',
37607
+ snoozeMs: 24 * 60 * 60 * 1000,
37608
+ autoOpenSettingsOnOutdated: false,
37609
+ };
37223
37610
  let out = {
37224
37611
  notifyIfOutdated: this.notifyIfOutdated ?? DEFAULTS.notifyIfOutdated,
37225
37612
  snoozeMs: typeof this.snoozeMs === 'number' ? this.snoozeMs : DEFAULTS.snoozeMs,
37226
37613
  autoOpenSettingsOnOutdated: !!this.autoOpenSettingsOnOutdated,
37227
37614
  };
37228
- const inputsAreDefaults = (this.notifyIfOutdated === DEFAULTS.notifyIfOutdated) && (this.snoozeMs === DEFAULTS.snoozeMs) && (this.autoOpenSettingsOnOutdated === DEFAULTS.autoOpenSettingsOnOutdated);
37615
+ const inputsAreDefaults = this.notifyIfOutdated === DEFAULTS.notifyIfOutdated &&
37616
+ this.snoozeMs === DEFAULTS.snoozeMs &&
37617
+ this.autoOpenSettingsOnOutdated === DEFAULTS.autoOpenSettingsOnOutdated;
37229
37618
  if (inputsAreDefaults) {
37230
37619
  try {
37231
37620
  const g = this.global.getSchemaPrefsGlobal?.();
37232
37621
  if (g && typeof g === 'object') {
37233
37622
  out = {
37234
37623
  notifyIfOutdated: g.notifyIfOutdated ?? out.notifyIfOutdated,
37235
- snoozeMs: (typeof g.snoozeMs === 'number' ? g.snoozeMs : out.snoozeMs),
37236
- autoOpenSettingsOnOutdated: (typeof g.autoOpenSettingsOnOutdated === 'boolean' ? g.autoOpenSettingsOnOutdated : out.autoOpenSettingsOnOutdated),
37624
+ snoozeMs: typeof g.snoozeMs === 'number' ? g.snoozeMs : out.snoozeMs,
37625
+ autoOpenSettingsOnOutdated: typeof g.autoOpenSettingsOnOutdated === 'boolean'
37626
+ ? g.autoOpenSettingsOnOutdated
37627
+ : out.autoOpenSettingsOnOutdated,
37237
37628
  };
37238
37629
  }
37239
37630
  }
@@ -37358,9 +37749,10 @@ class PraxisFilter {
37358
37749
  if (this.logger)
37359
37750
  return this.logger;
37360
37751
  const runtimeEnvironment = normalizeCorporateLoggerEnvironment$1(this.resolveRuntimeEnvironment());
37361
- if (!this.fallbackLogger
37362
- || this.fallbackLoggerEnvironment !== runtimeEnvironment) {
37363
- this.fallbackLogger = createPraxisFilterFallbackLogger(runtimeEnvironment);
37752
+ if (!this.fallbackLogger ||
37753
+ this.fallbackLoggerEnvironment !== runtimeEnvironment) {
37754
+ this.fallbackLogger =
37755
+ createPraxisFilterFallbackLogger(runtimeEnvironment);
37364
37756
  this.fallbackLoggerEnvironment = runtimeEnvironment;
37365
37757
  }
37366
37758
  return this.fallbackLogger;
@@ -37392,7 +37784,9 @@ class PraxisFilter {
37392
37784
  }
37393
37785
  isFilterDebugEnabled() {
37394
37786
  try {
37395
- const explicitFlag = typeof window !== 'undefined' ? window.DEBUG_PTABLE : undefined;
37787
+ const explicitFlag = typeof window !== 'undefined'
37788
+ ? window.DEBUG_PTABLE
37789
+ : undefined;
37396
37790
  if (explicitFlag === true)
37397
37791
  return true;
37398
37792
  if (explicitFlag === false)
@@ -37628,7 +38022,9 @@ class PraxisFilter {
37628
38022
  // add-select doesn't require fixed ids; relies on panelClass
37629
38023
  // Inicializa flag de mobile
37630
38024
  this.isMobile = this.computeIsMobile();
37631
- const cfg = this.configKey ? await this.filterConfig.load(this.configKey) : undefined;
38025
+ const cfg = this.configKey
38026
+ ? await this.filterConfig.load(this.configKey)
38027
+ : undefined;
37632
38028
  if (cfg) {
37633
38029
  try {
37634
38030
  this.lastSavedConfigJson = JSON.stringify(cfg);
@@ -37672,7 +38068,8 @@ class PraxisFilter {
37672
38068
  if (cfg.alwaysColsLg !== undefined) {
37673
38069
  this.alwaysColsLg = cfg.alwaysColsLg;
37674
38070
  }
37675
- if (cfg.selectedFieldIds && (!this.selectedFieldIds || this.selectedFieldIds.length === 0)) {
38071
+ if (cfg.selectedFieldIds &&
38072
+ (!this.selectedFieldIds || this.selectedFieldIds.length === 0)) {
37676
38073
  this.selectedFieldIds = this.normalizeFieldIdList(cfg.selectedFieldIds);
37677
38074
  }
37678
38075
  if (cfg.confirmTagDelete !== undefined) {
@@ -37686,7 +38083,8 @@ class PraxisFilter {
37686
38083
  if (cfg.overlayBackdrop !== undefined)
37687
38084
  this.overlayBackdrop = !!cfg.overlayBackdrop;
37688
38085
  if (cfg.advancedClearButtonsEnabled !== undefined) {
37689
- this.advancedClearButtonsEnabled = !!cfg.advancedClearButtonsEnabled;
38086
+ this.advancedClearButtonsEnabled = !!cfg
38087
+ .advancedClearButtonsEnabled;
37690
38088
  }
37691
38089
  if (cfg.tagColor)
37692
38090
  this.tagColor = cfg.tagColor;
@@ -37699,7 +38097,8 @@ class PraxisFilter {
37699
38097
  if (cfg.actionsVariant)
37700
38098
  this.actionsVariant = cfg.actionsVariant;
37701
38099
  if (cfg.useInlineSearchableSelectVariant !== undefined) {
37702
- this.useInlineSearchableSelectVariant = !!cfg.useInlineSearchableSelectVariant;
38100
+ this.useInlineSearchableSelectVariant = !!cfg
38101
+ .useInlineSearchableSelectVariant;
37703
38102
  }
37704
38103
  if (cfg.useInlineRangeVariant !== undefined) {
37705
38104
  this.useInlineRangeVariant = !!cfg.useInlineRangeVariant;
@@ -37708,16 +38107,19 @@ class PraxisFilter {
37708
38107
  this.useInlineDateVariant = !!cfg.useInlineDateVariant;
37709
38108
  }
37710
38109
  if (cfg.useInlineDateRangeVariant !== undefined) {
37711
- this.useInlineDateRangeVariant = !!cfg.useInlineDateRangeVariant;
38110
+ this.useInlineDateRangeVariant = !!cfg
38111
+ .useInlineDateRangeVariant;
37712
38112
  }
37713
38113
  if (cfg.useInlineTimeVariant !== undefined) {
37714
38114
  this.useInlineTimeVariant = !!cfg.useInlineTimeVariant;
37715
38115
  }
37716
38116
  if (cfg.useInlineTimeRangeVariant !== undefined) {
37717
- this.useInlineTimeRangeVariant = !!cfg.useInlineTimeRangeVariant;
38117
+ this.useInlineTimeRangeVariant = !!cfg
38118
+ .useInlineTimeRangeVariant;
37718
38119
  }
37719
38120
  if (cfg.useInlineTreeSelectVariant !== undefined) {
37720
- this.useInlineTreeSelectVariant = !!cfg.useInlineTreeSelectVariant;
38121
+ this.useInlineTreeSelectVariant = !!cfg
38122
+ .useInlineTreeSelectVariant;
37721
38123
  }
37722
38124
  }
37723
38125
  // Apply global defaults for filter UI when not specified in saved config or inputs
@@ -37853,22 +38255,28 @@ class PraxisFilter {
37853
38255
  // Preferir a largura da barra completa para melhor alinhamento com ações
37854
38256
  const bar = anchor?.closest?.('.praxis-filter-bar');
37855
38257
  // Compute width preferring bar, fallback to anchor
37856
- const barW = (() => { try {
37857
- return Math.floor(bar?.getBoundingClientRect?.().width || 0);
37858
- }
37859
- catch {
37860
- return 0;
37861
- } })();
37862
- const anchorW = (() => { try {
37863
- return Math.floor(anchor?.getBoundingClientRect?.().width || 0);
37864
- }
37865
- catch {
37866
- return 0;
37867
- } })();
38258
+ const barW = (() => {
38259
+ try {
38260
+ return Math.floor(bar?.getBoundingClientRect?.().width || 0);
38261
+ }
38262
+ catch {
38263
+ return 0;
38264
+ }
38265
+ })();
38266
+ const anchorW = (() => {
38267
+ try {
38268
+ return Math.floor(anchor?.getBoundingClientRect?.().width || 0);
38269
+ }
38270
+ catch {
38271
+ return 0;
38272
+ }
38273
+ })();
37868
38274
  const w = Math.max(0, barW > 0 ? barW : anchorW);
37869
38275
  this.overlayWidth = w || 520;
37870
38276
  }
37871
- catch { /* noop */ }
38277
+ catch {
38278
+ /* noop */
38279
+ }
37872
38280
  }
37873
38281
  // Helper para detectar viewport mobile (mantido simples e sem SSR)
37874
38282
  computeIsMobile() {
@@ -37884,7 +38292,8 @@ class PraxisFilter {
37884
38292
  (changes['filterId'] && !changes['filterId'].firstChange) ||
37885
38293
  (changes['formId'] && !changes['formId'].firstChange) ||
37886
38294
  (changes['persistenceKey'] && !changes['persistenceKey'].firstChange) ||
37887
- (changes['componentInstanceId'] && !changes['componentInstanceId'].firstChange);
38295
+ (changes['componentInstanceId'] &&
38296
+ !changes['componentInstanceId'].firstChange);
37888
38297
  if (changes['resourcePath'] ||
37889
38298
  changes['filterId'] ||
37890
38299
  changes['formId'] ||
@@ -37954,12 +38363,14 @@ class PraxisFilter {
37954
38363
  else if (!changes['fieldMetadata'].firstChange) {
37955
38364
  this.schemaMetas = undefined;
37956
38365
  if (!this.schemaLoading &&
37957
- ((this.alwaysVisibleFields?.length || 0) > 0 || (this.selectedFieldIds?.length || 0) > 0)) {
38366
+ ((this.alwaysVisibleFields?.length || 0) > 0 ||
38367
+ (this.selectedFieldIds?.length || 0) > 0)) {
37958
38368
  this.loadSchema();
37959
38369
  }
37960
38370
  }
37961
38371
  }
37962
- if (changes['alwaysVisibleFields'] && !changes['alwaysVisibleFields'].firstChange) {
38372
+ if (changes['alwaysVisibleFields'] &&
38373
+ !changes['alwaysVisibleFields'].firstChange) {
37963
38374
  this.alwaysVisibleFields = this.normalizeFieldIdList(this.alwaysVisibleFields);
37964
38375
  this.logFilterDebug('[PFILTER] ngOnChanges: alwaysVisibleFields changed', {
37965
38376
  alwaysVisibleFields: this.alwaysVisibleFields,
@@ -37985,7 +38396,8 @@ class PraxisFilter {
37985
38396
  this.applySchemaMetas();
37986
38397
  }
37987
38398
  }
37988
- if (changes['selectedFieldIds'] && !changes['selectedFieldIds'].firstChange) {
38399
+ if (changes['selectedFieldIds'] &&
38400
+ !changes['selectedFieldIds'].firstChange) {
37989
38401
  this.selectedFieldIds = this.normalizeFieldIdList(this.selectedFieldIds);
37990
38402
  if (this.addManagerOpen && this.isAddManagerDirty()) {
37991
38403
  this.addManagerConflict = true;
@@ -38008,7 +38420,9 @@ class PraxisFilter {
38008
38420
  if (changes['i18n']) {
38009
38421
  this.mergeI18n();
38010
38422
  }
38011
- if (changes['notifyIfOutdated'] || changes['snoozeMs'] || changes['autoOpenSettingsOnOutdated']) {
38423
+ if (changes['notifyIfOutdated'] ||
38424
+ changes['snoozeMs'] ||
38425
+ changes['autoOpenSettingsOnOutdated']) {
38012
38426
  this.resolveSchemaPrefs();
38013
38427
  }
38014
38428
  }
@@ -38085,12 +38499,14 @@ class PraxisFilter {
38085
38499
  if (cfg.allowSaveTags !== undefined) {
38086
38500
  this.allowSaveTags = cfg.allowSaveTags;
38087
38501
  }
38088
- if (cfg.changeDebounceMs !== undefined && cfg.changeDebounceMs !== this.changeDebounceMs) {
38502
+ if (cfg.changeDebounceMs !== undefined &&
38503
+ cfg.changeDebounceMs !== this.changeDebounceMs) {
38089
38504
  this.changeDebounceMs = cfg.changeDebounceMs;
38090
38505
  this.bindAdvancedDebounce();
38091
38506
  }
38092
38507
  if (cfg.useInlineSearchableSelectVariant !== undefined) {
38093
- this.useInlineSearchableSelectVariant = !!cfg.useInlineSearchableSelectVariant;
38508
+ this.useInlineSearchableSelectVariant = !!cfg
38509
+ .useInlineSearchableSelectVariant;
38094
38510
  }
38095
38511
  if (cfg.useInlineRangeVariant !== undefined) {
38096
38512
  this.useInlineRangeVariant = !!cfg.useInlineRangeVariant;
@@ -38108,7 +38524,8 @@ class PraxisFilter {
38108
38524
  this.useInlineTimeRangeVariant = !!cfg.useInlineTimeRangeVariant;
38109
38525
  }
38110
38526
  if (cfg.useInlineTreeSelectVariant !== undefined) {
38111
- this.useInlineTreeSelectVariant = !!cfg.useInlineTreeSelectVariant;
38527
+ this.useInlineTreeSelectVariant = !!cfg
38528
+ .useInlineTreeSelectVariant;
38112
38529
  }
38113
38530
  const inlineVariantsChanged = prevInlineSearchable !== this.useInlineSearchableSelectVariant ||
38114
38531
  prevInlineRange !== this.useInlineRangeVariant ||
@@ -38117,14 +38534,19 @@ class PraxisFilter {
38117
38534
  prevInlineTime !== this.useInlineTimeVariant ||
38118
38535
  prevInlineTimeRange !== this.useInlineTimeRangeVariant ||
38119
38536
  prevInlineTreeSelect !== this.useInlineTreeSelectVariant;
38120
- if (alwaysChanged || selectedChanged || overridesChanged || fieldOverridesChanged || inlineVariantsChanged) {
38537
+ if (alwaysChanged ||
38538
+ selectedChanged ||
38539
+ overridesChanged ||
38540
+ fieldOverridesChanged ||
38541
+ inlineVariantsChanged) {
38121
38542
  if (this.schemaMetas) {
38122
38543
  this.applySchemaMetas();
38123
38544
  }
38124
38545
  else if (this.usesProvidedFieldMetadata()) {
38125
38546
  this.applyProvidedFieldMetadata();
38126
38547
  }
38127
- else if (!this.schemaLoading && (nextAlways.length > 0 || nextSelected.length > 0)) {
38548
+ else if (!this.schemaLoading &&
38549
+ (nextAlways.length > 0 || nextSelected.length > 0)) {
38128
38550
  this.loadSchema();
38129
38551
  }
38130
38552
  this.updateAddItems();
@@ -38217,7 +38639,8 @@ class PraxisFilter {
38217
38639
  this.advancedOpenMode = this.normalizeAdvancedOpenMode(cfg.advancedOpenMode);
38218
38640
  }
38219
38641
  if (cfg.advancedClearButtonsEnabled !== undefined) {
38220
- this.advancedClearButtonsEnabled = !!cfg.advancedClearButtonsEnabled;
38642
+ this.advancedClearButtonsEnabled = !!cfg
38643
+ .advancedClearButtonsEnabled;
38221
38644
  }
38222
38645
  if (cfg.tagColor)
38223
38646
  this.tagColor = cfg.tagColor;
@@ -38230,7 +38653,8 @@ class PraxisFilter {
38230
38653
  if (cfg.actionsVariant)
38231
38654
  this.actionsVariant = cfg.actionsVariant;
38232
38655
  if (cfg.useInlineSearchableSelectVariant !== undefined) {
38233
- this.useInlineSearchableSelectVariant = !!cfg.useInlineSearchableSelectVariant;
38656
+ this.useInlineSearchableSelectVariant = !!cfg
38657
+ .useInlineSearchableSelectVariant;
38234
38658
  }
38235
38659
  if (cfg.useInlineRangeVariant !== undefined) {
38236
38660
  this.useInlineRangeVariant = !!cfg.useInlineRangeVariant;
@@ -38239,16 +38663,19 @@ class PraxisFilter {
38239
38663
  this.useInlineDateVariant = !!cfg.useInlineDateVariant;
38240
38664
  }
38241
38665
  if (cfg.useInlineDateRangeVariant !== undefined) {
38242
- this.useInlineDateRangeVariant = !!cfg.useInlineDateRangeVariant;
38666
+ this.useInlineDateRangeVariant = !!cfg
38667
+ .useInlineDateRangeVariant;
38243
38668
  }
38244
38669
  if (cfg.useInlineTimeVariant !== undefined) {
38245
38670
  this.useInlineTimeVariant = !!cfg.useInlineTimeVariant;
38246
38671
  }
38247
38672
  if (cfg.useInlineTimeRangeVariant !== undefined) {
38248
- this.useInlineTimeRangeVariant = !!cfg.useInlineTimeRangeVariant;
38673
+ this.useInlineTimeRangeVariant = !!cfg
38674
+ .useInlineTimeRangeVariant;
38249
38675
  }
38250
38676
  if (cfg.useInlineTreeSelectVariant !== undefined) {
38251
- this.useInlineTreeSelectVariant = !!cfg.useInlineTreeSelectVariant;
38677
+ this.useInlineTreeSelectVariant = !!cfg
38678
+ .useInlineTreeSelectVariant;
38252
38679
  }
38253
38680
  this.mergeI18n();
38254
38681
  this.applySchemaMetas();
@@ -38261,7 +38688,7 @@ class PraxisFilter {
38261
38688
  this.bindAdvancedDebounce();
38262
38689
  }
38263
38690
  };
38264
- const persistConfig = (cfg, message) => {
38691
+ const persistConfig = async (cfg, message) => {
38265
38692
  this.saving = true;
38266
38693
  try {
38267
38694
  const persistedCfg = {
@@ -38274,7 +38701,7 @@ class PraxisFilter {
38274
38701
  })(),
38275
38702
  };
38276
38703
  if (this.configKey) {
38277
- this.filterConfig.save(this.configKey, persistedCfg);
38704
+ await this.filterConfig.save(this.configKey, persistedCfg);
38278
38705
  try {
38279
38706
  this.lastSavedConfigJson = JSON.stringify(persistedCfg);
38280
38707
  }
@@ -38282,13 +38709,17 @@ class PraxisFilter {
38282
38709
  this.lastSavedConfigJson = null;
38283
38710
  }
38284
38711
  }
38285
- this.snackBar.open(message, 'Fechar', { duration: 3000 });
38712
+ if (!this.destroyRef.destroyed) {
38713
+ this.snackBar.open(message, 'Fechar', { duration: 3000 });
38714
+ }
38286
38715
  }
38287
38716
  catch (err) {
38288
38717
  this.getLogger().error('PFILTER:config:save:error', this.buildFilterLogOptions({ error: err }, 'config.save'));
38289
- this.snackBar.open('Erro ao salvar configurações', 'Fechar', {
38290
- duration: 3000,
38291
- });
38718
+ if (!this.destroyRef.destroyed) {
38719
+ this.snackBar.open('Erro ao salvar configurações', 'Fechar', {
38720
+ duration: 3000,
38721
+ });
38722
+ }
38292
38723
  }
38293
38724
  finally {
38294
38725
  this.saving = false;
@@ -38348,16 +38779,17 @@ class PraxisFilter {
38348
38779
  overlayBackdrop: cfg.overlayBackdrop,
38349
38780
  };
38350
38781
  };
38351
- ref.applied$.pipe(take$1(1)).subscribe((cfg) => {
38782
+ ref.applied$.subscribe((cfg) => {
38352
38783
  const safe = validateConfig(cfg);
38353
38784
  applyChanges(safe);
38354
- persistConfig(safe, 'Configurações aplicadas');
38355
- ref.close('save');
38785
+ this.snackBar.open('Pré-visualização aplicada', 'Fechar', {
38786
+ duration: 2000,
38787
+ });
38356
38788
  });
38357
- ref.saved$.pipe(take$1(1)).subscribe((cfg) => {
38789
+ ref.saved$.subscribe((cfg) => {
38358
38790
  const safe = validateConfig(cfg);
38359
38791
  applyChanges(safe);
38360
- persistConfig(safe, 'Configurações salvas');
38792
+ void persistConfig(safe, 'Configurações salvas');
38361
38793
  });
38362
38794
  }
38363
38795
  catch (err) {
@@ -38416,7 +38848,10 @@ class PraxisFilter {
38416
38848
  if (this.confirmTagDelete) {
38417
38849
  try {
38418
38850
  const ref = this.snackBar.open(this.i18nLabels.shortcutRemoved, this.i18nLabels.undo, { duration: 4000 });
38419
- ref.onAction().pipe(take$1(1)).subscribe(() => {
38851
+ ref
38852
+ .onAction()
38853
+ .pipe(take$1(1))
38854
+ .subscribe(() => {
38420
38855
  const reinsertIndex = Math.min(index, this.savedTags.length);
38421
38856
  this.savedTags.splice(reinsertIndex, 0, removed);
38422
38857
  this.persistTags();
@@ -38491,7 +38926,9 @@ class PraxisFilter {
38491
38926
  if (v instanceof Date)
38492
38927
  return v.toISOString();
38493
38928
  if (Array.isArray(v))
38494
- return v.map((it) => this.normalizeForCompare(it)).filter((it) => it !== undefined);
38929
+ return v
38930
+ .map((it) => this.normalizeForCompare(it))
38931
+ .filter((it) => it !== undefined);
38495
38932
  if (typeof v === 'object') {
38496
38933
  const out = {};
38497
38934
  Object.keys(v)
@@ -38508,7 +38945,9 @@ class PraxisFilter {
38508
38945
  // getFilterSchemaPath não é mais necessário, pois o serviço deriva o path via schemaUrl()
38509
38946
  buildFilteredSchemaContext() {
38510
38947
  // Derive path from schemaUrl (preserves prefixes) and ensure /filter suffix
38511
- const basePath = (this.crud.schemaUrl() || '').replace(/\/+$/, '').replace(/\/schemas$/, '');
38948
+ const basePath = (this.crud.schemaUrl() || '')
38949
+ .replace(/\/+$/, '')
38950
+ .replace(/\/schemas$/, '');
38512
38951
  let path = basePath ? `${basePath}/filter` : '';
38513
38952
  if (!path) {
38514
38953
  // Fallback path if schemaUrl is not available
@@ -38524,8 +38963,19 @@ class PraxisFilter {
38524
38963
  }
38525
38964
  catch { }
38526
38965
  const tenant = this.global.getTenant();
38527
- const locale = (typeof navigator !== 'undefined' && navigator.language) ? navigator.language : undefined;
38528
- return { path, operation, schemaType, includeInternalSchemas: true, tenant, locale, baseUrl, apiOrigin };
38966
+ const locale = typeof navigator !== 'undefined' && navigator.language
38967
+ ? navigator.language
38968
+ : undefined;
38969
+ return {
38970
+ path,
38971
+ operation,
38972
+ schemaType,
38973
+ includeInternalSchemas: true,
38974
+ tenant,
38975
+ locale,
38976
+ baseUrl,
38977
+ apiOrigin,
38978
+ };
38529
38979
  }
38530
38980
  toSchemaIdContext(ctx) {
38531
38981
  return {
@@ -38640,7 +39090,8 @@ class PraxisFilter {
38640
39090
  }
38641
39091
  saveStoredSchemaMeta(key, next, schemaId) {
38642
39092
  const current = this.storedSchemaMetaCache.get(key) ?? null;
38643
- if (this.stableSerialize(this.normalizeStoredSchemaMetaForComparison(current)) === this.stableSerialize(this.normalizeStoredSchemaMetaForComparison(next))) {
39093
+ if (this.stableSerialize(this.normalizeStoredSchemaMetaForComparison(current)) ===
39094
+ this.stableSerialize(this.normalizeStoredSchemaMetaForComparison(next))) {
38644
39095
  if (schemaId)
38645
39096
  this.rememberSchemaMetaContext(schemaId);
38646
39097
  return;
@@ -38721,7 +39172,8 @@ class PraxisFilter {
38721
39172
  }
38722
39173
  persistSchemaMeta(schemaId, context, serverHash) {
38723
39174
  try {
38724
- const key = this.filterSchemaMetaKeyForSchemaId(schemaId) || this.getSchemaMetaKey();
39175
+ const key = this.filterSchemaMetaKeyForSchemaId(schemaId) ||
39176
+ this.getSchemaMetaKey();
38725
39177
  if (!key)
38726
39178
  return;
38727
39179
  const nowIso = new Date().toISOString();
@@ -38780,7 +39232,10 @@ class PraxisFilter {
38780
39232
  const disableCache = this.global.get('cache.disableSchemaCache');
38781
39233
  const adapter = disableCache
38782
39234
  ? new MemoryCacheAdapter()
38783
- : new LocalStorageCacheAdapter({ ttlMs: 30 * 60 * 1000, maxEntries: 200 });
39235
+ : new LocalStorageCacheAdapter({
39236
+ ttlMs: 30 * 60 * 1000,
39237
+ maxEntries: 200,
39238
+ });
38784
39239
  try {
38785
39240
  const client = new SchemaMetadataClient(adapter);
38786
39241
  const entry = await client.getSchema({
@@ -38805,7 +39260,9 @@ class PraxisFilter {
38805
39260
  // Runtime hardening: if /schemas/filtered returns HTML/redirect or invalid JSON,
38806
39261
  // fallback to CRUD HttpClient path before failing the filter experience.
38807
39262
  this.logFilterWarn('[PFILTER] loadSchemaViaClient: metadata client failed, trying CRUD fallback', {
38808
- message: schemaClientError instanceof Error ? schemaClientError.message : String(schemaClientError),
39263
+ message: schemaClientError instanceof Error
39264
+ ? schemaClientError.message
39265
+ : String(schemaClientError),
38809
39266
  path: ctx.path,
38810
39267
  baseUrl: ctx.baseUrl,
38811
39268
  });
@@ -38921,7 +39378,7 @@ class PraxisFilter {
38921
39378
  this.schemaMetas = metas;
38922
39379
  this.logFilterDebug('[PFILTER] loadSchema: metas received', {
38923
39380
  total: metas.length,
38924
- names: metas.map(m => m.name),
39381
+ names: metas.map((m) => m.name),
38925
39382
  });
38926
39383
  this.applySchemaMetas();
38927
39384
  });
@@ -39022,9 +39479,7 @@ class PraxisFilter {
39022
39479
  meta?.dataType ||
39023
39480
  meta?.fieldType ||
39024
39481
  '');
39025
- const formatTypeToken = normalizeControlTypeToken(meta?.format ||
39026
- meta?.formatType ||
39027
- '');
39482
+ const formatTypeToken = normalizeControlTypeToken(meta?.format || meta?.formatType || '');
39028
39483
  const isSearchableSelect = controlType === FieldControlType.SEARCHABLE_SELECT ||
39029
39484
  normalizedControlType === 'searchable-select' ||
39030
39485
  controlTypeToken === 'searchableselect' ||
@@ -39044,7 +39499,8 @@ class PraxisFilter {
39044
39499
  const isEntityLookup = controlType === FieldControlType.ENTITY_LOOKUP ||
39045
39500
  normalizedControlType === 'entitylookup' ||
39046
39501
  controlTypeToken === 'entitylookup' ||
39047
- controlTypeToken === normalizeControlTypeToken(INLINE_ENTITY_LOOKUP_CONTROL_TYPE) ||
39502
+ controlTypeToken ===
39503
+ normalizeControlTypeToken(INLINE_ENTITY_LOOKUP_CONTROL_TYPE) ||
39048
39504
  meta?.entityLookup === true;
39049
39505
  const isPhone = controlType === FieldControlType.PHONE ||
39050
39506
  normalizedControlType === 'phone' ||
@@ -39052,7 +39508,8 @@ class PraxisFilter {
39052
39508
  controlTypeToken === 'phone' ||
39053
39509
  controlTypeToken === 'telephone' ||
39054
39510
  controlTypeToken === 'telefone' ||
39055
- controlTypeToken === normalizeControlTypeToken(INLINE_PHONE_CONTROL_TYPE) ||
39511
+ controlTypeToken ===
39512
+ normalizeControlTypeToken(INLINE_PHONE_CONTROL_TYPE) ||
39056
39513
  dataTypeToken === 'phone' ||
39057
39514
  dataTypeToken === 'tel' ||
39058
39515
  formatTypeToken === 'phone' ||
@@ -39112,38 +39569,54 @@ class PraxisFilter {
39112
39569
  controlTypeToken === 'treeselect' ||
39113
39570
  controlTypeToken === 'treeview';
39114
39571
  const isInlineTimeExplicit = controlType === INLINE_TIME_CONTROL_TYPE ||
39115
- controlTypeToken === normalizeControlTypeToken(INLINE_TIME_CONTROL_TYPE);
39572
+ controlTypeToken ===
39573
+ normalizeControlTypeToken(INLINE_TIME_CONTROL_TYPE);
39116
39574
  const isInlineTimeRangeExplicit = controlType === INLINE_TIME_RANGE_CONTROL_TYPE ||
39117
- controlTypeToken === normalizeControlTypeToken(INLINE_TIME_RANGE_CONTROL_TYPE);
39575
+ controlTypeToken ===
39576
+ normalizeControlTypeToken(INLINE_TIME_RANGE_CONTROL_TYPE);
39118
39577
  const isInlinePeriodRangeExplicit = controlType === INLINE_PERIOD_RANGE_CONTROL_TYPE ||
39119
- controlTypeToken === normalizeControlTypeToken(INLINE_PERIOD_RANGE_CONTROL_TYPE);
39578
+ controlTypeToken ===
39579
+ normalizeControlTypeToken(INLINE_PERIOD_RANGE_CONTROL_TYPE);
39120
39580
  const isInlineYearRangeExplicit = controlType === INLINE_YEAR_RANGE_CONTROL_TYPE ||
39121
- controlTypeToken === normalizeControlTypeToken(INLINE_YEAR_RANGE_CONTROL_TYPE);
39581
+ controlTypeToken ===
39582
+ normalizeControlTypeToken(INLINE_YEAR_RANGE_CONTROL_TYPE);
39122
39583
  const isInlineMonthRangeExplicit = controlType === INLINE_MONTH_RANGE_CONTROL_TYPE ||
39123
- controlTypeToken === normalizeControlTypeToken(INLINE_MONTH_RANGE_CONTROL_TYPE);
39584
+ controlTypeToken ===
39585
+ normalizeControlTypeToken(INLINE_MONTH_RANGE_CONTROL_TYPE);
39124
39586
  const isInlineTreeSelectExplicit = controlType === INLINE_TREE_SELECT_CONTROL_TYPE ||
39125
- controlTypeToken === normalizeControlTypeToken(INLINE_TREE_SELECT_CONTROL_TYPE);
39587
+ controlTypeToken ===
39588
+ normalizeControlTypeToken(INLINE_TREE_SELECT_CONTROL_TYPE);
39126
39589
  const isInlineRatingExplicit = controlType === INLINE_RATING_CONTROL_TYPE ||
39127
- controlTypeToken === normalizeControlTypeToken(INLINE_RATING_CONTROL_TYPE);
39590
+ controlTypeToken ===
39591
+ normalizeControlTypeToken(INLINE_RATING_CONTROL_TYPE);
39128
39592
  const isInlineDistanceRadiusExplicit = controlType === INLINE_DISTANCE_RADIUS_CONTROL_TYPE ||
39129
- controlTypeToken === normalizeControlTypeToken(INLINE_DISTANCE_RADIUS_CONTROL_TYPE);
39593
+ controlTypeToken ===
39594
+ normalizeControlTypeToken(INLINE_DISTANCE_RADIUS_CONTROL_TYPE);
39130
39595
  const isInlinePipelineStatusExplicit = controlType === INLINE_PIPELINE_STATUS_CONTROL_TYPE ||
39131
- controlTypeToken === normalizeControlTypeToken(INLINE_PIPELINE_STATUS_CONTROL_TYPE);
39596
+ controlTypeToken ===
39597
+ normalizeControlTypeToken(INLINE_PIPELINE_STATUS_CONTROL_TYPE);
39132
39598
  const isInlineScorePriorityExplicit = controlType === INLINE_SCORE_PRIORITY_CONTROL_TYPE ||
39133
- controlTypeToken === normalizeControlTypeToken(INLINE_SCORE_PRIORITY_CONTROL_TYPE);
39599
+ controlTypeToken ===
39600
+ normalizeControlTypeToken(INLINE_SCORE_PRIORITY_CONTROL_TYPE);
39134
39601
  const isInlineRelativePeriodExplicit = controlType === INLINE_RELATIVE_PERIOD_CONTROL_TYPE ||
39135
- controlTypeToken === normalizeControlTypeToken(INLINE_RELATIVE_PERIOD_CONTROL_TYPE);
39602
+ controlTypeToken ===
39603
+ normalizeControlTypeToken(INLINE_RELATIVE_PERIOD_CONTROL_TYPE);
39136
39604
  const isInlineSentimentExplicit = controlType === INLINE_SENTIMENT_CONTROL_TYPE ||
39137
- controlTypeToken === normalizeControlTypeToken(INLINE_SENTIMENT_CONTROL_TYPE);
39605
+ controlTypeToken ===
39606
+ normalizeControlTypeToken(INLINE_SENTIMENT_CONTROL_TYPE);
39138
39607
  const isInlineColorLabelExplicit = controlType === INLINE_COLOR_LABEL_CONTROL_TYPE ||
39139
- controlTypeToken === normalizeControlTypeToken(INLINE_COLOR_LABEL_CONTROL_TYPE);
39608
+ controlTypeToken ===
39609
+ normalizeControlTypeToken(INLINE_COLOR_LABEL_CONTROL_TYPE);
39140
39610
  const isInlineMultiSelectExplicit = controlType === INLINE_MULTI_SELECT_CONTROL_TYPE ||
39141
- controlTypeToken === normalizeControlTypeToken(INLINE_MULTI_SELECT_CONTROL_TYPE);
39611
+ controlTypeToken ===
39612
+ normalizeControlTypeToken(INLINE_MULTI_SELECT_CONTROL_TYPE);
39142
39613
  const isInlineRangeExplicit = controlType === INLINE_RANGE_CONTROL_TYPE ||
39143
- controlTypeToken === normalizeControlTypeToken(INLINE_RANGE_CONTROL_TYPE);
39614
+ controlTypeToken ===
39615
+ normalizeControlTypeToken(INLINE_RANGE_CONTROL_TYPE);
39144
39616
  const isMultipleSelection = isInlineMultiSelectExplicit ||
39145
39617
  meta?.multiple === true ||
39146
- normalizeControlTypeToken(meta?.selectionMode || '') === 'multiple';
39618
+ normalizeControlTypeToken(meta?.selectionMode || '') ===
39619
+ 'multiple';
39147
39620
  const shouldUseInlineSearchableSelect = this.useInlineSearchableSelectVariant &&
39148
39621
  !isMultipleSelection &&
39149
39622
  isSearchableSelect;
@@ -39168,9 +39641,7 @@ class PraxisFilter {
39168
39641
  normalizedControlType === 'input' ||
39169
39642
  normalizedControlType === 'search' ||
39170
39643
  controlTypeToken === 'searchinput');
39171
- const shouldUseInlinePhone = this.useInlineInputVariant &&
39172
- !isMultipleSelection &&
39173
- isPhone;
39644
+ const shouldUseInlinePhone = this.useInlineInputVariant && !isMultipleSelection && isPhone;
39174
39645
  const shouldUseInlineNumber = this.useInlineInputVariant &&
39175
39646
  !isMultipleSelection &&
39176
39647
  isNumeric &&
@@ -39198,7 +39669,7 @@ class PraxisFilter {
39198
39669
  isMonthRange &&
39199
39670
  normalizeControlTypeToken(meta?.mode || '') === 'range');
39200
39671
  const periodRangeGranularity = isInlinePeriodRangeExplicit
39201
- ? (meta?.granularity || undefined)
39672
+ ? meta?.granularity || undefined
39202
39673
  : shouldUseInlineYearRange
39203
39674
  ? 'year'
39204
39675
  : shouldUseInlineMonthRange
@@ -39208,9 +39679,7 @@ class PraxisFilter {
39208
39679
  shouldUseInlineYearRange ||
39209
39680
  shouldUseInlineMonthRange;
39210
39681
  const shouldUseInlineRange = isInlineRangeExplicit ||
39211
- (this.useInlineRangeVariant &&
39212
- !isMultipleSelection &&
39213
- isRangeSlider);
39682
+ (this.useInlineRangeVariant && !isMultipleSelection && isRangeSlider);
39214
39683
  const shouldUseInlineDate = this.useInlineDateVariant &&
39215
39684
  !isMultipleSelection &&
39216
39685
  (controlType === FieldControlType.DATE_PICKER ||
@@ -39234,8 +39703,10 @@ class PraxisFilter {
39234
39703
  controlTypeToken === 'datetimerange' ||
39235
39704
  controlTypeToken === 'materialdaterange');
39236
39705
  const shouldUseInlineTime = isInlineTimeExplicit || (this.useInlineTimeVariant && isTimePicker);
39237
- const shouldUseInlineTimeRange = isInlineTimeRangeExplicit || (this.useInlineTimeRangeVariant && isTimeRange);
39238
- const shouldUseInlineTreeSelect = isInlineTreeSelectExplicit || (this.useInlineTreeSelectVariant && isTreeSelect);
39706
+ const shouldUseInlineTimeRange = isInlineTimeRangeExplicit ||
39707
+ (this.useInlineTimeRangeVariant && isTimeRange);
39708
+ const shouldUseInlineTreeSelect = isInlineTreeSelectExplicit ||
39709
+ (this.useInlineTreeSelectVariant && isTreeSelect);
39239
39710
  const inlineControlType = shouldUseInlineEntityLookup
39240
39711
  ? INLINE_ENTITY_LOOKUP_CONTROL_TYPE
39241
39712
  : shouldUseInlineAsyncSelect
@@ -39293,11 +39764,36 @@ class PraxisFilter {
39293
39764
  supportsClearButtonControlType(controlType);
39294
39765
  const existingClear = meta.clearButton;
39295
39766
  let clearButton = existingClear;
39296
- if (supportsInlineClear && (shouldUseInlineSearchableSelect || shouldUseInlineAsyncSelect || shouldUseInlineEntityLookup || shouldUseInlineAutocomplete || shouldUseInlineSelect || shouldUseInlineMultiSelect || shouldUseInlineInput || shouldUseInlinePhone || shouldUseInlineNumber || shouldUseInlineCurrency || shouldUseInlineCurrencyRange || shouldUseInlineRating || shouldUseInlineDistanceRadius || isInlinePipelineStatusExplicit || isInlineScorePriorityExplicit || shouldUseInlineToggle || shouldUseInlinePeriodRange || shouldUseInlineRange || shouldUseInlineDate || shouldUseInlineDateRange || shouldUseInlineTime || shouldUseInlineTimeRange || shouldUseInlineTreeSelect)) {
39767
+ if (supportsInlineClear &&
39768
+ (shouldUseInlineSearchableSelect ||
39769
+ shouldUseInlineAsyncSelect ||
39770
+ shouldUseInlineEntityLookup ||
39771
+ shouldUseInlineAutocomplete ||
39772
+ shouldUseInlineSelect ||
39773
+ shouldUseInlineMultiSelect ||
39774
+ shouldUseInlineInput ||
39775
+ shouldUseInlinePhone ||
39776
+ shouldUseInlineNumber ||
39777
+ shouldUseInlineCurrency ||
39778
+ shouldUseInlineCurrencyRange ||
39779
+ shouldUseInlineRating ||
39780
+ shouldUseInlineDistanceRadius ||
39781
+ isInlinePipelineStatusExplicit ||
39782
+ isInlineScorePriorityExplicit ||
39783
+ shouldUseInlineToggle ||
39784
+ shouldUseInlinePeriodRange ||
39785
+ shouldUseInlineRange ||
39786
+ shouldUseInlineDate ||
39787
+ shouldUseInlineDateRange ||
39788
+ shouldUseInlineTime ||
39789
+ shouldUseInlineTimeRange ||
39790
+ shouldUseInlineTreeSelect)) {
39297
39791
  if (existingClear === undefined || existingClear === true) {
39298
39792
  clearButton = { enabled: true, showOnlyWhenFilled: true };
39299
39793
  }
39300
- else if (existingClear && typeof existingClear === 'object' && existingClear.showOnlyWhenFilled === undefined) {
39794
+ else if (existingClear &&
39795
+ typeof existingClear === 'object' &&
39796
+ existingClear.showOnlyWhenFilled === undefined) {
39301
39797
  clearButton = { ...existingClear, showOnlyWhenFilled: true };
39302
39798
  }
39303
39799
  }
@@ -39308,14 +39804,15 @@ class PraxisFilter {
39308
39804
  ? (meta.showShortcuts ?? true)
39309
39805
  : meta.showShortcuts;
39310
39806
  const inlineQuickPresets = shouldUseInlineDateRange
39311
- ? (meta.inlineQuickPresets ??
39312
- { enabled: true, maxVisible: 5 })
39807
+ ? (meta.inlineQuickPresets ?? { enabled: true, maxVisible: 5 })
39313
39808
  : meta.inlineQuickPresets;
39314
39809
  const inlineQuickPresetsApplyMode = shouldUseInlineDateRange
39315
39810
  ? (meta.inlineQuickPresetsApplyMode ?? 'auto')
39316
39811
  : meta.inlineQuickPresetsApplyMode;
39317
39812
  const shortcuts = shouldUseInlineDateRange
39318
- ? (existingShortcuts.length ? existingShortcuts : [...INLINE_DATE_RANGE_CORPORATE_SHORTCUTS])
39813
+ ? existingShortcuts.length
39814
+ ? existingShortcuts
39815
+ : [...INLINE_DATE_RANGE_CORPORATE_SHORTCUTS]
39319
39816
  : meta.shortcuts;
39320
39817
  return this.withFilterMaterialDesignPolicy({
39321
39818
  ...meta,
@@ -39324,13 +39821,20 @@ class PraxisFilter {
39324
39821
  ? (periodRangeGranularity ?? meta.granularity)
39325
39822
  : meta.granularity,
39326
39823
  multiple: shouldUseInlineMultiSelect ? true : meta.multiple,
39327
- searchable: shouldUseInlineSearchableSelect || shouldUseInlineAsyncSelect || shouldUseInlineEntityLookup || shouldUseInlineAutocomplete ? true : meta.searchable,
39824
+ searchable: shouldUseInlineSearchableSelect ||
39825
+ shouldUseInlineAsyncSelect ||
39826
+ shouldUseInlineEntityLookup ||
39827
+ shouldUseInlineAutocomplete
39828
+ ? true
39829
+ : meta.searchable,
39328
39830
  clearButton,
39329
39831
  showShortcuts,
39330
39832
  inlineQuickPresets,
39331
39833
  inlineQuickPresetsApplyMode,
39332
39834
  shortcuts,
39333
- updateOn: isMultipleSelection ? (meta.updateOn ?? 'blur') : 'change',
39835
+ updateOn: isMultipleSelection
39836
+ ? (meta.updateOn ?? 'blur')
39837
+ : 'change',
39334
39838
  density: 'compact',
39335
39839
  });
39336
39840
  };
@@ -39341,7 +39845,8 @@ class PraxisFilter {
39341
39845
  // Separar toggles (booleans simples) para a faixa de ações, se habilitado
39342
39846
  const isToggle = (m) => {
39343
39847
  const ct = String(m.controlType || '').toLowerCase();
39344
- return ct === String(FieldControlType.TOGGLE).toLowerCase() || ct === INLINE_TOGGLE_CONTROL_TYPE;
39848
+ return (ct === String(FieldControlType.TOGGLE).toLowerCase() ||
39849
+ ct === INLINE_TOGGLE_CONTROL_TYPE);
39345
39850
  };
39346
39851
  const applyToggleDisplayPrefs = (m) => {
39347
39852
  if (!isToggle(m))
@@ -39368,7 +39873,7 @@ class PraxisFilter {
39368
39873
  ...selectedWithTogglePrefs.filter(isToggle),
39369
39874
  ];
39370
39875
  const seen = new Set();
39371
- const toggles = toggleSet.filter((m) => (seen.has(m.name) ? false : (seen.add(m.name), true)));
39876
+ const toggles = toggleSet.filter((m) => seen.has(m.name) ? false : (seen.add(m.name), true));
39372
39877
  this.toggleMetas = toggles;
39373
39878
  this.selectedMetas = selectedWithTogglePrefs.filter((m) => !isToggle(m));
39374
39879
  this.alwaysVisibleMetas = alwaysWithTogglePrefs.filter((m) => !isToggle(m));
@@ -39385,7 +39890,8 @@ class PraxisFilter {
39385
39890
  this.compactAlwaysVisibleMetas = this.alwaysVisibleMetas.filter(isInlineCompactControl);
39386
39891
  this.gridSelectedMetas = this.selectedMetas.filter((m) => !isInlineCompactControl(m));
39387
39892
  this.gridAlwaysVisibleMetas = this.alwaysVisibleMetas.filter((m) => !isInlineCompactControl(m));
39388
- if (this.activeEditableFieldName && !this.getEditableFieldMeta(this.activeEditableFieldName)) {
39893
+ if (this.activeEditableFieldName &&
39894
+ !this.getEditableFieldMeta(this.activeEditableFieldName)) {
39389
39895
  this.activeEditableFieldName = null;
39390
39896
  }
39391
39897
  // Registrar controles para ambos os grupos dentro do mesmo FormGroup
@@ -39395,12 +39901,16 @@ class PraxisFilter {
39395
39901
  toggleCount: this.toggleMetas.length,
39396
39902
  compactSelectedCount: this.compactSelectedMetas.length,
39397
39903
  compactAlwaysCount: this.compactAlwaysVisibleMetas.length,
39398
- selectedNames: this.selectedMetas.map(m => m.name),
39399
- alwaysNames: this.alwaysVisibleMetas.map(m => m.name),
39400
- toggleNames: this.toggleMetas.map(m => m.name),
39904
+ selectedNames: this.selectedMetas.map((m) => m.name),
39905
+ alwaysNames: this.alwaysVisibleMetas.map((m) => m.name),
39906
+ toggleNames: this.toggleMetas.map((m) => m.name),
39401
39907
  });
39402
39908
  const added = new Set();
39403
- [...this.selectedMetas, ...this.alwaysVisibleMetas, ...this.toggleMetas].forEach((m) => {
39909
+ [
39910
+ ...this.selectedMetas,
39911
+ ...this.alwaysVisibleMetas,
39912
+ ...this.toggleMetas,
39913
+ ].forEach((m) => {
39404
39914
  const ctrl = this.dynamicForm.createControlFromMetadata(m);
39405
39915
  const initial = this.dto[m.name];
39406
39916
  if (initial !== undefined) {
@@ -39415,10 +39925,21 @@ class PraxisFilter {
39415
39925
  controls: Object.keys(this.alwaysForm.controls),
39416
39926
  });
39417
39927
  this.alwaysForm.valueChanges
39418
- .pipe(debounceTime$1(this.changeDebounceMs), takeUntil$1(this.alwaysFormReset$), takeUntilDestroyed(this.destroyRef))
39419
- .subscribe((val) => this.advancedChange$.next(val));
39420
- let advancedMetas = this.getAdvancedCandidateMetas(metas)
39421
- .map((m) => ({ ...m, updateOn: 'change' }));
39928
+ .pipe(takeUntil$1(this.alwaysFormReset$), takeUntilDestroyed(this.destroyRef))
39929
+ .subscribe((val) => {
39930
+ // O resumo visível é estado local da toolbar e precisa acompanhar a
39931
+ // interação imediatamente. Apenas a emissão externa permanece
39932
+ // debounced em bindAdvancedDebounce(). Evita a antiga espera dupla.
39933
+ Object.keys(val || {}).forEach((key) => {
39934
+ this.upsertDtoValue(key, val[key]);
39935
+ });
39936
+ this.setActiveFiltersCount(Object.keys(this.dto).length);
39937
+ this.advancedChange$.next(val);
39938
+ });
39939
+ let advancedMetas = this.getAdvancedCandidateMetas(metas).map((m) => ({
39940
+ ...m,
39941
+ updateOn: 'change',
39942
+ }));
39422
39943
  // Material's compact datepicker popup is unreliable inside the advanced dialog/drawer overlay.
39423
39944
  // Use touch UI by default there, while preserving explicit metadata overrides.
39424
39945
  advancedMetas = advancedMetas.map((m) => this.withAdvancedDatePickerTouchPolicy(m));
@@ -39432,13 +39953,22 @@ class PraxisFilter {
39432
39953
  return m;
39433
39954
  }
39434
39955
  if (hasClearOverride && !clearButtonsEnabled) {
39435
- return { ...m, clearButton: { ...(existing || {}), enabled: false } };
39956
+ return {
39957
+ ...m,
39958
+ clearButton: { ...(existing || {}), enabled: false },
39959
+ };
39436
39960
  }
39437
39961
  if (!existing) {
39438
- return { ...m, clearButton: { enabled: true, showOnlyWhenFilled: true } };
39962
+ return {
39963
+ ...m,
39964
+ clearButton: { enabled: true, showOnlyWhenFilled: true },
39965
+ };
39439
39966
  }
39440
39967
  if (existing.enabled === undefined) {
39441
- return { ...m, clearButton: { ...existing, enabled: true } };
39968
+ return {
39969
+ ...m,
39970
+ clearButton: { ...existing, enabled: true },
39971
+ };
39442
39972
  }
39443
39973
  return m;
39444
39974
  });
@@ -39472,7 +40002,7 @@ class PraxisFilter {
39472
40002
  };
39473
40003
  this.logFilterDebug('[PFILTER] applySchemaMetas: advancedConfig set', {
39474
40004
  count: advancedMetas.length,
39475
- names: advancedMetas.map(m => m.name),
40005
+ names: advancedMetas.map((m) => m.name),
39476
40006
  });
39477
40007
  }
39478
40008
  else {
@@ -39506,7 +40036,8 @@ class PraxisFilter {
39506
40036
  if (Object.prototype.hasOwnProperty.call(meta, 'touchUi')) {
39507
40037
  return meta;
39508
40038
  }
39509
- if (this.advancedOpenMode !== 'modal' && this.advancedOpenMode !== 'drawer') {
40039
+ if (this.advancedOpenMode !== 'modal' &&
40040
+ this.advancedOpenMode !== 'drawer') {
39510
40041
  return meta;
39511
40042
  }
39512
40043
  return { ...meta, touchUi: true };
@@ -39528,8 +40059,19 @@ class PraxisFilter {
39528
40059
  if (this.isCompositeRangeFilterField(meta)) {
39529
40060
  column.className = 'filter-column--full filter-column--range';
39530
40061
  }
40062
+ else if (this.isLongTextFilterField(meta)) {
40063
+ column.className = 'filter-column--full filter-column--text';
40064
+ }
39531
40065
  return column;
39532
40066
  }
40067
+ isLongTextFilterField(meta) {
40068
+ const token = normalizeControlTypeToken(meta?.controlType || '');
40069
+ return (token === 'input' ||
40070
+ token === 'text' ||
40071
+ token === 'textarea' ||
40072
+ token === 'materialinput' ||
40073
+ token === 'materialtext');
40074
+ }
39533
40075
  isCompositeRangeFilterField(meta) {
39534
40076
  const token = normalizeControlTypeToken(meta?.controlType || '');
39535
40077
  return (token === 'pricerange' ||
@@ -39570,8 +40112,8 @@ class PraxisFilter {
39570
40112
  normalizeFilterOptionEndpointMetadata(meta) {
39571
40113
  const rawResourcePath = String(meta?.resourcePath ?? '').trim();
39572
40114
  const rawEndpoint = String(meta?.endpoint ?? '').trim();
39573
- const optionEndpointPath = this.toOwningResourcePathForOptionsFilter(rawResourcePath)
39574
- || this.toOwningResourcePathForOptionsFilter(rawEndpoint);
40115
+ const optionEndpointPath = this.toOwningResourcePathForOptionsFilter(rawResourcePath) ||
40116
+ this.toOwningResourcePathForOptionsFilter(rawEndpoint);
39575
40117
  if (!optionEndpointPath) {
39576
40118
  return meta;
39577
40119
  }
@@ -39749,7 +40291,9 @@ class PraxisFilter {
39749
40291
  return this.sanitizeAlwaysVisibleMetadataOverrides(overrides);
39750
40292
  }
39751
40293
  sanitizeAlwaysVisibleMetadataOverrides(overrides) {
39752
- if (!overrides || typeof overrides !== 'object' || Array.isArray(overrides)) {
40294
+ if (!overrides ||
40295
+ typeof overrides !== 'object' ||
40296
+ Array.isArray(overrides)) {
39753
40297
  return {};
39754
40298
  }
39755
40299
  const source = overrides;
@@ -39766,7 +40310,9 @@ class PraxisFilter {
39766
40310
  return;
39767
40311
  }
39768
40312
  const sanitized = this.sanitizeMetadataOverrideValue(source[fieldName], 0);
39769
- if (!sanitized || typeof sanitized !== 'object' || Array.isArray(sanitized)) {
40313
+ if (!sanitized ||
40314
+ typeof sanitized !== 'object' ||
40315
+ Array.isArray(sanitized)) {
39770
40316
  return;
39771
40317
  }
39772
40318
  if (!Object.keys(sanitized).length) {
@@ -39830,7 +40376,9 @@ class PraxisFilter {
39830
40376
  return base;
39831
40377
  }
39832
40378
  const safeOverride = this.sanitizeMetadataOverrideValue(override, 0);
39833
- if (!safeOverride || typeof safeOverride !== 'object' || Array.isArray(safeOverride)) {
40379
+ if (!safeOverride ||
40380
+ typeof safeOverride !== 'object' ||
40381
+ Array.isArray(safeOverride)) {
39834
40382
  return base;
39835
40383
  }
39836
40384
  const merged = {
@@ -39967,15 +40515,19 @@ class PraxisFilter {
39967
40515
  if (typeof window === 'undefined' || !window?.localStorage) {
39968
40516
  return false;
39969
40517
  }
39970
- const resourcePath = String(this.resourcePath || '').trim().toLowerCase();
39971
- const componentInstanceId = String(this.componentInstanceId || '').trim().toLowerCase();
40518
+ const resourcePath = String(this.resourcePath || '')
40519
+ .trim()
40520
+ .toLowerCase();
40521
+ const componentInstanceId = String(this.componentInstanceId || '')
40522
+ .trim()
40523
+ .toLowerCase();
39972
40524
  const isLocalHarness = resourcePath.startsWith('/local/') ||
39973
40525
  resourcePath.includes('/e2e-') ||
39974
40526
  componentInstanceId.includes('e2e');
39975
40527
  if (!isLocalHarness) {
39976
40528
  return false;
39977
40529
  }
39978
- return window.localStorage.getItem('praxis.customization.enabled') === 'true';
40530
+ return (window.localStorage.getItem('praxis.customization.enabled') === 'true');
39979
40531
  }
39980
40532
  openFieldMetadataEditorInternal(editorComponent, controlType, seed, fieldName) {
39981
40533
  const ref = this.settingsPanel.open({
@@ -39989,37 +40541,54 @@ class PraxisFilter {
39989
40541
  });
39990
40542
  if (!ref)
39991
40543
  return;
39992
- const handlePatch = (patch) => {
40544
+ const baselineOverrides = this.cloneFieldMetadataOverrides(this.fieldMetadataOverrides);
40545
+ const handlePatch = (patch, persist) => {
39993
40546
  if (!patch)
39994
40547
  return;
39995
- this.applyFieldMetadataPatch(fieldName, patch);
40548
+ this.applyFieldMetadataPatch(fieldName, patch, baselineOverrides, persist);
39996
40549
  };
39997
40550
  if (ref.applied$?.pipe) {
39998
40551
  ref.applied$
39999
40552
  .pipe(takeUntilDestroyed(this.destroyRef))
40000
- .subscribe((patch) => handlePatch(patch));
40553
+ .subscribe((patch) => handlePatch(patch, false));
40001
40554
  }
40002
40555
  if (ref.saved$?.pipe) {
40003
40556
  ref.saved$
40004
40557
  .pipe(takeUntilDestroyed(this.destroyRef))
40005
- .subscribe((patch) => handlePatch(patch));
40558
+ .subscribe((patch) => handlePatch(patch, true));
40006
40559
  }
40007
40560
  }
40008
- applyFieldMetadataPatch(fieldName, patch) {
40009
- const nextOverrides = this.cloneFieldMetadataOverrides(this.fieldMetadataOverrides);
40561
+ applyFieldMetadataPatch(fieldName, patch, baselineOverrides = this.fieldMetadataOverrides, persist = false) {
40562
+ const nextOverrides = this.cloneFieldMetadataOverrides(baselineOverrides);
40010
40563
  const current = nextOverrides[fieldName] || {};
40011
- nextOverrides[fieldName] = this.sanitizeMetadataOverrideValue({ ...current, ...patch }, 0);
40564
+ const merged = applyJsonMergePatch(current, patch);
40565
+ const sanitized = this.sanitizeMetadataOverrideValue(merged, 0);
40566
+ if (sanitized &&
40567
+ typeof sanitized === 'object' &&
40568
+ !Array.isArray(sanitized) &&
40569
+ Object.keys(sanitized).length) {
40570
+ nextOverrides[fieldName] = sanitized;
40571
+ }
40572
+ else {
40573
+ delete nextOverrides[fieldName];
40574
+ }
40012
40575
  this.fieldMetadataOverrides = nextOverrides;
40013
40576
  if (this.alwaysVisibleFields?.includes(fieldName)) {
40014
40577
  const currentAlways = this.cloneAlwaysVisibleMetadataOverrides(this.alwaysVisibleFieldMetadataOverrides);
40015
- currentAlways[fieldName] = nextOverrides[fieldName];
40578
+ if (nextOverrides[fieldName]) {
40579
+ currentAlways[fieldName] = nextOverrides[fieldName];
40580
+ }
40581
+ else {
40582
+ delete currentAlways[fieldName];
40583
+ }
40016
40584
  this.alwaysVisibleFieldMetadataOverrides = currentAlways;
40017
40585
  }
40018
40586
  if (this.schemaMetas?.length) {
40019
40587
  this.applySchemaQueued = false;
40020
40588
  this.applySchemaMetasNow();
40021
40589
  }
40022
- this.saveConfig();
40590
+ if (persist)
40591
+ this.saveConfig();
40023
40592
  }
40024
40593
  buildFieldMetadataEditorSeed(meta) {
40025
40594
  const source = this.sanitizeMetadataOverrideValue(meta, 0) || {};
@@ -40036,7 +40605,8 @@ class PraxisFilter {
40036
40605
  }
40037
40606
  catch { }
40038
40607
  }
40039
- if (meta.filterCriteria && typeof meta.filterCriteria === 'object') {
40608
+ if (meta.filterCriteria &&
40609
+ typeof meta.filterCriteria === 'object') {
40040
40610
  try {
40041
40611
  seed['filterCriteria'] = JSON.stringify(meta.filterCriteria, null, 2);
40042
40612
  }
@@ -40095,7 +40665,6 @@ class PraxisFilter {
40095
40665
  }
40096
40666
  this.updateAddItems();
40097
40667
  }
40098
- setTimeout(() => this.addManagerSearch?.focus());
40099
40668
  }
40100
40669
  else {
40101
40670
  this.addQuery = '';
@@ -40116,7 +40685,10 @@ class PraxisFilter {
40116
40685
  if (!this.addManagerOpen)
40117
40686
  return;
40118
40687
  this.onAddOpened(false);
40119
- setTimeout(() => this.addManagerOrigin?.nativeElement.focus());
40688
+ queueMicrotask(() => this.addManagerOrigin?.nativeElement.focus());
40689
+ }
40690
+ focusAddManagerSearch() {
40691
+ queueMicrotask(() => this.addManagerSearch?.focus());
40120
40692
  }
40121
40693
  toggleManagedField(fieldId, checked) {
40122
40694
  const current = new Set(this.addDraftSelectedFieldIds || []);
@@ -40126,13 +40698,15 @@ class PraxisFilter {
40126
40698
  this.announceManagedFieldChange(fieldId, checked);
40127
40699
  }
40128
40700
  isAddManagerItemInMotion(fieldId, type) {
40129
- return this.addManagerItemMotion?.id === fieldId && this.addManagerItemMotion.type === type;
40701
+ return (this.addManagerItemMotion?.id === fieldId &&
40702
+ this.addManagerItemMotion.type === type);
40130
40703
  }
40131
40704
  startAddManagerItemMotion(fieldId, type) {
40132
40705
  this.addManagerItemMotion = { id: fieldId, type };
40133
40706
  this.cdr.markForCheck();
40134
40707
  setTimeout(() => {
40135
- if (this.addManagerItemMotion?.id !== fieldId || this.addManagerItemMotion.type !== type)
40708
+ if (this.addManagerItemMotion?.id !== fieldId ||
40709
+ this.addManagerItemMotion.type !== type)
40136
40710
  return;
40137
40711
  this.addManagerItemMotion = null;
40138
40712
  this.cdr.markForCheck();
@@ -40151,7 +40725,8 @@ class PraxisFilter {
40151
40725
  isAddManagerDirty() {
40152
40726
  const current = this.normalizeFieldIdList(this.selectedFieldIds).sort();
40153
40727
  const draft = this.normalizeFieldIdList(this.addDraftSelectedFieldIds).sort();
40154
- return current.length !== draft.length || current.some((id, index) => id !== draft[index]);
40728
+ return (current.length !== draft.length ||
40729
+ current.some((id, index) => id !== draft[index]));
40155
40730
  }
40156
40731
  getAddManagerChangeCount() {
40157
40732
  const current = new Set(this.normalizeFieldIdList(this.selectedFieldIds));
@@ -40182,6 +40757,31 @@ class PraxisFilter {
40182
40757
  const selected = new Set(this.addInitialSelectedFieldIds);
40183
40758
  return this.addItems.filter((item) => selected.has(item.id));
40184
40759
  }
40760
+ getAddManagerFixedItems() {
40761
+ const fixed = new Set(this.normalizeFieldIdList(this.alwaysVisibleFields));
40762
+ const query = this.addQuery.toLowerCase();
40763
+ return (this.alwaysVisibleMetas || [])
40764
+ .filter((meta) => fixed.has(meta.name) && !this.isFilterFieldHidden(meta))
40765
+ .map((meta) => {
40766
+ const description = this.getManagedFieldDescription(meta);
40767
+ return {
40768
+ id: meta.name,
40769
+ label: String(meta.label || meta.name),
40770
+ ...(description ? { description } : {}),
40771
+ };
40772
+ })
40773
+ .filter((item) => !query ||
40774
+ item.id.toLowerCase().includes(query) ||
40775
+ item.label.toLowerCase().includes(query) ||
40776
+ (item.description || '').toLowerCase().includes(query));
40777
+ }
40778
+ getAddManagerFixedFieldAriaLabel(item) {
40779
+ const fixedDescription = this.i18nLabels.fixedFieldDescription ||
40780
+ 'Campo fixo, sempre exibido na barra de filtros';
40781
+ return [item.label, fixedDescription, item.description]
40782
+ .filter(Boolean)
40783
+ .join('. ');
40784
+ }
40185
40785
  getAddManagerAvailableItems() {
40186
40786
  const selected = new Set(this.addInitialSelectedFieldIds);
40187
40787
  return this.addItems.filter((item) => !selected.has(item.id));
@@ -40190,10 +40790,12 @@ class PraxisFilter {
40190
40790
  return this.addDraftSelectedFieldIds.includes(fieldId);
40191
40791
  }
40192
40792
  isAddManagerFieldPendingAddition(fieldId) {
40193
- return !this.addInitialSelectedFieldIds.includes(fieldId) && this.isAddManagerFieldSelected(fieldId);
40793
+ return (!this.addInitialSelectedFieldIds.includes(fieldId) &&
40794
+ this.isAddManagerFieldSelected(fieldId));
40194
40795
  }
40195
40796
  isAddManagerFieldPendingRemoval(fieldId) {
40196
- return this.addInitialSelectedFieldIds.includes(fieldId) && !this.isAddManagerFieldSelected(fieldId);
40797
+ return (this.addInitialSelectedFieldIds.includes(fieldId) &&
40798
+ !this.isAddManagerFieldSelected(fieldId));
40197
40799
  }
40198
40800
  getAddManagerFieldPendingLabel(fieldId) {
40199
40801
  if (this.isAddManagerFieldPendingAddition(fieldId)) {
@@ -40205,7 +40807,10 @@ class PraxisFilter {
40205
40807
  return '';
40206
40808
  }
40207
40809
  getAddManagerFieldAriaDescription(item) {
40208
- const parts = [item.description, this.getAddManagerFieldPendingLabel(item.id)].filter(Boolean);
40810
+ const parts = [
40811
+ item.description,
40812
+ this.getAddManagerFieldPendingLabel(item.id),
40813
+ ].filter(Boolean);
40209
40814
  return parts.length ? parts.join('. ') : null;
40210
40815
  }
40211
40816
  announceManagedFieldChange(fieldId, checked) {
@@ -40272,25 +40877,34 @@ class PraxisFilter {
40272
40877
  * while an operator decides among similar filters (for example, date variants).
40273
40878
  */
40274
40879
  getManagedFieldDescription(meta) {
40275
- const candidates = [meta.description, meta.tooltip, meta.helpText, meta.hint];
40880
+ const candidates = [
40881
+ meta.description,
40882
+ meta.tooltip,
40883
+ meta.helpText,
40884
+ meta.hint,
40885
+ ];
40276
40886
  return candidates.find((candidate) => typeof candidate === 'string' && candidate.trim().length > 0);
40277
40887
  }
40278
40888
  updateAddItems() {
40279
- this.addItems = this.getManageableFilterItems().slice().sort((a, b) => {
40889
+ this.addItems = this.getManageableFilterItems()
40890
+ .slice()
40891
+ .sort((a, b) => {
40280
40892
  return a.label.localeCompare(b.label);
40281
40893
  });
40282
40894
  this.cdr.markForCheck();
40283
40895
  }
40284
- trackById(_idx, it) { return it.id; }
40896
+ trackById(_idx, it) {
40897
+ return it.id;
40898
+ }
40285
40899
  isFilterFieldHidden(meta) {
40286
40900
  if (!meta)
40287
40901
  return false;
40288
40902
  const raw = meta;
40289
40903
  const xUi = raw['x-ui'] || raw.xUi || raw.ui || {};
40290
- return raw.hidden === true ||
40904
+ return (raw.hidden === true ||
40291
40905
  raw.hidden === 'true' ||
40292
40906
  xUi.hidden === true ||
40293
- xUi.hidden === 'true';
40907
+ xUi.hidden === 'true');
40294
40908
  }
40295
40909
  onAddSelectionChange(values) {
40296
40910
  const arr = this.normalizeFieldIdList(values);
@@ -40322,15 +40936,32 @@ class PraxisFilter {
40322
40936
  formatWithCount(tpl, count) {
40323
40937
  return (tpl || '').replace('{count}', String(count));
40324
40938
  }
40939
+ getVisibleFieldCount() {
40940
+ const visibleSchemaFields = this.schemaMetas
40941
+ ? new Set(this.schemaMetas
40942
+ .filter((meta) => !this.isFilterFieldHidden(meta))
40943
+ .map((meta) => meta.name))
40944
+ : null;
40945
+ const visible = new Set([
40946
+ ...this.normalizeFieldIdList(this.alwaysVisibleFields),
40947
+ ...this.normalizeFieldIdList(this.selectedFieldIds),
40948
+ ]);
40949
+ return visibleSchemaFields
40950
+ ? [...visible].filter((fieldId) => visibleSchemaFields.has(fieldId))
40951
+ .length
40952
+ : visible.size;
40953
+ }
40325
40954
  getAddAriaLabel() {
40326
40955
  if (!this.hasAddableFields()) {
40327
- return this.i18nLabels.addUnavailable || 'Todos os campos já estão visíveis';
40956
+ return (this.i18nLabels.addUnavailable || 'Todos os campos já estão visíveis');
40328
40957
  }
40329
- const c = this.selectedFieldIds?.length || 0;
40958
+ const c = this.getVisibleFieldCount();
40330
40959
  if (c > 0)
40331
40960
  return this.formatWithCount(c === 1
40332
- ? (this.i18nLabels.addCountSingular || 'Gerenciar campos de filtro ({count} exibido)')
40333
- : (this.i18nLabels.addCount || 'Gerenciar campos de filtro ({count} exibidos)'), c);
40961
+ ? this.i18nLabels.addCountSingular ||
40962
+ 'Gerenciar campos de filtro ({count} exibido)'
40963
+ : this.i18nLabels.addCount ||
40964
+ 'Gerenciar campos de filtro ({count} exibidos)', c);
40334
40965
  return this.getAddTriggerLabel();
40335
40966
  }
40336
40967
  getAddTriggerLabel() {
@@ -40338,17 +40969,19 @@ class PraxisFilter {
40338
40969
  return (this.i18n?.add ||
40339
40970
  this.i18n?.filtersAdd ||
40340
40971
  this.i18nLabels.add ||
40341
- 'Gerenciar filtros');
40972
+ 'Gerenciar campos');
40342
40973
  }
40343
40974
  getAddTooltip() {
40344
40975
  if (!this.hasAddableFields()) {
40345
- return this.i18nLabels.addUnavailable || 'Todos os campos já estão visíveis';
40976
+ return (this.i18nLabels.addUnavailable || 'Todos os campos já estão visíveis');
40346
40977
  }
40347
- const c = this.selectedFieldIds?.length || 0;
40978
+ const c = this.getVisibleFieldCount();
40348
40979
  if (c > 0) {
40349
40980
  return this.formatWithCount(c === 1
40350
- ? (this.i18nLabels.addCountSingular || 'Gerenciar campos de filtro ({count} exibido)')
40351
- : (this.i18nLabels.addCount || 'Gerenciar campos de filtro ({count} exibidos)'), c);
40981
+ ? this.i18nLabels.addCountSingular ||
40982
+ 'Gerenciar campos de filtro ({count} exibido)'
40983
+ : this.i18nLabels.addCount ||
40984
+ 'Gerenciar campos de filtro ({count} exibidos)', c);
40352
40985
  }
40353
40986
  return (this.i18n?.manageFieldsDescription ||
40354
40987
  this.i18nLabels.manageFieldsDescription ||
@@ -40361,14 +40994,14 @@ class PraxisFilter {
40361
40994
  return this.formatWithCount(this.i18nLabels.activeFiltersCount || 'Filtros ativos: {count}', c);
40362
40995
  }
40363
40996
  isAllSelected() {
40364
- const ids = this.addItems.map(i => i.id);
40997
+ const ids = this.addItems.map((i) => i.id);
40365
40998
  const sel = new Set(this.addDraftSelectedFieldIds || []);
40366
- return ids.length > 0 && ids.every(id => sel.has(id));
40999
+ return ids.length > 0 && ids.every((id) => sel.has(id));
40367
41000
  }
40368
41001
  isSomeSelected() {
40369
- const ids = this.addItems.map(i => i.id);
41002
+ const ids = this.addItems.map((i) => i.id);
40370
41003
  const sel = new Set(this.addDraftSelectedFieldIds || []);
40371
- const count = ids.filter(id => sel.has(id)).length;
41004
+ const count = ids.filter((id) => sel.has(id)).length;
40372
41005
  return count > 0 && count < ids.length;
40373
41006
  }
40374
41007
  toggleSelectAll() {
@@ -40491,7 +41124,10 @@ class PraxisFilter {
40491
41124
  okLabel: this.i18nLabels.save,
40492
41125
  cancelLabel: this.i18nLabels.cancel,
40493
41126
  });
40494
- ref.afterClosed().pipe(take$1(1)).subscribe({
41127
+ ref
41128
+ .afterClosed()
41129
+ .pipe(take$1(1))
41130
+ .subscribe({
40495
41131
  next: (value) => {
40496
41132
  this.shortcutPromptOpen = false;
40497
41133
  const label = typeof value === 'string' ? value.trim() : '';
@@ -40519,18 +41155,27 @@ class PraxisFilter {
40519
41155
  // Helper A11y: label específico da ação Avançado; a contagem é global e exibida separadamente.
40520
41156
  getAdvancedAriaLabel() {
40521
41157
  if (!this.hasAdvancedFields()) {
40522
- return this.i18nLabels.advancedUnavailable || 'Todos os campos já estão visíveis na toolbar';
41158
+ return (this.i18nLabels.advancedUnavailable ||
41159
+ 'Todos os campos já estão visíveis na toolbar');
40523
41160
  }
40524
41161
  return this.i18nLabels.advanced;
40525
41162
  }
40526
41163
  getAdvancedTooltip() {
40527
41164
  if (!this.hasAdvancedFields()) {
40528
- return this.i18nLabels.advancedUnavailable || 'Todos os campos já estão visíveis na toolbar';
41165
+ return (this.i18nLabels.advancedUnavailable ||
41166
+ 'Todos os campos já estão visíveis na toolbar');
40529
41167
  }
40530
41168
  return this.i18nLabels.advancedTitle || 'Abrir filtro avançado';
40531
41169
  }
40532
41170
  getSettingsAriaLabel() {
40533
- return this.i18nLabels.settingsAriaLabel || this.i18nLabels.settings || 'Configurações';
41171
+ return (this.i18nLabels.settingsAriaLabel ||
41172
+ this.i18nLabels.settings ||
41173
+ 'Configurações');
41174
+ }
41175
+ getFieldSettingsLabel() {
41176
+ const fieldLabel = String(this.activeEditableFieldLabel || '').trim();
41177
+ const settingsLabel = this.getSettingsAriaLabel();
41178
+ return fieldLabel ? `${settingsLabel}: ${fieldLabel}` : settingsLabel;
40534
41179
  }
40535
41180
  getSettingsTooltip() {
40536
41181
  if (this.schemaOutdated)
@@ -40598,7 +41243,10 @@ class PraxisFilter {
40598
41243
  this.configStorage.clearConfig(key).pipe(take$1(1)).subscribe();
40599
41244
  }
40600
41245
  else {
40601
- this.configStorage.saveConfig(key, until.toISOString()).pipe(take$1(1)).subscribe();
41246
+ this.configStorage
41247
+ .saveConfig(key, until.toISOString())
41248
+ .pipe(take$1(1))
41249
+ .subscribe();
40602
41250
  }
40603
41251
  }
40604
41252
  catch { }
@@ -40675,7 +41323,8 @@ class PraxisFilter {
40675
41323
  }
40676
41324
  async runSchemaVerification(currentCtx, currentSchemaContext, currentSchemaId, verifyContextKey) {
40677
41325
  try {
40678
- const scopedMetaKey = this.getSchemaMetaKeyForContext(currentSchemaContext) || this.getSchemaMetaKey();
41326
+ const scopedMetaKey = this.getSchemaMetaKeyForContext(currentSchemaContext) ||
41327
+ this.getSchemaMetaKey();
40679
41328
  if (!scopedMetaKey)
40680
41329
  return;
40681
41330
  // Build request to /schemas/filtered for filter (path=/.../filter, operation=post, schemaType=request)
@@ -40705,7 +41354,12 @@ class PraxisFilter {
40705
41354
  }
40706
41355
  const tenant = currentCtx.tenant;
40707
41356
  const locale = currentCtx.locale;
40708
- const res = await fetchWithETag({ url: u.toString(), schemaHash: previousHash, tenant, locale });
41357
+ const res = await fetchWithETag({
41358
+ url: u.toString(),
41359
+ schemaHash: previousHash,
41360
+ tenant,
41361
+ locale,
41362
+ });
40709
41363
  const nowIso = new Date().toISOString();
40710
41364
  const metaToSave = { ...(persistedMeta || {}) };
40711
41365
  metaToSave.schemaId = currentSchemaId;
@@ -40722,7 +41376,12 @@ class PraxisFilter {
40722
41376
  this.lastSchemaVerificationByContext.set(verifyContextKey, Date.now());
40723
41377
  if (this.schemaOutdated)
40724
41378
  this.schemaOutdated = false;
40725
- this.schemaStatusChange.emit({ outdated: false, serverHash: metaToSave.serverHash, lastVerifiedAt: metaToSave.lastVerifiedAt, formId: this.formId });
41379
+ this.schemaStatusChange.emit({
41380
+ outdated: false,
41381
+ serverHash: metaToSave.serverHash,
41382
+ lastVerifiedAt: metaToSave.lastVerifiedAt,
41383
+ formId: this.formId,
41384
+ });
40726
41385
  return;
40727
41386
  }
40728
41387
  // status === 200: server hash changed (or first verification without hash). Do not apply schema here.
@@ -40736,7 +41395,12 @@ class PraxisFilter {
40736
41395
  // Only mark outdated when there was a previous base (hash or schemaMetas) and we are in edit mode
40737
41396
  const hadBase = !!previousHash || !!this.schemaMetas?.length;
40738
41397
  this.schemaOutdated = !!(this.enableCustomization && hadBase);
40739
- this.schemaStatusChange.emit({ outdated: this.schemaOutdated, serverHash: newHash, lastVerifiedAt: metaToSave.lastVerifiedAt, formId: this.formId });
41398
+ this.schemaStatusChange.emit({
41399
+ outdated: this.schemaOutdated,
41400
+ serverHash: newHash,
41401
+ lastVerifiedAt: metaToSave.lastVerifiedAt,
41402
+ formId: this.formId,
41403
+ });
40740
41404
  if (this.schemaOutdated) {
40741
41405
  if (this._resolvedPrefs.autoOpenSettingsOnOutdated) {
40742
41406
  this.openSettings();
@@ -40759,7 +41423,8 @@ class PraxisFilter {
40759
41423
  const metaKey = this.getSchemaMetaKeyForContext(currentSchemaContext);
40760
41424
  if (!metaKey)
40761
41425
  return;
40762
- const serverHash = (await this.loadStoredSchemaMeta(metaKey) || {})?.serverHash;
41426
+ const serverHash = ((await this.loadStoredSchemaMeta(metaKey)) || {})
41427
+ ?.serverHash;
40763
41428
  if (!serverHash || !this.schemaOutdated)
40764
41429
  return;
40765
41430
  if (await this.isOutdatedIgnored(serverHash))
@@ -40767,7 +41432,8 @@ class PraxisFilter {
40767
41432
  const snoozeUntil = (await this.getOutdatedSnoozeUntil(serverHash)) || 0;
40768
41433
  if (snoozeUntil && Date.now() < snoozeUntil)
40769
41434
  return;
40770
- if (!(this._resolvedPrefs.notifyIfOutdated === 'snackbar' || this._resolvedPrefs.notifyIfOutdated === 'both'))
41435
+ if (!(this._resolvedPrefs.notifyIfOutdated === 'snackbar' ||
41436
+ this._resolvedPrefs.notifyIfOutdated === 'both'))
40771
41437
  return;
40772
41438
  if (await this.wasOutdatedNotified(serverHash))
40773
41439
  return;
@@ -40820,16 +41486,10 @@ class PraxisFilter {
40820
41486
  try {
40821
41487
  // Atualiza DTO primeiro
40822
41488
  this.dto = { ...(tag.patch ?? {}) };
40823
- // Always visible
40824
- Object.keys(this.dto).forEach((k) => {
40825
- const ctrl = this.alwaysForm.get(k);
40826
- if (ctrl) {
40827
- ctrl.setValue(this.dto[k], { emitEvent: false });
40828
- }
40829
- });
40830
- // Advanced form (patch em lote)
40831
- this.advancedForm?.patchValue(this.dto, { emitEvent: false });
40832
- this.refreshProgrammaticFilterFieldDisplays(Object.keys(this.dto));
41489
+ // Um atalho representa o estado completo da consulta. Sincronizar todos
41490
+ // os controles também limpa critérios que pertenciam ao estado anterior,
41491
+ // evitando que a UI continue exibindo valores ausentes no DTO aplicado.
41492
+ this.syncFormsFromDto();
40833
41493
  // Atualiza contadores/resumo e persiste
40834
41494
  this.setActiveFiltersCount(Object.keys(this.dto).length);
40835
41495
  this.persist();
@@ -40972,7 +41632,7 @@ class PraxisFilter {
40972
41632
  this.advancedOpen = true;
40973
41633
  this.saveConfig();
40974
41634
  try {
40975
- const { FilterFormDialogHostComponent } = await import('./praxisui-table-filter-form-dialog-host.component-AdssQ-Tn.mjs');
41635
+ const { FilterFormDialogHostComponent } = await import('./praxisui-table-filter-form-dialog-host.component-DANYIQs6.mjs');
40976
41636
  const formId = this.formId || this.filterId || 'filter';
40977
41637
  const ref = this.dialog.open(FilterFormDialogHostComponent, {
40978
41638
  width: '780px',
@@ -40987,6 +41647,7 @@ class PraxisFilter {
40987
41647
  title: this.i18nLabels.advancedTitle || 'Filtro avançado',
40988
41648
  i18n: {
40989
41649
  saveAsShortcut: this.i18nLabels.saveAsShortcut,
41650
+ close: this.i18nLabels.close,
40990
41651
  cancel: this.i18nLabels.cancel,
40991
41652
  apply: this.i18nLabels.apply,
40992
41653
  noData: this.i18nLabels.noData,
@@ -41084,7 +41745,9 @@ class PraxisFilter {
41084
41745
  this.schemaLoadVersion += 1;
41085
41746
  this.schemaError = false;
41086
41747
  this.setSchemaLoading(false);
41087
- this.schemaMetas = source.map((meta) => ({ ...meta }));
41748
+ this.schemaMetas = source.map((meta) => ({
41749
+ ...meta,
41750
+ }));
41088
41751
  this.lastSchemaMeta = undefined;
41089
41752
  this.clearSchemaMetaPersistence();
41090
41753
  this.applySchemaMetas();
@@ -41139,7 +41802,9 @@ class PraxisFilter {
41139
41802
  if (nextJson && nextJson === this.lastSavedConfigJson) {
41140
41803
  return;
41141
41804
  }
41142
- this.filterConfig.save(this.configKey, config);
41805
+ void Promise.resolve(this.filterConfig.save(this.configKey, config)).catch((error) => {
41806
+ this.getLogger().error('PFILTER:config:save:error', this.buildFilterLogOptions({ error }, 'config.save'));
41807
+ });
41143
41808
  this.lastSavedConfigJson = nextJson || null;
41144
41809
  }
41145
41810
  }
@@ -41187,7 +41852,10 @@ class PraxisFilter {
41187
41852
  if (this.allowSaveTags) {
41188
41853
  const key = this.filterTagsKey();
41189
41854
  if (key) {
41190
- this.configStorage.saveConfig(key, this.savedTags).pipe(take$1(1)).subscribe();
41855
+ this.configStorage
41856
+ .saveConfig(key, this.savedTags)
41857
+ .pipe(take$1(1))
41858
+ .subscribe();
41191
41859
  }
41192
41860
  }
41193
41861
  }
@@ -41217,16 +41885,18 @@ class PraxisFilter {
41217
41885
  return serializeEntityLookupValueForPayload(value, {
41218
41886
  payloadMode: meta?.payloadMode,
41219
41887
  multiple: meta?.multiple === true,
41220
- entityType: String(meta?.optionSource?.entityKey || '').trim() || undefined,
41888
+ entityType: String(meta?.optionSource?.entityKey || '').trim() ||
41889
+ undefined,
41221
41890
  });
41222
41891
  }
41223
41892
  getFilterFieldMetaByName(fieldName) {
41224
41893
  const normalizedFieldName = String(fieldName || '').trim();
41225
41894
  if (!normalizedFieldName)
41226
41895
  return null;
41227
- return (this.schemaMetas?.find((meta) => meta.name === normalizedFieldName) ||
41896
+ return ((this.schemaMetas?.find((meta) => meta.name === normalizedFieldName) ||
41228
41897
  (this.fieldMetadata || []).find((meta) => meta.name === normalizedFieldName) ||
41229
- this.getEditableFieldMeta(normalizedFieldName)) ?? null;
41898
+ this.getEditableFieldMeta(normalizedFieldName)) ??
41899
+ null);
41230
41900
  }
41231
41901
  isEntityLookupFilterField(meta) {
41232
41902
  if (!meta)
@@ -41237,7 +41907,8 @@ class PraxisFilter {
41237
41907
  return (controlType === FieldControlType.ENTITY_LOOKUP ||
41238
41908
  normalizedControlType === 'entitylookup' ||
41239
41909
  controlTypeToken === 'entitylookup' ||
41240
- controlTypeToken === normalizeControlTypeToken(INLINE_ENTITY_LOOKUP_CONTROL_TYPE) ||
41910
+ controlTypeToken ===
41911
+ normalizeControlTypeToken(INLINE_ENTITY_LOOKUP_CONTROL_TYPE) ||
41241
41912
  meta?.entityLookup === true);
41242
41913
  }
41243
41914
  isEffectivelyEmptyFilterValue(value) {
@@ -41250,7 +41921,8 @@ class PraxisFilter {
41250
41921
  if (value instanceof Date)
41251
41922
  return Number.isNaN(value.getTime());
41252
41923
  if (Array.isArray(value)) {
41253
- return value.length === 0 || value.every((item) => this.isEffectivelyEmptyFilterValue(item));
41924
+ return (value.length === 0 ||
41925
+ value.every((item) => this.isEffectivelyEmptyFilterValue(item)));
41254
41926
  }
41255
41927
  if (value instanceof Set || value instanceof Map) {
41256
41928
  return value.size === 0;
@@ -41293,7 +41965,10 @@ class PraxisFilter {
41293
41965
  onGlobalKeydown(event) {
41294
41966
  try {
41295
41967
  // Atalho: "/" foca o quick, exceto quando já está digitando em um campo
41296
- if (event.key === '/' && !event.altKey && !event.ctrlKey && !event.metaKey) {
41968
+ if (event.key === '/' &&
41969
+ !event.altKey &&
41970
+ !event.ctrlKey &&
41971
+ !event.metaKey) {
41297
41972
  const target = event.target;
41298
41973
  if (!this.isEditableElement(target)) {
41299
41974
  event.preventDefault();
@@ -41302,7 +41977,10 @@ class PraxisFilter {
41302
41977
  }
41303
41978
  }
41304
41979
  // Atalho: "F" abre/fecha o seletor de Adicionar (quando não digitando em campo)
41305
- if ((event.key === 'f' || event.key === 'F') && !event.altKey && !event.ctrlKey && !event.metaKey) {
41980
+ if ((event.key === 'f' || event.key === 'F') &&
41981
+ !event.altKey &&
41982
+ !event.ctrlKey &&
41983
+ !event.metaKey) {
41306
41984
  const target = event.target;
41307
41985
  if (!this.isEditableElement(target)) {
41308
41986
  event.preventDefault();
@@ -41352,7 +42030,7 @@ class PraxisFilter {
41352
42030
  default: { baseUrl: '' },
41353
42031
  }),
41354
42032
  },
41355
- ], viewQueries: [{ propertyName: "addManagerOrigin", first: true, predicate: ["addManagerOrigin"], descendants: true, read: ElementRef }, { propertyName: "addManagerSearch", first: true, predicate: PdxCollectionSearchComponent, descendants: true }, { propertyName: "anchorRef", first: true, predicate: ["anchorRef"], descendants: true, read: CdkOverlayOrigin }, { propertyName: "addAnchor", first: true, predicate: ["addAnchor"], descendants: true, read: CdkOverlayOrigin }, { propertyName: "advancedButton", first: true, predicate: ["advancedButton"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "@if (saving) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n}\n@if (schemaError) {\n <div class=\"schema-error-banner\" role=\"alert\" aria-live=\"polite\">\n <mat-icon [praxisIcon]=\"'error_outline'\" aria-hidden=\"true\"></mat-icon>\n <span class=\"schema-error-message\">{{\n i18nLabels.errorLoadingFilters || \"Erro ao carregar filtros.\"\n }}</span>\n <button\n mat-stroked-button\n class=\"schema-error-retry\"\n type=\"button\"\n (click)=\"retrySchemaLoad()\"\n [attr.aria-label]=\"i18nLabels.retry || 'Tentar novamente'\"\n >\n {{ i18nLabels.retry || \"Tentar novamente\" }}\n </button>\n </div>\n}\n\n<ng-template #filterTagsTemplate>\n @if (displayedTags.length) {\n <div\n class=\"praxis-filter-tags\"\n [class.outlined]=\"tagVariant === 'outlined'\"\n [class.tag-color-basic]=\"tagColor === 'basic'\"\n [class.tag-color-primary]=\"tagColor === 'primary'\"\n [class.tag-color-accent]=\"tagColor === 'accent'\"\n [class.tag-color-warn]=\"tagColor === 'warn'\"\n >\n <mat-chip-set [attr.aria-label]=\"i18nLabels.shortcutsLabel || 'Atalhos'\">\n @for (tag of displayedTags; track trackById($index, tag)) {\n <mat-chip\n [class.active]=\"isActiveTag(tag)\"\n [color]=\"\n tagVariant === 'outlined' || tagColor === 'basic'\n ? null\n : tagColor\n \"\n [highlighted]=\"tagVariant === 'filled' && tagColor !== 'basic'\"\n (click)=\"toggleTag(tag)\"\n (keydown.enter)=\"toggleTag(tag)\"\n (keydown.space)=\"toggleTag(tag)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-pressed]=\"isActiveTag(tag)\"\n >\n @if (editingTagId !== tag.id) {\n @if (isActiveTag(tag)) {\n <span class=\"chip-leading\">\n <mat-icon class=\"leading-check\">check</mat-icon>\n </span>\n }\n <span class=\"chip-label\">{{ tag.label }}</span>\n @if (isUserTag(tag)) {\n <span class=\"chip-trailing\">\n <button\n praxisIconButton=\"more_vert\"\n size=\"compact\"\n [matMenuTriggerFor]=\"tagMenu\"\n (click)=\"$event.stopPropagation()\"\n [attr.aria-label]=\"getTagActionsAriaLabel(tag)\"\n ></button>\n <mat-menu #tagMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"startEditTag(tag, $event)\">\n <mat-icon>edit</mat-icon>\n <span>{{ i18nLabels.renameShortcut }}</span>\n </button>\n <button mat-menu-item (click)=\"deleteTag(tag)\">\n <mat-icon>delete</mat-icon>\n <span>{{ i18nLabels.removeShortcut }}</span>\n </button>\n </mat-menu>\n </span>\n } @else {\n <span\n class=\"chip-readonly\"\n [matTooltip]=\"i18nLabels.readonlyShortcut\"\n aria-hidden=\"true\"\n >\n <mat-icon [praxisIcon]=\"'lock'\" aria-hidden=\"true\"></mat-icon>\n </span>\n }\n } @else {\n <input\n matInput\n class=\"chip-editor\"\n [formControl]=\"editingTagLabel\"\n autofocus\n [matTooltip]=\"'Enter para salvar, Esc para cancelar'\"\n matTooltipPosition=\"below\"\n (keydown.enter)=\"commitEditTag(tag, $event)\"\n (keydown.escape)=\"cancelEditTag($event)\"\n (blur)=\"commitEditTag(tag, $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n </mat-chip>\n }\n </mat-chip-set>\n </div>\n }\n</ng-template>\n\n<form\n class=\"praxis-filter-bar\"\n [class.is-open]=\"advancedOpen\"\n [class.has-compact]=\"\n compactSelectedMetas.length || compactAlwaysVisibleMetas.length\n \"\n [class.tag-variant-filled]=\"tagVariant === 'filled'\"\n [class.tag-variant-outlined]=\"tagVariant === 'outlined'\"\n [class.tag-color-basic]=\"tagColor === 'basic'\"\n [class.tag-color-primary]=\"tagColor === 'primary'\"\n [class.tag-color-accent]=\"tagColor === 'accent'\"\n [class.tag-color-warn]=\"tagColor === 'warn'\"\n (click)=\"onFieldInteraction($event)\"\n (focusin)=\"onFieldInteraction($event)\"\n (change)=\"$event.stopPropagation()\"\n (submit)=\"onSubmit(); $event.preventDefault(); $event.stopPropagation()\"\n>\n @if (compactSelectedMetas.length || compactAlwaysVisibleMetas.length) {\n <div class=\"compact-fields\">\n @if (compactSelectedMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"compactSelectedMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onSelectedComponents($event)\"\n ></ng-container>\n }\n @if (compactAlwaysVisibleMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"compactAlwaysVisibleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onAlwaysComponents($event)\"\n ></ng-container>\n }\n </div>\n }\n\n @if (gridSelectedMetas.length || gridAlwaysVisibleMetas.length) {\n <div class=\"fields-grid\">\n @if (gridSelectedMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"gridSelectedMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onSelectedComponents($event)\"\n ></ng-container>\n }\n @if (gridAlwaysVisibleMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"gridAlwaysVisibleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onAlwaysComponents($event)\"\n ></ng-container>\n }\n </div>\n }\n\n <div class=\"query-auxiliary\" data-filter-region=\"query-auxiliary\">\n @if (compactSelectedMetas.length || compactAlwaysVisibleMetas.length) {\n <ng-container [ngTemplateOutlet]=\"filterTagsTemplate\"></ng-container>\n }\n\n <div\n class=\"inline-actions\"\n [class.actions-outlined]=\"actionsVariant === 'outlined'\"\n >\n <div\n class=\"actions-anchor\"\n #anchorRef=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n ></div>\n @if (toggleMetas.length) {\n <div class=\"inline-toggles\">\n <ng-container\n dynamicFieldLoader\n [fields]=\"toggleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onToggleComponents($event)\"\n ></ng-container>\n </div>\n }\n\n @if (\n showAdvancedButton ||\n showAddButton ||\n showFilterSettings ||\n isFieldAuthoringEnabled()\n ) {\n <div class=\"action-cluster action-cluster--manage\">\n @if (showAdvancedButton) {\n <button\n #advancedButton\n praxisIconButton=\"filter_list\"\n size=\"compact\"\n class=\"cluster-btn\"\n [busy]=\"advancedOpening\"\n [class.is-opening]=\"advancedOpening\"\n [class.is-disabled]=\"!hasAdvancedFields()\"\n type=\"button\"\n (click)=\"toggleAdvanced()\"\n [attr.aria-label]=\"getAdvancedAriaLabel()\"\n [attr.aria-expanded]=\"advancedOpen\"\n [attr.aria-disabled]=\"!hasAdvancedFields()\"\n [attr.aria-busy]=\"advancedOpening ? 'true' : null\"\n [matTooltip]=\"getAdvancedTooltip()\"\n matTooltipPosition=\"below\"\n [attr.aria-controls]=\"advancedPanelId\"\n ></button>\n }\n @if (showAddButton) {\n <button\n #addManagerOrigin=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n mat-button\n class=\"cluster-btn add-trigger\"\n type=\"button\"\n data-testid=\"filter-manage-fields-trigger\"\n [attr.aria-label]=\"getAddAriaLabel()\"\n [matTooltip]=\"getAddTooltip()\"\n matTooltipPosition=\"below\"\n [class.is-disabled]=\"!hasAddableFields()\"\n [attr.aria-disabled]=\"!hasAddableFields()\"\n [attr.aria-expanded]=\"addManagerOpen\"\n aria-haspopup=\"dialog\"\n [attr.aria-controls]=\"addManagerOpen ? addManagerTitleId : null\"\n (click)=\"toggleAddManager()\"\n >\n <mat-icon\n [praxisIcon]=\"'filter_list'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span class=\"add-trigger-label\">{{ getAddTriggerLabel() }}</span>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"addManagerOrigin\"\n [cdkConnectedOverlayOpen]=\"addManagerOpen\"\n [cdkConnectedOverlayPositions]=\"addOverlayPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeAddManager()\"\n (detach)=\"closeAddManager()\"\n (overlayKeydown)=\"$event.key === 'Escape' && closeAddManager()\"\n >\n <section\n class=\"add-manager\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"addManagerTitleId\"\n [attr.aria-describedby]=\"addManagerDescriptionId\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n >\n <header class=\"add-manager__header\">\n <div>\n <h2 [id]=\"addManagerTitleId\">\n {{\n i18nLabels.manageFieldsTitle ||\n \"Gerenciar campos de filtro\"\n }}\n </h2>\n <p [id]=\"addManagerDescriptionId\">\n {{\n i18nLabels.manageFieldsDescription ||\n \"Escolha os campos exibidos na barra de filtros.\"\n }}\n </p>\n </div>\n <button\n praxisIconButton=\"close\"\n size=\"compact\"\n type=\"button\"\n (click)=\"closeAddManager()\"\n [attr.aria-label]=\"i18nLabels.close || 'Fechar'\"\n ></button>\n </header>\n <div class=\"add-manager__search\">\n <pdx-collection-search\n [value]=\"addQuery\"\n [placeholder]=\"\n i18nLabels.filtersSearch || i18nLabels.searchPlaceholder\n \"\n [ariaLabel]=\"\n i18nLabels.filtersSearch || i18nLabels.searchPlaceholder\n \"\n [clearAriaLabel]=\"i18nLabels.clearSearch || 'Limpar busca'\"\n (valueChange)=\"onAddQuery($event)\"\n />\n </div>\n <div class=\"add-manager__bulk\">\n <mat-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected() && !isAllSelected()\"\n [disabled]=\"!addItems.length || addManagerConflict\"\n (change)=\"toggleSelectAll()\"\n >\n {{\n i18nLabels.selectAllResults ||\n i18nLabels.selectAll ||\n \"Selecionar todos os resultados\"\n }}\n </mat-checkbox>\n </div>\n <div\n class=\"add-manager__list\"\n role=\"group\"\n [attr.aria-label]=\"\n i18nLabels.manageFieldsTitle || 'Gerenciar campos de filtro'\n \"\n >\n @if (getAddManagerSelectedItems().length) {\n <section\n class=\"add-manager__section add-manager__section--selected\"\n [attr.aria-label]=\"\n i18nLabels.selectedFieldsSectionTitle ||\n 'Campos exibidos'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.selectedFieldsSectionTitle ||\n \"Campos exibidos\"\n }}\n <span>{{ getAddManagerSelectedFieldsSummary() }}</span>\n </h3>\n @for (\n it of getAddManagerSelectedItems();\n track trackById($index, it)\n ) {\n <mat-checkbox\n class=\"add-manager__item\"\n [attr.data-field-id]=\"it.id\"\n [checked]=\"isAddManagerFieldSelected(it.id)\"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n [attr.aria-description]=\"\n getAddManagerFieldAriaDescription(it)\n \"\n [class.add-manager__item--added]=\"\n isAddManagerItemInMotion(it.id, 'added')\n \"\n [class.add-manager__item--removed]=\"\n isAddManagerItemInMotion(it.id, 'removed')\n \"\n [class.add-manager__item--pending]=\"\n isAddManagerFieldPendingRemoval(it.id)\n \"\n [disabled]=\"addManagerConflict\"\n (change)=\"toggleManagedField(it.id, $event.checked)\"\n >\n {{ it.label }}\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n @if (\n getAddManagerFieldPendingLabel(it.id);\n as pendingLabel\n ) {\n <span class=\"add-manager__item-pending\">{{\n pendingLabel\n }}</span>\n }\n </mat-checkbox>\n }\n </section>\n }\n @if (getAddManagerAvailableItems().length) {\n <section\n class=\"add-manager__section\"\n [attr.aria-label]=\"\n i18nLabels.availableFieldsSectionTitle ||\n 'Campos dispon\u00EDveis'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.availableFieldsSectionTitle ||\n \"Campos dispon\u00EDveis\"\n }}\n </h3>\n @for (\n it of getAddManagerAvailableItems();\n track trackById($index, it)\n ) {\n <mat-checkbox\n class=\"add-manager__item\"\n [attr.data-field-id]=\"it.id\"\n [checked]=\"isAddManagerFieldSelected(it.id)\"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n [attr.aria-description]=\"\n getAddManagerFieldAriaDescription(it)\n \"\n [class.add-manager__item--added]=\"\n isAddManagerItemInMotion(it.id, 'added')\n \"\n [class.add-manager__item--removed]=\"\n isAddManagerItemInMotion(it.id, 'removed')\n \"\n [class.add-manager__item--pending]=\"\n isAddManagerFieldPendingAddition(it.id)\n \"\n [disabled]=\"addManagerConflict\"\n (change)=\"toggleManagedField(it.id, $event.checked)\"\n >\n {{ it.label }}\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n @if (\n getAddManagerFieldPendingLabel(it.id);\n as pendingLabel\n ) {\n <span class=\"add-manager__item-pending\">{{\n pendingLabel\n }}</span>\n }\n </mat-checkbox>\n }\n </section>\n }\n @if (!addItems.length) {\n <div class=\"add-manager__empty\" role=\"status\">\n <mat-icon\n [praxisIcon]=\"'search_off'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{\n addQuery\n ? i18nLabels.noFilterFieldsFound ||\n \"Nenhum campo encontrado.\"\n : i18nLabels.addUnavailable ||\n \"Todos os campos j\u00E1 est\u00E3o vis\u00EDveis\"\n }}</span>\n </div>\n }\n </div>\n <div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ addManagerAnnouncement }}\n </div>\n @if (addManagerConflict) {\n <div\n class=\"add-manager__notice add-manager__notice--conflict\"\n role=\"alert\"\n >\n <mat-icon\n [praxisIcon]=\"'sync_problem'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{ i18nLabels.fieldSelectionConflict }}</span>\n </div>\n } @else if (getRemovedActiveFieldLabels().length) {\n <div\n class=\"add-manager__notice add-manager__notice--warning\"\n role=\"status\"\n >\n <mat-icon\n [praxisIcon]=\"'warning_amber'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span\n >{{ i18nLabels.removingActiveFields }}\n {{ getRemovedActiveFieldLabels().join(\", \") }}</span\n >\n </div>\n }\n <footer class=\"add-manager__footer\">\n <button mat-button type=\"button\" (click)=\"closeAddManager()\">\n {{ i18nLabels.cancel }}\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"!isAddManagerDirty() || addManagerConflict\"\n (click)=\"applyAddManager()\"\n >\n {{ i18nLabels.manageFieldsApply || \"Aplicar\" }}\n @if (isAddManagerDirty()) {\n ({{ getAddManagerChangeCount() }})\n }\n </button>\n </footer>\n </section>\n </ng-template>\n }\n @if (showFilterSettings) {\n <button\n praxisIconButton=\"settings\"\n size=\"compact\"\n class=\"cluster-btn separator-before\"\n type=\"button\"\n (click)=\"openSettings()\"\n [matBadge]=\"schemaOutdated ? '!' : ''\"\n [matBadgeHidden]=\"!schemaOutdated\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n [matTooltip]=\"getSettingsTooltip()\"\n matTooltipPosition=\"below\"\n [attr.aria-label]=\"getSettingsAriaLabel()\"\n ></button>\n }\n @if (isFieldAuthoringEnabled() && activeEditableFieldMeta) {\n <button\n praxisIconButton=\"tune\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"button\"\n data-testid=\"filter-field-settings-trigger\"\n [attr.aria-label]=\"activeEditableFieldLabel\"\n (click)=\"openSelectedFieldEditor()\"\n ></button>\n }\n </div>\n }\n\n @if (activeFiltersCount > 0 || showSearchButton) {\n <div class=\"action-cluster action-cluster--query\">\n @if (activeFiltersCount > 0) {\n <span\n class=\"active-filter-summary\"\n data-testid=\"active-filter-summary\"\n >\n <mat-icon\n [praxisIcon]=\"'filter_alt'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{ getActiveFiltersLabel() }}</span>\n </span>\n }\n @if (showClearButton && activeFiltersCount > 0) {\n <button\n praxisIconButton=\"filter_alt_off\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"button\"\n data-testid=\"filter-clear-trigger\"\n (click)=\"onClear()\"\n [attr.aria-label]=\"i18nLabels.clear\"\n [matTooltip]=\"i18nLabels.clear\"\n matTooltipPosition=\"below\"\n ></button>\n }\n @if (showSearchButton) {\n <button\n praxisIconButton=\"search\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"submit\"\n [attr.aria-label]=\"i18nLabels.apply\"\n [matTooltip]=\"i18nLabels.apply\"\n matTooltipPosition=\"below\"\n ></button>\n }\n </div>\n }\n\n <span class=\"sr-only\" aria-live=\"polite\">{{\n advancedOpening\n ? i18nLabels.advancedOpening || \"Abrindo filtro avan\u00E7ado...\"\n : getAddAriaLabel()\n }}</span>\n </div>\n </div>\n\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n data-testid=\"active-filters-announcement\"\n >\n {{ getActiveFiltersLabel() }}\n </span>\n <button\n type=\"submit\"\n class=\"hidden-submit\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n ></button>\n</form>\n\n@if (!(compactSelectedMetas.length || compactAlwaysVisibleMetas.length)) {\n <ng-container [ngTemplateOutlet]=\"filterTagsTemplate\"></ng-container>\n}\n", styles: ["@charset \"UTF-8\";:root{--pfx-filter-h: 42px;--pfx-filter-align-offset: 2px;--pfx-gap-x: 12px;--pfx-gap-y: 8px;--pfx-always-max-desktop: 380px;--pfx-slider-span-desktop: 2;--pfx-advanced-pad-x: 24px;--pfx-field-min: 280px;--pfx-overlay-margin-y: 16px;--pfx-overlay-margin-x: 16px}:host-context(.theme-light){--pfx-surface-border: var( --praxis-theme-outline-strong, var(--md-sys-color-outline) )}:host{--border-color: var( --praxis-theme-outline, var(--md-sys-color-outline-variant) );--border-color-hover: var( --praxis-theme-outline-strong, var(--md-sys-color-outline) );--pfx-overlay-surface: var( --praxis-theme-surface-raised, var(--md-sys-color-surface-container) );--pfx-overlay-surface-elev: var( --praxis-theme-surface-overlay, var(--md-sys-color-surface-container-high) );--pfx-overlay-surface-variant: var( --praxis-theme-surface-raised, var(--md-sys-color-surface-variant) );--pfx-overlay-on-surface: var( --praxis-theme-on-surface, var(--md-sys-color-on-surface) );--pfx-overlay-on-surface-variant: var( --praxis-theme-on-surface-muted, var(--md-sys-color-on-surface-variant) );display:block;width:100%;min-width:0;flex:1 1 auto;container-name:praxis-filter;container-type:inline-size}.schema-error-banner{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 10px;border-radius:10px;border:1px solid color-mix(in srgb,var(--md-sys-color-error) 50%,transparent);background:color-mix(in srgb,var(--md-sys-color-error-container) 85%,transparent);color:var(--md-sys-color-on-error-container)}.schema-error-message{min-width:0;flex:1 1 auto;font-size:.8125rem}:host ::ng-deep .schema-error-retry.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: color-mix( in srgb, var(--md-sys-color-error) 55%, var(--md-sys-color-outline) )}.praxis-filter-bar{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto;column-gap:6px;row-gap:6px;align-items:center}.inline-actions .actions-anchor{width:0;height:0;overflow:hidden}.query-auxiliary{grid-column:2;grid-row:1;display:flex;align-items:center;flex-wrap:nowrap;gap:6px;justify-self:end;align-self:center;width:fit-content;max-width:100%;min-width:0}.inline-actions{flex:0 0 auto;display:flex;gap:6px;white-space:nowrap;height:var(--pfx-filter-h);align-items:center;padding:0 2px}.action-cluster{flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;min-height:36px;padding:2px;border-radius:999px;border:1px solid var(--pfx-surface-border, var(--md-sys-color-outline-variant));background:var(--md-sys-color-surface-container-highest)}.action-cluster--manage{position:relative;border-color:color-mix(in srgb,var(--md-sys-color-primary) 35%,var(--md-sys-color-outline-variant));background:var(--md-sys-color-surface-container-high)}.active-filter-summary{display:inline-flex;align-items:center;min-height:30px;gap:5px;padding:0 9px;border-radius:var(--md-sys-shape-corner-full, 999px);background:var(--md-sys-color-secondary-container, var(--md-sys-color-primary-container));color:var(--md-sys-color-on-secondary-container, var(--md-sys-color-on-primary-container));font-size:.75rem;font-weight:600;line-height:1;letter-spacing:.01em;white-space:nowrap}.active-filter-summary mat-icon{width:16px;height:16px;font-size:16px}.action-cluster .cluster-btn.is-opening{pointer-events:none}.action-cluster .cluster-btn.is-disabled{color:color-mix(in srgb,var(--md-sys-color-on-surface) 38%,transparent);cursor:default;opacity:.56}.inline-actions.actions-outlined button[praxisIconButton]{border:1px solid var(--pfx-surface-border, var(--md-sys-color-outline-variant));border-radius:50%}.inline-actions.actions-outlined .action-cluster button[praxisIconButton]{border-color:transparent}.separator-before{position:relative;margin-left:10px}.separator-before:before{content:\"\";position:absolute;left:-7px;top:50%;width:1px;height:18px;transform:translateY(-50%);background:color-mix(in srgb,var(--md-sys-color-outline) 72%,transparent)}.inline-actions mat-icon{width:20px;height:20px;font-size:20px}.fields-grid{grid-column:1;grid-row:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--pfx-always-min, 220px),1fr));grid-auto-flow:row dense;gap:6px}.compact-fields{grid-column:1;grid-row:1;display:flex;flex-wrap:wrap;justify-content:flex-start;align-content:center;align-items:center;gap:6px;min-width:0;min-height:var(--pfx-filter-h)}.query-auxiliary .praxis-filter-tags{flex:0 1 auto;min-width:0;min-height:var(--pfx-filter-h);display:inline-flex;align-items:center}.query-auxiliary .praxis-filter-tags mat-chip-set{min-width:0}:host ::ng-deep .compact-fields .pfx-field-shell,:host ::ng-deep .compact-fields .pfx-field-shell-wrapper,:host ::ng-deep .compact-fields .pfx-field-shell-host{--pfx-field-shell-width: fit-content;--pfx-field-shell-field-width: auto;width:fit-content!important;max-width:100%;min-width:0;flex:0 1 auto!important}:host ::ng-deep .compact-fields>.pfx-field-shell,:host ::ng-deep .compact-fields>praxis-field-shell{flex:0 1 auto!important;width:fit-content!important;max-width:100%;min-width:0}:host ::ng-deep .compact-fields .pfx-field-shell .mat-mdc-form-field{width:auto!important;max-width:100%;margin-bottom:0}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{width:var(--pdx-inline-time-field-w, auto)!important;inline-size:var(--pdx-inline-time-field-w, auto)!important;max-width:min(var(--pdx-inline-time-max-w, 280px),100cqw - 24px)!important}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineDateRange] .mat-mdc-form-field{width:var(--pdx-inline-date-range-shell-width, auto)!important;max-width:100%!important}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:1}.praxis-filter-bar.has-compact .fields-grid{grid-column:1/-1;grid-row:2}@container praxis-filter (max-width: 900px){.praxis-filter-bar.has-compact{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.praxis-filter-bar.has-compact .compact-fields{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scrollbar-width:thin;scroll-padding-inline:2px;padding-block:2px}.praxis-filter-bar.has-compact .query-auxiliary{justify-content:flex-end;flex-wrap:nowrap;width:fit-content}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell,praxis-field-shell),:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){flex:0 0 auto!important;width:clamp(var(--pfx-compact-field-min, 148px),30cqw,var(--pfx-compact-field-max, 190px))!important;min-width:min(var(--pfx-compact-field-min, 148px),100cqw - 12px)!important}}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider] mat-slider,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] mat-slider,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] mat-slider{width:100%;display:block}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider] .pdx-slider-wrapper,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-slider-wrapper,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-slider-wrapper{padding-top:2px}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-range-slider-container,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-range-slider-container{padding:2px 0 0}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-slider-label,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-slider-label{margin-bottom:4px;line-height:1.15}:host ::ng-deep .fields-grid .mat-mdc-text-field-wrapper.mdc-text-field--outlined{min-height:var(--pfx-filter-h);align-items:center}:host ::ng-deep .fields-grid .mat-mdc-form-field-infix{min-height:var(--pfx-filter-h)}:host ::ng-deep .fields-grid .mat-mdc-select-trigger{height:var(--pfx-filter-h);align-items:center}:host ::ng-deep .fields-grid .mat-mdc-form-field{width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSearchableSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSearchableSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineMultiSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineMultiSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineInput]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineInput] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlinePhone]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlinePhone] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineToggle]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineToggle] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineRange]{justify-self:start}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineRange]{max-width:min(340px,100%)}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDate]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDate] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDateRange]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDateRange] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .mat-mdc-form-field-subscript-wrapper{min-height:0;margin-top:0}:host ::ng-deep .fields-grid .mat-mdc-form-field{margin-bottom:0}.praxis-filter-bar.has-compact{--pfx-filter-tag-color: var(--md-sys-color-primary-container);--pfx-filter-tag-on-color: var(--md-sys-color-on-primary-container);--pfx-filter-tag-outline-color: var(--md-sys-color-primary);--pdx-inline-control-height: var(--pfx-filter-inline-control-height, 42px);--pdx-inline-control-height-mobile: var( --pfx-filter-inline-control-height-mobile, 40px );--pdx-inline-control-padding-x: var( --pfx-filter-inline-control-padding-x, 12px );--pdx-inline-control-padding-x-mobile: var( --pfx-filter-inline-control-padding-x-mobile, 12px );--pdx-inline-clear-size: var(--pfx-filter-inline-clear-size, 24px);--pdx-inline-chip-radius: var( --pfx-filter-inline-chip-radius, var(--md-sys-shape-corner-full, 999px) );--pdx-inline-chip-active-bg: var(--pfx-filter-tag-color);--pdx-inline-chip-active-fg: var(--pfx-filter-tag-on-color);--pdx-inline-chip-active-clear-color: var(--pfx-filter-tag-on-color);--pdx-inline-field-focus-outline: var(--pfx-filter-tag-outline-color)}.praxis-filter-bar.has-compact.tag-color-accent{--pfx-filter-tag-color: var( --md-sys-color-tertiary-container, var(--md-sys-color-secondary-container) );--pfx-filter-tag-on-color: var( --md-sys-color-on-tertiary-container, var(--md-sys-color-on-secondary-container) );--pfx-filter-tag-outline-color: var( --md-sys-color-tertiary, var(--md-sys-color-secondary) )}.praxis-filter-bar.has-compact.tag-color-warn{--pfx-filter-tag-color: var(--md-sys-color-error-container);--pfx-filter-tag-on-color: var(--md-sys-color-on-error-container);--pfx-filter-tag-outline-color: var(--md-sys-color-error)}.praxis-filter-bar.has-compact.tag-color-basic{--pfx-filter-tag-color: color-mix( in srgb, var(--md-sys-color-on-surface) 10%, transparent );--pfx-filter-tag-on-color: var(--md-sys-color-on-surface);--pfx-filter-tag-outline-color: var(--md-sys-color-outline-variant)}:host ::ng-deep .praxis-filter-bar.has-compact{--pfx-filter-inline-chip-padding-x: var(--pdx-inline-control-padding-x);--pfx-filter-inline-icon-gap: 4px}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-text-field-wrapper.mdc-text-field--outlined{padding-inline:var(--pfx-filter-inline-chip-padding-x)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-prefix{align-items:center;display:inline-flex;flex:0 0 auto;margin-right:var(--pfx-filter-inline-icon-gap)!important;padding:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-suffix{align-items:center;display:inline-flex;flex:0 0 auto;gap:var(--pfx-filter-inline-icon-gap)!important;margin-left:var(--pfx-filter-inline-icon-gap)!important;padding:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-prefix>.mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-suffix>.mat-icon{flex:0 0 16px!important;font-size:16px!important;height:16px!important;line-height:16px!important;margin:0!important;padding:0!important;width:16px!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-infix{padding-inline:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select) .pdx-chip-trigger{gap:var(--pfx-filter-inline-icon-gap)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-currency-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-searchable-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-async-select.pdx-has-selection .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-value .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-both .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-entity-lookup.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-multi-select.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-distance-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-score-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-relative-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-relative-period-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-rating-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-pipeline-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-sentiment-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-color-label-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-time-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active{--pdx-inline-currency-symbol-color: var(--pfx-filter-tag-on-color);background:var(--pfx-filter-tag-color)!important;border-color:transparent!important;color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-currency-range-chip.is-active :where(.mat-icon,.pdx-inline-currency-range-value,.pdx-inline-currency-range-text,.pdx-inline-currency-range-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear) :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear,.pdx-inline-number-suffix),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-select,.pdx-inline-searchable-select) .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active) :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-async-select.pdx-has-selection :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-value :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-both :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-entity-lookup.pdx-has-selection,.pdx-inline-multi-select.pdx-has-selection) .pdx-chip-trigger :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active) :where(.mat-icon,button,span),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-time-range-chip.is-active :where(.pdx-inline-time-range-icon,.pdx-inline-time-range-text,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active :where(.pdx-inline-toggle-label,.mat-icon){color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-currency-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-searchable-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-async-select.pdx-has-selection .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-value .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-both .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-entity-lookup.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-multi-select.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-distance-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-score-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-relative-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-relative-period-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-rating-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-pipeline-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-sentiment-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-color-label-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-time-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active{--pdx-inline-currency-symbol-color: var(--pfx-filter-tag-outline-color);background:transparent!important;border-color:var(--pfx-filter-tag-outline-color)!important;box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-outline-color);color:var(--pfx-filter-tag-outline-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-currency-range-chip.is-active :where(.mat-icon,.pdx-inline-currency-range-value,.pdx-inline-currency-range-text,.pdx-inline-currency-range-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear) :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear,.pdx-inline-number-suffix),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-select,.pdx-inline-searchable-select) .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active) :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-async-select.pdx-has-selection :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-value :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-both :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-entity-lookup.pdx-has-selection,.pdx-inline-multi-select.pdx-has-selection) .pdx-chip-trigger :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active) :where(.mat-icon,button,span),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-time-range-chip.is-active :where(.pdx-inline-time-range-icon,.pdx-inline-time-range-text,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active :where(.pdx-inline-toggle-label,.mat-icon){color:var(--pfx-filter-tag-outline-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear){background:color-mix(in srgb,currentColor 16%,transparent)!important;border-radius:50%!important;color:inherit!important;display:inline-grid!important;flex:0 0 var(--pdx-inline-clear-size, 24px)!important;height:var(--pdx-inline-clear-size, 24px)!important;min-width:var(--pdx-inline-clear-size, 24px)!important;place-items:center!important;width:var(--pdx-inline-clear-size, 24px)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear):hover{background:color-mix(in srgb,currentColor 24%,transparent)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear) .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper:has(.pdx-inline-clear) .pdx-inline-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper:has(.pdx-inline-clear) .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active .pdx-inline-toggle-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active .pdx-inline-toggle-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active .pdx-chip-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active .pdx-chip-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}.praxis-filter-tags.outlined .mat-mdc-chip{background:transparent!important;--mat-chip-outline-width: 1px;--mat-chip-outline-color: var(--md-sys-color-outline-variant);box-shadow:inset 0 0 0 var(--mat-chip-outline-width) var(--mat-chip-outline-color)}.praxis-filter-tags.outlined.tag-color-primary .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-primary)}.praxis-filter-tags.outlined.tag-color-accent .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-tertiary)}.praxis-filter-tags.outlined.tag-color-warn .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-error)}.praxis-filter-tags.outlined mat-chip.active .mat-mdc-chip,.praxis-filter-tags.outlined .mat-mdc-chip.mat-mdc-chip-highlighted{--mat-chip-outline-width: 2px;box-shadow:inset 0 0 0 var(--mat-chip-outline-width) var(--mat-chip-outline-color)!important}.praxis-filter-tags.outlined.tag-color-basic mat-chip.active .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-primary)}.praxis-filter-tags .mat-mdc-standard-chip .mdc-evolution-chip__text-label{display:flex;align-items:center;justify-content:center;gap:4px;line-height:1.2;font-size:.875rem}.praxis-filter-tags .chip-leading,.praxis-filter-tags .chip-trailing,.praxis-filter-tags .chip-readonly{display:inline-flex;align-items:center;flex:0 0 auto}.praxis-filter-tags .leading-check{width:18px;height:18px;font-size:18px;line-height:1}.praxis-filter-tags .chip-label{display:inline-flex;align-items:center;min-width:0;line-height:1.25}.praxis-filter-tags .chip-readonly{margin-inline-start:8px;color:var(--mat-sys-on-surface-variant, var(--md-sys-color-on-surface-variant))}.praxis-filter-tags .chip-readonly .mat-icon{width:16px;height:16px;font-size:16px;line-height:16px}.praxis-filter-tags .mat-mdc-standard-chip{--mat-chip-container-height: 36px}.praxis-filter-advanced{display:flex;flex-direction:column;min-width:400px;max-width:90vw;min-height:260px;max-height:min(80vh,720px);margin:var(--pfx-overlay-margin-y) var(--pfx-overlay-margin-x);background-color:var(--pfx-overlay-surface)!important;background:var(--pfx-overlay-surface)!important;color:var(--pfx-overlay-on-surface);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--md-sys-elevation-level3)}.advanced-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px var(--pfx-advanced-pad-x) 10px;border-bottom:1px solid var(--border-color);background:var(--pfx-overlay-surface)}.advanced-title-block{display:flex;flex-direction:column;gap:2px}.advanced-title{font-size:1rem;font-weight:600;color:var(--pfx-overlay-on-surface)}.advanced-subtitle{font-size:.85rem;color:var(--pfx-overlay-on-surface-variant)}.advanced-close{align-self:flex-start}.praxis-filter-overlay.mobile .praxis-filter-advanced{height:100vh;max-height:100vh;margin:0;border-radius:0}:host ::ng-deep .praxis-overlay-backdrop{background:var(--md-sys-color-scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}:host ::ng-deep .praxis-filter-overlay.frosted .praxis-filter-advanced{background:var(--pfx-overlay-surface-variant)!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-color:var(--border-color)}:host ::ng-deep .praxis-filter-overlay.frosted .advanced-header,:host ::ng-deep .praxis-filter-overlay.frosted .advanced-actions{background:var(--pfx-overlay-surface-variant)!important}.advanced-body{padding:12px var(--pfx-advanced-pad-x) 72px;overflow:auto;flex:1 1 auto;overscroll-behavior:contain}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-row{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(var(--pfx-field-min),1fr));gap:var(--pfx-gap-y) var(--pfx-gap-x)}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-column{min-width:0}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-column .mat-mdc-form-field{width:100%}.advanced-actions{position:sticky;bottom:0;z-index:2;display:flex;justify-content:flex-end;gap:8px;padding:var(--pfx-gap-y) var(--pfx-advanced-pad-x);background-color:var(--pfx-overlay-surface)!important;background:var(--pfx-overlay-surface)!important;border-top:1px solid var(--border-color);box-shadow:0 -1px 0 var(--md-sys-color-outline-variant)}.advanced-actions .mat-mdc-button-base{height:40px}.advanced-actions .mat-mdc-raised-button.mat-primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}:host ::ng-deep .praxis-filter-advanced .mat-mdc-text-field-wrapper.mdc-text-field--outlined{--mdc-outlined-text-field-outline-color: var(--border-color);--mdc-outlined-text-field-hover-outline-color: var(--border-color-hover);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-label-text-color: var( --pfx-overlay-on-surface-variant );--mdc-outlined-text-field-input-text-color: var(--pfx-overlay-on-surface);--mdc-outlined-text-field-container-color: var(--pfx-overlay-surface)}:host ::ng-deep .praxis-filter-advanced .mat-mdc-select-trigger,:host ::ng-deep .praxis-filter-advanced .mat-mdc-form-field-subscript-wrapper,:host ::ng-deep .praxis-filter-advanced .mat-mdc-form-field-infix{color:var(--pfx-overlay-on-surface)}@container praxis-filter (min-width: 600px){.fields-grid{gap:6px 8px}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@container praxis-filter (max-width: 640px){.praxis-filter-bar.has-compact{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:1;display:flex;flex-wrap:nowrap;align-items:center;width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scrollbar-width:thin}.praxis-filter-bar.has-compact .query-auxiliary{grid-column:1;grid-row:2;justify-self:start;width:100%;height:auto;align-self:start}.praxis-filter-bar.has-compact .query-auxiliary .praxis-filter-tags{flex:0 1 auto;min-width:0;min-height:40px}.praxis-filter-bar.has-compact .query-auxiliary .praxis-filter-tags mat-chip-set,.praxis-filter-bar.has-compact .query-auxiliary .praxis-filter-tags mat-chip{max-width:100%}.praxis-filter-bar.has-compact .query-auxiliary .praxis-filter-tags mat-chip{min-height:44px}.praxis-filter-bar.has-compact .inline-actions .action-cluster{max-width:100%;min-height:44px;padding-block:0}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>.pfx-field-shell,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>praxis-field-shell,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){--pfx-field-shell-width: auto;--pfx-field-shell-field-width: auto;flex:0 0 auto!important;width:min(var(--pfx-compact-field-max, 190px),100cqw - 12px)!important;min-width:min(var(--pfx-compact-field-min, 148px),100cqw - 12px)!important;max-width:none!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-host{--pfx-field-shell-width: auto;--pfx-field-shell-field-width: auto;width:100%!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .mat-mdc-form-field,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-currency-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-distance-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-score-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-relative-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-relative-period-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-rating-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-pipeline-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-sentiment-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-color-label-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-time-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-toggle-pill{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range .pdx-inline-date-range-root,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range .mat-mdc-form-field.pdx-inline-date-range{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :where(.pdx-chip-label,.pdx-chip-trigger,.pdx-inline-range-text,.pdx-inline-currency-range-text,.pdx-inline-distance-text,.pdx-inline-score-text,.pdx-inline-relative-text,.pdx-inline-relative-period-text,.pdx-inline-rating-text,.pdx-inline-pipeline-text,.pdx-inline-sentiment-text,.pdx-inline-color-label-text,.pdx-inline-time-range-text,.pdx-inline-toggle-label){min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime],:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-host{--pfx-field-shell-width: fit-content;--pfx-field-shell-field-width: var(--pdx-inline-time-field-w, auto);justify-self:start;width:fit-content!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{width:var(--pdx-inline-time-field-w, auto)!important;inline-size:var(--pdx-inline-time-field-w, auto)!important;max-width:min(var(--pdx-inline-time-max-w, 280px),100cqw - 24px)!important}}@container praxis-filter (min-width: 960px){.fields-grid{gap:6px 10px}}@container praxis-filter (min-width: 1200px){.fields-grid{grid-template-columns:repeat(auto-fit,minmax(var(--pfx-always-min, 220px),var(--pfx-always-max-desktop, 380px)));justify-content:start;align-content:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeslider]{grid-column:span var(--pfx-slider-span-desktop, 2)}}.inline-toggles{display:flex;align-items:center;gap:8px;margin:0 4px 0 6px}:host ::ng-deep .inline-actions .mat-mdc-slide-toggle{height:var(--pfx-filter-h);display:flex;align-items:center}:host ::ng-deep .inline-actions .mat-mdc-slide-toggle .mdc-form-field{align-items:center}::ng-deep .praxis-filter-overlay .praxis-filter-advanced .praxis-filter-form .filter-row{display:grid!important;gap:var(--pfx-gap-y, 1px) var(--pfx-gap-x, 6px)}@media(min-width:600px){::ng-deep .praxis-filter-overlay .praxis-filter-advanced .praxis-filter-form .filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important}.hidden-submit{position:absolute!important;width:0!important;height:0!important;padding:0!important;margin:0!important;border:0!important;opacity:0!important;pointer-events:none!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;overflow:hidden!important}:host ::ng-deep .inline-actions [matBadge] .mat-badge-content{top:-6px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-size:10px;font-weight:700;line-height:16px;letter-spacing:0;text-indent:0;color:var(--md-sys-color-on-primary, #fff)}:host ::ng-deep .inline-actions [matBadge][matbadgecolor=warn] .mat-badge-content,:host ::ng-deep .inline-actions [matBadge].mat-badge-warn .mat-badge-content{color:var(--md-sys-color-on-error, #fff)}.praxis-filter-bar :where(.mat-mdc-slide-toggle .mdc-switch__icons){display:none!important}.praxis-filter-bar{--mdc-switch-unselected-icon-size: 0px;--mdc-switch-selected-icon-size: 0px;--pfx-always-min: 220px}.praxis-filter-card{display:flex;flex-direction:column;gap:6px;padding:8px 12px;border-radius:12px;border:1px solid var(--pfx-surface-border, var(--praxis-theme-outline, var(--md-sys-color-outline-variant)));background:var(--praxis-theme-surface-raised, var(--md-sys-color-surface-container));color:var(--praxis-theme-on-surface, var(--md-sys-color-on-surface))}.add-manager{--_pfx-field-manager-surface: var( --pfx-field-manager-surface, var( --praxis-theme-surface-overlay, var(--md-sys-color-surface-container-highest) ) );--_pfx-field-manager-on-surface: var( --pfx-field-manager-on-surface, var(--praxis-theme-on-surface, var(--md-sys-color-on-surface)) );--_pfx-field-manager-on-surface-muted: var( --pfx-field-manager-on-surface-muted, var(--praxis-theme-on-surface-muted, var(--md-sys-color-on-surface-variant)) );--_pfx-field-manager-outline: var( --pfx-field-manager-outline, var( --pdx-inline-field-outline, var(--praxis-theme-outline, var(--md-sys-color-outline-variant)) ) );--_pfx-field-manager-focus-outline: var( --pfx-field-manager-focus-outline, var( --pdx-inline-field-focus-outline, var(--praxis-theme-focus-outline, var(--md-sys-color-primary)) ) );--_pfx-field-manager-scrollbar-thumb: var( --pfx-field-manager-scrollbar-thumb, color-mix( in srgb, var(--_pfx-field-manager-on-surface) 42%, var(--_pfx-field-manager-surface) ) );--_pfx-field-manager-scrollbar-thumb-hover: var( --pfx-field-manager-scrollbar-thumb-hover, color-mix( in srgb, var(--_pfx-field-manager-on-surface) 64%, var(--_pfx-field-manager-surface) ) );--_pfx-field-manager-scrollbar-track: var( --pfx-field-manager-scrollbar-track, transparent );--_pfx-field-manager-scrollbar-size: var( --pfx-field-manager-scrollbar-size, 10px );display:flex;flex-direction:column;width:min(400px,100vw - 24px);max-height:min(70vh,560px);overflow:hidden;border:1px solid var(--_pfx-field-manager-outline);border-radius:var(--pfx-overlay-radius, 16px);background:var(--_pfx-field-manager-surface);color:var(--_pfx-field-manager-on-surface);box-shadow:var(--praxis-theme-elevation, var(--md-sys-elevation-level3))}.add-manager__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 16px 8px 20px}.add-manager__header h2{margin:0;font:var(--md-sys-typescale-title-medium)}.add-manager__header p{margin:4px 0 0;color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-body-small)}.add-manager__search{padding:8px 20px}.add-manager__bulk{padding:8px 20px;border-block:1px solid var(--_pfx-field-manager-outline)}.add-manager__list{display:flex;flex-direction:column;min-height:80px;overflow:auto;overscroll-behavior:contain;scrollbar-color:var(--_pfx-field-manager-scrollbar-thumb) var(--_pfx-field-manager-scrollbar-track);scrollbar-gutter:stable;scrollbar-width:auto;padding:4px 12px 12px}.add-manager__list::-webkit-scrollbar{width:var(--_pfx-field-manager-scrollbar-size);height:var(--_pfx-field-manager-scrollbar-size)}.add-manager__list::-webkit-scrollbar-track{background:var(--_pfx-field-manager-scrollbar-track)}.add-manager__list::-webkit-scrollbar-thumb{min-height:32px;border:2px solid transparent;border-radius:999px;background:var(--_pfx-field-manager-scrollbar-thumb);background-clip:padding-box}.add-manager__list::-webkit-scrollbar-thumb:hover{background:var(--_pfx-field-manager-scrollbar-thumb-hover);background-clip:padding-box}.add-manager__section+.add-manager__section{margin-top:8px;padding-top:8px;border-top:1px solid var(--_pfx-field-manager-outline)}.add-manager__section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0;padding:8px 8px 4px;color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-medium)}.add-manager__section-title span{color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-small);white-space:nowrap}.add-manager__item{display:flex;align-items:center;min-height:48px;padding-inline:8px;border-radius:var(--pfx-control-radius, 8px)}::ng-deep .add-manager__item .mdc-form-field{align-items:center}::ng-deep .add-manager__item .mdc-label{display:inline-flex;align-items:center;min-height:20px}.add-manager__item:hover{background:color-mix(in srgb,var(--_pfx-field-manager-on-surface) 6%,var(--_pfx-field-manager-surface))}.add-manager__item-info{width:16px;height:16px;margin-left:4px;vertical-align:text-bottom;color:var(--_pfx-field-manager-on-surface-muted);font-size:16px}.add-manager__item-pending{display:inline-flex;align-items:center;margin-left:8px;padding:2px 7px;border-radius:999px;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 14%,transparent);color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-small);white-space:nowrap}.add-manager__item--pending{background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}.add-manager__section--selected .add-manager__item{box-shadow:inset 2px 0 color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 56%,transparent)}.add-manager__item--added{animation:add-manager-item-added var(--md-sys-motion-duration-short4, .2s) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(.05, .7, .1, 1)) both}.add-manager__item--removed{animation:add-manager-item-removed var(--md-sys-motion-duration-short4, .2s) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(.05, .7, .1, 1)) both}@keyframes add-manager-item-added{0%{opacity:.72;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 24%,var(--_pfx-field-manager-surface))}to{opacity:1;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}}@keyframes add-manager-item-removed{0%{opacity:.72;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 72%,transparent)}to{opacity:1;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}}@media(prefers-reduced-motion:reduce){.add-manager__item--added,.add-manager__item--removed{animation:none}}.add-manager__empty{display:flex;align-items:center;justify-content:center;gap:8px;min-height:96px;padding:16px;color:var(--_pfx-field-manager-on-surface-muted);text-align:center}.add-manager__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--_pfx-field-manager-outline);background:var(--_pfx-field-manager-surface)}.add-manager__notice{display:flex;align-items:flex-start;gap:8px;padding:10px 16px;font:var(--md-sys-typescale-body-small)}.add-manager__notice mat-icon{flex:0 0 auto}.add-manager__notice--warning{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.add-manager__notice--conflict{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}@media(max-width:600px){.add-manager{width:calc(100vw - 16px);max-height:min(78dvh,640px);border-radius:var(--pfx-overlay-radius, 16px)}.add-manager__header,.add-manager__search{padding-inline:16px}}.inline-actions .add-trigger{display:inline-flex;align-items:center;gap:6px;height:32px;width:100%;max-width:100%;min-width:0;padding:0 10px;border-radius:0;border:0;background:transparent;overflow:visible}.inline-actions .add-trigger--icon{justify-content:center;width:32px;min-width:32px;padding:0}:host ::ng-deep .inline-actions .add-trigger mat-icon{width:18px;height:18px;font-size:18px;flex:0 0 auto}.inline-actions .add-trigger-label{display:inline-block;flex:1 1 auto;min-width:0;max-width:100%;text-align:left;direction:ltr;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;line-height:1}:host ::ng-deep .action-cluster--manage .mat-mdc-select{flex:0 0 auto;width:180px;min-width:0;max-width:180px}:host ::ng-deep .action-cluster--manage .cluster-select--hidden.mat-mdc-select{position:absolute;width:1px;min-width:1px;max-width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected{background:var(--pfx-filter-tag-color);color:var(--pfx-filter-tag-on-color);box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-color)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected{background:transparent;color:var(--pfx-filter-tag-outline-color);box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-outline-color)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected .pdx-chip-trigger.is-active{background:transparent!important;border-color:transparent!important;box-shadow:none!important;color:inherit!important}:host ::ng-deep .action-cluster--manage .mat-mdc-select-trigger{min-height:32px;padding:0}:host ::ng-deep .action-cluster--manage .mat-mdc-select-value,:host ::ng-deep .action-cluster--manage .mat-mdc-select-value-text,:host ::ng-deep .action-cluster--manage .mat-mdc-select-min-line{width:auto;min-width:0;max-width:100%;display:inline-flex;align-items:center;justify-content:flex-start;overflow:visible}.praxis-filter-card .summary-header{display:flex;align-items:center;gap:10px}.praxis-filter-card .summary-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.praxis-filter-card .summary-title{font-weight:600}.praxis-filter-card .summary-subtitle{opacity:.8;font-size:.875rem}.praxis-filter-card .summary-badges{display:flex;flex-wrap:wrap;gap:6px}.praxis-filter-card .summary-badges span{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-primary-container);border:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-primary-container);font-size:12px}.praxis-filter-card .card-actions{display:flex;gap:8px}:host ::ng-deep .inline-actions .mat-mdc-select-arrow-wrapper{display:none}.inline-actions .add-filter-btn{height:36px;border-radius:18px;padding:0 16px 0 12px}.inline-actions .add-filter-btn mat-icon{margin-right:8px;margin-left:-4px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i15.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i15.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i14$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i15$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick", "canvasFocus"] }, { kind: "component", type: PdxCollectionSearchComponent, selector: "pdx-collection-search", inputs: ["value", "placeholder", "ariaLabel", "clearAriaLabel", "disabled", "density", "icon", "clearIcon"], outputs: ["valueChange", "cleared"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i12.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i12.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i19.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
42033
+ ], viewQueries: [{ propertyName: "addManagerOrigin", first: true, predicate: ["addManagerOrigin"], descendants: true, read: ElementRef }, { propertyName: "addManagerSearch", first: true, predicate: ["addManagerSearch"], descendants: true }, { propertyName: "anchorRef", first: true, predicate: ["anchorRef"], descendants: true, read: CdkOverlayOrigin }, { propertyName: "addAnchor", first: true, predicate: ["addAnchor"], descendants: true, read: CdkOverlayOrigin }, { propertyName: "advancedButton", first: true, predicate: ["advancedButton"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "@if (saving) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n}\n@if (schemaError) {\n <div class=\"schema-error-banner\" role=\"alert\" aria-live=\"polite\">\n <mat-icon [praxisIcon]=\"'error_outline'\" aria-hidden=\"true\"></mat-icon>\n <span class=\"schema-error-message\">{{\n i18nLabels.errorLoadingFilters || \"Erro ao carregar filtros.\"\n }}</span>\n <button\n mat-stroked-button\n class=\"schema-error-retry\"\n type=\"button\"\n (click)=\"retrySchemaLoad()\"\n [attr.aria-label]=\"i18nLabels.retry || 'Tentar novamente'\"\n >\n {{ i18nLabels.retry || \"Tentar novamente\" }}\n </button>\n </div>\n}\n\n<ng-template #filterTagsTemplate>\n @if (displayedTags.length) {\n <div\n class=\"praxis-filter-tags\"\n [class.outlined]=\"tagVariant === 'outlined'\"\n [class.tag-color-basic]=\"tagColor === 'basic'\"\n [class.tag-color-primary]=\"tagColor === 'primary'\"\n [class.tag-color-accent]=\"tagColor === 'accent'\"\n [class.tag-color-warn]=\"tagColor === 'warn'\"\n >\n <mat-chip-set [attr.aria-label]=\"i18nLabels.shortcutsLabel || 'Atalhos'\">\n @for (tag of displayedTags; track trackById($index, tag)) {\n <mat-chip\n [class.active]=\"isActiveTag(tag)\"\n [color]=\"\n tagVariant === 'outlined' || tagColor === 'basic'\n ? null\n : tagColor\n \"\n [highlighted]=\"\n tagVariant === 'filled' &&\n tagColor !== 'basic' &&\n isActiveTag(tag)\n \"\n (click)=\"toggleTag(tag)\"\n (keydown.enter)=\"toggleTag(tag)\"\n (keydown.space)=\"toggleTag(tag)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-pressed]=\"isActiveTag(tag)\"\n >\n @if (editingTagId !== tag.id) {\n <span class=\"chip-content\">\n <span class=\"chip-leading\" aria-hidden=\"true\">\n <mat-icon\n class=\"leading-check\"\n [class.leading-check--hidden]=\"!isActiveTag(tag)\"\n >check</mat-icon\n >\n </span>\n <span class=\"chip-label\">{{ tag.label }}</span>\n @if (isUserTag(tag)) {\n <span class=\"chip-trailing\">\n <button\n praxisIconButton=\"more_vert\"\n size=\"compact\"\n [matMenuTriggerFor]=\"tagMenu\"\n (click)=\"$event.stopPropagation()\"\n [attr.aria-label]=\"getTagActionsAriaLabel(tag)\"\n ></button>\n <mat-menu #tagMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"startEditTag(tag, $event)\">\n <mat-icon>edit</mat-icon>\n <span>{{ i18nLabels.renameShortcut }}</span>\n </button>\n <button mat-menu-item (click)=\"deleteTag(tag)\">\n <mat-icon>delete</mat-icon>\n <span>{{ i18nLabels.removeShortcut }}</span>\n </button>\n </mat-menu>\n </span>\n } @else {\n <span class=\"a11y-only\">{{\n i18nLabels.readonlyShortcut\n }}</span>\n <span\n class=\"chip-readonly\"\n [matTooltip]=\"i18nLabels.readonlyShortcut\"\n aria-hidden=\"true\"\n >\n <mat-icon\n [praxisIcon]=\"'lock'\"\n aria-hidden=\"true\"\n ></mat-icon>\n </span>\n }\n </span>\n } @else {\n <input\n matInput\n class=\"chip-editor\"\n [formControl]=\"editingTagLabel\"\n autofocus\n [matTooltip]=\"'Enter para salvar, Esc para cancelar'\"\n matTooltipPosition=\"below\"\n (keydown.enter)=\"commitEditTag(tag, $event)\"\n (keydown.escape)=\"cancelEditTag($event)\"\n (blur)=\"commitEditTag(tag, $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n </mat-chip>\n }\n </mat-chip-set>\n </div>\n }\n</ng-template>\n\n<form\n class=\"praxis-filter-bar\"\n [class.is-open]=\"advancedOpen\"\n [class.has-compact]=\"\n compactSelectedMetas.length || compactAlwaysVisibleMetas.length\n \"\n [class.tag-variant-filled]=\"tagVariant === 'filled'\"\n [class.tag-variant-outlined]=\"tagVariant === 'outlined'\"\n [class.tag-color-basic]=\"tagColor === 'basic'\"\n [class.tag-color-primary]=\"tagColor === 'primary'\"\n [class.tag-color-accent]=\"tagColor === 'accent'\"\n [class.tag-color-warn]=\"tagColor === 'warn'\"\n (click)=\"onFieldInteraction($event)\"\n (focusin)=\"onFieldInteraction($event)\"\n (change)=\"$event.stopPropagation()\"\n (submit)=\"onSubmit(); $event.preventDefault(); $event.stopPropagation()\"\n>\n @if (compactSelectedMetas.length || compactAlwaysVisibleMetas.length) {\n <div class=\"compact-fields\">\n @if (compactSelectedMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"compactSelectedMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onSelectedComponents($event)\"\n ></ng-container>\n }\n @if (compactAlwaysVisibleMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"compactAlwaysVisibleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onAlwaysComponents($event)\"\n ></ng-container>\n }\n <ng-container [ngTemplateOutlet]=\"filterTagsTemplate\"></ng-container>\n </div>\n }\n\n @if (gridSelectedMetas.length || gridAlwaysVisibleMetas.length) {\n <div class=\"fields-grid\">\n @if (gridSelectedMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"gridSelectedMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onSelectedComponents($event)\"\n ></ng-container>\n }\n @if (gridAlwaysVisibleMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"gridAlwaysVisibleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onAlwaysComponents($event)\"\n ></ng-container>\n }\n </div>\n }\n\n <div class=\"query-auxiliary\" data-filter-region=\"query-auxiliary\">\n <div\n class=\"inline-actions\"\n [class.actions-outlined]=\"actionsVariant === 'outlined'\"\n >\n <div\n class=\"actions-anchor\"\n #anchorRef=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n ></div>\n @if (toggleMetas.length) {\n <div class=\"inline-toggles\">\n <ng-container\n dynamicFieldLoader\n [fields]=\"toggleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onToggleComponents($event)\"\n ></ng-container>\n </div>\n }\n\n @if (\n (showAdvancedButton && hasAdvancedFields()) ||\n showAddButton ||\n showFilterSettings ||\n isFieldAuthoringEnabled()\n ) {\n <div class=\"action-cluster action-cluster--manage\">\n @if (showAdvancedButton && hasAdvancedFields()) {\n <button\n #advancedButton\n praxisIconButton=\"filter_list\"\n size=\"compact\"\n class=\"cluster-btn\"\n [busy]=\"advancedOpening\"\n [class.is-opening]=\"advancedOpening\"\n [class.is-disabled]=\"!hasAdvancedFields()\"\n type=\"button\"\n (click)=\"toggleAdvanced()\"\n [attr.aria-label]=\"getAdvancedAriaLabel()\"\n [attr.aria-expanded]=\"advancedOpen\"\n [attr.aria-disabled]=\"!hasAdvancedFields()\"\n [attr.aria-busy]=\"advancedOpening ? 'true' : null\"\n [matTooltip]=\"getAdvancedTooltip()\"\n matTooltipPosition=\"below\"\n [attr.aria-controls]=\"advancedPanelId\"\n ></button>\n }\n @if (showAddButton) {\n <button\n #addManagerOrigin=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n mat-button\n class=\"cluster-btn add-trigger\"\n type=\"button\"\n data-testid=\"filter-manage-fields-trigger\"\n [attr.aria-label]=\"getAddAriaLabel()\"\n [matTooltip]=\"getAddTooltip()\"\n matTooltipPosition=\"below\"\n [class.is-disabled]=\"!hasAddableFields()\"\n [attr.aria-disabled]=\"!hasAddableFields()\"\n [attr.aria-expanded]=\"addManagerOpen\"\n aria-haspopup=\"dialog\"\n [attr.aria-controls]=\"addManagerOpen ? addManagerTitleId : null\"\n (click)=\"toggleAddManager()\"\n >\n <mat-icon\n [praxisIcon]=\"'checklist'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span class=\"add-trigger-label\">{{ getAddTriggerLabel() }}</span>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"addManagerOrigin\"\n [cdkConnectedOverlayOpen]=\"addManagerOpen\"\n [cdkConnectedOverlayPositions]=\"addOverlayPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"addManagerViewportMargin\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeAddManager()\"\n (detach)=\"closeAddManager()\"\n (attach)=\"focusAddManagerSearch()\"\n (overlayKeydown)=\"$event.key === 'Escape' && closeAddManager()\"\n >\n <section\n class=\"add-manager\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"addManagerTitleId\"\n [attr.aria-describedby]=\"addManagerDescriptionId\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"false\"\n >\n <header class=\"add-manager__header\">\n <div>\n <h2 [id]=\"addManagerTitleId\">\n {{\n i18nLabels.manageFieldsTitle ||\n \"Gerenciar campos de filtro\"\n }}\n </h2>\n <p [id]=\"addManagerDescriptionId\">\n {{\n i18nLabels.manageFieldsDescription ||\n \"Escolha os campos exibidos na barra de filtros.\"\n }}\n </p>\n </div>\n <button\n praxisIconButton=\"close\"\n size=\"compact\"\n type=\"button\"\n (click)=\"closeAddManager()\"\n [attr.aria-label]=\"i18nLabels.close || 'Fechar'\"\n ></button>\n </header>\n <div class=\"add-manager__search\">\n <pdx-collection-search\n #addManagerSearch\n [value]=\"addQuery\"\n [placeholder]=\"\n i18nLabels.filtersSearch || i18nLabels.searchPlaceholder\n \"\n [ariaLabel]=\"\n i18nLabels.filtersSearch || i18nLabels.searchPlaceholder\n \"\n [clearAriaLabel]=\"i18nLabels.clearSearch || 'Limpar busca'\"\n (valueChange)=\"onAddQuery($event)\"\n />\n </div>\n <div class=\"add-manager__bulk\">\n <mat-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected() && !isAllSelected()\"\n [disabled]=\"!addItems.length || addManagerConflict\"\n (change)=\"toggleSelectAll()\"\n >\n {{\n i18nLabels.selectAllResults ||\n i18nLabels.selectAll ||\n \"Selecionar todos os resultados\"\n }}\n </mat-checkbox>\n </div>\n <div\n class=\"add-manager__list\"\n role=\"group\"\n [attr.aria-label]=\"\n i18nLabels.manageFieldsTitle || 'Gerenciar campos de filtro'\n \"\n >\n @if (getAddManagerFixedItems().length) {\n <section\n class=\"add-manager__section add-manager__section--fixed\"\n [attr.aria-label]=\"\n i18nLabels.fixedFieldsSectionTitle || 'Campos fixos'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.fixedFieldsSectionTitle || \"Campos fixos\"\n }}\n </h3>\n <ul class=\"add-manager__fixed-list\">\n @for (\n it of getAddManagerFixedItems();\n track trackById($index, it)\n ) {\n <li\n class=\"add-manager__item add-manager__item--fixed\"\n [attr.data-field-id]=\"it.id\"\n [attr.aria-label]=\"\n getAddManagerFixedFieldAriaLabel(it)\n \"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n [praxisIcon]=\"'lock'\"\n aria-hidden=\"true\"\n />\n <span>{{ it.label }}</span>\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n </li>\n }\n </ul>\n </section>\n }\n @if (getAddManagerSelectedItems().length) {\n <section\n class=\"add-manager__section add-manager__section--selected\"\n [attr.aria-label]=\"\n i18nLabels.selectedFieldsSectionTitle ||\n 'Campos exibidos'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.selectedFieldsSectionTitle ||\n \"Campos exibidos\"\n }}\n <span>{{ getAddManagerSelectedFieldsSummary() }}</span>\n </h3>\n @for (\n it of getAddManagerSelectedItems();\n track trackById($index, it)\n ) {\n <mat-checkbox\n class=\"add-manager__item\"\n [attr.data-field-id]=\"it.id\"\n [checked]=\"isAddManagerFieldSelected(it.id)\"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n [attr.aria-description]=\"\n getAddManagerFieldAriaDescription(it)\n \"\n [class.add-manager__item--added]=\"\n isAddManagerItemInMotion(it.id, 'added')\n \"\n [class.add-manager__item--removed]=\"\n isAddManagerItemInMotion(it.id, 'removed')\n \"\n [class.add-manager__item--pending]=\"\n isAddManagerFieldPendingRemoval(it.id)\n \"\n [disabled]=\"addManagerConflict\"\n (change)=\"toggleManagedField(it.id, $event.checked)\"\n >\n {{ it.label }}\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n @if (\n getAddManagerFieldPendingLabel(it.id);\n as pendingLabel\n ) {\n <span class=\"add-manager__item-pending\">{{\n pendingLabel\n }}</span>\n }\n </mat-checkbox>\n }\n </section>\n }\n @if (getAddManagerAvailableItems().length) {\n <section\n class=\"add-manager__section\"\n [attr.aria-label]=\"\n i18nLabels.availableFieldsSectionTitle ||\n 'Campos dispon\u00EDveis'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.availableFieldsSectionTitle ||\n \"Campos dispon\u00EDveis\"\n }}\n </h3>\n @for (\n it of getAddManagerAvailableItems();\n track trackById($index, it)\n ) {\n <mat-checkbox\n class=\"add-manager__item\"\n [attr.data-field-id]=\"it.id\"\n [checked]=\"isAddManagerFieldSelected(it.id)\"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n [attr.aria-description]=\"\n getAddManagerFieldAriaDescription(it)\n \"\n [class.add-manager__item--added]=\"\n isAddManagerItemInMotion(it.id, 'added')\n \"\n [class.add-manager__item--removed]=\"\n isAddManagerItemInMotion(it.id, 'removed')\n \"\n [class.add-manager__item--pending]=\"\n isAddManagerFieldPendingAddition(it.id)\n \"\n [disabled]=\"addManagerConflict\"\n (change)=\"toggleManagedField(it.id, $event.checked)\"\n >\n {{ it.label }}\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n @if (\n getAddManagerFieldPendingLabel(it.id);\n as pendingLabel\n ) {\n <span class=\"add-manager__item-pending\">{{\n pendingLabel\n }}</span>\n }\n </mat-checkbox>\n }\n </section>\n }\n @if (!addItems.length && !getAddManagerFixedItems().length) {\n <div class=\"add-manager__empty\" role=\"status\">\n <mat-icon\n [praxisIcon]=\"'search_off'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{\n addQuery\n ? i18nLabels.noFilterFieldsFound ||\n \"Nenhum campo encontrado.\"\n : i18nLabels.addUnavailable ||\n \"Todos os campos j\u00E1 est\u00E3o vis\u00EDveis\"\n }}</span>\n </div>\n }\n </div>\n <div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ addManagerAnnouncement }}\n </div>\n @if (addManagerConflict) {\n <div\n class=\"add-manager__notice add-manager__notice--conflict\"\n role=\"alert\"\n >\n <mat-icon\n [praxisIcon]=\"'sync_problem'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{ i18nLabels.fieldSelectionConflict }}</span>\n </div>\n } @else if (getRemovedActiveFieldLabels().length) {\n <div\n class=\"add-manager__notice add-manager__notice--warning\"\n role=\"status\"\n >\n <mat-icon\n [praxisIcon]=\"'warning_amber'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span\n >{{ i18nLabels.removingActiveFields }}\n {{ getRemovedActiveFieldLabels().join(\", \") }}</span\n >\n </div>\n }\n <footer class=\"add-manager__footer\">\n <button mat-button type=\"button\" (click)=\"closeAddManager()\">\n {{ i18nLabels.cancel }}\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"!isAddManagerDirty() || addManagerConflict\"\n (click)=\"applyAddManager()\"\n >\n {{ i18nLabels.manageFieldsApply || \"Aplicar\" }}\n @if (isAddManagerDirty()) {\n ({{ getAddManagerChangeCount() }})\n }\n </button>\n </footer>\n </section>\n </ng-template>\n }\n @if (showFilterSettings) {\n <button\n praxisIconButton=\"settings\"\n size=\"compact\"\n class=\"cluster-btn separator-before\"\n type=\"button\"\n (click)=\"openSettings()\"\n [matBadge]=\"schemaOutdated ? '!' : ''\"\n [matBadgeHidden]=\"!schemaOutdated\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n [matTooltip]=\"getSettingsTooltip()\"\n matTooltipPosition=\"below\"\n [attr.aria-label]=\"getSettingsAriaLabel()\"\n ></button>\n }\n @if (isFieldAuthoringEnabled() && activeEditableFieldMeta) {\n <button\n praxisIconButton=\"tune\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"button\"\n data-testid=\"filter-field-settings-trigger\"\n [attr.aria-label]=\"getFieldSettingsLabel()\"\n [matTooltip]=\"getFieldSettingsLabel()\"\n matTooltipPosition=\"below\"\n (click)=\"openSelectedFieldEditor()\"\n ></button>\n }\n </div>\n }\n\n @if (activeFiltersCount > 0 || showSearchButton) {\n <div class=\"action-cluster action-cluster--query\">\n @if (activeFiltersCount > 0) {\n <span\n class=\"active-filter-summary\"\n data-testid=\"active-filter-summary\"\n >\n <mat-icon\n [praxisIcon]=\"'filter_alt'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{ getActiveFiltersLabel() }}</span>\n </span>\n }\n @if (showClearButton && activeFiltersCount > 0) {\n <button\n praxisIconButton=\"filter_alt_off\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"button\"\n data-testid=\"filter-clear-trigger\"\n (click)=\"onClear()\"\n [attr.aria-label]=\"i18nLabels.clear\"\n [matTooltip]=\"i18nLabels.clear\"\n matTooltipPosition=\"below\"\n ></button>\n }\n @if (showSearchButton) {\n <button\n praxisIconButton=\"search\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"submit\"\n [attr.aria-label]=\"i18nLabels.apply\"\n [matTooltip]=\"i18nLabels.apply\"\n matTooltipPosition=\"below\"\n ></button>\n }\n </div>\n }\n\n <span class=\"sr-only\" aria-live=\"polite\">{{\n advancedOpening\n ? i18nLabels.advancedOpening || \"Abrindo filtro avan\u00E7ado...\"\n : getAddAriaLabel()\n }}</span>\n </div>\n </div>\n\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n data-testid=\"active-filters-announcement\"\n >\n {{ getActiveFiltersLabel() }}\n </span>\n <button\n type=\"submit\"\n class=\"hidden-submit\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n ></button>\n</form>\n\n@if (!(compactSelectedMetas.length || compactAlwaysVisibleMetas.length)) {\n <ng-container [ngTemplateOutlet]=\"filterTagsTemplate\"></ng-container>\n}\n", styles: ["@charset \"UTF-8\";:host{--pfx-filter-h: 40px;--pfx-filter-align-offset: 2px;--pfx-gap-x: 12px;--pfx-gap-y: 8px;--pfx-always-max-desktop: 380px;--pfx-slider-span-desktop: 2;--pfx-advanced-pad-x: 24px;--pfx-field-min: 280px;--pfx-overlay-margin-y: 16px;--pfx-overlay-margin-x: 16px}:host-context(.theme-light){--pfx-surface-border: var( --praxis-theme-outline-strong, var(--md-sys-color-outline) )}:host{--border-color: var( --praxis-theme-outline, var(--md-sys-color-outline-variant) );--border-color-hover: var( --praxis-theme-outline-strong, var(--md-sys-color-outline) );--pfx-overlay-surface: var( --praxis-theme-surface-raised, var(--md-sys-color-surface-container) );--pfx-overlay-surface-elev: var( --praxis-theme-surface-overlay, var(--md-sys-color-surface-container-high) );--pfx-overlay-surface-variant: var( --praxis-theme-surface-raised, var(--md-sys-color-surface-variant) );--pfx-overlay-on-surface: var( --praxis-theme-on-surface, var(--md-sys-color-on-surface) );--pfx-overlay-on-surface-variant: var( --praxis-theme-on-surface-muted, var(--md-sys-color-on-surface-variant) );display:block;width:100%;min-width:0;flex:1 1 auto;container-name:praxis-filter;container-type:inline-size}.schema-error-banner{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 10px;border-radius:10px;border:1px solid color-mix(in srgb,var(--md-sys-color-error) 50%,transparent);background:color-mix(in srgb,var(--md-sys-color-error-container) 85%,transparent);color:var(--md-sys-color-on-error-container)}.schema-error-message{min-width:0;flex:1 1 auto;font-size:.8125rem}:host ::ng-deep .schema-error-retry.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: color-mix( in srgb, var(--md-sys-color-error) 55%, var(--md-sys-color-outline) )}.praxis-filter-bar{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto;column-gap:6px;row-gap:6px;align-items:center}.inline-actions .actions-anchor{width:0;height:0;overflow:hidden}.query-auxiliary{grid-column:2;grid-row:1;display:flex;align-items:center;flex-wrap:nowrap;gap:6px;justify-self:end;align-self:center;width:fit-content;max-width:100%;min-width:0}.inline-actions{flex:0 0 auto;display:flex;gap:6px;white-space:nowrap;height:var(--pfx-filter-h);align-items:center;padding:0 2px}.action-cluster{flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;min-height:var(--pfx-filter-h);padding:2px;border-radius:999px;border:1px solid var(--pfx-surface-border, var(--md-sys-color-outline-variant));background:var(--md-sys-color-surface-container-highest)}.action-cluster--manage{position:relative;gap:6px;padding:0;border:0;background:transparent}.action-cluster--query{gap:6px;padding:0;border:0;background:transparent}:host ::ng-deep :is(.action-cluster--manage,.action-cluster--query) button[praxisIconButton]{border:0;border-radius:999px;background:transparent}:host ::ng-deep :is(.action-cluster--manage,.action-cluster--query) button[praxisIconButton] .praxis-icon-button__surface{width:var(--pfx-filter-h);height:var(--pfx-filter-h);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 32%,var(--md-sys-color-outline-variant));border-radius:var(--praxis-action-control-radius, 8px);background:var(--md-sys-color-surface-container-high)}.active-filter-summary{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--pfx-filter-h);min-height:var(--pfx-filter-h);gap:6px;padding:0 4px;border:0;border-radius:0;background:transparent;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-sys-typescale-label-large-font, inherit);font-size:var(--md-sys-typescale-label-large-size, .875rem);font-weight:var(--md-sys-typescale-label-large-weight, 500);line-height:1;letter-spacing:.01em;white-space:nowrap}.active-filter-summary mat-icon{width:16px;height:16px;font-size:16px}.action-cluster .cluster-btn.is-opening{pointer-events:none}.action-cluster .cluster-btn.is-disabled{color:color-mix(in srgb,var(--md-sys-color-on-surface) 38%,transparent);cursor:default;opacity:.56}.inline-actions.actions-outlined button[praxisIconButton]{border:1px solid var(--pfx-surface-border, var(--md-sys-color-outline-variant));border-radius:50%}.inline-actions.actions-outlined .action-cluster button[praxisIconButton]{border-color:transparent}.separator-before{position:relative;margin-left:10px}.separator-before:before{content:\"\";position:absolute;left:-7px;top:50%;width:1px;height:18px;transform:translateY(-50%);background:color-mix(in srgb,var(--md-sys-color-outline) 72%,transparent)}.inline-actions mat-icon{width:20px;height:20px;font-size:20px}.fields-grid{grid-column:1;grid-row:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--pfx-always-min, 220px),1fr));grid-auto-flow:row dense;gap:6px}.compact-fields{grid-column:1;grid-row:1;display:flex;flex-wrap:wrap;justify-content:flex-start;align-content:center;align-items:center;gap:6px;min-width:0;min-height:var(--pfx-filter-h)}.compact-fields .praxis-filter-tags{flex:0 1 auto;min-width:0;min-height:var(--pfx-filter-h);display:inline-flex;align-items:center}.compact-fields .praxis-filter-tags mat-chip-set{min-width:0}.compact-fields .praxis-filter-tags mat-chip{margin-block:0}:host ::ng-deep .compact-fields .pfx-field-shell,:host ::ng-deep .compact-fields .pfx-field-shell-wrapper,:host ::ng-deep .compact-fields .pfx-field-shell-host{--pfx-field-shell-width: fit-content;--pfx-field-shell-field-width: auto;width:fit-content!important;max-width:100%;min-width:0;flex:0 1 auto!important}:host ::ng-deep .compact-fields>.pfx-field-shell,:host ::ng-deep .compact-fields>praxis-field-shell{flex:0 1 auto!important;width:fit-content!important;max-width:100%;min-width:0}:host ::ng-deep .compact-fields .pfx-field-shell .mat-mdc-form-field{width:auto!important;max-width:100%;margin-bottom:0}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{width:var(--pdx-inline-time-field-w, auto)!important;inline-size:var(--pdx-inline-time-field-w, auto)!important;max-width:min(var(--pdx-inline-time-max-w, 280px),100cqw - 24px)!important}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineDateRange] .mat-mdc-form-field{width:var(--pdx-inline-date-range-shell-width, auto)!important;max-width:100%!important}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:auto}.praxis-filter-bar.has-compact{grid-template-columns:minmax(0,1fr);align-items:start}.praxis-filter-bar.has-compact .fields-grid{grid-column:1;grid-row:auto}.praxis-filter-bar.has-compact .query-auxiliary{grid-column:1;grid-row:auto;justify-self:start;justify-content:flex-start;align-self:start;width:100%}@container praxis-filter (max-width: 1024px){.praxis-filter-bar.has-compact{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:auto;display:flex;flex-wrap:wrap;align-items:center;width:100%;overflow:visible;gap:8px;padding-block:4px}.praxis-filter-bar.has-compact .query-auxiliary{grid-column:1;grid-row:auto;justify-self:start;justify-content:flex-start;align-self:start;flex-wrap:wrap;width:100%;gap:8px}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell,praxis-field-shell),:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){flex:1 1 min(var(--pfx-compact-field-min, 148px),100%)!important;width:clamp(var(--pfx-compact-field-min, 148px),30cqw,var(--pfx-compact-field-max, 190px))!important;min-width:min(var(--pfx-compact-field-min, 148px),100cqw - 12px)!important;max-width:var(--pfx-compact-field-max, 190px)!important}}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider] mat-slider,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] mat-slider,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] mat-slider{width:100%;display:block}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider] .pdx-slider-wrapper,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-slider-wrapper,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-slider-wrapper{padding-top:2px}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-range-slider-container,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-range-slider-container{padding:2px 0 0}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-slider-label,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-slider-label{margin-bottom:4px;line-height:1.15}:host ::ng-deep .fields-grid .mat-mdc-text-field-wrapper.mdc-text-field--outlined{min-height:var(--pfx-filter-h);align-items:center}:host ::ng-deep .fields-grid .mat-mdc-form-field-infix{min-height:var(--pfx-filter-h)}:host ::ng-deep .fields-grid .mat-mdc-select-trigger{height:var(--pfx-filter-h);align-items:center}:host ::ng-deep .fields-grid .mat-mdc-form-field{width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSearchableSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSearchableSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineMultiSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineMultiSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineInput]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineInput] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlinePhone]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlinePhone] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineToggle]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineToggle] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineRange]{justify-self:start}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineRange]{max-width:min(340px,100%)}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDate]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDate] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDateRange]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDateRange] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .mat-mdc-form-field-subscript-wrapper{min-height:0;margin-top:0}:host ::ng-deep .fields-grid .mat-mdc-form-field{margin-bottom:0}.praxis-filter-bar.has-compact{--pfx-filter-tag-color: var(--md-sys-color-primary-container);--pfx-filter-tag-on-color: var(--md-sys-color-on-primary-container);--pfx-filter-tag-outline-color: var(--md-sys-color-primary);--pdx-inline-control-height: var(--pfx-filter-inline-control-height, 40px);--pdx-inline-control-height-mobile: var( --pfx-filter-inline-control-height-mobile, 44px );--pdx-inline-control-padding-x: var( --pfx-filter-inline-control-padding-x, 12px );--pdx-inline-control-padding-x-mobile: var( --pfx-filter-inline-control-padding-x-mobile, 12px );--pdx-inline-clear-size: var(--pfx-filter-inline-clear-size, 24px);--pdx-inline-chip-radius: var( --pfx-filter-inline-chip-radius, var(--md-sys-shape-corner-full, 999px) );--pdx-inline-chip-active-bg: var(--pfx-filter-tag-color);--pdx-inline-chip-active-fg: var(--pfx-filter-tag-on-color);--pdx-inline-chip-active-clear-color: var(--pfx-filter-tag-on-color);--pdx-inline-field-focus-outline: var(--pfx-filter-tag-outline-color)}.praxis-filter-bar.has-compact.tag-color-accent{--pfx-filter-tag-color: var( --md-sys-color-tertiary-container, var(--md-sys-color-secondary-container) );--pfx-filter-tag-on-color: var( --md-sys-color-on-tertiary-container, var(--md-sys-color-on-secondary-container) );--pfx-filter-tag-outline-color: var( --md-sys-color-tertiary, var(--md-sys-color-secondary) )}.praxis-filter-bar.has-compact.tag-color-warn{--pfx-filter-tag-color: var(--md-sys-color-error-container);--pfx-filter-tag-on-color: var(--md-sys-color-on-error-container);--pfx-filter-tag-outline-color: var(--md-sys-color-error)}.praxis-filter-bar.has-compact.tag-color-basic{--pfx-filter-tag-color: color-mix( in srgb, var(--md-sys-color-on-surface) 10%, transparent );--pfx-filter-tag-on-color: var(--md-sys-color-on-surface);--pfx-filter-tag-outline-color: var(--md-sys-color-outline-variant)}:host ::ng-deep .praxis-filter-bar.has-compact{--pfx-filter-inline-chip-padding-x: var(--pdx-inline-control-padding-x);--pfx-filter-inline-icon-gap: 4px}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-text-field-wrapper.mdc-text-field--outlined{padding-inline:var(--pfx-filter-inline-chip-padding-x)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-prefix{align-items:center;display:inline-flex;flex:0 0 auto;margin-right:var(--pfx-filter-inline-icon-gap)!important;padding:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-suffix{align-items:center;display:inline-flex;flex:0 0 auto;gap:var(--pfx-filter-inline-icon-gap)!important;margin-left:var(--pfx-filter-inline-icon-gap)!important;padding:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-prefix>.mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-suffix>.mat-icon{flex:0 0 16px!important;font-size:16px!important;height:16px!important;line-height:16px!important;margin:0!important;padding:0!important;width:16px!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-infix{padding-inline:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select) .pdx-chip-trigger{gap:var(--pfx-filter-inline-icon-gap)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-currency-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-searchable-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-async-select.pdx-has-selection .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-value .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-both .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-entity-lookup.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-multi-select.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-distance-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-score-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-relative-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-relative-period-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-rating-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-pipeline-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-sentiment-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-color-label-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-time-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active{--pdx-inline-currency-symbol-color: var(--pfx-filter-tag-on-color);background:var(--pfx-filter-tag-color)!important;border-color:transparent!important;color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-currency-range-chip.is-active :where(.mat-icon,.pdx-inline-currency-range-value,.pdx-inline-currency-range-text,.pdx-inline-currency-range-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear) :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear,.pdx-inline-number-suffix),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-select,.pdx-inline-searchable-select) .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active) :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-async-select.pdx-has-selection :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-value :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-both :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-entity-lookup.pdx-has-selection,.pdx-inline-multi-select.pdx-has-selection) .pdx-chip-trigger :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active) :where(.mat-icon,button,span),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-time-range-chip.is-active :where(.pdx-inline-time-range-icon,.pdx-inline-time-range-text,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active :where(.pdx-inline-toggle-label,.mat-icon){color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-currency-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-searchable-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-async-select.pdx-has-selection .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-value .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-both .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-entity-lookup.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-multi-select.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-distance-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-score-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-relative-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-relative-period-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-rating-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-pipeline-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-sentiment-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-color-label-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-time-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active{--pdx-inline-currency-symbol-color: var(--pfx-filter-tag-outline-color);background:transparent!important;border-color:var(--pfx-filter-tag-outline-color)!important;box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-outline-color);color:var(--pfx-filter-tag-outline-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-currency-range-chip.is-active :where(.mat-icon,.pdx-inline-currency-range-value,.pdx-inline-currency-range-text,.pdx-inline-currency-range-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear) :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear,.pdx-inline-number-suffix),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-select,.pdx-inline-searchable-select) .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active) :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-async-select.pdx-has-selection :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-value :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-both :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-entity-lookup.pdx-has-selection,.pdx-inline-multi-select.pdx-has-selection) .pdx-chip-trigger :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active) :where(.mat-icon,button,span),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-time-range-chip.is-active :where(.pdx-inline-time-range-icon,.pdx-inline-time-range-text,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active :where(.pdx-inline-toggle-label,.mat-icon){color:var(--pfx-filter-tag-outline-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear){background:color-mix(in srgb,currentColor 16%,transparent)!important;border-radius:50%!important;color:inherit!important;display:inline-grid!important;flex:0 0 var(--pdx-inline-clear-size, 24px)!important;height:var(--pdx-inline-clear-size, 24px)!important;min-width:var(--pdx-inline-clear-size, 24px)!important;place-items:center!important;width:var(--pdx-inline-clear-size, 24px)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear):hover{background:color-mix(in srgb,currentColor 24%,transparent)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear) .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper:has(.pdx-inline-clear) .pdx-inline-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper:has(.pdx-inline-clear) .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active .pdx-inline-toggle-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active .pdx-inline-toggle-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active .pdx-chip-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active .pdx-chip-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}.praxis-filter-tags.outlined .mat-mdc-chip{background:transparent!important;--mat-chip-outline-width: 1px;--mat-chip-outline-color: var(--md-sys-color-outline-variant);box-shadow:inset 0 0 0 var(--mat-chip-outline-width) var(--mat-chip-outline-color)}.praxis-filter-tags.outlined.tag-color-primary .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-primary)}.praxis-filter-tags.outlined.tag-color-accent .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-tertiary)}.praxis-filter-tags.outlined.tag-color-warn .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-error)}.praxis-filter-tags.outlined mat-chip.active .mat-mdc-chip,.praxis-filter-tags.outlined .mat-mdc-chip.mat-mdc-chip-highlighted{--mat-chip-outline-width: 2px;box-shadow:inset 0 0 0 var(--mat-chip-outline-width) var(--mat-chip-outline-color)!important}.praxis-filter-tags.outlined.tag-color-basic mat-chip.active .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-primary)}.praxis-filter-tags .chip-content{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:0;min-height:20px;line-height:20px;font-family:var(--md-sys-typescale-body-large-font, inherit);font-size:var(--md-sys-typescale-body-large-size, 1rem);font-weight:500;vertical-align:middle}.praxis-filter-tags .chip-leading,.praxis-filter-tags .chip-trailing,.praxis-filter-tags .chip-readonly{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.praxis-filter-tags .chip-leading,.praxis-filter-tags .chip-readonly{width:20px;height:20px}.praxis-filter-tags .leading-check{width:18px;height:18px;font-size:18px;line-height:1}.praxis-filter-tags .leading-check--hidden{visibility:hidden}.praxis-filter-tags .chip-label{display:inline-flex;align-items:center;min-width:0;min-height:20px;line-height:20px}.praxis-filter-tags .chip-readonly{color:var(--mat-sys-on-surface-variant, var(--md-sys-color-on-surface-variant))}.praxis-filter-tags .chip-readonly .mat-icon{width:16px;height:16px;font-size:16px;line-height:16px}.a11y-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.praxis-filter-tags .mat-mdc-standard-chip{--mat-chip-container-height: var(--pfx-filter-h);--mdc-chip-container-height: var(--pfx-filter-h);min-height:var(--pfx-filter-h)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .praxis-filter-tags mat-chip:not(.active).mat-mdc-standard-chip{--mdc-chip-elevated-container-color: var( --md-sys-color-surface-container-high );--mdc-chip-label-text-color: var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-high)!important;color:var(--md-sys-color-on-surface)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .praxis-filter-tags mat-chip:not(.active) :where(.chip-label,.chip-readonly,.mat-icon){color:var(--md-sys-color-on-surface)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .praxis-filter-tags mat-chip.active.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: var(--pfx-filter-tag-color);--mdc-chip-label-text-color: var(--pfx-filter-tag-on-color);background:var(--pfx-filter-tag-color)!important;color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .praxis-filter-tags mat-chip.active :where(.chip-label,.leading-check,.chip-readonly,.mat-icon){color:var(--pfx-filter-tag-on-color)!important}.praxis-filter-advanced{display:flex;flex-direction:column;min-width:400px;max-width:90vw;min-height:260px;max-height:min(80vh,720px);margin:var(--pfx-overlay-margin-y) var(--pfx-overlay-margin-x);background-color:var(--pfx-overlay-surface)!important;background:var(--pfx-overlay-surface)!important;color:var(--pfx-overlay-on-surface);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--md-sys-elevation-level3)}.advanced-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px var(--pfx-advanced-pad-x) 10px;border-bottom:1px solid var(--border-color);background:var(--pfx-overlay-surface)}.advanced-title-block{display:flex;flex-direction:column;gap:2px}.advanced-title{font-size:1rem;font-weight:600;color:var(--pfx-overlay-on-surface)}.advanced-subtitle{font-size:.85rem;color:var(--pfx-overlay-on-surface-variant)}.advanced-close{align-self:flex-start}.praxis-filter-overlay.mobile .praxis-filter-advanced{height:100vh;max-height:100vh;margin:0;border-radius:0}:host ::ng-deep .praxis-overlay-backdrop{background:var(--md-sys-color-scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}:host ::ng-deep .praxis-filter-overlay.frosted .praxis-filter-advanced{background:var(--pfx-overlay-surface-variant)!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-color:var(--border-color)}:host ::ng-deep .praxis-filter-overlay.frosted .advanced-header,:host ::ng-deep .praxis-filter-overlay.frosted .advanced-actions{background:var(--pfx-overlay-surface-variant)!important}.advanced-body{padding:12px var(--pfx-advanced-pad-x) 72px;overflow:auto;flex:1 1 auto;overscroll-behavior:contain}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-row{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(var(--pfx-field-min),1fr));gap:var(--pfx-gap-y) var(--pfx-gap-x)}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-column{min-width:0}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-column .mat-mdc-form-field{width:100%}.advanced-actions{position:sticky;bottom:0;z-index:2;display:flex;justify-content:flex-end;gap:8px;padding:var(--pfx-gap-y) var(--pfx-advanced-pad-x);background-color:var(--pfx-overlay-surface)!important;background:var(--pfx-overlay-surface)!important;border-top:1px solid var(--border-color);box-shadow:0 -1px 0 var(--md-sys-color-outline-variant)}.advanced-actions .mat-mdc-button-base{height:40px}.advanced-actions .mat-mdc-raised-button.mat-primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}:host ::ng-deep .praxis-filter-advanced .mat-mdc-text-field-wrapper.mdc-text-field--outlined{--mdc-outlined-text-field-outline-color: var(--border-color);--mdc-outlined-text-field-hover-outline-color: var(--border-color-hover);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-label-text-color: var( --pfx-overlay-on-surface-variant );--mdc-outlined-text-field-input-text-color: var(--pfx-overlay-on-surface);--mdc-outlined-text-field-container-color: var(--pfx-overlay-surface)}:host ::ng-deep .praxis-filter-advanced .mat-mdc-select-trigger,:host ::ng-deep .praxis-filter-advanced .mat-mdc-form-field-subscript-wrapper,:host ::ng-deep .praxis-filter-advanced .mat-mdc-form-field-infix{color:var(--pfx-overlay-on-surface)}@container praxis-filter (min-width: 600px){.fields-grid{gap:6px 8px}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@container praxis-filter (max-width: 640px){.praxis-filter-bar.has-compact{--pdx-inline-control-height: var( --pfx-filter-inline-control-height-mobile, 44px );--pdx-inline-control-height-mobile: var( --pfx-filter-inline-control-height-mobile, 44px );display:grid;grid-template-columns:minmax(0,1fr);align-items:start}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:auto;display:flex;flex-wrap:wrap;align-items:center;width:100%;overflow:visible;gap:8px}.praxis-filter-bar.has-compact .query-auxiliary{grid-column:1;grid-row:auto;justify-self:start;justify-content:flex-start;width:100%;height:auto;align-self:start;flex-wrap:wrap;gap:8px}.praxis-filter-bar.has-compact .compact-fields .praxis-filter-tags{flex:0 1 auto;min-width:0;min-height:40px}.praxis-filter-bar.has-compact .compact-fields .praxis-filter-tags mat-chip-set,.praxis-filter-bar.has-compact .compact-fields .praxis-filter-tags mat-chip{max-width:100%}.praxis-filter-bar.has-compact .compact-fields .praxis-filter-tags mat-chip{min-height:44px}.praxis-filter-bar.has-compact .active-filter-summary,.praxis-filter-bar.has-compact .inline-actions .add-trigger{min-height:44px;height:44px}:host ::ng-deep .praxis-filter-bar.has-compact :is(.action-cluster--manage,.action-cluster--query) button[praxisIconButton] .praxis-icon-button__surface{width:44px;height:44px}.praxis-filter-bar.has-compact .inline-actions .action-cluster{max-width:100%;min-height:44px;padding-block:0}.praxis-filter-bar.has-compact .inline-actions{width:100%;height:auto;min-height:44px;padding:0;flex-wrap:wrap}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>.pfx-field-shell,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>praxis-field-shell,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){--pfx-field-shell-width: auto;--pfx-field-shell-field-width: auto;flex:1 1 min(var(--pfx-compact-field-min, 148px),100%)!important;width:auto!important;min-width:min(var(--pfx-compact-field-min, 148px),100cqw - 12px)!important;max-width:min(360px,100%)!important}:host ::ng-deep .praxis-filter-bar.has-compact .action-cluster--manage>button{min-height:44px}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-host{--pfx-field-shell-width: auto;--pfx-field-shell-field-width: auto;width:100%!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .mat-mdc-form-field,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-currency-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-distance-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-score-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-relative-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-relative-period-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-rating-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-pipeline-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-sentiment-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-color-label-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-time-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-toggle-pill{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range .pdx-inline-date-range-root,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range .mat-mdc-form-field.pdx-inline-date-range{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :where(.pdx-chip-label,.pdx-chip-trigger,.pdx-inline-range-text,.pdx-inline-currency-range-text,.pdx-inline-distance-text,.pdx-inline-score-text,.pdx-inline-relative-text,.pdx-inline-relative-period-text,.pdx-inline-rating-text,.pdx-inline-pipeline-text,.pdx-inline-sentiment-text,.pdx-inline-color-label-text,.pdx-inline-time-range-text,.pdx-inline-toggle-label){min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime],:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-host{--pfx-field-shell-width: fit-content;--pfx-field-shell-field-width: var(--pdx-inline-time-field-w, auto);justify-self:start;width:fit-content!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{width:var(--pdx-inline-time-field-w, auto)!important;inline-size:var(--pdx-inline-time-field-w, auto)!important;max-width:min(var(--pdx-inline-time-max-w, 280px),100cqw - 24px)!important}}@container praxis-filter (max-width: 1024px){:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell[data-control-type=inlineToggle],praxis-field-shell[data-control-type=inlineToggle]){flex:1 1 min(260px,100%)!important;width:clamp(260px,42cqw,360px)!important;min-width:min(260px,100cqw - 12px)!important;max-width:min(360px,100%)!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-host [data-field-type]:not([data-field-type=inlineTime]){width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-host [data-field-type]:not([data-field-type=inlineTime])>:first-child{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields [data-field-type=inlineCurrencyRange] .pdx-inline-currency-range-root{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell[data-control-type=inlineDateRange],praxis-field-shell[data-control-type=inlineDateRange]){flex:1 1 min(220px,100%)!important;width:clamp(220px,36cqw,320px)!important;min-width:min(220px,100cqw - 12px)!important;max-width:min(320px,100%)!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell[data-control-type=inlineCurrencyRange],praxis-field-shell[data-control-type=inlineCurrencyRange]){flex:1 1 min(320px,100%)!important;width:clamp(280px,42cqw,360px)!important;min-width:min(280px,100cqw - 12px)!important;max-width:min(360px,100%)!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :is(.mat-mdc-form-field,.mat-mdc-text-field-wrapper,.pdx-chip-main,.pdx-chip-trigger,.pdx-inline-range-chip,.pdx-inline-currency-range-chip,.pdx-inline-distance-chip,.pdx-inline-score-chip,.pdx-inline-relative-chip,.pdx-inline-relative-period-chip,.pdx-inline-rating-chip,.pdx-inline-pipeline-chip,.pdx-inline-sentiment-chip,.pdx-inline-color-label-chip,.pdx-inline-time-range-chip,.pdx-inline-toggle-pill){width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :is(.mat-mdc-form-field-flex,.mat-mdc-form-field-infix,.pdx-chip-main .mdc-button__label,.pdx-chip-main .pdx-chip-label){width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-chip-main .pdx-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :is(.mat-mdc-text-field-wrapper,.mat-mdc-form-field-flex,.mat-mdc-form-field-infix,.pdx-chip-main){overflow:hidden}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :is(.pfx-field-shell-wrapper,.pfx-field-shell-host,pdx-inline-toggle,pdx-inline-date-range){width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineDateRange] :is(.pdx-inline-date-range-root,.mat-mdc-form-field.pdx-inline-date-range){width:100%!important;max-width:100%!important;min-width:0!important}}@container praxis-filter (max-width: 640px){:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell[data-control-type=inlineDateRange],praxis-field-shell[data-control-type=inlineDateRange],.pfx-field-shell[data-control-type=inlineCurrencyRange],praxis-field-shell[data-control-type=inlineCurrencyRange],.pfx-field-shell[data-control-type=inlineMultiSelect],praxis-field-shell[data-control-type=inlineMultiSelect]){flex:1 1 100%!important;width:100%!important;min-width:min(220px,100%)!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime],:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-host{flex:0 1 auto!important;width:fit-content!important;max-width:100%!important}}@container praxis-filter (max-width: 420px){:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell,praxis-field-shell),:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){--pfx-field-shell-width: 100%;--pfx-field-shell-field-width: 100%;flex:1 1 100%!important;width:100%!important;min-width:0!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime],:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] :is(.pfx-field-shell-wrapper,.pfx-field-shell-host),:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{--pfx-field-shell-width: 100%;--pfx-field-shell-field-width: 100%;flex:1 1 100%!important;width:100%!important;inline-size:100%!important;min-width:0!important;max-width:100%!important}}@container praxis-filter (min-width: 960px){.fields-grid{gap:6px 10px}}@container praxis-filter (min-width: 1200px){.fields-grid{grid-template-columns:repeat(auto-fit,minmax(var(--pfx-always-min, 220px),var(--pfx-always-max-desktop, 380px)));justify-content:start;align-content:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeslider]{grid-column:span var(--pfx-slider-span-desktop, 2)}}.inline-toggles{display:flex;align-items:center;gap:8px;margin:0 4px 0 6px}:host ::ng-deep .inline-actions .mat-mdc-slide-toggle{height:var(--pfx-filter-h);display:flex;align-items:center}:host ::ng-deep .inline-actions .mat-mdc-slide-toggle .mdc-form-field{align-items:center}::ng-deep .praxis-filter-overlay .praxis-filter-advanced .praxis-filter-form .filter-row{display:grid!important;gap:var(--pfx-gap-y, 1px) var(--pfx-gap-x, 6px)}@media(min-width:600px){::ng-deep .praxis-filter-overlay .praxis-filter-advanced .praxis-filter-form .filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important}.hidden-submit{position:absolute!important;width:0!important;height:0!important;padding:0!important;margin:0!important;border:0!important;opacity:0!important;pointer-events:none!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;overflow:hidden!important}:host ::ng-deep .inline-actions [matBadge] .mat-badge-content{top:-6px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-size:10px;font-weight:700;line-height:16px;letter-spacing:0;text-indent:0;color:var(--md-sys-color-on-primary, #fff)}:host ::ng-deep .inline-actions [matBadge][matbadgecolor=warn] .mat-badge-content,:host ::ng-deep .inline-actions [matBadge].mat-badge-warn .mat-badge-content{color:var(--md-sys-color-on-error, #fff)}.praxis-filter-bar :where(.mat-mdc-slide-toggle .mdc-switch__icons){display:none!important}.praxis-filter-bar{--mdc-switch-unselected-icon-size: 0px;--mdc-switch-selected-icon-size: 0px;--pfx-always-min: 220px}.praxis-filter-card{display:flex;flex-direction:column;gap:6px;padding:8px 12px;border-radius:12px;border:1px solid var(--pfx-surface-border, var(--praxis-theme-outline, var(--md-sys-color-outline-variant)));background:var(--praxis-theme-surface-raised, var(--md-sys-color-surface-container));color:var(--praxis-theme-on-surface, var(--md-sys-color-on-surface))}.add-manager{--_pfx-field-manager-surface: var( --pfx-field-manager-surface, var( --praxis-theme-surface-overlay, var(--md-sys-color-surface-container-highest) ) );--_pfx-field-manager-on-surface: var( --pfx-field-manager-on-surface, var(--praxis-theme-on-surface, var(--md-sys-color-on-surface)) );--_pfx-field-manager-on-surface-muted: var( --pfx-field-manager-on-surface-muted, var(--praxis-theme-on-surface-muted, var(--md-sys-color-on-surface-variant)) );--_pfx-field-manager-outline: var( --pfx-field-manager-outline, var( --pdx-inline-field-outline, var(--praxis-theme-outline, var(--md-sys-color-outline-variant)) ) );--_pfx-field-manager-focus-outline: var( --pfx-field-manager-focus-outline, var( --pdx-inline-field-focus-outline, var(--praxis-theme-focus-outline, var(--md-sys-color-primary)) ) );--_pfx-field-manager-scrollbar-thumb: var( --pfx-field-manager-scrollbar-thumb, color-mix( in srgb, var(--_pfx-field-manager-on-surface) 42%, var(--_pfx-field-manager-surface) ) );--_pfx-field-manager-scrollbar-thumb-hover: var( --pfx-field-manager-scrollbar-thumb-hover, color-mix( in srgb, var(--_pfx-field-manager-on-surface) 64%, var(--_pfx-field-manager-surface) ) );--_pfx-field-manager-scrollbar-track: var( --pfx-field-manager-scrollbar-track, transparent );--_pfx-field-manager-scrollbar-size: var( --pfx-field-manager-scrollbar-size, 10px );display:flex;flex-direction:column;width:min(400px,100vw - 24px);max-height:min(70vh,560px);overflow:hidden;border:1px solid var(--_pfx-field-manager-outline);border-radius:var(--pfx-overlay-radius, 16px);background:var(--_pfx-field-manager-surface);color:var(--_pfx-field-manager-on-surface);box-shadow:var(--praxis-theme-elevation, var(--md-sys-elevation-level3))}.add-manager__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 16px 8px 20px}.add-manager__header h2{margin:0;font:var(--md-sys-typescale-title-medium)}.add-manager__header p{margin:4px 0 0;color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-body-small)}.add-manager__search{padding:8px 20px}.add-manager__bulk{padding:8px 20px;border-block:1px solid var(--_pfx-field-manager-outline)}.add-manager__list{display:flex;flex-direction:column;min-height:80px;overflow:auto;overscroll-behavior:contain;scrollbar-color:var(--_pfx-field-manager-scrollbar-thumb) var(--_pfx-field-manager-scrollbar-track);scrollbar-gutter:stable;scrollbar-width:auto;padding:4px 12px 12px}.add-manager__list::-webkit-scrollbar{width:var(--_pfx-field-manager-scrollbar-size);height:var(--_pfx-field-manager-scrollbar-size)}.add-manager__list::-webkit-scrollbar-track{background:var(--_pfx-field-manager-scrollbar-track)}.add-manager__list::-webkit-scrollbar-thumb{min-height:32px;border:2px solid transparent;border-radius:999px;background:var(--_pfx-field-manager-scrollbar-thumb);background-clip:padding-box}.add-manager__list::-webkit-scrollbar-thumb:hover{background:var(--_pfx-field-manager-scrollbar-thumb-hover);background-clip:padding-box}.add-manager__section+.add-manager__section{margin-top:8px;padding-top:8px;border-top:1px solid var(--_pfx-field-manager-outline)}.add-manager__section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0;padding:8px 8px 4px;color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-medium)}.add-manager__section-title span{color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-small);white-space:nowrap}.add-manager__item{display:flex;align-items:center;min-height:48px;padding-inline:8px;border-radius:var(--pfx-control-radius, 8px)}::ng-deep .add-manager__item .mdc-form-field{align-items:center}::ng-deep .add-manager__item .mdc-label{display:inline-flex;align-items:center;min-height:20px}.add-manager__item:hover{background:color-mix(in srgb,var(--_pfx-field-manager-on-surface) 6%,var(--_pfx-field-manager-surface))}.add-manager__item--fixed{gap:10px;color:var(--_pfx-field-manager-on-surface)}.add-manager__fixed-list{margin:0;padding:0;list-style:none}.add-manager__item--fixed>.mat-icon:first-child{width:18px;height:18px;flex:0 0 18px;color:var(--_pfx-field-manager-on-surface-muted);font-size:18px}.add-manager__section--fixed .add-manager__item{box-shadow:inset 2px 0 color-mix(in srgb,var(--_pfx-field-manager-on-surface-muted) 44%,transparent)}.add-manager__item-info{width:16px;height:16px;margin-left:4px;vertical-align:text-bottom;color:var(--_pfx-field-manager-on-surface-muted);font-size:16px}.add-manager__item-pending{display:inline-flex;align-items:center;margin-left:8px;padding:2px 7px;border-radius:999px;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 14%,transparent);color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-small);white-space:nowrap}.add-manager__item--pending{background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}.add-manager__section--selected .add-manager__item{box-shadow:inset 2px 0 color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 56%,transparent)}.add-manager__item--added{animation:add-manager-item-added var(--md-sys-motion-duration-short4, .2s) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(.05, .7, .1, 1)) both}.add-manager__item--removed{animation:add-manager-item-removed var(--md-sys-motion-duration-short4, .2s) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(.05, .7, .1, 1)) both}@keyframes add-manager-item-added{0%{opacity:.72;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 24%,var(--_pfx-field-manager-surface))}to{opacity:1;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}}@keyframes add-manager-item-removed{0%{opacity:.72;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 72%,transparent)}to{opacity:1;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}}@media(prefers-reduced-motion:reduce){.add-manager__item--added,.add-manager__item--removed{animation:none}}.add-manager__empty{display:flex;align-items:center;justify-content:center;gap:8px;min-height:96px;padding:16px;color:var(--_pfx-field-manager-on-surface-muted);text-align:center}.add-manager__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--_pfx-field-manager-outline);background:var(--_pfx-field-manager-surface)}.add-manager__footer .mat-mdc-unelevated-button.mat-primary:is(:disabled,.mat-mdc-button-disabled){--mdc-filled-button-container-color: color-mix( in srgb, var(--md-sys-color-on-surface) 12%, transparent );--mdc-filled-button-label-text-color: color-mix( in srgb, var(--md-sys-color-on-surface) 38%, transparent );background:color-mix(in srgb,var(--md-sys-color-on-surface) 12%,transparent)!important;background-image:none!important;color:color-mix(in srgb,var(--md-sys-color-on-surface) 38%,transparent)!important;box-shadow:none!important;filter:none!important;opacity:1!important}.add-manager__notice{display:flex;align-items:flex-start;gap:8px;padding:10px 16px;font:var(--md-sys-typescale-body-small)}.add-manager__notice mat-icon{flex:0 0 auto}.add-manager__notice--warning{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.add-manager__notice--conflict{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}@media(max-width:600px){.add-manager{width:calc(100vw - 16px);max-height:min(78dvh,640px);border-radius:var(--pfx-overlay-radius, 16px)}.add-manager__header,.add-manager__search{padding-inline:16px}}.inline-actions .add-trigger{display:inline-flex;align-items:center;gap:6px;height:var(--pfx-filter-h);min-height:var(--pfx-filter-h);width:auto;max-width:min(100%,220px);min-width:0;padding:0 10px;border-radius:var(--praxis-action-control-radius, 8px);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 32%,var(--md-sys-color-outline-variant));background:var(--md-sys-color-surface-container-high);overflow:visible}.inline-actions .add-trigger--icon{justify-content:center;width:var(--pfx-filter-h);min-width:var(--pfx-filter-h);padding:0}:host ::ng-deep .inline-actions .add-trigger mat-icon{width:18px;height:18px;font-size:18px;flex:0 0 auto}.inline-actions .add-trigger-label{display:inline-block;flex:1 1 auto;min-width:0;max-width:100%;text-align:left;direction:ltr;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;line-height:1}:host ::ng-deep .action-cluster--manage .mat-mdc-select{flex:0 0 auto;width:180px;min-width:0;max-width:180px}:host ::ng-deep .action-cluster--manage .cluster-select--hidden.mat-mdc-select{position:absolute;width:1px;min-width:1px;max-width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected{background:var(--pfx-filter-tag-color);color:var(--pfx-filter-tag-on-color);box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-color)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected{background:transparent;color:var(--pfx-filter-tag-outline-color);box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-outline-color)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected .pdx-chip-trigger.is-active{background:transparent!important;border-color:transparent!important;box-shadow:none!important;color:inherit!important}:host ::ng-deep .action-cluster--manage .mat-mdc-select-trigger{min-height:32px;padding:0}:host ::ng-deep .action-cluster--manage .mat-mdc-select-value,:host ::ng-deep .action-cluster--manage .mat-mdc-select-value-text,:host ::ng-deep .action-cluster--manage .mat-mdc-select-min-line{width:auto;min-width:0;max-width:100%;display:inline-flex;align-items:center;justify-content:flex-start;overflow:visible}.praxis-filter-card .summary-header{display:flex;align-items:center;gap:10px}.praxis-filter-card .summary-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.praxis-filter-card .summary-title{font-weight:600}.praxis-filter-card .summary-subtitle{opacity:.8;font-size:.875rem}.praxis-filter-card .summary-badges{display:flex;flex-wrap:wrap;gap:6px}.praxis-filter-card .summary-badges span{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-primary-container);border:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-primary-container);font-size:12px}.praxis-filter-card .card-actions{display:flex;gap:8px}:host ::ng-deep .inline-actions .mat-mdc-select-arrow-wrapper{display:none}.inline-actions .add-filter-btn{height:36px;border-radius:18px;padding:0 16px 0 12px}.inline-actions .add-filter-btn mat-icon{margin-right:8px;margin-left:-4px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i15.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i15.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i14$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i15$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i5.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick", "canvasFocus"] }, { kind: "component", type: PdxCollectionSearchComponent, selector: "pdx-collection-search", inputs: ["value", "placeholder", "ariaLabel", "clearAriaLabel", "disabled", "density", "icon", "clearIcon"], outputs: ["valueChange", "cleared"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i12.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i12.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i19.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
41356
42034
  }
41357
42035
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisFilter, decorators: [{
41358
42036
  type: Component,
@@ -41387,7 +42065,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
41387
42065
  '[style.--pfx-always-min]': 'alwaysMinWidth + "px"',
41388
42066
  '[style.--pfx-always-cols-md]': 'alwaysColsMd',
41389
42067
  '[style.--pfx-always-cols-lg]': 'alwaysColsLg',
41390
- }, template: "@if (saving) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n}\n@if (schemaError) {\n <div class=\"schema-error-banner\" role=\"alert\" aria-live=\"polite\">\n <mat-icon [praxisIcon]=\"'error_outline'\" aria-hidden=\"true\"></mat-icon>\n <span class=\"schema-error-message\">{{\n i18nLabels.errorLoadingFilters || \"Erro ao carregar filtros.\"\n }}</span>\n <button\n mat-stroked-button\n class=\"schema-error-retry\"\n type=\"button\"\n (click)=\"retrySchemaLoad()\"\n [attr.aria-label]=\"i18nLabels.retry || 'Tentar novamente'\"\n >\n {{ i18nLabels.retry || \"Tentar novamente\" }}\n </button>\n </div>\n}\n\n<ng-template #filterTagsTemplate>\n @if (displayedTags.length) {\n <div\n class=\"praxis-filter-tags\"\n [class.outlined]=\"tagVariant === 'outlined'\"\n [class.tag-color-basic]=\"tagColor === 'basic'\"\n [class.tag-color-primary]=\"tagColor === 'primary'\"\n [class.tag-color-accent]=\"tagColor === 'accent'\"\n [class.tag-color-warn]=\"tagColor === 'warn'\"\n >\n <mat-chip-set [attr.aria-label]=\"i18nLabels.shortcutsLabel || 'Atalhos'\">\n @for (tag of displayedTags; track trackById($index, tag)) {\n <mat-chip\n [class.active]=\"isActiveTag(tag)\"\n [color]=\"\n tagVariant === 'outlined' || tagColor === 'basic'\n ? null\n : tagColor\n \"\n [highlighted]=\"tagVariant === 'filled' && tagColor !== 'basic'\"\n (click)=\"toggleTag(tag)\"\n (keydown.enter)=\"toggleTag(tag)\"\n (keydown.space)=\"toggleTag(tag)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-pressed]=\"isActiveTag(tag)\"\n >\n @if (editingTagId !== tag.id) {\n @if (isActiveTag(tag)) {\n <span class=\"chip-leading\">\n <mat-icon class=\"leading-check\">check</mat-icon>\n </span>\n }\n <span class=\"chip-label\">{{ tag.label }}</span>\n @if (isUserTag(tag)) {\n <span class=\"chip-trailing\">\n <button\n praxisIconButton=\"more_vert\"\n size=\"compact\"\n [matMenuTriggerFor]=\"tagMenu\"\n (click)=\"$event.stopPropagation()\"\n [attr.aria-label]=\"getTagActionsAriaLabel(tag)\"\n ></button>\n <mat-menu #tagMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"startEditTag(tag, $event)\">\n <mat-icon>edit</mat-icon>\n <span>{{ i18nLabels.renameShortcut }}</span>\n </button>\n <button mat-menu-item (click)=\"deleteTag(tag)\">\n <mat-icon>delete</mat-icon>\n <span>{{ i18nLabels.removeShortcut }}</span>\n </button>\n </mat-menu>\n </span>\n } @else {\n <span\n class=\"chip-readonly\"\n [matTooltip]=\"i18nLabels.readonlyShortcut\"\n aria-hidden=\"true\"\n >\n <mat-icon [praxisIcon]=\"'lock'\" aria-hidden=\"true\"></mat-icon>\n </span>\n }\n } @else {\n <input\n matInput\n class=\"chip-editor\"\n [formControl]=\"editingTagLabel\"\n autofocus\n [matTooltip]=\"'Enter para salvar, Esc para cancelar'\"\n matTooltipPosition=\"below\"\n (keydown.enter)=\"commitEditTag(tag, $event)\"\n (keydown.escape)=\"cancelEditTag($event)\"\n (blur)=\"commitEditTag(tag, $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n </mat-chip>\n }\n </mat-chip-set>\n </div>\n }\n</ng-template>\n\n<form\n class=\"praxis-filter-bar\"\n [class.is-open]=\"advancedOpen\"\n [class.has-compact]=\"\n compactSelectedMetas.length || compactAlwaysVisibleMetas.length\n \"\n [class.tag-variant-filled]=\"tagVariant === 'filled'\"\n [class.tag-variant-outlined]=\"tagVariant === 'outlined'\"\n [class.tag-color-basic]=\"tagColor === 'basic'\"\n [class.tag-color-primary]=\"tagColor === 'primary'\"\n [class.tag-color-accent]=\"tagColor === 'accent'\"\n [class.tag-color-warn]=\"tagColor === 'warn'\"\n (click)=\"onFieldInteraction($event)\"\n (focusin)=\"onFieldInteraction($event)\"\n (change)=\"$event.stopPropagation()\"\n (submit)=\"onSubmit(); $event.preventDefault(); $event.stopPropagation()\"\n>\n @if (compactSelectedMetas.length || compactAlwaysVisibleMetas.length) {\n <div class=\"compact-fields\">\n @if (compactSelectedMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"compactSelectedMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onSelectedComponents($event)\"\n ></ng-container>\n }\n @if (compactAlwaysVisibleMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"compactAlwaysVisibleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onAlwaysComponents($event)\"\n ></ng-container>\n }\n </div>\n }\n\n @if (gridSelectedMetas.length || gridAlwaysVisibleMetas.length) {\n <div class=\"fields-grid\">\n @if (gridSelectedMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"gridSelectedMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onSelectedComponents($event)\"\n ></ng-container>\n }\n @if (gridAlwaysVisibleMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"gridAlwaysVisibleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onAlwaysComponents($event)\"\n ></ng-container>\n }\n </div>\n }\n\n <div class=\"query-auxiliary\" data-filter-region=\"query-auxiliary\">\n @if (compactSelectedMetas.length || compactAlwaysVisibleMetas.length) {\n <ng-container [ngTemplateOutlet]=\"filterTagsTemplate\"></ng-container>\n }\n\n <div\n class=\"inline-actions\"\n [class.actions-outlined]=\"actionsVariant === 'outlined'\"\n >\n <div\n class=\"actions-anchor\"\n #anchorRef=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n ></div>\n @if (toggleMetas.length) {\n <div class=\"inline-toggles\">\n <ng-container\n dynamicFieldLoader\n [fields]=\"toggleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onToggleComponents($event)\"\n ></ng-container>\n </div>\n }\n\n @if (\n showAdvancedButton ||\n showAddButton ||\n showFilterSettings ||\n isFieldAuthoringEnabled()\n ) {\n <div class=\"action-cluster action-cluster--manage\">\n @if (showAdvancedButton) {\n <button\n #advancedButton\n praxisIconButton=\"filter_list\"\n size=\"compact\"\n class=\"cluster-btn\"\n [busy]=\"advancedOpening\"\n [class.is-opening]=\"advancedOpening\"\n [class.is-disabled]=\"!hasAdvancedFields()\"\n type=\"button\"\n (click)=\"toggleAdvanced()\"\n [attr.aria-label]=\"getAdvancedAriaLabel()\"\n [attr.aria-expanded]=\"advancedOpen\"\n [attr.aria-disabled]=\"!hasAdvancedFields()\"\n [attr.aria-busy]=\"advancedOpening ? 'true' : null\"\n [matTooltip]=\"getAdvancedTooltip()\"\n matTooltipPosition=\"below\"\n [attr.aria-controls]=\"advancedPanelId\"\n ></button>\n }\n @if (showAddButton) {\n <button\n #addManagerOrigin=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n mat-button\n class=\"cluster-btn add-trigger\"\n type=\"button\"\n data-testid=\"filter-manage-fields-trigger\"\n [attr.aria-label]=\"getAddAriaLabel()\"\n [matTooltip]=\"getAddTooltip()\"\n matTooltipPosition=\"below\"\n [class.is-disabled]=\"!hasAddableFields()\"\n [attr.aria-disabled]=\"!hasAddableFields()\"\n [attr.aria-expanded]=\"addManagerOpen\"\n aria-haspopup=\"dialog\"\n [attr.aria-controls]=\"addManagerOpen ? addManagerTitleId : null\"\n (click)=\"toggleAddManager()\"\n >\n <mat-icon\n [praxisIcon]=\"'filter_list'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span class=\"add-trigger-label\">{{ getAddTriggerLabel() }}</span>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"addManagerOrigin\"\n [cdkConnectedOverlayOpen]=\"addManagerOpen\"\n [cdkConnectedOverlayPositions]=\"addOverlayPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeAddManager()\"\n (detach)=\"closeAddManager()\"\n (overlayKeydown)=\"$event.key === 'Escape' && closeAddManager()\"\n >\n <section\n class=\"add-manager\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"addManagerTitleId\"\n [attr.aria-describedby]=\"addManagerDescriptionId\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n >\n <header class=\"add-manager__header\">\n <div>\n <h2 [id]=\"addManagerTitleId\">\n {{\n i18nLabels.manageFieldsTitle ||\n \"Gerenciar campos de filtro\"\n }}\n </h2>\n <p [id]=\"addManagerDescriptionId\">\n {{\n i18nLabels.manageFieldsDescription ||\n \"Escolha os campos exibidos na barra de filtros.\"\n }}\n </p>\n </div>\n <button\n praxisIconButton=\"close\"\n size=\"compact\"\n type=\"button\"\n (click)=\"closeAddManager()\"\n [attr.aria-label]=\"i18nLabels.close || 'Fechar'\"\n ></button>\n </header>\n <div class=\"add-manager__search\">\n <pdx-collection-search\n [value]=\"addQuery\"\n [placeholder]=\"\n i18nLabels.filtersSearch || i18nLabels.searchPlaceholder\n \"\n [ariaLabel]=\"\n i18nLabels.filtersSearch || i18nLabels.searchPlaceholder\n \"\n [clearAriaLabel]=\"i18nLabels.clearSearch || 'Limpar busca'\"\n (valueChange)=\"onAddQuery($event)\"\n />\n </div>\n <div class=\"add-manager__bulk\">\n <mat-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected() && !isAllSelected()\"\n [disabled]=\"!addItems.length || addManagerConflict\"\n (change)=\"toggleSelectAll()\"\n >\n {{\n i18nLabels.selectAllResults ||\n i18nLabels.selectAll ||\n \"Selecionar todos os resultados\"\n }}\n </mat-checkbox>\n </div>\n <div\n class=\"add-manager__list\"\n role=\"group\"\n [attr.aria-label]=\"\n i18nLabels.manageFieldsTitle || 'Gerenciar campos de filtro'\n \"\n >\n @if (getAddManagerSelectedItems().length) {\n <section\n class=\"add-manager__section add-manager__section--selected\"\n [attr.aria-label]=\"\n i18nLabels.selectedFieldsSectionTitle ||\n 'Campos exibidos'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.selectedFieldsSectionTitle ||\n \"Campos exibidos\"\n }}\n <span>{{ getAddManagerSelectedFieldsSummary() }}</span>\n </h3>\n @for (\n it of getAddManagerSelectedItems();\n track trackById($index, it)\n ) {\n <mat-checkbox\n class=\"add-manager__item\"\n [attr.data-field-id]=\"it.id\"\n [checked]=\"isAddManagerFieldSelected(it.id)\"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n [attr.aria-description]=\"\n getAddManagerFieldAriaDescription(it)\n \"\n [class.add-manager__item--added]=\"\n isAddManagerItemInMotion(it.id, 'added')\n \"\n [class.add-manager__item--removed]=\"\n isAddManagerItemInMotion(it.id, 'removed')\n \"\n [class.add-manager__item--pending]=\"\n isAddManagerFieldPendingRemoval(it.id)\n \"\n [disabled]=\"addManagerConflict\"\n (change)=\"toggleManagedField(it.id, $event.checked)\"\n >\n {{ it.label }}\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n @if (\n getAddManagerFieldPendingLabel(it.id);\n as pendingLabel\n ) {\n <span class=\"add-manager__item-pending\">{{\n pendingLabel\n }}</span>\n }\n </mat-checkbox>\n }\n </section>\n }\n @if (getAddManagerAvailableItems().length) {\n <section\n class=\"add-manager__section\"\n [attr.aria-label]=\"\n i18nLabels.availableFieldsSectionTitle ||\n 'Campos dispon\u00EDveis'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.availableFieldsSectionTitle ||\n \"Campos dispon\u00EDveis\"\n }}\n </h3>\n @for (\n it of getAddManagerAvailableItems();\n track trackById($index, it)\n ) {\n <mat-checkbox\n class=\"add-manager__item\"\n [attr.data-field-id]=\"it.id\"\n [checked]=\"isAddManagerFieldSelected(it.id)\"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n [attr.aria-description]=\"\n getAddManagerFieldAriaDescription(it)\n \"\n [class.add-manager__item--added]=\"\n isAddManagerItemInMotion(it.id, 'added')\n \"\n [class.add-manager__item--removed]=\"\n isAddManagerItemInMotion(it.id, 'removed')\n \"\n [class.add-manager__item--pending]=\"\n isAddManagerFieldPendingAddition(it.id)\n \"\n [disabled]=\"addManagerConflict\"\n (change)=\"toggleManagedField(it.id, $event.checked)\"\n >\n {{ it.label }}\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n @if (\n getAddManagerFieldPendingLabel(it.id);\n as pendingLabel\n ) {\n <span class=\"add-manager__item-pending\">{{\n pendingLabel\n }}</span>\n }\n </mat-checkbox>\n }\n </section>\n }\n @if (!addItems.length) {\n <div class=\"add-manager__empty\" role=\"status\">\n <mat-icon\n [praxisIcon]=\"'search_off'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{\n addQuery\n ? i18nLabels.noFilterFieldsFound ||\n \"Nenhum campo encontrado.\"\n : i18nLabels.addUnavailable ||\n \"Todos os campos j\u00E1 est\u00E3o vis\u00EDveis\"\n }}</span>\n </div>\n }\n </div>\n <div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ addManagerAnnouncement }}\n </div>\n @if (addManagerConflict) {\n <div\n class=\"add-manager__notice add-manager__notice--conflict\"\n role=\"alert\"\n >\n <mat-icon\n [praxisIcon]=\"'sync_problem'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{ i18nLabels.fieldSelectionConflict }}</span>\n </div>\n } @else if (getRemovedActiveFieldLabels().length) {\n <div\n class=\"add-manager__notice add-manager__notice--warning\"\n role=\"status\"\n >\n <mat-icon\n [praxisIcon]=\"'warning_amber'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span\n >{{ i18nLabels.removingActiveFields }}\n {{ getRemovedActiveFieldLabels().join(\", \") }}</span\n >\n </div>\n }\n <footer class=\"add-manager__footer\">\n <button mat-button type=\"button\" (click)=\"closeAddManager()\">\n {{ i18nLabels.cancel }}\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"!isAddManagerDirty() || addManagerConflict\"\n (click)=\"applyAddManager()\"\n >\n {{ i18nLabels.manageFieldsApply || \"Aplicar\" }}\n @if (isAddManagerDirty()) {\n ({{ getAddManagerChangeCount() }})\n }\n </button>\n </footer>\n </section>\n </ng-template>\n }\n @if (showFilterSettings) {\n <button\n praxisIconButton=\"settings\"\n size=\"compact\"\n class=\"cluster-btn separator-before\"\n type=\"button\"\n (click)=\"openSettings()\"\n [matBadge]=\"schemaOutdated ? '!' : ''\"\n [matBadgeHidden]=\"!schemaOutdated\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n [matTooltip]=\"getSettingsTooltip()\"\n matTooltipPosition=\"below\"\n [attr.aria-label]=\"getSettingsAriaLabel()\"\n ></button>\n }\n @if (isFieldAuthoringEnabled() && activeEditableFieldMeta) {\n <button\n praxisIconButton=\"tune\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"button\"\n data-testid=\"filter-field-settings-trigger\"\n [attr.aria-label]=\"activeEditableFieldLabel\"\n (click)=\"openSelectedFieldEditor()\"\n ></button>\n }\n </div>\n }\n\n @if (activeFiltersCount > 0 || showSearchButton) {\n <div class=\"action-cluster action-cluster--query\">\n @if (activeFiltersCount > 0) {\n <span\n class=\"active-filter-summary\"\n data-testid=\"active-filter-summary\"\n >\n <mat-icon\n [praxisIcon]=\"'filter_alt'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{ getActiveFiltersLabel() }}</span>\n </span>\n }\n @if (showClearButton && activeFiltersCount > 0) {\n <button\n praxisIconButton=\"filter_alt_off\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"button\"\n data-testid=\"filter-clear-trigger\"\n (click)=\"onClear()\"\n [attr.aria-label]=\"i18nLabels.clear\"\n [matTooltip]=\"i18nLabels.clear\"\n matTooltipPosition=\"below\"\n ></button>\n }\n @if (showSearchButton) {\n <button\n praxisIconButton=\"search\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"submit\"\n [attr.aria-label]=\"i18nLabels.apply\"\n [matTooltip]=\"i18nLabels.apply\"\n matTooltipPosition=\"below\"\n ></button>\n }\n </div>\n }\n\n <span class=\"sr-only\" aria-live=\"polite\">{{\n advancedOpening\n ? i18nLabels.advancedOpening || \"Abrindo filtro avan\u00E7ado...\"\n : getAddAriaLabel()\n }}</span>\n </div>\n </div>\n\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n data-testid=\"active-filters-announcement\"\n >\n {{ getActiveFiltersLabel() }}\n </span>\n <button\n type=\"submit\"\n class=\"hidden-submit\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n ></button>\n</form>\n\n@if (!(compactSelectedMetas.length || compactAlwaysVisibleMetas.length)) {\n <ng-container [ngTemplateOutlet]=\"filterTagsTemplate\"></ng-container>\n}\n", styles: ["@charset \"UTF-8\";:root{--pfx-filter-h: 42px;--pfx-filter-align-offset: 2px;--pfx-gap-x: 12px;--pfx-gap-y: 8px;--pfx-always-max-desktop: 380px;--pfx-slider-span-desktop: 2;--pfx-advanced-pad-x: 24px;--pfx-field-min: 280px;--pfx-overlay-margin-y: 16px;--pfx-overlay-margin-x: 16px}:host-context(.theme-light){--pfx-surface-border: var( --praxis-theme-outline-strong, var(--md-sys-color-outline) )}:host{--border-color: var( --praxis-theme-outline, var(--md-sys-color-outline-variant) );--border-color-hover: var( --praxis-theme-outline-strong, var(--md-sys-color-outline) );--pfx-overlay-surface: var( --praxis-theme-surface-raised, var(--md-sys-color-surface-container) );--pfx-overlay-surface-elev: var( --praxis-theme-surface-overlay, var(--md-sys-color-surface-container-high) );--pfx-overlay-surface-variant: var( --praxis-theme-surface-raised, var(--md-sys-color-surface-variant) );--pfx-overlay-on-surface: var( --praxis-theme-on-surface, var(--md-sys-color-on-surface) );--pfx-overlay-on-surface-variant: var( --praxis-theme-on-surface-muted, var(--md-sys-color-on-surface-variant) );display:block;width:100%;min-width:0;flex:1 1 auto;container-name:praxis-filter;container-type:inline-size}.schema-error-banner{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 10px;border-radius:10px;border:1px solid color-mix(in srgb,var(--md-sys-color-error) 50%,transparent);background:color-mix(in srgb,var(--md-sys-color-error-container) 85%,transparent);color:var(--md-sys-color-on-error-container)}.schema-error-message{min-width:0;flex:1 1 auto;font-size:.8125rem}:host ::ng-deep .schema-error-retry.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: color-mix( in srgb, var(--md-sys-color-error) 55%, var(--md-sys-color-outline) )}.praxis-filter-bar{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto;column-gap:6px;row-gap:6px;align-items:center}.inline-actions .actions-anchor{width:0;height:0;overflow:hidden}.query-auxiliary{grid-column:2;grid-row:1;display:flex;align-items:center;flex-wrap:nowrap;gap:6px;justify-self:end;align-self:center;width:fit-content;max-width:100%;min-width:0}.inline-actions{flex:0 0 auto;display:flex;gap:6px;white-space:nowrap;height:var(--pfx-filter-h);align-items:center;padding:0 2px}.action-cluster{flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;min-height:36px;padding:2px;border-radius:999px;border:1px solid var(--pfx-surface-border, var(--md-sys-color-outline-variant));background:var(--md-sys-color-surface-container-highest)}.action-cluster--manage{position:relative;border-color:color-mix(in srgb,var(--md-sys-color-primary) 35%,var(--md-sys-color-outline-variant));background:var(--md-sys-color-surface-container-high)}.active-filter-summary{display:inline-flex;align-items:center;min-height:30px;gap:5px;padding:0 9px;border-radius:var(--md-sys-shape-corner-full, 999px);background:var(--md-sys-color-secondary-container, var(--md-sys-color-primary-container));color:var(--md-sys-color-on-secondary-container, var(--md-sys-color-on-primary-container));font-size:.75rem;font-weight:600;line-height:1;letter-spacing:.01em;white-space:nowrap}.active-filter-summary mat-icon{width:16px;height:16px;font-size:16px}.action-cluster .cluster-btn.is-opening{pointer-events:none}.action-cluster .cluster-btn.is-disabled{color:color-mix(in srgb,var(--md-sys-color-on-surface) 38%,transparent);cursor:default;opacity:.56}.inline-actions.actions-outlined button[praxisIconButton]{border:1px solid var(--pfx-surface-border, var(--md-sys-color-outline-variant));border-radius:50%}.inline-actions.actions-outlined .action-cluster button[praxisIconButton]{border-color:transparent}.separator-before{position:relative;margin-left:10px}.separator-before:before{content:\"\";position:absolute;left:-7px;top:50%;width:1px;height:18px;transform:translateY(-50%);background:color-mix(in srgb,var(--md-sys-color-outline) 72%,transparent)}.inline-actions mat-icon{width:20px;height:20px;font-size:20px}.fields-grid{grid-column:1;grid-row:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--pfx-always-min, 220px),1fr));grid-auto-flow:row dense;gap:6px}.compact-fields{grid-column:1;grid-row:1;display:flex;flex-wrap:wrap;justify-content:flex-start;align-content:center;align-items:center;gap:6px;min-width:0;min-height:var(--pfx-filter-h)}.query-auxiliary .praxis-filter-tags{flex:0 1 auto;min-width:0;min-height:var(--pfx-filter-h);display:inline-flex;align-items:center}.query-auxiliary .praxis-filter-tags mat-chip-set{min-width:0}:host ::ng-deep .compact-fields .pfx-field-shell,:host ::ng-deep .compact-fields .pfx-field-shell-wrapper,:host ::ng-deep .compact-fields .pfx-field-shell-host{--pfx-field-shell-width: fit-content;--pfx-field-shell-field-width: auto;width:fit-content!important;max-width:100%;min-width:0;flex:0 1 auto!important}:host ::ng-deep .compact-fields>.pfx-field-shell,:host ::ng-deep .compact-fields>praxis-field-shell{flex:0 1 auto!important;width:fit-content!important;max-width:100%;min-width:0}:host ::ng-deep .compact-fields .pfx-field-shell .mat-mdc-form-field{width:auto!important;max-width:100%;margin-bottom:0}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{width:var(--pdx-inline-time-field-w, auto)!important;inline-size:var(--pdx-inline-time-field-w, auto)!important;max-width:min(var(--pdx-inline-time-max-w, 280px),100cqw - 24px)!important}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineDateRange] .mat-mdc-form-field{width:var(--pdx-inline-date-range-shell-width, auto)!important;max-width:100%!important}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:1}.praxis-filter-bar.has-compact .fields-grid{grid-column:1/-1;grid-row:2}@container praxis-filter (max-width: 900px){.praxis-filter-bar.has-compact{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.praxis-filter-bar.has-compact .compact-fields{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scrollbar-width:thin;scroll-padding-inline:2px;padding-block:2px}.praxis-filter-bar.has-compact .query-auxiliary{justify-content:flex-end;flex-wrap:nowrap;width:fit-content}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell,praxis-field-shell),:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){flex:0 0 auto!important;width:clamp(var(--pfx-compact-field-min, 148px),30cqw,var(--pfx-compact-field-max, 190px))!important;min-width:min(var(--pfx-compact-field-min, 148px),100cqw - 12px)!important}}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider] mat-slider,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] mat-slider,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] mat-slider{width:100%;display:block}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider] .pdx-slider-wrapper,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-slider-wrapper,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-slider-wrapper{padding-top:2px}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-range-slider-container,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-range-slider-container{padding:2px 0 0}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-slider-label,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-slider-label{margin-bottom:4px;line-height:1.15}:host ::ng-deep .fields-grid .mat-mdc-text-field-wrapper.mdc-text-field--outlined{min-height:var(--pfx-filter-h);align-items:center}:host ::ng-deep .fields-grid .mat-mdc-form-field-infix{min-height:var(--pfx-filter-h)}:host ::ng-deep .fields-grid .mat-mdc-select-trigger{height:var(--pfx-filter-h);align-items:center}:host ::ng-deep .fields-grid .mat-mdc-form-field{width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSearchableSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSearchableSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineMultiSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineMultiSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineInput]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineInput] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlinePhone]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlinePhone] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineToggle]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineToggle] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineRange]{justify-self:start}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineRange]{max-width:min(340px,100%)}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDate]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDate] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDateRange]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDateRange] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .mat-mdc-form-field-subscript-wrapper{min-height:0;margin-top:0}:host ::ng-deep .fields-grid .mat-mdc-form-field{margin-bottom:0}.praxis-filter-bar.has-compact{--pfx-filter-tag-color: var(--md-sys-color-primary-container);--pfx-filter-tag-on-color: var(--md-sys-color-on-primary-container);--pfx-filter-tag-outline-color: var(--md-sys-color-primary);--pdx-inline-control-height: var(--pfx-filter-inline-control-height, 42px);--pdx-inline-control-height-mobile: var( --pfx-filter-inline-control-height-mobile, 40px );--pdx-inline-control-padding-x: var( --pfx-filter-inline-control-padding-x, 12px );--pdx-inline-control-padding-x-mobile: var( --pfx-filter-inline-control-padding-x-mobile, 12px );--pdx-inline-clear-size: var(--pfx-filter-inline-clear-size, 24px);--pdx-inline-chip-radius: var( --pfx-filter-inline-chip-radius, var(--md-sys-shape-corner-full, 999px) );--pdx-inline-chip-active-bg: var(--pfx-filter-tag-color);--pdx-inline-chip-active-fg: var(--pfx-filter-tag-on-color);--pdx-inline-chip-active-clear-color: var(--pfx-filter-tag-on-color);--pdx-inline-field-focus-outline: var(--pfx-filter-tag-outline-color)}.praxis-filter-bar.has-compact.tag-color-accent{--pfx-filter-tag-color: var( --md-sys-color-tertiary-container, var(--md-sys-color-secondary-container) );--pfx-filter-tag-on-color: var( --md-sys-color-on-tertiary-container, var(--md-sys-color-on-secondary-container) );--pfx-filter-tag-outline-color: var( --md-sys-color-tertiary, var(--md-sys-color-secondary) )}.praxis-filter-bar.has-compact.tag-color-warn{--pfx-filter-tag-color: var(--md-sys-color-error-container);--pfx-filter-tag-on-color: var(--md-sys-color-on-error-container);--pfx-filter-tag-outline-color: var(--md-sys-color-error)}.praxis-filter-bar.has-compact.tag-color-basic{--pfx-filter-tag-color: color-mix( in srgb, var(--md-sys-color-on-surface) 10%, transparent );--pfx-filter-tag-on-color: var(--md-sys-color-on-surface);--pfx-filter-tag-outline-color: var(--md-sys-color-outline-variant)}:host ::ng-deep .praxis-filter-bar.has-compact{--pfx-filter-inline-chip-padding-x: var(--pdx-inline-control-padding-x);--pfx-filter-inline-icon-gap: 4px}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-text-field-wrapper.mdc-text-field--outlined{padding-inline:var(--pfx-filter-inline-chip-padding-x)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-prefix{align-items:center;display:inline-flex;flex:0 0 auto;margin-right:var(--pfx-filter-inline-icon-gap)!important;padding:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-suffix{align-items:center;display:inline-flex;flex:0 0 auto;gap:var(--pfx-filter-inline-icon-gap)!important;margin-left:var(--pfx-filter-inline-icon-gap)!important;padding:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-prefix>.mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-suffix>.mat-icon{flex:0 0 16px!important;font-size:16px!important;height:16px!important;line-height:16px!important;margin:0!important;padding:0!important;width:16px!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-infix{padding-inline:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select) .pdx-chip-trigger{gap:var(--pfx-filter-inline-icon-gap)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-currency-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-searchable-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-async-select.pdx-has-selection .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-value .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-both .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-entity-lookup.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-multi-select.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-distance-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-score-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-relative-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-relative-period-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-rating-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-pipeline-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-sentiment-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-color-label-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-time-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active{--pdx-inline-currency-symbol-color: var(--pfx-filter-tag-on-color);background:var(--pfx-filter-tag-color)!important;border-color:transparent!important;color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-currency-range-chip.is-active :where(.mat-icon,.pdx-inline-currency-range-value,.pdx-inline-currency-range-text,.pdx-inline-currency-range-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear) :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear,.pdx-inline-number-suffix),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-select,.pdx-inline-searchable-select) .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active) :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-async-select.pdx-has-selection :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-value :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-both :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-entity-lookup.pdx-has-selection,.pdx-inline-multi-select.pdx-has-selection) .pdx-chip-trigger :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active) :where(.mat-icon,button,span),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-time-range-chip.is-active :where(.pdx-inline-time-range-icon,.pdx-inline-time-range-text,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active :where(.pdx-inline-toggle-label,.mat-icon){color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-currency-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-searchable-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-async-select.pdx-has-selection .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-value .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-both .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-entity-lookup.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-multi-select.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-distance-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-score-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-relative-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-relative-period-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-rating-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-pipeline-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-sentiment-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-color-label-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-time-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active{--pdx-inline-currency-symbol-color: var(--pfx-filter-tag-outline-color);background:transparent!important;border-color:var(--pfx-filter-tag-outline-color)!important;box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-outline-color);color:var(--pfx-filter-tag-outline-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-currency-range-chip.is-active :where(.mat-icon,.pdx-inline-currency-range-value,.pdx-inline-currency-range-text,.pdx-inline-currency-range-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear) :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear,.pdx-inline-number-suffix),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-select,.pdx-inline-searchable-select) .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active) :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-async-select.pdx-has-selection :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-value :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-both :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-entity-lookup.pdx-has-selection,.pdx-inline-multi-select.pdx-has-selection) .pdx-chip-trigger :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active) :where(.mat-icon,button,span),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-time-range-chip.is-active :where(.pdx-inline-time-range-icon,.pdx-inline-time-range-text,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active :where(.pdx-inline-toggle-label,.mat-icon){color:var(--pfx-filter-tag-outline-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear){background:color-mix(in srgb,currentColor 16%,transparent)!important;border-radius:50%!important;color:inherit!important;display:inline-grid!important;flex:0 0 var(--pdx-inline-clear-size, 24px)!important;height:var(--pdx-inline-clear-size, 24px)!important;min-width:var(--pdx-inline-clear-size, 24px)!important;place-items:center!important;width:var(--pdx-inline-clear-size, 24px)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear):hover{background:color-mix(in srgb,currentColor 24%,transparent)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear) .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper:has(.pdx-inline-clear) .pdx-inline-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper:has(.pdx-inline-clear) .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active .pdx-inline-toggle-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active .pdx-inline-toggle-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active .pdx-chip-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active .pdx-chip-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}.praxis-filter-tags.outlined .mat-mdc-chip{background:transparent!important;--mat-chip-outline-width: 1px;--mat-chip-outline-color: var(--md-sys-color-outline-variant);box-shadow:inset 0 0 0 var(--mat-chip-outline-width) var(--mat-chip-outline-color)}.praxis-filter-tags.outlined.tag-color-primary .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-primary)}.praxis-filter-tags.outlined.tag-color-accent .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-tertiary)}.praxis-filter-tags.outlined.tag-color-warn .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-error)}.praxis-filter-tags.outlined mat-chip.active .mat-mdc-chip,.praxis-filter-tags.outlined .mat-mdc-chip.mat-mdc-chip-highlighted{--mat-chip-outline-width: 2px;box-shadow:inset 0 0 0 var(--mat-chip-outline-width) var(--mat-chip-outline-color)!important}.praxis-filter-tags.outlined.tag-color-basic mat-chip.active .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-primary)}.praxis-filter-tags .mat-mdc-standard-chip .mdc-evolution-chip__text-label{display:flex;align-items:center;justify-content:center;gap:4px;line-height:1.2;font-size:.875rem}.praxis-filter-tags .chip-leading,.praxis-filter-tags .chip-trailing,.praxis-filter-tags .chip-readonly{display:inline-flex;align-items:center;flex:0 0 auto}.praxis-filter-tags .leading-check{width:18px;height:18px;font-size:18px;line-height:1}.praxis-filter-tags .chip-label{display:inline-flex;align-items:center;min-width:0;line-height:1.25}.praxis-filter-tags .chip-readonly{margin-inline-start:8px;color:var(--mat-sys-on-surface-variant, var(--md-sys-color-on-surface-variant))}.praxis-filter-tags .chip-readonly .mat-icon{width:16px;height:16px;font-size:16px;line-height:16px}.praxis-filter-tags .mat-mdc-standard-chip{--mat-chip-container-height: 36px}.praxis-filter-advanced{display:flex;flex-direction:column;min-width:400px;max-width:90vw;min-height:260px;max-height:min(80vh,720px);margin:var(--pfx-overlay-margin-y) var(--pfx-overlay-margin-x);background-color:var(--pfx-overlay-surface)!important;background:var(--pfx-overlay-surface)!important;color:var(--pfx-overlay-on-surface);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--md-sys-elevation-level3)}.advanced-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px var(--pfx-advanced-pad-x) 10px;border-bottom:1px solid var(--border-color);background:var(--pfx-overlay-surface)}.advanced-title-block{display:flex;flex-direction:column;gap:2px}.advanced-title{font-size:1rem;font-weight:600;color:var(--pfx-overlay-on-surface)}.advanced-subtitle{font-size:.85rem;color:var(--pfx-overlay-on-surface-variant)}.advanced-close{align-self:flex-start}.praxis-filter-overlay.mobile .praxis-filter-advanced{height:100vh;max-height:100vh;margin:0;border-radius:0}:host ::ng-deep .praxis-overlay-backdrop{background:var(--md-sys-color-scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}:host ::ng-deep .praxis-filter-overlay.frosted .praxis-filter-advanced{background:var(--pfx-overlay-surface-variant)!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-color:var(--border-color)}:host ::ng-deep .praxis-filter-overlay.frosted .advanced-header,:host ::ng-deep .praxis-filter-overlay.frosted .advanced-actions{background:var(--pfx-overlay-surface-variant)!important}.advanced-body{padding:12px var(--pfx-advanced-pad-x) 72px;overflow:auto;flex:1 1 auto;overscroll-behavior:contain}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-row{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(var(--pfx-field-min),1fr));gap:var(--pfx-gap-y) var(--pfx-gap-x)}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-column{min-width:0}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-column .mat-mdc-form-field{width:100%}.advanced-actions{position:sticky;bottom:0;z-index:2;display:flex;justify-content:flex-end;gap:8px;padding:var(--pfx-gap-y) var(--pfx-advanced-pad-x);background-color:var(--pfx-overlay-surface)!important;background:var(--pfx-overlay-surface)!important;border-top:1px solid var(--border-color);box-shadow:0 -1px 0 var(--md-sys-color-outline-variant)}.advanced-actions .mat-mdc-button-base{height:40px}.advanced-actions .mat-mdc-raised-button.mat-primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}:host ::ng-deep .praxis-filter-advanced .mat-mdc-text-field-wrapper.mdc-text-field--outlined{--mdc-outlined-text-field-outline-color: var(--border-color);--mdc-outlined-text-field-hover-outline-color: var(--border-color-hover);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-label-text-color: var( --pfx-overlay-on-surface-variant );--mdc-outlined-text-field-input-text-color: var(--pfx-overlay-on-surface);--mdc-outlined-text-field-container-color: var(--pfx-overlay-surface)}:host ::ng-deep .praxis-filter-advanced .mat-mdc-select-trigger,:host ::ng-deep .praxis-filter-advanced .mat-mdc-form-field-subscript-wrapper,:host ::ng-deep .praxis-filter-advanced .mat-mdc-form-field-infix{color:var(--pfx-overlay-on-surface)}@container praxis-filter (min-width: 600px){.fields-grid{gap:6px 8px}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@container praxis-filter (max-width: 640px){.praxis-filter-bar.has-compact{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:1;display:flex;flex-wrap:nowrap;align-items:center;width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-inline:contain;scrollbar-width:thin}.praxis-filter-bar.has-compact .query-auxiliary{grid-column:1;grid-row:2;justify-self:start;width:100%;height:auto;align-self:start}.praxis-filter-bar.has-compact .query-auxiliary .praxis-filter-tags{flex:0 1 auto;min-width:0;min-height:40px}.praxis-filter-bar.has-compact .query-auxiliary .praxis-filter-tags mat-chip-set,.praxis-filter-bar.has-compact .query-auxiliary .praxis-filter-tags mat-chip{max-width:100%}.praxis-filter-bar.has-compact .query-auxiliary .praxis-filter-tags mat-chip{min-height:44px}.praxis-filter-bar.has-compact .inline-actions .action-cluster{max-width:100%;min-height:44px;padding-block:0}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>.pfx-field-shell,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>praxis-field-shell,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){--pfx-field-shell-width: auto;--pfx-field-shell-field-width: auto;flex:0 0 auto!important;width:min(var(--pfx-compact-field-max, 190px),100cqw - 12px)!important;min-width:min(var(--pfx-compact-field-min, 148px),100cqw - 12px)!important;max-width:none!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-host{--pfx-field-shell-width: auto;--pfx-field-shell-field-width: auto;width:100%!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .mat-mdc-form-field,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-currency-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-distance-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-score-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-relative-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-relative-period-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-rating-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-pipeline-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-sentiment-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-color-label-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-time-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-toggle-pill{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range .pdx-inline-date-range-root,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range .mat-mdc-form-field.pdx-inline-date-range{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :where(.pdx-chip-label,.pdx-chip-trigger,.pdx-inline-range-text,.pdx-inline-currency-range-text,.pdx-inline-distance-text,.pdx-inline-score-text,.pdx-inline-relative-text,.pdx-inline-relative-period-text,.pdx-inline-rating-text,.pdx-inline-pipeline-text,.pdx-inline-sentiment-text,.pdx-inline-color-label-text,.pdx-inline-time-range-text,.pdx-inline-toggle-label){min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime],:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-host{--pfx-field-shell-width: fit-content;--pfx-field-shell-field-width: var(--pdx-inline-time-field-w, auto);justify-self:start;width:fit-content!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{width:var(--pdx-inline-time-field-w, auto)!important;inline-size:var(--pdx-inline-time-field-w, auto)!important;max-width:min(var(--pdx-inline-time-max-w, 280px),100cqw - 24px)!important}}@container praxis-filter (min-width: 960px){.fields-grid{gap:6px 10px}}@container praxis-filter (min-width: 1200px){.fields-grid{grid-template-columns:repeat(auto-fit,minmax(var(--pfx-always-min, 220px),var(--pfx-always-max-desktop, 380px)));justify-content:start;align-content:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeslider]{grid-column:span var(--pfx-slider-span-desktop, 2)}}.inline-toggles{display:flex;align-items:center;gap:8px;margin:0 4px 0 6px}:host ::ng-deep .inline-actions .mat-mdc-slide-toggle{height:var(--pfx-filter-h);display:flex;align-items:center}:host ::ng-deep .inline-actions .mat-mdc-slide-toggle .mdc-form-field{align-items:center}::ng-deep .praxis-filter-overlay .praxis-filter-advanced .praxis-filter-form .filter-row{display:grid!important;gap:var(--pfx-gap-y, 1px) var(--pfx-gap-x, 6px)}@media(min-width:600px){::ng-deep .praxis-filter-overlay .praxis-filter-advanced .praxis-filter-form .filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important}.hidden-submit{position:absolute!important;width:0!important;height:0!important;padding:0!important;margin:0!important;border:0!important;opacity:0!important;pointer-events:none!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;overflow:hidden!important}:host ::ng-deep .inline-actions [matBadge] .mat-badge-content{top:-6px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-size:10px;font-weight:700;line-height:16px;letter-spacing:0;text-indent:0;color:var(--md-sys-color-on-primary, #fff)}:host ::ng-deep .inline-actions [matBadge][matbadgecolor=warn] .mat-badge-content,:host ::ng-deep .inline-actions [matBadge].mat-badge-warn .mat-badge-content{color:var(--md-sys-color-on-error, #fff)}.praxis-filter-bar :where(.mat-mdc-slide-toggle .mdc-switch__icons){display:none!important}.praxis-filter-bar{--mdc-switch-unselected-icon-size: 0px;--mdc-switch-selected-icon-size: 0px;--pfx-always-min: 220px}.praxis-filter-card{display:flex;flex-direction:column;gap:6px;padding:8px 12px;border-radius:12px;border:1px solid var(--pfx-surface-border, var(--praxis-theme-outline, var(--md-sys-color-outline-variant)));background:var(--praxis-theme-surface-raised, var(--md-sys-color-surface-container));color:var(--praxis-theme-on-surface, var(--md-sys-color-on-surface))}.add-manager{--_pfx-field-manager-surface: var( --pfx-field-manager-surface, var( --praxis-theme-surface-overlay, var(--md-sys-color-surface-container-highest) ) );--_pfx-field-manager-on-surface: var( --pfx-field-manager-on-surface, var(--praxis-theme-on-surface, var(--md-sys-color-on-surface)) );--_pfx-field-manager-on-surface-muted: var( --pfx-field-manager-on-surface-muted, var(--praxis-theme-on-surface-muted, var(--md-sys-color-on-surface-variant)) );--_pfx-field-manager-outline: var( --pfx-field-manager-outline, var( --pdx-inline-field-outline, var(--praxis-theme-outline, var(--md-sys-color-outline-variant)) ) );--_pfx-field-manager-focus-outline: var( --pfx-field-manager-focus-outline, var( --pdx-inline-field-focus-outline, var(--praxis-theme-focus-outline, var(--md-sys-color-primary)) ) );--_pfx-field-manager-scrollbar-thumb: var( --pfx-field-manager-scrollbar-thumb, color-mix( in srgb, var(--_pfx-field-manager-on-surface) 42%, var(--_pfx-field-manager-surface) ) );--_pfx-field-manager-scrollbar-thumb-hover: var( --pfx-field-manager-scrollbar-thumb-hover, color-mix( in srgb, var(--_pfx-field-manager-on-surface) 64%, var(--_pfx-field-manager-surface) ) );--_pfx-field-manager-scrollbar-track: var( --pfx-field-manager-scrollbar-track, transparent );--_pfx-field-manager-scrollbar-size: var( --pfx-field-manager-scrollbar-size, 10px );display:flex;flex-direction:column;width:min(400px,100vw - 24px);max-height:min(70vh,560px);overflow:hidden;border:1px solid var(--_pfx-field-manager-outline);border-radius:var(--pfx-overlay-radius, 16px);background:var(--_pfx-field-manager-surface);color:var(--_pfx-field-manager-on-surface);box-shadow:var(--praxis-theme-elevation, var(--md-sys-elevation-level3))}.add-manager__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 16px 8px 20px}.add-manager__header h2{margin:0;font:var(--md-sys-typescale-title-medium)}.add-manager__header p{margin:4px 0 0;color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-body-small)}.add-manager__search{padding:8px 20px}.add-manager__bulk{padding:8px 20px;border-block:1px solid var(--_pfx-field-manager-outline)}.add-manager__list{display:flex;flex-direction:column;min-height:80px;overflow:auto;overscroll-behavior:contain;scrollbar-color:var(--_pfx-field-manager-scrollbar-thumb) var(--_pfx-field-manager-scrollbar-track);scrollbar-gutter:stable;scrollbar-width:auto;padding:4px 12px 12px}.add-manager__list::-webkit-scrollbar{width:var(--_pfx-field-manager-scrollbar-size);height:var(--_pfx-field-manager-scrollbar-size)}.add-manager__list::-webkit-scrollbar-track{background:var(--_pfx-field-manager-scrollbar-track)}.add-manager__list::-webkit-scrollbar-thumb{min-height:32px;border:2px solid transparent;border-radius:999px;background:var(--_pfx-field-manager-scrollbar-thumb);background-clip:padding-box}.add-manager__list::-webkit-scrollbar-thumb:hover{background:var(--_pfx-field-manager-scrollbar-thumb-hover);background-clip:padding-box}.add-manager__section+.add-manager__section{margin-top:8px;padding-top:8px;border-top:1px solid var(--_pfx-field-manager-outline)}.add-manager__section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0;padding:8px 8px 4px;color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-medium)}.add-manager__section-title span{color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-small);white-space:nowrap}.add-manager__item{display:flex;align-items:center;min-height:48px;padding-inline:8px;border-radius:var(--pfx-control-radius, 8px)}::ng-deep .add-manager__item .mdc-form-field{align-items:center}::ng-deep .add-manager__item .mdc-label{display:inline-flex;align-items:center;min-height:20px}.add-manager__item:hover{background:color-mix(in srgb,var(--_pfx-field-manager-on-surface) 6%,var(--_pfx-field-manager-surface))}.add-manager__item-info{width:16px;height:16px;margin-left:4px;vertical-align:text-bottom;color:var(--_pfx-field-manager-on-surface-muted);font-size:16px}.add-manager__item-pending{display:inline-flex;align-items:center;margin-left:8px;padding:2px 7px;border-radius:999px;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 14%,transparent);color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-small);white-space:nowrap}.add-manager__item--pending{background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}.add-manager__section--selected .add-manager__item{box-shadow:inset 2px 0 color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 56%,transparent)}.add-manager__item--added{animation:add-manager-item-added var(--md-sys-motion-duration-short4, .2s) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(.05, .7, .1, 1)) both}.add-manager__item--removed{animation:add-manager-item-removed var(--md-sys-motion-duration-short4, .2s) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(.05, .7, .1, 1)) both}@keyframes add-manager-item-added{0%{opacity:.72;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 24%,var(--_pfx-field-manager-surface))}to{opacity:1;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}}@keyframes add-manager-item-removed{0%{opacity:.72;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 72%,transparent)}to{opacity:1;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}}@media(prefers-reduced-motion:reduce){.add-manager__item--added,.add-manager__item--removed{animation:none}}.add-manager__empty{display:flex;align-items:center;justify-content:center;gap:8px;min-height:96px;padding:16px;color:var(--_pfx-field-manager-on-surface-muted);text-align:center}.add-manager__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--_pfx-field-manager-outline);background:var(--_pfx-field-manager-surface)}.add-manager__notice{display:flex;align-items:flex-start;gap:8px;padding:10px 16px;font:var(--md-sys-typescale-body-small)}.add-manager__notice mat-icon{flex:0 0 auto}.add-manager__notice--warning{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.add-manager__notice--conflict{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}@media(max-width:600px){.add-manager{width:calc(100vw - 16px);max-height:min(78dvh,640px);border-radius:var(--pfx-overlay-radius, 16px)}.add-manager__header,.add-manager__search{padding-inline:16px}}.inline-actions .add-trigger{display:inline-flex;align-items:center;gap:6px;height:32px;width:100%;max-width:100%;min-width:0;padding:0 10px;border-radius:0;border:0;background:transparent;overflow:visible}.inline-actions .add-trigger--icon{justify-content:center;width:32px;min-width:32px;padding:0}:host ::ng-deep .inline-actions .add-trigger mat-icon{width:18px;height:18px;font-size:18px;flex:0 0 auto}.inline-actions .add-trigger-label{display:inline-block;flex:1 1 auto;min-width:0;max-width:100%;text-align:left;direction:ltr;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;line-height:1}:host ::ng-deep .action-cluster--manage .mat-mdc-select{flex:0 0 auto;width:180px;min-width:0;max-width:180px}:host ::ng-deep .action-cluster--manage .cluster-select--hidden.mat-mdc-select{position:absolute;width:1px;min-width:1px;max-width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected{background:var(--pfx-filter-tag-color);color:var(--pfx-filter-tag-on-color);box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-color)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected{background:transparent;color:var(--pfx-filter-tag-outline-color);box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-outline-color)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected .pdx-chip-trigger.is-active{background:transparent!important;border-color:transparent!important;box-shadow:none!important;color:inherit!important}:host ::ng-deep .action-cluster--manage .mat-mdc-select-trigger{min-height:32px;padding:0}:host ::ng-deep .action-cluster--manage .mat-mdc-select-value,:host ::ng-deep .action-cluster--manage .mat-mdc-select-value-text,:host ::ng-deep .action-cluster--manage .mat-mdc-select-min-line{width:auto;min-width:0;max-width:100%;display:inline-flex;align-items:center;justify-content:flex-start;overflow:visible}.praxis-filter-card .summary-header{display:flex;align-items:center;gap:10px}.praxis-filter-card .summary-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.praxis-filter-card .summary-title{font-weight:600}.praxis-filter-card .summary-subtitle{opacity:.8;font-size:.875rem}.praxis-filter-card .summary-badges{display:flex;flex-wrap:wrap;gap:6px}.praxis-filter-card .summary-badges span{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-primary-container);border:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-primary-container);font-size:12px}.praxis-filter-card .card-actions{display:flex;gap:8px}:host ::ng-deep .inline-actions .mat-mdc-select-arrow-wrapper{display:none}.inline-actions .add-filter-btn{height:36px;border-radius:18px;padding:0 16px 0 12px}.inline-actions .add-filter-btn mat-icon{margin-right:8px;margin-left:-4px}\n"] }]
42068
+ }, template: "@if (saving) {\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n}\n@if (schemaError) {\n <div class=\"schema-error-banner\" role=\"alert\" aria-live=\"polite\">\n <mat-icon [praxisIcon]=\"'error_outline'\" aria-hidden=\"true\"></mat-icon>\n <span class=\"schema-error-message\">{{\n i18nLabels.errorLoadingFilters || \"Erro ao carregar filtros.\"\n }}</span>\n <button\n mat-stroked-button\n class=\"schema-error-retry\"\n type=\"button\"\n (click)=\"retrySchemaLoad()\"\n [attr.aria-label]=\"i18nLabels.retry || 'Tentar novamente'\"\n >\n {{ i18nLabels.retry || \"Tentar novamente\" }}\n </button>\n </div>\n}\n\n<ng-template #filterTagsTemplate>\n @if (displayedTags.length) {\n <div\n class=\"praxis-filter-tags\"\n [class.outlined]=\"tagVariant === 'outlined'\"\n [class.tag-color-basic]=\"tagColor === 'basic'\"\n [class.tag-color-primary]=\"tagColor === 'primary'\"\n [class.tag-color-accent]=\"tagColor === 'accent'\"\n [class.tag-color-warn]=\"tagColor === 'warn'\"\n >\n <mat-chip-set [attr.aria-label]=\"i18nLabels.shortcutsLabel || 'Atalhos'\">\n @for (tag of displayedTags; track trackById($index, tag)) {\n <mat-chip\n [class.active]=\"isActiveTag(tag)\"\n [color]=\"\n tagVariant === 'outlined' || tagColor === 'basic'\n ? null\n : tagColor\n \"\n [highlighted]=\"\n tagVariant === 'filled' &&\n tagColor !== 'basic' &&\n isActiveTag(tag)\n \"\n (click)=\"toggleTag(tag)\"\n (keydown.enter)=\"toggleTag(tag)\"\n (keydown.space)=\"toggleTag(tag)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-pressed]=\"isActiveTag(tag)\"\n >\n @if (editingTagId !== tag.id) {\n <span class=\"chip-content\">\n <span class=\"chip-leading\" aria-hidden=\"true\">\n <mat-icon\n class=\"leading-check\"\n [class.leading-check--hidden]=\"!isActiveTag(tag)\"\n >check</mat-icon\n >\n </span>\n <span class=\"chip-label\">{{ tag.label }}</span>\n @if (isUserTag(tag)) {\n <span class=\"chip-trailing\">\n <button\n praxisIconButton=\"more_vert\"\n size=\"compact\"\n [matMenuTriggerFor]=\"tagMenu\"\n (click)=\"$event.stopPropagation()\"\n [attr.aria-label]=\"getTagActionsAriaLabel(tag)\"\n ></button>\n <mat-menu #tagMenu=\"matMenu\" xPosition=\"before\">\n <button mat-menu-item (click)=\"startEditTag(tag, $event)\">\n <mat-icon>edit</mat-icon>\n <span>{{ i18nLabels.renameShortcut }}</span>\n </button>\n <button mat-menu-item (click)=\"deleteTag(tag)\">\n <mat-icon>delete</mat-icon>\n <span>{{ i18nLabels.removeShortcut }}</span>\n </button>\n </mat-menu>\n </span>\n } @else {\n <span class=\"a11y-only\">{{\n i18nLabels.readonlyShortcut\n }}</span>\n <span\n class=\"chip-readonly\"\n [matTooltip]=\"i18nLabels.readonlyShortcut\"\n aria-hidden=\"true\"\n >\n <mat-icon\n [praxisIcon]=\"'lock'\"\n aria-hidden=\"true\"\n ></mat-icon>\n </span>\n }\n </span>\n } @else {\n <input\n matInput\n class=\"chip-editor\"\n [formControl]=\"editingTagLabel\"\n autofocus\n [matTooltip]=\"'Enter para salvar, Esc para cancelar'\"\n matTooltipPosition=\"below\"\n (keydown.enter)=\"commitEditTag(tag, $event)\"\n (keydown.escape)=\"cancelEditTag($event)\"\n (blur)=\"commitEditTag(tag, $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n </mat-chip>\n }\n </mat-chip-set>\n </div>\n }\n</ng-template>\n\n<form\n class=\"praxis-filter-bar\"\n [class.is-open]=\"advancedOpen\"\n [class.has-compact]=\"\n compactSelectedMetas.length || compactAlwaysVisibleMetas.length\n \"\n [class.tag-variant-filled]=\"tagVariant === 'filled'\"\n [class.tag-variant-outlined]=\"tagVariant === 'outlined'\"\n [class.tag-color-basic]=\"tagColor === 'basic'\"\n [class.tag-color-primary]=\"tagColor === 'primary'\"\n [class.tag-color-accent]=\"tagColor === 'accent'\"\n [class.tag-color-warn]=\"tagColor === 'warn'\"\n (click)=\"onFieldInteraction($event)\"\n (focusin)=\"onFieldInteraction($event)\"\n (change)=\"$event.stopPropagation()\"\n (submit)=\"onSubmit(); $event.preventDefault(); $event.stopPropagation()\"\n>\n @if (compactSelectedMetas.length || compactAlwaysVisibleMetas.length) {\n <div class=\"compact-fields\">\n @if (compactSelectedMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"compactSelectedMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onSelectedComponents($event)\"\n ></ng-container>\n }\n @if (compactAlwaysVisibleMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"compactAlwaysVisibleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onAlwaysComponents($event)\"\n ></ng-container>\n }\n <ng-container [ngTemplateOutlet]=\"filterTagsTemplate\"></ng-container>\n </div>\n }\n\n @if (gridSelectedMetas.length || gridAlwaysVisibleMetas.length) {\n <div class=\"fields-grid\">\n @if (gridSelectedMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"gridSelectedMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onSelectedComponents($event)\"\n ></ng-container>\n }\n @if (gridAlwaysVisibleMetas.length) {\n <ng-container\n dynamicFieldLoader\n [fields]=\"gridAlwaysVisibleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onAlwaysComponents($event)\"\n ></ng-container>\n }\n </div>\n }\n\n <div class=\"query-auxiliary\" data-filter-region=\"query-auxiliary\">\n <div\n class=\"inline-actions\"\n [class.actions-outlined]=\"actionsVariant === 'outlined'\"\n >\n <div\n class=\"actions-anchor\"\n #anchorRef=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n ></div>\n @if (toggleMetas.length) {\n <div class=\"inline-toggles\">\n <ng-container\n dynamicFieldLoader\n [fields]=\"toggleMetas\"\n [formGroup]=\"alwaysForm\"\n (componentsCreated)=\"onToggleComponents($event)\"\n ></ng-container>\n </div>\n }\n\n @if (\n (showAdvancedButton && hasAdvancedFields()) ||\n showAddButton ||\n showFilterSettings ||\n isFieldAuthoringEnabled()\n ) {\n <div class=\"action-cluster action-cluster--manage\">\n @if (showAdvancedButton && hasAdvancedFields()) {\n <button\n #advancedButton\n praxisIconButton=\"filter_list\"\n size=\"compact\"\n class=\"cluster-btn\"\n [busy]=\"advancedOpening\"\n [class.is-opening]=\"advancedOpening\"\n [class.is-disabled]=\"!hasAdvancedFields()\"\n type=\"button\"\n (click)=\"toggleAdvanced()\"\n [attr.aria-label]=\"getAdvancedAriaLabel()\"\n [attr.aria-expanded]=\"advancedOpen\"\n [attr.aria-disabled]=\"!hasAdvancedFields()\"\n [attr.aria-busy]=\"advancedOpening ? 'true' : null\"\n [matTooltip]=\"getAdvancedTooltip()\"\n matTooltipPosition=\"below\"\n [attr.aria-controls]=\"advancedPanelId\"\n ></button>\n }\n @if (showAddButton) {\n <button\n #addManagerOrigin=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n mat-button\n class=\"cluster-btn add-trigger\"\n type=\"button\"\n data-testid=\"filter-manage-fields-trigger\"\n [attr.aria-label]=\"getAddAriaLabel()\"\n [matTooltip]=\"getAddTooltip()\"\n matTooltipPosition=\"below\"\n [class.is-disabled]=\"!hasAddableFields()\"\n [attr.aria-disabled]=\"!hasAddableFields()\"\n [attr.aria-expanded]=\"addManagerOpen\"\n aria-haspopup=\"dialog\"\n [attr.aria-controls]=\"addManagerOpen ? addManagerTitleId : null\"\n (click)=\"toggleAddManager()\"\n >\n <mat-icon\n [praxisIcon]=\"'checklist'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span class=\"add-trigger-label\">{{ getAddTriggerLabel() }}</span>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"addManagerOrigin\"\n [cdkConnectedOverlayOpen]=\"addManagerOpen\"\n [cdkConnectedOverlayPositions]=\"addOverlayPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"addManagerViewportMargin\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeAddManager()\"\n (detach)=\"closeAddManager()\"\n (attach)=\"focusAddManagerSearch()\"\n (overlayKeydown)=\"$event.key === 'Escape' && closeAddManager()\"\n >\n <section\n class=\"add-manager\"\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"addManagerTitleId\"\n [attr.aria-describedby]=\"addManagerDescriptionId\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"false\"\n >\n <header class=\"add-manager__header\">\n <div>\n <h2 [id]=\"addManagerTitleId\">\n {{\n i18nLabels.manageFieldsTitle ||\n \"Gerenciar campos de filtro\"\n }}\n </h2>\n <p [id]=\"addManagerDescriptionId\">\n {{\n i18nLabels.manageFieldsDescription ||\n \"Escolha os campos exibidos na barra de filtros.\"\n }}\n </p>\n </div>\n <button\n praxisIconButton=\"close\"\n size=\"compact\"\n type=\"button\"\n (click)=\"closeAddManager()\"\n [attr.aria-label]=\"i18nLabels.close || 'Fechar'\"\n ></button>\n </header>\n <div class=\"add-manager__search\">\n <pdx-collection-search\n #addManagerSearch\n [value]=\"addQuery\"\n [placeholder]=\"\n i18nLabels.filtersSearch || i18nLabels.searchPlaceholder\n \"\n [ariaLabel]=\"\n i18nLabels.filtersSearch || i18nLabels.searchPlaceholder\n \"\n [clearAriaLabel]=\"i18nLabels.clearSearch || 'Limpar busca'\"\n (valueChange)=\"onAddQuery($event)\"\n />\n </div>\n <div class=\"add-manager__bulk\">\n <mat-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected() && !isAllSelected()\"\n [disabled]=\"!addItems.length || addManagerConflict\"\n (change)=\"toggleSelectAll()\"\n >\n {{\n i18nLabels.selectAllResults ||\n i18nLabels.selectAll ||\n \"Selecionar todos os resultados\"\n }}\n </mat-checkbox>\n </div>\n <div\n class=\"add-manager__list\"\n role=\"group\"\n [attr.aria-label]=\"\n i18nLabels.manageFieldsTitle || 'Gerenciar campos de filtro'\n \"\n >\n @if (getAddManagerFixedItems().length) {\n <section\n class=\"add-manager__section add-manager__section--fixed\"\n [attr.aria-label]=\"\n i18nLabels.fixedFieldsSectionTitle || 'Campos fixos'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.fixedFieldsSectionTitle || \"Campos fixos\"\n }}\n </h3>\n <ul class=\"add-manager__fixed-list\">\n @for (\n it of getAddManagerFixedItems();\n track trackById($index, it)\n ) {\n <li\n class=\"add-manager__item add-manager__item--fixed\"\n [attr.data-field-id]=\"it.id\"\n [attr.aria-label]=\"\n getAddManagerFixedFieldAriaLabel(it)\n \"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n [praxisIcon]=\"'lock'\"\n aria-hidden=\"true\"\n />\n <span>{{ it.label }}</span>\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n </li>\n }\n </ul>\n </section>\n }\n @if (getAddManagerSelectedItems().length) {\n <section\n class=\"add-manager__section add-manager__section--selected\"\n [attr.aria-label]=\"\n i18nLabels.selectedFieldsSectionTitle ||\n 'Campos exibidos'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.selectedFieldsSectionTitle ||\n \"Campos exibidos\"\n }}\n <span>{{ getAddManagerSelectedFieldsSummary() }}</span>\n </h3>\n @for (\n it of getAddManagerSelectedItems();\n track trackById($index, it)\n ) {\n <mat-checkbox\n class=\"add-manager__item\"\n [attr.data-field-id]=\"it.id\"\n [checked]=\"isAddManagerFieldSelected(it.id)\"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n [attr.aria-description]=\"\n getAddManagerFieldAriaDescription(it)\n \"\n [class.add-manager__item--added]=\"\n isAddManagerItemInMotion(it.id, 'added')\n \"\n [class.add-manager__item--removed]=\"\n isAddManagerItemInMotion(it.id, 'removed')\n \"\n [class.add-manager__item--pending]=\"\n isAddManagerFieldPendingRemoval(it.id)\n \"\n [disabled]=\"addManagerConflict\"\n (change)=\"toggleManagedField(it.id, $event.checked)\"\n >\n {{ it.label }}\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n @if (\n getAddManagerFieldPendingLabel(it.id);\n as pendingLabel\n ) {\n <span class=\"add-manager__item-pending\">{{\n pendingLabel\n }}</span>\n }\n </mat-checkbox>\n }\n </section>\n }\n @if (getAddManagerAvailableItems().length) {\n <section\n class=\"add-manager__section\"\n [attr.aria-label]=\"\n i18nLabels.availableFieldsSectionTitle ||\n 'Campos dispon\u00EDveis'\n \"\n >\n <h3 class=\"add-manager__section-title\">\n {{\n i18nLabels.availableFieldsSectionTitle ||\n \"Campos dispon\u00EDveis\"\n }}\n </h3>\n @for (\n it of getAddManagerAvailableItems();\n track trackById($index, it)\n ) {\n <mat-checkbox\n class=\"add-manager__item\"\n [attr.data-field-id]=\"it.id\"\n [checked]=\"isAddManagerFieldSelected(it.id)\"\n [matTooltip]=\"it.description || ''\"\n [matTooltipDisabled]=\"!it.description\"\n matTooltipPosition=\"above\"\n [attr.aria-description]=\"\n getAddManagerFieldAriaDescription(it)\n \"\n [class.add-manager__item--added]=\"\n isAddManagerItemInMotion(it.id, 'added')\n \"\n [class.add-manager__item--removed]=\"\n isAddManagerItemInMotion(it.id, 'removed')\n \"\n [class.add-manager__item--pending]=\"\n isAddManagerFieldPendingAddition(it.id)\n \"\n [disabled]=\"addManagerConflict\"\n (change)=\"toggleManagedField(it.id, $event.checked)\"\n >\n {{ it.label }}\n @if (it.description) {\n <mat-icon\n class=\"add-manager__item-info\"\n [praxisIcon]=\"'info_outline'\"\n aria-hidden=\"true\"\n ></mat-icon>\n }\n @if (\n getAddManagerFieldPendingLabel(it.id);\n as pendingLabel\n ) {\n <span class=\"add-manager__item-pending\">{{\n pendingLabel\n }}</span>\n }\n </mat-checkbox>\n }\n </section>\n }\n @if (!addItems.length && !getAddManagerFixedItems().length) {\n <div class=\"add-manager__empty\" role=\"status\">\n <mat-icon\n [praxisIcon]=\"'search_off'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{\n addQuery\n ? i18nLabels.noFilterFieldsFound ||\n \"Nenhum campo encontrado.\"\n : i18nLabels.addUnavailable ||\n \"Todos os campos j\u00E1 est\u00E3o vis\u00EDveis\"\n }}</span>\n </div>\n }\n </div>\n <div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ addManagerAnnouncement }}\n </div>\n @if (addManagerConflict) {\n <div\n class=\"add-manager__notice add-manager__notice--conflict\"\n role=\"alert\"\n >\n <mat-icon\n [praxisIcon]=\"'sync_problem'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{ i18nLabels.fieldSelectionConflict }}</span>\n </div>\n } @else if (getRemovedActiveFieldLabels().length) {\n <div\n class=\"add-manager__notice add-manager__notice--warning\"\n role=\"status\"\n >\n <mat-icon\n [praxisIcon]=\"'warning_amber'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span\n >{{ i18nLabels.removingActiveFields }}\n {{ getRemovedActiveFieldLabels().join(\", \") }}</span\n >\n </div>\n }\n <footer class=\"add-manager__footer\">\n <button mat-button type=\"button\" (click)=\"closeAddManager()\">\n {{ i18nLabels.cancel }}\n </button>\n <button\n mat-flat-button\n color=\"primary\"\n type=\"button\"\n [disabled]=\"!isAddManagerDirty() || addManagerConflict\"\n (click)=\"applyAddManager()\"\n >\n {{ i18nLabels.manageFieldsApply || \"Aplicar\" }}\n @if (isAddManagerDirty()) {\n ({{ getAddManagerChangeCount() }})\n }\n </button>\n </footer>\n </section>\n </ng-template>\n }\n @if (showFilterSettings) {\n <button\n praxisIconButton=\"settings\"\n size=\"compact\"\n class=\"cluster-btn separator-before\"\n type=\"button\"\n (click)=\"openSettings()\"\n [matBadge]=\"schemaOutdated ? '!' : ''\"\n [matBadgeHidden]=\"!schemaOutdated\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n [matTooltip]=\"getSettingsTooltip()\"\n matTooltipPosition=\"below\"\n [attr.aria-label]=\"getSettingsAriaLabel()\"\n ></button>\n }\n @if (isFieldAuthoringEnabled() && activeEditableFieldMeta) {\n <button\n praxisIconButton=\"tune\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"button\"\n data-testid=\"filter-field-settings-trigger\"\n [attr.aria-label]=\"getFieldSettingsLabel()\"\n [matTooltip]=\"getFieldSettingsLabel()\"\n matTooltipPosition=\"below\"\n (click)=\"openSelectedFieldEditor()\"\n ></button>\n }\n </div>\n }\n\n @if (activeFiltersCount > 0 || showSearchButton) {\n <div class=\"action-cluster action-cluster--query\">\n @if (activeFiltersCount > 0) {\n <span\n class=\"active-filter-summary\"\n data-testid=\"active-filter-summary\"\n >\n <mat-icon\n [praxisIcon]=\"'filter_alt'\"\n aria-hidden=\"true\"\n ></mat-icon>\n <span>{{ getActiveFiltersLabel() }}</span>\n </span>\n }\n @if (showClearButton && activeFiltersCount > 0) {\n <button\n praxisIconButton=\"filter_alt_off\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"button\"\n data-testid=\"filter-clear-trigger\"\n (click)=\"onClear()\"\n [attr.aria-label]=\"i18nLabels.clear\"\n [matTooltip]=\"i18nLabels.clear\"\n matTooltipPosition=\"below\"\n ></button>\n }\n @if (showSearchButton) {\n <button\n praxisIconButton=\"search\"\n size=\"compact\"\n class=\"cluster-btn\"\n type=\"submit\"\n [attr.aria-label]=\"i18nLabels.apply\"\n [matTooltip]=\"i18nLabels.apply\"\n matTooltipPosition=\"below\"\n ></button>\n }\n </div>\n }\n\n <span class=\"sr-only\" aria-live=\"polite\">{{\n advancedOpening\n ? i18nLabels.advancedOpening || \"Abrindo filtro avan\u00E7ado...\"\n : getAddAriaLabel()\n }}</span>\n </div>\n </div>\n\n <span\n class=\"sr-only\"\n aria-live=\"polite\"\n data-testid=\"active-filters-announcement\"\n >\n {{ getActiveFiltersLabel() }}\n </span>\n <button\n type=\"submit\"\n class=\"hidden-submit\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n ></button>\n</form>\n\n@if (!(compactSelectedMetas.length || compactAlwaysVisibleMetas.length)) {\n <ng-container [ngTemplateOutlet]=\"filterTagsTemplate\"></ng-container>\n}\n", styles: ["@charset \"UTF-8\";:host{--pfx-filter-h: 40px;--pfx-filter-align-offset: 2px;--pfx-gap-x: 12px;--pfx-gap-y: 8px;--pfx-always-max-desktop: 380px;--pfx-slider-span-desktop: 2;--pfx-advanced-pad-x: 24px;--pfx-field-min: 280px;--pfx-overlay-margin-y: 16px;--pfx-overlay-margin-x: 16px}:host-context(.theme-light){--pfx-surface-border: var( --praxis-theme-outline-strong, var(--md-sys-color-outline) )}:host{--border-color: var( --praxis-theme-outline, var(--md-sys-color-outline-variant) );--border-color-hover: var( --praxis-theme-outline-strong, var(--md-sys-color-outline) );--pfx-overlay-surface: var( --praxis-theme-surface-raised, var(--md-sys-color-surface-container) );--pfx-overlay-surface-elev: var( --praxis-theme-surface-overlay, var(--md-sys-color-surface-container-high) );--pfx-overlay-surface-variant: var( --praxis-theme-surface-raised, var(--md-sys-color-surface-variant) );--pfx-overlay-on-surface: var( --praxis-theme-on-surface, var(--md-sys-color-on-surface) );--pfx-overlay-on-surface-variant: var( --praxis-theme-on-surface-muted, var(--md-sys-color-on-surface-variant) );display:block;width:100%;min-width:0;flex:1 1 auto;container-name:praxis-filter;container-type:inline-size}.schema-error-banner{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 10px;border-radius:10px;border:1px solid color-mix(in srgb,var(--md-sys-color-error) 50%,transparent);background:color-mix(in srgb,var(--md-sys-color-error-container) 85%,transparent);color:var(--md-sys-color-on-error-container)}.schema-error-message{min-width:0;flex:1 1 auto;font-size:.8125rem}:host ::ng-deep .schema-error-retry.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: color-mix( in srgb, var(--md-sys-color-error) 55%, var(--md-sys-color-outline) )}.praxis-filter-bar{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto;column-gap:6px;row-gap:6px;align-items:center}.inline-actions .actions-anchor{width:0;height:0;overflow:hidden}.query-auxiliary{grid-column:2;grid-row:1;display:flex;align-items:center;flex-wrap:nowrap;gap:6px;justify-self:end;align-self:center;width:fit-content;max-width:100%;min-width:0}.inline-actions{flex:0 0 auto;display:flex;gap:6px;white-space:nowrap;height:var(--pfx-filter-h);align-items:center;padding:0 2px}.action-cluster{flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;min-height:var(--pfx-filter-h);padding:2px;border-radius:999px;border:1px solid var(--pfx-surface-border, var(--md-sys-color-outline-variant));background:var(--md-sys-color-surface-container-highest)}.action-cluster--manage{position:relative;gap:6px;padding:0;border:0;background:transparent}.action-cluster--query{gap:6px;padding:0;border:0;background:transparent}:host ::ng-deep :is(.action-cluster--manage,.action-cluster--query) button[praxisIconButton]{border:0;border-radius:999px;background:transparent}:host ::ng-deep :is(.action-cluster--manage,.action-cluster--query) button[praxisIconButton] .praxis-icon-button__surface{width:var(--pfx-filter-h);height:var(--pfx-filter-h);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 32%,var(--md-sys-color-outline-variant));border-radius:var(--praxis-action-control-radius, 8px);background:var(--md-sys-color-surface-container-high)}.active-filter-summary{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--pfx-filter-h);min-height:var(--pfx-filter-h);gap:6px;padding:0 4px;border:0;border-radius:0;background:transparent;color:var(--md-sys-color-on-surface-variant);font-family:var(--md-sys-typescale-label-large-font, inherit);font-size:var(--md-sys-typescale-label-large-size, .875rem);font-weight:var(--md-sys-typescale-label-large-weight, 500);line-height:1;letter-spacing:.01em;white-space:nowrap}.active-filter-summary mat-icon{width:16px;height:16px;font-size:16px}.action-cluster .cluster-btn.is-opening{pointer-events:none}.action-cluster .cluster-btn.is-disabled{color:color-mix(in srgb,var(--md-sys-color-on-surface) 38%,transparent);cursor:default;opacity:.56}.inline-actions.actions-outlined button[praxisIconButton]{border:1px solid var(--pfx-surface-border, var(--md-sys-color-outline-variant));border-radius:50%}.inline-actions.actions-outlined .action-cluster button[praxisIconButton]{border-color:transparent}.separator-before{position:relative;margin-left:10px}.separator-before:before{content:\"\";position:absolute;left:-7px;top:50%;width:1px;height:18px;transform:translateY(-50%);background:color-mix(in srgb,var(--md-sys-color-outline) 72%,transparent)}.inline-actions mat-icon{width:20px;height:20px;font-size:20px}.fields-grid{grid-column:1;grid-row:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--pfx-always-min, 220px),1fr));grid-auto-flow:row dense;gap:6px}.compact-fields{grid-column:1;grid-row:1;display:flex;flex-wrap:wrap;justify-content:flex-start;align-content:center;align-items:center;gap:6px;min-width:0;min-height:var(--pfx-filter-h)}.compact-fields .praxis-filter-tags{flex:0 1 auto;min-width:0;min-height:var(--pfx-filter-h);display:inline-flex;align-items:center}.compact-fields .praxis-filter-tags mat-chip-set{min-width:0}.compact-fields .praxis-filter-tags mat-chip{margin-block:0}:host ::ng-deep .compact-fields .pfx-field-shell,:host ::ng-deep .compact-fields .pfx-field-shell-wrapper,:host ::ng-deep .compact-fields .pfx-field-shell-host{--pfx-field-shell-width: fit-content;--pfx-field-shell-field-width: auto;width:fit-content!important;max-width:100%;min-width:0;flex:0 1 auto!important}:host ::ng-deep .compact-fields>.pfx-field-shell,:host ::ng-deep .compact-fields>praxis-field-shell{flex:0 1 auto!important;width:fit-content!important;max-width:100%;min-width:0}:host ::ng-deep .compact-fields .pfx-field-shell .mat-mdc-form-field{width:auto!important;max-width:100%;margin-bottom:0}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{width:var(--pdx-inline-time-field-w, auto)!important;inline-size:var(--pdx-inline-time-field-w, auto)!important;max-width:min(var(--pdx-inline-time-max-w, 280px),100cqw - 24px)!important}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineDateRange] .mat-mdc-form-field{width:var(--pdx-inline-date-range-shell-width, auto)!important;max-width:100%!important}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:auto}.praxis-filter-bar.has-compact{grid-template-columns:minmax(0,1fr);align-items:start}.praxis-filter-bar.has-compact .fields-grid{grid-column:1;grid-row:auto}.praxis-filter-bar.has-compact .query-auxiliary{grid-column:1;grid-row:auto;justify-self:start;justify-content:flex-start;align-self:start;width:100%}@container praxis-filter (max-width: 1024px){.praxis-filter-bar.has-compact{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:auto;display:flex;flex-wrap:wrap;align-items:center;width:100%;overflow:visible;gap:8px;padding-block:4px}.praxis-filter-bar.has-compact .query-auxiliary{grid-column:1;grid-row:auto;justify-self:start;justify-content:flex-start;align-self:start;flex-wrap:wrap;width:100%;gap:8px}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell,praxis-field-shell),:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){flex:1 1 min(var(--pfx-compact-field-min, 148px),100%)!important;width:clamp(var(--pfx-compact-field-min, 148px),30cqw,var(--pfx-compact-field-max, 190px))!important;min-width:min(var(--pfx-compact-field-min, 148px),100cqw - 12px)!important;max-width:var(--pfx-compact-field-max, 190px)!important}}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider] mat-slider,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] mat-slider,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] mat-slider{width:100%;display:block}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider] .pdx-slider-wrapper,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-slider-wrapper,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-slider-wrapper{padding-top:2px}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-range-slider-container,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-range-slider-container{padding:2px 0 0}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider] .pdx-slider-label,:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider] .pdx-slider-label{margin-bottom:4px;line-height:1.15}:host ::ng-deep .fields-grid .mat-mdc-text-field-wrapper.mdc-text-field--outlined{min-height:var(--pfx-filter-h);align-items:center}:host ::ng-deep .fields-grid .mat-mdc-form-field-infix{min-height:var(--pfx-filter-h)}:host ::ng-deep .fields-grid .mat-mdc-select-trigger{height:var(--pfx-filter-h);align-items:center}:host ::ng-deep .fields-grid .mat-mdc-form-field{width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSearchableSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineSearchableSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineMultiSelect]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineMultiSelect] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineInput]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineInput] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlinePhone]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlinePhone] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineToggle]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineToggle] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineRange]{justify-self:start}:host ::ng-deep .compact-fields .pfx-field-shell[data-control-type=inlineRange]{max-width:min(340px,100%)}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDate]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDate] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDateRange]{justify-self:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=inlineDateRange] .mat-mdc-form-field{width:auto;min-width:0;max-width:100%}:host ::ng-deep .fields-grid .mat-mdc-form-field-subscript-wrapper{min-height:0;margin-top:0}:host ::ng-deep .fields-grid .mat-mdc-form-field{margin-bottom:0}.praxis-filter-bar.has-compact{--pfx-filter-tag-color: var(--md-sys-color-primary-container);--pfx-filter-tag-on-color: var(--md-sys-color-on-primary-container);--pfx-filter-tag-outline-color: var(--md-sys-color-primary);--pdx-inline-control-height: var(--pfx-filter-inline-control-height, 40px);--pdx-inline-control-height-mobile: var( --pfx-filter-inline-control-height-mobile, 44px );--pdx-inline-control-padding-x: var( --pfx-filter-inline-control-padding-x, 12px );--pdx-inline-control-padding-x-mobile: var( --pfx-filter-inline-control-padding-x-mobile, 12px );--pdx-inline-clear-size: var(--pfx-filter-inline-clear-size, 24px);--pdx-inline-chip-radius: var( --pfx-filter-inline-chip-radius, var(--md-sys-shape-corner-full, 999px) );--pdx-inline-chip-active-bg: var(--pfx-filter-tag-color);--pdx-inline-chip-active-fg: var(--pfx-filter-tag-on-color);--pdx-inline-chip-active-clear-color: var(--pfx-filter-tag-on-color);--pdx-inline-field-focus-outline: var(--pfx-filter-tag-outline-color)}.praxis-filter-bar.has-compact.tag-color-accent{--pfx-filter-tag-color: var( --md-sys-color-tertiary-container, var(--md-sys-color-secondary-container) );--pfx-filter-tag-on-color: var( --md-sys-color-on-tertiary-container, var(--md-sys-color-on-secondary-container) );--pfx-filter-tag-outline-color: var( --md-sys-color-tertiary, var(--md-sys-color-secondary) )}.praxis-filter-bar.has-compact.tag-color-warn{--pfx-filter-tag-color: var(--md-sys-color-error-container);--pfx-filter-tag-on-color: var(--md-sys-color-on-error-container);--pfx-filter-tag-outline-color: var(--md-sys-color-error)}.praxis-filter-bar.has-compact.tag-color-basic{--pfx-filter-tag-color: color-mix( in srgb, var(--md-sys-color-on-surface) 10%, transparent );--pfx-filter-tag-on-color: var(--md-sys-color-on-surface);--pfx-filter-tag-outline-color: var(--md-sys-color-outline-variant)}:host ::ng-deep .praxis-filter-bar.has-compact{--pfx-filter-inline-chip-padding-x: var(--pdx-inline-control-padding-x);--pfx-filter-inline-icon-gap: 4px}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-text-field-wrapper.mdc-text-field--outlined{padding-inline:var(--pfx-filter-inline-chip-padding-x)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-prefix{align-items:center;display:inline-flex;flex:0 0 auto;margin-right:var(--pfx-filter-inline-icon-gap)!important;padding:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-suffix{align-items:center;display:inline-flex;flex:0 0 auto;gap:var(--pfx-filter-inline-icon-gap)!important;margin-left:var(--pfx-filter-inline-icon-gap)!important;padding:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-prefix>.mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-icon-suffix>.mat-icon{flex:0 0 16px!important;font-size:16px!important;height:16px!important;line-height:16px!important;margin:0!important;padding:0!important;width:16px!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select,.pdx-inline-date,.pdx-inline-date-range,.pdx-inline-autocomplete,.pdx-inline-currency,.pdx-inline-time) .mat-mdc-form-field-infix{padding-inline:0!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-inline-select,.pdx-inline-searchable-select,.pdx-inline-async-select) .pdx-chip-trigger{gap:var(--pfx-filter-inline-icon-gap)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-currency-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-searchable-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-async-select.pdx-has-selection .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-value .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-both .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-entity-lookup.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-multi-select.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-distance-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-score-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-relative-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-relative-period-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-rating-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-pipeline-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-sentiment-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-color-label-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-time-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active{--pdx-inline-currency-symbol-color: var(--pfx-filter-tag-on-color);background:var(--pfx-filter-tag-color)!important;border-color:transparent!important;color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-currency-range-chip.is-active :where(.mat-icon,.pdx-inline-currency-range-value,.pdx-inline-currency-range-text,.pdx-inline-currency-range-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear) :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear,.pdx-inline-number-suffix),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-select,.pdx-inline-searchable-select) .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active) :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-async-select.pdx-has-selection :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-value :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-date-range.pdx-inline-date-range-has-both :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-entity-lookup.pdx-has-selection,.pdx-inline-multi-select.pdx-has-selection) .pdx-chip-trigger :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled :where(.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active) :where(.mat-icon,button,span),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-time-range-chip.is-active :where(.pdx-inline-time-range-icon,.pdx-inline-time-range-text,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active :where(.pdx-inline-toggle-label,.mat-icon){color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-currency-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-searchable-select .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-async-select.pdx-has-selection .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-value .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-both .mat-mdc-text-field-wrapper.mdc-text-field--outlined,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-entity-lookup.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-multi-select.pdx-has-selection .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-distance-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-score-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-relative-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-relative-period-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-rating-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-pipeline-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-sentiment-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-color-label-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-time-range-chip.is-active,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active{--pdx-inline-currency-symbol-color: var(--pfx-filter-tag-outline-color);background:transparent!important;border-color:var(--pfx-filter-tag-outline-color)!important;box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-outline-color);color:var(--pfx-filter-tag-outline-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-currency-range-chip.is-active :where(.mat-icon,.pdx-inline-currency-range-value,.pdx-inline-currency-range-text,.pdx-inline-currency-range-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear) :where(input,.mat-mdc-input-element,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,.pdx-inline-clear,.pdx-inline-number-suffix),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-select,.pdx-inline-searchable-select) .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-chip-trigger.is-active) :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-async-select.pdx-has-selection :where(.mat-mdc-select-value,.mat-mdc-select-min-line,.mat-mdc-select-placeholder,.pdx-chip-trigger,.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-value :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-date-range.pdx-inline-date-range-has-both :where(.mat-date-range-input-inner,.mat-date-range-input-separator,.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix,.mat-icon,input),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-entity-lookup.pdx-has-selection,.pdx-inline-multi-select.pdx-has-selection) .pdx-chip-trigger :where(.pdx-chip-field-icon,.pdx-chip-leading-icon,.pdx-chip-trailing-icon,.pdx-chip-label,.pdx-chip-count,.pdx-chip-clear,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined :where(.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active) :where(.mat-icon,button,span),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-time-range-chip.is-active :where(.pdx-inline-time-range-icon,.pdx-inline-time-range-text,.mat-icon),:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active :where(.pdx-inline-toggle-label,.mat-icon){color:var(--pfx-filter-tag-outline-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear){background:color-mix(in srgb,currentColor 16%,transparent)!important;border-radius:50%!important;color:inherit!important;display:inline-grid!important;flex:0 0 var(--pdx-inline-clear-size, 24px)!important;height:var(--pdx-inline-clear-size, 24px)!important;min-width:var(--pdx-inline-clear-size, 24px)!important;place-items:center!important;width:var(--pdx-inline-clear-size, 24px)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear):hover{background:color-mix(in srgb,currentColor 24%,transparent)!important}:host ::ng-deep .praxis-filter-bar.has-compact :where(.pdx-chip-trigger.is-active,.mat-mdc-form-field.pdx-has-value,.pdx-inline-number .mat-mdc-text-field-wrapper.mdc-text-field--outlined:has(.pdx-inline-clear),.pdx-inline-currency-range-chip.is-active,.pdx-inline-range-chip.is-active,.pdx-inline-distance-chip.is-active,.pdx-inline-score-chip.is-active,.pdx-inline-relative-chip.is-active,.pdx-inline-relative-period-chip.is-active,.pdx-inline-rating-chip.is-active,.pdx-inline-pipeline-chip.is-active,.pdx-inline-sentiment-chip.is-active,.pdx-inline-color-label-chip.is-active,.pdx-inline-time-range-chip.is-active,.pdx-inline-toggle-pill.is-active) :where(.pdx-chip-clear,.pdx-inline-clear,.pdx-inline-currency-range-clear,.pdx-inline-range-clear,.pdx-inline-distance-clear,.pdx-inline-score-clear,.pdx-inline-relative-clear,.pdx-inline-rating-clear,.pdx-inline-pipeline-clear,.pdx-inline-sentiment-clear,.pdx-inline-color-label-clear,.pdx-inline-time-range-clear,.pdx-inline-toggle-clear) .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .mat-mdc-form-field.pdx-has-value .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-number .mat-mdc-text-field-wrapper:has(.pdx-inline-clear) .pdx-inline-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-number .mat-mdc-text-field-wrapper:has(.pdx-inline-clear) .pdx-inline-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-inline-toggle-pill.is-active .pdx-inline-toggle-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-inline-toggle-pill.is-active .pdx-inline-toggle-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .pdx-chip-trigger.is-active .pdx-chip-clear .mat-icon,:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined .pdx-chip-trigger.is-active .pdx-chip-clear .mat-icon{color:var(--pdx-inline-clear-icon-color, currentColor)!important}.praxis-filter-tags.outlined .mat-mdc-chip{background:transparent!important;--mat-chip-outline-width: 1px;--mat-chip-outline-color: var(--md-sys-color-outline-variant);box-shadow:inset 0 0 0 var(--mat-chip-outline-width) var(--mat-chip-outline-color)}.praxis-filter-tags.outlined.tag-color-primary .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-primary)}.praxis-filter-tags.outlined.tag-color-accent .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-tertiary)}.praxis-filter-tags.outlined.tag-color-warn .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-error)}.praxis-filter-tags.outlined mat-chip.active .mat-mdc-chip,.praxis-filter-tags.outlined .mat-mdc-chip.mat-mdc-chip-highlighted{--mat-chip-outline-width: 2px;box-shadow:inset 0 0 0 var(--mat-chip-outline-width) var(--mat-chip-outline-color)!important}.praxis-filter-tags.outlined.tag-color-basic mat-chip.active .mat-mdc-chip{--mat-chip-outline-color: var(--md-sys-color-primary)}.praxis-filter-tags .chip-content{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:0;min-height:20px;line-height:20px;font-family:var(--md-sys-typescale-body-large-font, inherit);font-size:var(--md-sys-typescale-body-large-size, 1rem);font-weight:500;vertical-align:middle}.praxis-filter-tags .chip-leading,.praxis-filter-tags .chip-trailing,.praxis-filter-tags .chip-readonly{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.praxis-filter-tags .chip-leading,.praxis-filter-tags .chip-readonly{width:20px;height:20px}.praxis-filter-tags .leading-check{width:18px;height:18px;font-size:18px;line-height:1}.praxis-filter-tags .leading-check--hidden{visibility:hidden}.praxis-filter-tags .chip-label{display:inline-flex;align-items:center;min-width:0;min-height:20px;line-height:20px}.praxis-filter-tags .chip-readonly{color:var(--mat-sys-on-surface-variant, var(--md-sys-color-on-surface-variant))}.praxis-filter-tags .chip-readonly .mat-icon{width:16px;height:16px;font-size:16px;line-height:16px}.a11y-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.praxis-filter-tags .mat-mdc-standard-chip{--mat-chip-container-height: var(--pfx-filter-h);--mdc-chip-container-height: var(--pfx-filter-h);min-height:var(--pfx-filter-h)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .praxis-filter-tags mat-chip:not(.active).mat-mdc-standard-chip{--mdc-chip-elevated-container-color: var( --md-sys-color-surface-container-high );--mdc-chip-label-text-color: var(--md-sys-color-on-surface);background:var(--md-sys-color-surface-container-high)!important;color:var(--md-sys-color-on-surface)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .praxis-filter-tags mat-chip:not(.active) :where(.chip-label,.chip-readonly,.mat-icon){color:var(--md-sys-color-on-surface)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .praxis-filter-tags mat-chip.active.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: var(--pfx-filter-tag-color);--mdc-chip-label-text-color: var(--pfx-filter-tag-on-color);background:var(--pfx-filter-tag-color)!important;color:var(--pfx-filter-tag-on-color)!important}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled .praxis-filter-tags mat-chip.active :where(.chip-label,.leading-check,.chip-readonly,.mat-icon){color:var(--pfx-filter-tag-on-color)!important}.praxis-filter-advanced{display:flex;flex-direction:column;min-width:400px;max-width:90vw;min-height:260px;max-height:min(80vh,720px);margin:var(--pfx-overlay-margin-y) var(--pfx-overlay-margin-x);background-color:var(--pfx-overlay-surface)!important;background:var(--pfx-overlay-surface)!important;color:var(--pfx-overlay-on-surface);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--md-sys-elevation-level3)}.advanced-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px var(--pfx-advanced-pad-x) 10px;border-bottom:1px solid var(--border-color);background:var(--pfx-overlay-surface)}.advanced-title-block{display:flex;flex-direction:column;gap:2px}.advanced-title{font-size:1rem;font-weight:600;color:var(--pfx-overlay-on-surface)}.advanced-subtitle{font-size:.85rem;color:var(--pfx-overlay-on-surface-variant)}.advanced-close{align-self:flex-start}.praxis-filter-overlay.mobile .praxis-filter-advanced{height:100vh;max-height:100vh;margin:0;border-radius:0}:host ::ng-deep .praxis-overlay-backdrop{background:var(--md-sys-color-scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}:host ::ng-deep .praxis-filter-overlay.frosted .praxis-filter-advanced{background:var(--pfx-overlay-surface-variant)!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-color:var(--border-color)}:host ::ng-deep .praxis-filter-overlay.frosted .advanced-header,:host ::ng-deep .praxis-filter-overlay.frosted .advanced-actions{background:var(--pfx-overlay-surface-variant)!important}.advanced-body{padding:12px var(--pfx-advanced-pad-x) 72px;overflow:auto;flex:1 1 auto;overscroll-behavior:contain}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-row{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(var(--pfx-field-min),1fr));gap:var(--pfx-gap-y) var(--pfx-gap-x)}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-column{min-width:0}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-column .mat-mdc-form-field{width:100%}.advanced-actions{position:sticky;bottom:0;z-index:2;display:flex;justify-content:flex-end;gap:8px;padding:var(--pfx-gap-y) var(--pfx-advanced-pad-x);background-color:var(--pfx-overlay-surface)!important;background:var(--pfx-overlay-surface)!important;border-top:1px solid var(--border-color);box-shadow:0 -1px 0 var(--md-sys-color-outline-variant)}.advanced-actions .mat-mdc-button-base{height:40px}.advanced-actions .mat-mdc-raised-button.mat-primary{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary)}:host ::ng-deep .praxis-filter-advanced .mat-mdc-text-field-wrapper.mdc-text-field--outlined{--mdc-outlined-text-field-outline-color: var(--border-color);--mdc-outlined-text-field-hover-outline-color: var(--border-color-hover);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-label-text-color: var( --pfx-overlay-on-surface-variant );--mdc-outlined-text-field-input-text-color: var(--pfx-overlay-on-surface);--mdc-outlined-text-field-container-color: var(--pfx-overlay-surface)}:host ::ng-deep .praxis-filter-advanced .mat-mdc-select-trigger,:host ::ng-deep .praxis-filter-advanced .mat-mdc-form-field-subscript-wrapper,:host ::ng-deep .praxis-filter-advanced .mat-mdc-form-field-infix{color:var(--pfx-overlay-on-surface)}@container praxis-filter (min-width: 600px){.fields-grid{gap:6px 8px}:host ::ng-deep .praxis-filter-advanced .praxis-filter-form .filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@container praxis-filter (max-width: 640px){.praxis-filter-bar.has-compact{--pdx-inline-control-height: var( --pfx-filter-inline-control-height-mobile, 44px );--pdx-inline-control-height-mobile: var( --pfx-filter-inline-control-height-mobile, 44px );display:grid;grid-template-columns:minmax(0,1fr);align-items:start}.praxis-filter-bar.has-compact .compact-fields{grid-column:1;grid-row:auto;display:flex;flex-wrap:wrap;align-items:center;width:100%;overflow:visible;gap:8px}.praxis-filter-bar.has-compact .query-auxiliary{grid-column:1;grid-row:auto;justify-self:start;justify-content:flex-start;width:100%;height:auto;align-self:start;flex-wrap:wrap;gap:8px}.praxis-filter-bar.has-compact .compact-fields .praxis-filter-tags{flex:0 1 auto;min-width:0;min-height:40px}.praxis-filter-bar.has-compact .compact-fields .praxis-filter-tags mat-chip-set,.praxis-filter-bar.has-compact .compact-fields .praxis-filter-tags mat-chip{max-width:100%}.praxis-filter-bar.has-compact .compact-fields .praxis-filter-tags mat-chip{min-height:44px}.praxis-filter-bar.has-compact .active-filter-summary,.praxis-filter-bar.has-compact .inline-actions .add-trigger{min-height:44px;height:44px}:host ::ng-deep .praxis-filter-bar.has-compact :is(.action-cluster--manage,.action-cluster--query) button[praxisIconButton] .praxis-icon-button__surface{width:44px;height:44px}.praxis-filter-bar.has-compact .inline-actions .action-cluster{max-width:100%;min-height:44px;padding-block:0}.praxis-filter-bar.has-compact .inline-actions{width:100%;height:auto;min-height:44px;padding:0;flex-wrap:wrap}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>.pfx-field-shell,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>praxis-field-shell,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){--pfx-field-shell-width: auto;--pfx-field-shell-field-width: auto;flex:1 1 min(var(--pfx-compact-field-min, 148px),100%)!important;width:auto!important;min-width:min(var(--pfx-compact-field-min, 148px),100cqw - 12px)!important;max-width:min(360px,100%)!important}:host ::ng-deep .praxis-filter-bar.has-compact .action-cluster--manage>button{min-height:44px}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-host{--pfx-field-shell-width: auto;--pfx-field-shell-field-width: auto;width:100%!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .mat-mdc-form-field,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .mat-mdc-text-field-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-chip-trigger,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-currency-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-distance-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-score-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-relative-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-relative-period-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-rating-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-pipeline-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-sentiment-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-color-label-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-time-range-chip,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-inline-toggle-pill{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range .pdx-inline-date-range-root,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields pdx-inline-date-range .mat-mdc-form-field.pdx-inline-date-range{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :where(.pdx-chip-label,.pdx-chip-trigger,.pdx-inline-range-text,.pdx-inline-currency-range-text,.pdx-inline-distance-text,.pdx-inline-score-text,.pdx-inline-relative-text,.pdx-inline-relative-period-text,.pdx-inline-rating-text,.pdx-inline-pipeline-text,.pdx-inline-sentiment-text,.pdx-inline-color-label-text,.pdx-inline-time-range-text,.pdx-inline-toggle-label){min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime],:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-host{--pfx-field-shell-width: fit-content;--pfx-field-shell-field-width: var(--pdx-inline-time-field-w, auto);justify-self:start;width:fit-content!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{width:var(--pdx-inline-time-field-w, auto)!important;inline-size:var(--pdx-inline-time-field-w, auto)!important;max-width:min(var(--pdx-inline-time-max-w, 280px),100cqw - 24px)!important}}@container praxis-filter (max-width: 1024px){:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell[data-control-type=inlineToggle],praxis-field-shell[data-control-type=inlineToggle]){flex:1 1 min(260px,100%)!important;width:clamp(260px,42cqw,360px)!important;min-width:min(260px,100cqw - 12px)!important;max-width:min(360px,100%)!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-host [data-field-type]:not([data-field-type=inlineTime]){width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell-host [data-field-type]:not([data-field-type=inlineTime])>:first-child{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields [data-field-type=inlineCurrencyRange] .pdx-inline-currency-range-root{width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell[data-control-type=inlineDateRange],praxis-field-shell[data-control-type=inlineDateRange]){flex:1 1 min(220px,100%)!important;width:clamp(220px,36cqw,320px)!important;min-width:min(220px,100cqw - 12px)!important;max-width:min(320px,100%)!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell[data-control-type=inlineCurrencyRange],praxis-field-shell[data-control-type=inlineCurrencyRange]){flex:1 1 min(320px,100%)!important;width:clamp(280px,42cqw,360px)!important;min-width:min(280px,100cqw - 12px)!important;max-width:min(360px,100%)!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :is(.mat-mdc-form-field,.mat-mdc-text-field-wrapper,.pdx-chip-main,.pdx-chip-trigger,.pdx-inline-range-chip,.pdx-inline-currency-range-chip,.pdx-inline-distance-chip,.pdx-inline-score-chip,.pdx-inline-relative-chip,.pdx-inline-relative-period-chip,.pdx-inline-rating-chip,.pdx-inline-pipeline-chip,.pdx-inline-sentiment-chip,.pdx-inline-color-label-chip,.pdx-inline-time-range-chip,.pdx-inline-toggle-pill){width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :is(.mat-mdc-form-field-flex,.mat-mdc-form-field-infix,.pdx-chip-main .mdc-button__label,.pdx-chip-main .pdx-chip-label){width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pdx-chip-main .pdx-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :is(.mat-mdc-text-field-wrapper,.mat-mdc-form-field-flex,.mat-mdc-form-field-infix,.pdx-chip-main){overflow:hidden}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields :is(.pfx-field-shell-wrapper,.pfx-field-shell-host,pdx-inline-toggle,pdx-inline-date-range){width:100%!important;max-width:100%!important;min-width:0!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineDateRange] :is(.pdx-inline-date-range-root,.mat-mdc-form-field.pdx-inline-date-range){width:100%!important;max-width:100%!important;min-width:0!important}}@container praxis-filter (max-width: 640px){:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell[data-control-type=inlineDateRange],praxis-field-shell[data-control-type=inlineDateRange],.pfx-field-shell[data-control-type=inlineCurrencyRange],praxis-field-shell[data-control-type=inlineCurrencyRange],.pfx-field-shell[data-control-type=inlineMultiSelect],praxis-field-shell[data-control-type=inlineMultiSelect]){flex:1 1 100%!important;width:100%!important;min-width:min(220px,100%)!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime],:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-wrapper,:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .pfx-field-shell-host{flex:0 1 auto!important;width:fit-content!important;max-width:100%!important}}@container praxis-filter (max-width: 420px){:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>:is(.pfx-field-shell,praxis-field-shell),:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields>dynamic-field-loader>:is(.pfx-field-shell,praxis-field-shell){--pfx-field-shell-width: 100%;--pfx-field-shell-field-width: 100%;flex:1 1 100%!important;width:100%!important;min-width:0!important;max-width:100%!important}:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime],:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] :is(.pfx-field-shell-wrapper,.pfx-field-shell-host),:host ::ng-deep .praxis-filter-bar.has-compact .compact-fields .pfx-field-shell[data-control-type=inlineTime] .mat-mdc-form-field.pdx-inline-time{--pfx-field-shell-width: 100%;--pfx-field-shell-field-width: 100%;flex:1 1 100%!important;width:100%!important;inline-size:100%!important;min-width:0!important;max-width:100%!important}}@container praxis-filter (min-width: 960px){.fields-grid{gap:6px 10px}}@container praxis-filter (min-width: 1200px){.fields-grid{grid-template-columns:repeat(auto-fit,minmax(var(--pfx-always-min, 220px),var(--pfx-always-max-desktop, 380px)));justify-content:start;align-content:start}:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=slider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=range-slider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeSlider],:host ::ng-deep .fields-grid .pfx-field-shell[data-control-type=rangeslider]{grid-column:span var(--pfx-slider-span-desktop, 2)}}.inline-toggles{display:flex;align-items:center;gap:8px;margin:0 4px 0 6px}:host ::ng-deep .inline-actions .mat-mdc-slide-toggle{height:var(--pfx-filter-h);display:flex;align-items:center}:host ::ng-deep .inline-actions .mat-mdc-slide-toggle .mdc-form-field{align-items:center}::ng-deep .praxis-filter-overlay .praxis-filter-advanced .praxis-filter-form .filter-row{display:grid!important;gap:var(--pfx-gap-y, 1px) var(--pfx-gap-x, 6px)}@media(min-width:600px){::ng-deep .praxis-filter-overlay .praxis-filter-advanced .praxis-filter-form .filter-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important}.hidden-submit{position:absolute!important;width:0!important;height:0!important;padding:0!important;margin:0!important;border:0!important;opacity:0!important;pointer-events:none!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;overflow:hidden!important}:host ::ng-deep .inline-actions [matBadge] .mat-badge-content{top:-6px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-size:10px;font-weight:700;line-height:16px;letter-spacing:0;text-indent:0;color:var(--md-sys-color-on-primary, #fff)}:host ::ng-deep .inline-actions [matBadge][matbadgecolor=warn] .mat-badge-content,:host ::ng-deep .inline-actions [matBadge].mat-badge-warn .mat-badge-content{color:var(--md-sys-color-on-error, #fff)}.praxis-filter-bar :where(.mat-mdc-slide-toggle .mdc-switch__icons){display:none!important}.praxis-filter-bar{--mdc-switch-unselected-icon-size: 0px;--mdc-switch-selected-icon-size: 0px;--pfx-always-min: 220px}.praxis-filter-card{display:flex;flex-direction:column;gap:6px;padding:8px 12px;border-radius:12px;border:1px solid var(--pfx-surface-border, var(--praxis-theme-outline, var(--md-sys-color-outline-variant)));background:var(--praxis-theme-surface-raised, var(--md-sys-color-surface-container));color:var(--praxis-theme-on-surface, var(--md-sys-color-on-surface))}.add-manager{--_pfx-field-manager-surface: var( --pfx-field-manager-surface, var( --praxis-theme-surface-overlay, var(--md-sys-color-surface-container-highest) ) );--_pfx-field-manager-on-surface: var( --pfx-field-manager-on-surface, var(--praxis-theme-on-surface, var(--md-sys-color-on-surface)) );--_pfx-field-manager-on-surface-muted: var( --pfx-field-manager-on-surface-muted, var(--praxis-theme-on-surface-muted, var(--md-sys-color-on-surface-variant)) );--_pfx-field-manager-outline: var( --pfx-field-manager-outline, var( --pdx-inline-field-outline, var(--praxis-theme-outline, var(--md-sys-color-outline-variant)) ) );--_pfx-field-manager-focus-outline: var( --pfx-field-manager-focus-outline, var( --pdx-inline-field-focus-outline, var(--praxis-theme-focus-outline, var(--md-sys-color-primary)) ) );--_pfx-field-manager-scrollbar-thumb: var( --pfx-field-manager-scrollbar-thumb, color-mix( in srgb, var(--_pfx-field-manager-on-surface) 42%, var(--_pfx-field-manager-surface) ) );--_pfx-field-manager-scrollbar-thumb-hover: var( --pfx-field-manager-scrollbar-thumb-hover, color-mix( in srgb, var(--_pfx-field-manager-on-surface) 64%, var(--_pfx-field-manager-surface) ) );--_pfx-field-manager-scrollbar-track: var( --pfx-field-manager-scrollbar-track, transparent );--_pfx-field-manager-scrollbar-size: var( --pfx-field-manager-scrollbar-size, 10px );display:flex;flex-direction:column;width:min(400px,100vw - 24px);max-height:min(70vh,560px);overflow:hidden;border:1px solid var(--_pfx-field-manager-outline);border-radius:var(--pfx-overlay-radius, 16px);background:var(--_pfx-field-manager-surface);color:var(--_pfx-field-manager-on-surface);box-shadow:var(--praxis-theme-elevation, var(--md-sys-elevation-level3))}.add-manager__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 16px 8px 20px}.add-manager__header h2{margin:0;font:var(--md-sys-typescale-title-medium)}.add-manager__header p{margin:4px 0 0;color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-body-small)}.add-manager__search{padding:8px 20px}.add-manager__bulk{padding:8px 20px;border-block:1px solid var(--_pfx-field-manager-outline)}.add-manager__list{display:flex;flex-direction:column;min-height:80px;overflow:auto;overscroll-behavior:contain;scrollbar-color:var(--_pfx-field-manager-scrollbar-thumb) var(--_pfx-field-manager-scrollbar-track);scrollbar-gutter:stable;scrollbar-width:auto;padding:4px 12px 12px}.add-manager__list::-webkit-scrollbar{width:var(--_pfx-field-manager-scrollbar-size);height:var(--_pfx-field-manager-scrollbar-size)}.add-manager__list::-webkit-scrollbar-track{background:var(--_pfx-field-manager-scrollbar-track)}.add-manager__list::-webkit-scrollbar-thumb{min-height:32px;border:2px solid transparent;border-radius:999px;background:var(--_pfx-field-manager-scrollbar-thumb);background-clip:padding-box}.add-manager__list::-webkit-scrollbar-thumb:hover{background:var(--_pfx-field-manager-scrollbar-thumb-hover);background-clip:padding-box}.add-manager__section+.add-manager__section{margin-top:8px;padding-top:8px;border-top:1px solid var(--_pfx-field-manager-outline)}.add-manager__section-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0;padding:8px 8px 4px;color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-medium)}.add-manager__section-title span{color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-small);white-space:nowrap}.add-manager__item{display:flex;align-items:center;min-height:48px;padding-inline:8px;border-radius:var(--pfx-control-radius, 8px)}::ng-deep .add-manager__item .mdc-form-field{align-items:center}::ng-deep .add-manager__item .mdc-label{display:inline-flex;align-items:center;min-height:20px}.add-manager__item:hover{background:color-mix(in srgb,var(--_pfx-field-manager-on-surface) 6%,var(--_pfx-field-manager-surface))}.add-manager__item--fixed{gap:10px;color:var(--_pfx-field-manager-on-surface)}.add-manager__fixed-list{margin:0;padding:0;list-style:none}.add-manager__item--fixed>.mat-icon:first-child{width:18px;height:18px;flex:0 0 18px;color:var(--_pfx-field-manager-on-surface-muted);font-size:18px}.add-manager__section--fixed .add-manager__item{box-shadow:inset 2px 0 color-mix(in srgb,var(--_pfx-field-manager-on-surface-muted) 44%,transparent)}.add-manager__item-info{width:16px;height:16px;margin-left:4px;vertical-align:text-bottom;color:var(--_pfx-field-manager-on-surface-muted);font-size:16px}.add-manager__item-pending{display:inline-flex;align-items:center;margin-left:8px;padding:2px 7px;border-radius:999px;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 14%,transparent);color:var(--_pfx-field-manager-on-surface-muted);font:var(--md-sys-typescale-label-small);white-space:nowrap}.add-manager__item--pending{background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}.add-manager__section--selected .add-manager__item{box-shadow:inset 2px 0 color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 56%,transparent)}.add-manager__item--added{animation:add-manager-item-added var(--md-sys-motion-duration-short4, .2s) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(.05, .7, .1, 1)) both}.add-manager__item--removed{animation:add-manager-item-removed var(--md-sys-motion-duration-short4, .2s) var(--md-sys-motion-easing-emphasized-decelerate, cubic-bezier(.05, .7, .1, 1)) both}@keyframes add-manager-item-added{0%{opacity:.72;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 24%,var(--_pfx-field-manager-surface))}to{opacity:1;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}}@keyframes add-manager-item-removed{0%{opacity:.72;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 72%,transparent)}to{opacity:1;background:color-mix(in srgb,var(--_pfx-field-manager-focus-outline) 8%,var(--_pfx-field-manager-surface))}}@media(prefers-reduced-motion:reduce){.add-manager__item--added,.add-manager__item--removed{animation:none}}.add-manager__empty{display:flex;align-items:center;justify-content:center;gap:8px;min-height:96px;padding:16px;color:var(--_pfx-field-manager-on-surface-muted);text-align:center}.add-manager__footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--_pfx-field-manager-outline);background:var(--_pfx-field-manager-surface)}.add-manager__footer .mat-mdc-unelevated-button.mat-primary:is(:disabled,.mat-mdc-button-disabled){--mdc-filled-button-container-color: color-mix( in srgb, var(--md-sys-color-on-surface) 12%, transparent );--mdc-filled-button-label-text-color: color-mix( in srgb, var(--md-sys-color-on-surface) 38%, transparent );background:color-mix(in srgb,var(--md-sys-color-on-surface) 12%,transparent)!important;background-image:none!important;color:color-mix(in srgb,var(--md-sys-color-on-surface) 38%,transparent)!important;box-shadow:none!important;filter:none!important;opacity:1!important}.add-manager__notice{display:flex;align-items:flex-start;gap:8px;padding:10px 16px;font:var(--md-sys-typescale-body-small)}.add-manager__notice mat-icon{flex:0 0 auto}.add-manager__notice--warning{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.add-manager__notice--conflict{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}@media(max-width:600px){.add-manager{width:calc(100vw - 16px);max-height:min(78dvh,640px);border-radius:var(--pfx-overlay-radius, 16px)}.add-manager__header,.add-manager__search{padding-inline:16px}}.inline-actions .add-trigger{display:inline-flex;align-items:center;gap:6px;height:var(--pfx-filter-h);min-height:var(--pfx-filter-h);width:auto;max-width:min(100%,220px);min-width:0;padding:0 10px;border-radius:var(--praxis-action-control-radius, 8px);border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 32%,var(--md-sys-color-outline-variant));background:var(--md-sys-color-surface-container-high);overflow:visible}.inline-actions .add-trigger--icon{justify-content:center;width:var(--pfx-filter-h);min-width:var(--pfx-filter-h);padding:0}:host ::ng-deep .inline-actions .add-trigger mat-icon{width:18px;height:18px;font-size:18px;flex:0 0 auto}.inline-actions .add-trigger-label{display:inline-block;flex:1 1 auto;min-width:0;max-width:100%;text-align:left;direction:ltr;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;line-height:1}:host ::ng-deep .action-cluster--manage .mat-mdc-select{flex:0 0 auto;width:180px;min-width:0;max-width:180px}:host ::ng-deep .action-cluster--manage .cluster-select--hidden.mat-mdc-select{position:absolute;width:1px;min-width:1px;max-width:1px;height:1px;opacity:0;pointer-events:none;overflow:hidden}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-filled pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected{background:var(--pfx-filter-tag-color);color:var(--pfx-filter-tag-on-color);box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-color)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected{background:transparent;color:var(--pfx-filter-tag-outline-color);box-shadow:inset 0 0 0 1px var(--pfx-filter-tag-outline-color)}:host ::ng-deep .praxis-filter-bar.has-compact.tag-variant-outlined pdx-inline-entity-lookup.pdx-entity-lookup-host-inline.pdx-entity-lookup-host-selected .pdx-chip-trigger.is-active{background:transparent!important;border-color:transparent!important;box-shadow:none!important;color:inherit!important}:host ::ng-deep .action-cluster--manage .mat-mdc-select-trigger{min-height:32px;padding:0}:host ::ng-deep .action-cluster--manage .mat-mdc-select-value,:host ::ng-deep .action-cluster--manage .mat-mdc-select-value-text,:host ::ng-deep .action-cluster--manage .mat-mdc-select-min-line{width:auto;min-width:0;max-width:100%;display:inline-flex;align-items:center;justify-content:flex-start;overflow:visible}.praxis-filter-card .summary-header{display:flex;align-items:center;gap:10px}.praxis-filter-card .summary-avatar{width:32px;height:32px;border-radius:50%;object-fit:cover}.praxis-filter-card .summary-title{font-weight:600}.praxis-filter-card .summary-subtitle{opacity:.8;font-size:.875rem}.praxis-filter-card .summary-badges{display:flex;flex-wrap:wrap;gap:6px}.praxis-filter-card .summary-badges span{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:var(--md-sys-color-primary-container);border:1px solid var(--md-sys-color-outline-variant);color:var(--md-sys-color-on-primary-container);font-size:12px}.praxis-filter-card .card-actions{display:flex;gap:8px}:host ::ng-deep .inline-actions .mat-mdc-select-arrow-wrapper{display:none}.inline-actions .add-filter-btn{height:36px;border-radius:18px;padding:0 16px 0 12px}.inline-actions .add-filter-btn mat-icon{margin-right:8px;margin-left:-4px}\n"] }]
41391
42069
  }], ctorParameters: () => [{ type: i1.GenericCrudService }, { type: undefined, decorators: [{
41392
42070
  type: Inject,
41393
42071
  args: [ASYNC_CONFIG_STORAGE]
@@ -41403,7 +42081,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
41403
42081
  args: ['addManagerOrigin', { read: ElementRef }]
41404
42082
  }], addManagerSearch: [{
41405
42083
  type: ViewChild,
41406
- args: [PdxCollectionSearchComponent]
42084
+ args: ['addManagerSearch']
41407
42085
  }], resourcePath: [{
41408
42086
  type: Input,
41409
42087
  args: [{ required: true }]
@@ -45386,7 +46064,7 @@ class PraxisTable {
45386
46064
  if (this.aiAdapter || this.aiAdapterLoadStarted)
45387
46065
  return;
45388
46066
  this.aiAdapterLoadStarted = true;
45389
- import('./praxisui-table-table-ai.adapter-C6pM7_sN.mjs')
46067
+ import('./praxisui-table-table-ai.adapter-6-ZGVEFf.mjs')
45390
46068
  .then(({ TableAiAdapter }) => {
45391
46069
  if (!this.isAiAssistantEnabled()) {
45392
46070
  this.aiAssistantOpenAfterAdapterLoad = false;
@@ -46132,7 +46810,7 @@ class PraxisTable {
46132
46810
  initializeAiAssistantController() {
46133
46811
  if (!this.aiAdapter || this.aiAssistantController)
46134
46812
  return;
46135
- import('./praxisui-table-table-agentic-authoring-turn-flow-B5hoMQlz.mjs')
46813
+ import('./praxisui-table-table-agentic-authoring-turn-flow-DlPu7OOk.mjs')
46136
46814
  .then(({ TableAgenticAuthoringTurnFlow }) => {
46137
46815
  if (this.aiAssistantController || !this.aiAdapter)
46138
46816
  return;
@@ -52858,8 +53536,10 @@ class PraxisTable {
52858
53536
  trigger: inputsTrigger,
52859
53537
  });
52860
53538
  }
52861
- resetPersistenceState.attempted = persistenceOps.length;
52862
- resetPersistenceState.pending = persistenceOps.length;
53539
+ const filterKey = this.filterConfigKey();
53540
+ const operationCount = persistenceOps.length + (filterKey ? 1 : 0);
53541
+ resetPersistenceState.attempted = operationCount;
53542
+ resetPersistenceState.pending = operationCount;
52863
53543
  persistenceOps.forEach((op) => {
52864
53544
  this.clearConfigWithAck(op.key, op.trigger, {
52865
53545
  onSettled: (persisted) => {
@@ -52872,15 +53552,23 @@ class PraxisTable {
52872
53552
  },
52873
53553
  });
52874
53554
  });
52875
- try {
52876
- const filterKey = this.filterConfigKey();
52877
- if (filterKey)
52878
- this.filterConfig.save(filterKey, {});
53555
+ if (filterKey) {
53556
+ void Promise.resolve(this.filterConfig.save(filterKey, {}))
53557
+ .then(() => {
53558
+ resetPersistenceState.pending = Math.max(0, resetPersistenceState.pending - 1);
53559
+ if (resetPersistenceState.pending === 0 &&
53560
+ !resetPersistenceState.failed) {
53561
+ this.showResetSuccessFeedback(successTrigger);
53562
+ }
53563
+ })
53564
+ .catch(() => {
53565
+ resetPersistenceState.pending = Math.max(0, resetPersistenceState.pending - 1);
53566
+ onResetPersistenceSettled(false, 'reset-filter-config');
53567
+ });
52879
53568
  }
52880
- catch { }
52881
53569
  const defaults = this.tableDefaultsProvider.getDefaults(this.tableId);
52882
53570
  this.applyTableConfig(defaults);
52883
- if (resetPersistenceState.attempted === 0) {
53571
+ if (operationCount === 0) {
52884
53572
  this.showResetSuccessFeedback(successTrigger);
52885
53573
  }
52886
53574
  }