@fundamental-ngx/platform 0.64.2-rc.32 → 0.64.2-rc.34

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.
@@ -2,7 +2,7 @@ import * as i4 from '@angular/cdk/a11y';
2
2
  import { LiveAnnouncer } from '@angular/cdk/a11y';
3
3
  import { DOWN_ARROW, UP_ARROW, SPACE } from '@angular/cdk/keycodes';
4
4
  import * as i0 from '@angular/core';
5
- import { ViewEncapsulation, ChangeDetectionStrategy, Component, InjectionToken, Inject, signal, inject, DestroyRef, ViewChild, ViewChildren, Input, computed, DOCUMENT, input, ContentChild, Optional, Host, EventEmitter, Output, forwardRef, Pipe, TemplateRef, Directive, ChangeDetectorRef, afterEveryRender, output, linkedSignal, untracked, viewChildren, effect, ContentChildren, HostBinding, NgZone, ElementRef, booleanAttribute, NgModule } from '@angular/core';
5
+ import { ViewEncapsulation, ChangeDetectionStrategy, Component, InjectionToken, Inject, signal, inject, DestroyRef, ViewChild, ViewChildren, Input, computed, DOCUMENT, input, ContentChild, Optional, Host, EventEmitter, Output, forwardRef, Pipe, TemplateRef, Directive, ChangeDetectorRef, afterEveryRender, output, linkedSignal, effect, untracked, viewChildren, ContentChildren, HostBinding, NgZone, ElementRef, booleanAttribute, NgModule } from '@angular/core';
6
6
  import { NgTemplateOutlet, NgStyle, AsyncPipe, NgClass } from '@angular/common';
7
7
  import * as i3 from '@fundamental-ngx/cdk/utils';
8
8
  import { TemplateDirective, RtlService, InitialFocusDirective, DisabledBehaviorDirective, FDK_FOCUSABLE_ITEM_DIRECTIVE, FDK_FOCUSABLE_LIST_DIRECTIVE, ValueByPathPipe, set, uuidv4, destroyObservable, KeyUtil, get, range, RangeSelector, resizeObservable, uniq, DragAndDropModule, IntersectionSpyDirective, FDK_FOCUSABLE_GRID_DIRECTIVE, DndListDirective, FocusableGridDirective } from '@fundamental-ngx/cdk/utils';
@@ -1574,6 +1574,17 @@ const dialogConfig$1 = {
1574
1574
  bodyMinHeight: 'calc(50vh - 88px)'
1575
1575
  };
1576
1576
  /**
1577
+ * @deprecated Use {@link TableViewSettingsDialogComponent} instead.
1578
+ *
1579
+ * @example
1580
+ * <!-- Before -->
1581
+ * <fdp-table-p13-dialog [table]="table"></fdp-table-p13-dialog>
1582
+ *
1583
+ * <!-- After -->
1584
+ * <fdp-table-view-settings-dialog [table]="table"></fdp-table-view-settings-dialog>
1585
+ *
1586
+ * This component has been deprecated, please use the fdp-table-view-settings-dialog component instead.
1587
+ *
1577
1588
  * View settings dialog component.
1578
1589
  *
1579
1590
  * Used to link view settings filters options to the grid table.
@@ -2706,6 +2717,184 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2706
2717
  ], template: "<fieldset>\n <legend fd-list-group-header>\n <span fd-list-title [attr.id]=\"groupOrderHeaderId\">\n {{ ('platformTable.groupDialogGroupOrderHeader' | fdTranslate)() }}\n </span>\n </legend>\n <ul fd-list [selection]=\"true\" [attr.aria-labelledby]=\"groupOrderHeaderId\">\n <li fd-list-item [selected]=\"direction() === SORT_DIRECTION.ASC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"asc\"\n state=\"default\"\n [ngModel]=\"direction()\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ ('platformTable.groupDialogGroupOrderAsc' | fdTranslate)() }}</span>\n </li>\n <li fd-list-item [selected]=\"direction() === SORT_DIRECTION.DESC\">\n <fd-radio-button\n name=\"sort-order\"\n value=\"desc\"\n state=\"default\"\n [ngModel]=\"direction()\"\n (ngModelChange)=\"_groupOrderChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ ('platformTable.groupDialogGroupOrderDesc' | fdTranslate)() }}</span>\n </li>\n </ul>\n</fieldset>\n\n<fieldset>\n <legend fd-list-group-header>\n <span fd-list-title [attr.id]=\"groupByHeaderId\">\n {{ ('platformTable.groupDialogGroupByHeader' | fdTranslate)() }}\n </span>\n </legend>\n <ul fd-list [selection]=\"true\" [attr.aria-labelledby]=\"groupByHeaderId\">\n <li fd-list-item [selected]=\"NOT_GROUPED_OPTION_VALUE === field()\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"NOT_GROUPED_OPTION_VALUE\"\n state=\"default\"\n [ngModel]=\"field()\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ ('platformTable.groupDialogNotGroupedLabel' | fdTranslate)() }}</span>\n </li>\n @for (column of columns(); track column) {\n <li fd-list-item [selected]=\"column.key === field()\">\n <fd-radio-button\n name=\"sort-by\"\n [value]=\"column.key\"\n state=\"default\"\n [ngModel]=\"field()\"\n (ngModelChange)=\"_groupFieldChange($event)\"\n ></fd-radio-button>\n <span fd-list-title>{{ column.label }}</span>\n </li>\n }\n </ul>\n</fieldset>\n" }]
2707
2718
  }], propDecorators: { groupingData: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupingData", required: false }] }], initialGrouping: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialGrouping", required: false }] }], groupChange: [{ type: i0.Output, args: ["groupChange"] }], resetAvailabilityChange: [{ type: i0.Output, args: ["resetAvailabilityChange"] }] } });
2708
2719
 
2720
+ /**
2721
+ * Include/Exclude Filters Component
2722
+ *
2723
+ * Provides filtering UI with include and exclude rules panels,
2724
+ * designed to be used within the table view settings dialog.
2725
+ */
2726
+ class IncludeExcludeFiltersComponent {
2727
+ /** @hidden */
2728
+ constructor() {
2729
+ /** Filter data input */
2730
+ this.filterData = input(/* @ts-ignore */
2731
+ ...(ngDevMode ? [undefined, { debugName: "filterData" }] : /* istanbul ignore next */ []));
2732
+ /** Validator function for filter rules */
2733
+ this.validator = input(/* @ts-ignore */
2734
+ ...(ngDevMode ? [undefined, { debugName: "validator" }] : /* istanbul ignore next */ []));
2735
+ /** Emits when filters change */
2736
+ this.filterChange = output();
2737
+ /** Emits when reset availability changes */
2738
+ this.resetAvailabilityChange = output();
2739
+ /** Table columns available for filtering */
2740
+ this.columns = [];
2741
+ /**
2742
+ * @hidden
2743
+ * Include Rules
2744
+ */
2745
+ this._includeRules = [];
2746
+ /**
2747
+ * @hidden
2748
+ * Exclude Rules
2749
+ */
2750
+ this._excludeRules = [];
2751
+ /**
2752
+ * @hidden
2753
+ * Count of valid included rules
2754
+ */
2755
+ this._validIncludeRulesCount = signal(0, /* @ts-ignore */
2756
+ ...(ngDevMode ? [{ debugName: "_validIncludeRulesCount" }] : /* istanbul ignore next */ []));
2757
+ /**
2758
+ * @hidden
2759
+ * Count of valid excluded rules
2760
+ */
2761
+ this._validExcludeRulesCount = signal(0, /* @ts-ignore */
2762
+ ...(ngDevMode ? [{ debugName: "_validExcludeRulesCount" }] : /* istanbul ignore next */ []));
2763
+ /**
2764
+ * @hidden
2765
+ * Panel opened/closed flag
2766
+ */
2767
+ this._includePanelExpanded = true;
2768
+ /**
2769
+ * @hidden
2770
+ * Panel opened/closed flag
2771
+ */
2772
+ this._excludePanelExpanded = false;
2773
+ this.initialized = false;
2774
+ /** @hidden */
2775
+ this.calculateValidRulesCount = () => {
2776
+ this._validIncludeRulesCount.set(this._includeRules.filter(this.isRuleValid).length);
2777
+ this._validExcludeRulesCount.set(this._excludeRules.filter(this.isRuleValid).length);
2778
+ };
2779
+ /** @hidden */
2780
+ this.isRuleValid = (rule) => rule?.isValid;
2781
+ // Initialize once when filterData is available
2782
+ effect(() => {
2783
+ const data = this.filterData();
2784
+ if (data && !this.initialized) {
2785
+ this.initialized = true;
2786
+ // Use untracked to prevent signal reads from triggering the effect again
2787
+ untracked(() => {
2788
+ this.columns = data.columns.filter((column) => column.filterable) || [];
2789
+ this.initiateRules(data.collectionFilter);
2790
+ this.calculateValidRulesCount();
2791
+ this._excludePanelExpanded = this._validExcludeRulesCount() > 0;
2792
+ this._recalculateResetAvailability();
2793
+ });
2794
+ }
2795
+ });
2796
+ }
2797
+ /** Reset changes to the initial state */
2798
+ reset() {
2799
+ this.initiateRules();
2800
+ this._validIncludeRulesCount.set(0);
2801
+ this._validExcludeRulesCount.set(0);
2802
+ this._recalculateResetAvailability();
2803
+ this.emitChange();
2804
+ }
2805
+ /** @hidden */
2806
+ _removeRule(rule, rules) {
2807
+ const index = rules.indexOf(rule);
2808
+ if (index === -1) {
2809
+ return;
2810
+ }
2811
+ rules.splice(index, 1);
2812
+ // Keep at least one item in the list
2813
+ if (rules.length === 0) {
2814
+ rules.push(new FilterRule(this.columns));
2815
+ }
2816
+ this._recalculateResetAvailability();
2817
+ this.calculateValidRulesCount();
2818
+ this.emitChange();
2819
+ }
2820
+ /** @hidden */
2821
+ _addNewRule(rules) {
2822
+ const lastRule = rules.slice(-1)[0];
2823
+ rules.push(new FilterRule(this.columns, lastRule?.columnKey, lastRule?.strategy));
2824
+ }
2825
+ /** @hidden */
2826
+ _recalculateResetAvailability() {
2827
+ const hasOnlyOneEmptyIncludeRule = this._includeRules.length === 1 && !this._includeRules[0].hasValue;
2828
+ const hasOnlyOneEmptyExcludeRule = this._excludeRules.length === 1 && !this._excludeRules[0].hasValue;
2829
+ const isResetAvailable = !hasOnlyOneEmptyIncludeRule || !hasOnlyOneEmptyExcludeRule;
2830
+ this.resetAvailabilityChange.emit(isResetAvailable);
2831
+ }
2832
+ /** @hidden */
2833
+ _onRuleStateChange() {
2834
+ this.calculateValidRulesCount();
2835
+ this.emitChange();
2836
+ }
2837
+ /** @hidden */
2838
+ _onRuleChange() {
2839
+ this._recalculateResetAvailability();
2840
+ this.emitChange();
2841
+ }
2842
+ /** @hidden */
2843
+ initiateRules(initialRules) {
2844
+ this._includeRules = this.createRules(initialRules?.filter(({ exclude }) => !exclude));
2845
+ this._excludeRules = this.createRules(initialRules?.filter(({ exclude }) => exclude));
2846
+ [this._includeRules, this._excludeRules].forEach((rules) => {
2847
+ // Rules on initial phase are considered as valid
2848
+ rules.forEach((rule) => rule.setValid(true));
2849
+ // Keep at least one item in the list
2850
+ if (rules.length === 0) {
2851
+ rules.push(new FilterRule(this.columns));
2852
+ }
2853
+ });
2854
+ }
2855
+ /** @hidden */
2856
+ createRules(collectionFilter = []) {
2857
+ return collectionFilter.map(({ field, value, value2, strategy }) => new FilterRule(this.columns, field, strategy, value, value2));
2858
+ }
2859
+ /** @hidden */
2860
+ getCollectionFiltersFromRules(rules) {
2861
+ return rules.filter(this.isRuleValid).map(({ columnKey, strategy, value, value2 }) => ({
2862
+ field: columnKey,
2863
+ value,
2864
+ value2,
2865
+ strategy: strategy
2866
+ }));
2867
+ }
2868
+ /** @hidden */
2869
+ getCollectionFiltersWithExcludeFlag(rules, exclude) {
2870
+ return this.getCollectionFiltersFromRules(rules).map((filter) => ({ ...filter, exclude }));
2871
+ }
2872
+ /** @hidden */
2873
+ emitChange() {
2874
+ const includeFilters = this.getCollectionFiltersWithExcludeFlag(this._includeRules, false);
2875
+ const excludeFilters = this.getCollectionFiltersWithExcludeFlag(this._excludeRules, true);
2876
+ const combinedFilters = [...includeFilters, ...excludeFilters];
2877
+ this.filterChange.emit({ filterBy: combinedFilters });
2878
+ }
2879
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: IncludeExcludeFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2880
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: IncludeExcludeFiltersComponent, isStandalone: true, selector: "fdp-table-include-exclude-filters", inputs: { filterData: { classPropertyName: "filterData", publicName: "filterData", isSignal: true, isRequired: false, transformFunction: null }, validator: { classPropertyName: "validator", publicName: "validator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filterChange: "filterChange", resetAvailabilityChange: "resetAvailabilityChange" }, ngImport: i0, template: "<div class=\"fdp-table-include-exclude-filters\">\n <!-- Include Rules -->\n <fd-panel [expanded]=\"_includePanelExpanded\">\n <div fd-panel-title>\n {{\n (\n (_validIncludeRulesCount() > 0\n ? 'platformTable.P13FilterDialogIncludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogIncludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validIncludeRulesCount() }\n )()\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _includeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_onRuleChange()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n ('platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate)()\n \"\n [title]=\"('platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate)()\"\n (click)=\"_removeRule(rule, _includeRules)\"\n ></button>\n @if (_includeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n ('platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate)()\n \"\n [title]=\"('platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate)()\"\n (click)=\"_addNewRule(_includeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n <!-- Exclude Rules -->\n <fd-panel [expanded]=\"_excludePanelExpanded\">\n <div fd-panel-title>\n {{\n (\n (_validExcludeRulesCount() > 0\n ? 'platformTable.P13FilterDialogExcludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogExcludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validExcludeRulesCount() }\n )()\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _excludeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_onRuleChange()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n ('platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate)()\n \"\n [title]=\"('platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate)()\"\n (click)=\"_removeRule(rule, _excludeRules)\"\n ></button>\n @if (_excludeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n ('platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate)()\n \"\n [title]=\"('platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate)()\"\n (click)=\"_addNewRule(_excludeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n</div>\n", styles: [".fdp-table-include-exclude-filters .filter-row__input,.fdp-table-include-exclude-filters .filter-row__select{display:block;max-width:100%}.fdp-table-include-exclude-filters .fd-popover-custom{display:block}\n"], dependencies: [{ kind: "component", type: PanelComponent, selector: "fd-panel", inputs: ["class", "fixed", "id", "expandId", "expandAriaLabel", "expandAriaLabelledBy", "expanded", "transparent", "noRadius"], outputs: ["expandedChange"] }, { kind: "directive", type: PanelTitleDirective, selector: "[fd-panel-title]", inputs: ["id", "wrap"] }, { kind: "directive", type: PanelContentDirective, selector: "[fd-panel-content]", inputs: ["height", "minHeight", "maxHeight", "ariaLabel", "ariaLabelledBy", "role", "noPadding", "transparent", "id"] }, { kind: "component", type: LayoutGridComponent, selector: "fd-layout-grid, [fdLayoutGrid]", inputs: ["noGap", "noHorizontalGap", "noVerticalGap"] }, { kind: "directive", type: LayoutGridRowDirective, selector: "[fd-layout-grid-row], [fdLayoutGridRow]" }, { kind: "component", type: FilterRuleComponent, selector: "fdp-table-filter-rule", inputs: ["rule"], outputs: ["ruleChange", "ruleStateChange"] }, { kind: "directive", type: LayoutGridColDirective, selector: "[fd-layout-grid-col], [fdLayoutGridCol]", inputs: ["fdLayoutGridCol", "colGrow", "colMd", "colLg", "colXl", "colOffset", "colOffsetMd", "colOffsetLg", "colOffsetXl"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2881
+ }
2882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: IncludeExcludeFiltersComponent, decorators: [{
2883
+ type: Component,
2884
+ args: [{ selector: 'fdp-table-include-exclude-filters', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2885
+ TemplateDirective,
2886
+ PanelComponent,
2887
+ PanelTitleDirective,
2888
+ PanelContentDirective,
2889
+ LayoutGridComponent,
2890
+ LayoutGridRowDirective,
2891
+ FilterRuleComponent,
2892
+ LayoutGridColDirective,
2893
+ ButtonComponent,
2894
+ FdTranslatePipe
2895
+ ], template: "<div class=\"fdp-table-include-exclude-filters\">\n <!-- Include Rules -->\n <fd-panel [expanded]=\"_includePanelExpanded\">\n <div fd-panel-title>\n {{\n (\n (_validIncludeRulesCount() > 0\n ? 'platformTable.P13FilterDialogIncludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogIncludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validIncludeRulesCount() }\n )()\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _includeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_onRuleChange()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n ('platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate)()\n \"\n [title]=\"('platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate)()\"\n (click)=\"_removeRule(rule, _includeRules)\"\n ></button>\n @if (_includeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n ('platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate)()\n \"\n [title]=\"('platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate)()\"\n (click)=\"_addNewRule(_includeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n <!-- Exclude Rules -->\n <fd-panel [expanded]=\"_excludePanelExpanded\">\n <div fd-panel-title>\n {{\n (\n (_validExcludeRulesCount() > 0\n ? 'platformTable.P13FilterDialogExcludePanelTitleWithCount'\n : 'platformTable.P13FilterDialogExcludePanelTitleWithoutCount'\n ) | fdTranslate: { count: _validExcludeRulesCount() }\n )()\n }}\n </div>\n <div fd-panel-content>\n @for (rule of _excludeRules; track rule) {\n <fd-layout-grid>\n <div fdLayoutGridRow>\n <fdp-table-filter-rule\n [fdLayoutGridCol]=\"10\"\n [rule]=\"rule\"\n (ruleChange)=\"_onRuleChange()\"\n (ruleStateChange)=\"_onRuleStateChange()\"\n ></fdp-table-filter-rule>\n <!-- Actions buttons -->\n <div [fdLayoutGridCol]=\"2\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"sys-cancel\"\n [attr.aria-label]=\"\n ('platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate)()\n \"\n [title]=\"('platformTable.P13FilterDialogRemoveFilterBtnTitle' | fdTranslate)()\"\n (click)=\"_removeRule(rule, _excludeRules)\"\n ></button>\n @if (_excludeRules.length - 1 === $index) {\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"add\"\n [attr.aria-label]=\"\n ('platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate)()\n \"\n [title]=\"('platformTable.P13FilterDialogAddFilterBtnTitle' | fdTranslate)()\"\n (click)=\"_addNewRule(_excludeRules)\"\n ></button>\n }\n </div>\n </div>\n </fd-layout-grid>\n }\n </div>\n </fd-panel>\n</div>\n", styles: [".fdp-table-include-exclude-filters .filter-row__input,.fdp-table-include-exclude-filters .filter-row__select{display:block;max-width:100%}.fdp-table-include-exclude-filters .fd-popover-custom{display:block}\n"] }]
2896
+ }], ctorParameters: () => [], propDecorators: { filterData: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterData", required: false }] }], validator: [{ type: i0.Input, args: [{ isSignal: true, alias: "validator", required: false }] }], filterChange: [{ type: i0.Output, args: ["filterChange"] }], resetAvailabilityChange: [{ type: i0.Output, args: ["resetAvailabilityChange"] }] } });
2897
+
2709
2898
  let sortOrderHeaderUniqueId = 0;
2710
2899
  let sortDialogSortByHeaderUniqueId = 0;
2711
2900
  class SortingComponent {
@@ -3464,6 +3653,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3464
3653
  }], propDecorators: { columnsData: [{ type: i0.Input, args: [{ isSignal: true, alias: "columnsData", required: false }] }], initialColumns: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialColumns", required: false }] }], columnsChange: [{ type: i0.Output, args: ["columnsChange"] }], resetAvailabilityChange: [{ type: i0.Output, args: ["resetAvailabilityChange"] }] } });
3465
3654
 
3466
3655
  class SettingsDialogComponent {
3656
+ /** @hidden Computed filter data for include/exclude filters component */
3657
+ get includeExcludeFiltersComponentData() {
3658
+ const data = this.includeExcludeFiltersData();
3659
+ return data
3660
+ ? {
3661
+ columns: data.columns,
3662
+ collectionFilter: data.filterBy,
3663
+ validator: data.validator
3664
+ }
3665
+ : undefined;
3666
+ }
3467
3667
  /**
3468
3668
  * Constructor that initializes dialog data and sets initial values for sorting, filtering, grouping, and columns.
3469
3669
  */
@@ -3476,6 +3676,9 @@ class SettingsDialogComponent {
3476
3676
  /** Data for filtering */
3477
3677
  this.filteringData = signal(null, /* @ts-ignore */
3478
3678
  ...(ngDevMode ? [{ debugName: "filteringData" }] : /* istanbul ignore next */ []));
3679
+ /** Data for include/exclude filters */
3680
+ this.includeExcludeFiltersData = signal(null, /* @ts-ignore */
3681
+ ...(ngDevMode ? [{ debugName: "includeExcludeFiltersData" }] : /* istanbul ignore next */ []));
3479
3682
  /** Data for grouping */
3480
3683
  this.groupingData = signal(null, /* @ts-ignore */
3481
3684
  ...(ngDevMode ? [{ debugName: "groupingData" }] : /* istanbul ignore next */ []));
@@ -3530,6 +3733,7 @@ class SettingsDialogComponent {
3530
3733
  const data = this.dialogRef.data;
3531
3734
  this.sortingData.set(data.sortingData);
3532
3735
  this.filteringData.set(data.filteringData);
3736
+ this.includeExcludeFiltersData.set(data.includeExcludeFiltersData);
3533
3737
  this.groupingData.set(data.groupingData);
3534
3738
  this.showColumns = data.allowColumnConfiguration;
3535
3739
  if (this.showColumns) {
@@ -3547,6 +3751,14 @@ class SettingsDialogComponent {
3547
3751
  * Confirm the dialog action and close the dialog, returning updated settings data.
3548
3752
  */
3549
3753
  confirm() {
3754
+ // Validate include-exclude filters if present
3755
+ const includeExcludeData = this.includeExcludeFiltersData();
3756
+ if (includeExcludeData?.validator && includeExcludeData.filterBy.length > 0) {
3757
+ if (!includeExcludeData.validator(includeExcludeData.filterBy)) {
3758
+ // Validator returned false - don't close dialog
3759
+ return;
3760
+ }
3761
+ }
3550
3762
  const columnsData = this._pendingColumnsChanges
3551
3763
  ? { columns: this._pendingColumnsChanges.columns }
3552
3764
  : this.columnsData();
@@ -3556,6 +3768,7 @@ class SettingsDialogComponent {
3556
3768
  this.dialogRef.close({
3557
3769
  sortingData: sortingResult,
3558
3770
  filteringData: this.filteringData(),
3771
+ includeExcludeFiltersData: this.includeExcludeFiltersData(),
3559
3772
  groupingData: this.groupingData(),
3560
3773
  columnsData
3561
3774
  });
@@ -3589,6 +3802,12 @@ class SettingsDialogComponent {
3589
3802
  filterBy: this._initialFilters()
3590
3803
  });
3591
3804
  }
3805
+ if (this.activeTab() === ActiveTab.FILTER && this.includeExcludeFiltersData()) {
3806
+ this.includeExcludeFiltersData.set({
3807
+ ...this.includeExcludeFiltersData(),
3808
+ filterBy: this._initialFilters()
3809
+ });
3810
+ }
3592
3811
  if (this.activeTab() === ActiveTab.GROUP && this.groupingData()) {
3593
3812
  this.groupingData.set({
3594
3813
  ...this.groupingData(),
@@ -3639,6 +3858,16 @@ class SettingsDialogComponent {
3639
3858
  filterBy: event.filterBy
3640
3859
  });
3641
3860
  }
3861
+ /**
3862
+ * Handle include/exclude filter change event and update filtering data.
3863
+ * @param event Updated include/exclude filtering data.
3864
+ */
3865
+ onIncludeExcludeFilterChange(event) {
3866
+ this.includeExcludeFiltersData.set({
3867
+ ...this.includeExcludeFiltersData(),
3868
+ filterBy: event.filterBy
3869
+ });
3870
+ }
3642
3871
  /**
3643
3872
  * Handle group change event and update grouping data.
3644
3873
  * @param event Updated grouping data.
@@ -3671,7 +3900,7 @@ class SettingsDialogComponent {
3671
3900
  */
3672
3901
  onTabSelected(event) {
3673
3902
  // Map tab index to ActiveTab enum based on which tabs are rendered
3674
- // The order is: columns (if showColumns), sort, filter, group
3903
+ // The order is: columns (if showColumns), sort, filter (regular or include/exclude), group
3675
3904
  const tabOrder = [];
3676
3905
  if (this.columnsData() && this.showColumns) {
3677
3906
  tabOrder.push(ActiveTab.COLUMNS);
@@ -3679,7 +3908,7 @@ class SettingsDialogComponent {
3679
3908
  if (this.sortingData()) {
3680
3909
  tabOrder.push(ActiveTab.SORT);
3681
3910
  }
3682
- if (this.filteringData()) {
3911
+ if (this.filteringData() || this.includeExcludeFiltersData()) {
3683
3912
  tabOrder.push(ActiveTab.FILTER);
3684
3913
  }
3685
3914
  if (this.groupingData()) {
@@ -3726,7 +3955,7 @@ class SettingsDialogComponent {
3726
3955
  else if (this.sortingData()) {
3727
3956
  return ActiveTab.SORT;
3728
3957
  }
3729
- else if (this.filteringData()) {
3958
+ else if (this.filteringData() || this.includeExcludeFiltersData()) {
3730
3959
  return ActiveTab.FILTER;
3731
3960
  }
3732
3961
  else if (this.groupingData()) {
@@ -3740,10 +3969,10 @@ class SettingsDialogComponent {
3740
3969
  _shouldRenderSubheader() {
3741
3970
  const validDataCount = [
3742
3971
  this.sortingData(),
3743
- this.filteringData(),
3972
+ !!(this.filteringData() || this.includeExcludeFiltersData()),
3744
3973
  this.groupingData(),
3745
3974
  this.columnsData()
3746
- ].filter((data) => data !== null).length;
3975
+ ].filter((data) => data !== null && data !== false).length;
3747
3976
  this.showSubheader.set(validDataCount >= 2);
3748
3977
  }
3749
3978
  /**
@@ -3812,7 +4041,7 @@ class SettingsDialogComponent {
3812
4041
  this._liveAnnouncer.announce(message, 'polite');
3813
4042
  }
3814
4043
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SettingsDialogComponent, deps: [{ token: i1$1.DialogRef }, { token: i1.Table }], target: i0.ɵɵFactoryTarget.Component }); }
3815
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: SettingsDialogComponent, isStandalone: true, selector: "fdp-settings-dialog-settings", inputs: { resetAnnouncementMessage: { classPropertyName: "resetAnnouncementMessage", publicName: "resetAnnouncementMessage", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => SettingsDialogComponent) }], ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (activeTab() !== 'filter') {\n <fd-bar-element>\n <span role=\"heading\" [attr.aria-level]=\"headingLevel\" fd-title [headerSize]=\"4\">{{\n ('platformTable.settingsDialogHeader' | fdTranslate)()\n }}</span>\n </fd-bar-element>\n } @else {\n <fd-bar-element>\n @if (activeFilterStepView()?.titleTemplateRef) {\n <ng-container\n [ngTemplateOutlet]=\"activeFilterStepView()?.titleTemplateRef ?? null\"\n ></ng-container>\n }\n </fd-bar-element>\n }\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body disablePaddings>\n @if (showSubheader()) {\n <fdp-icon-tab-bar layoutMode=\"row\" iconTabSize=\"sm\" (iconTabSelected)=\"onTabSelected($event)\">\n @if (columnsData() && showColumns) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionColumnsButtonTitle' | fdTranslate)()\">\n <fdp-columns\n [columnsData]=\"columnsData()!\"\n [initialColumns]=\"_initialColumns()\"\n (columnsChange)=\"onColumnsChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.COLUMNS, $event)\"\n ></fdp-columns>\n </fdp-icon-tab-bar-tab>\n }\n @if (sortingData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionSortButtonTitle' | fdTranslate)()\">\n <fdp-sorting\n [sortingData]=\"sortingData()!\"\n [initialSorting]=\"_initialSorting()\"\n (sortChange)=\"onSortChange($event)\"\n (validityChange)=\"onSortValidityChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.SORT, $event)\"\n ></fdp-sorting>\n </fdp-icon-tab-bar-tab>\n }\n @if (filteringData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionFilterButtonTitle' | fdTranslate)()\">\n <fdp-filters\n [headingLevel]=\"headingLevel\"\n [filteringData]=\"filteringData()!\"\n [initialFilters]=\"_initialFilters()\"\n (activeFilterStepViewChange)=\"onActiveFilterStepViewChange($event)\"\n (filterChange)=\"onFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-filters>\n </fdp-icon-tab-bar-tab>\n }\n @if (groupingData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionGroupButtonTitle' | fdTranslate)()\">\n <fdp-grouping\n [groupingData]=\"groupingData()!\"\n [initialGrouping]=\"_initialGrouping()\"\n (groupChange)=\"onGroupChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.GROUP, $event)\"\n ></fdp-grouping>\n </fdp-icon-tab-bar-tab>\n }\n </fdp-icon-tab-bar>\n } @else {\n @if (columnsData() && showColumns) {\n <fdp-columns\n [columnsData]=\"columnsData()!\"\n [initialColumns]=\"_initialColumns()\"\n (columnsChange)=\"onColumnsChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.COLUMNS, $event)\"\n ></fdp-columns>\n }\n @if (sortingData()) {\n <fdp-sorting\n [sortingData]=\"sortingData()!\"\n [initialSorting]=\"_initialSorting()\"\n (sortChange)=\"onSortChange($event)\"\n (validityChange)=\"onSortValidityChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.SORT, $event)\"\n ></fdp-sorting>\n }\n @if (filteringData()) {\n <fdp-filters\n [headingLevel]=\"headingLevel\"\n [filteringData]=\"filteringData()!\"\n [initialFilters]=\"_initialFilters()\"\n (activeFilterStepViewChange)=\"onActiveFilterStepViewChange($event)\"\n (filterChange)=\"onFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-filters>\n }\n @if (groupingData()) {\n <fdp-grouping\n [groupingData]=\"groupingData()!\"\n [initialGrouping]=\"_initialGrouping()\"\n (groupChange)=\"onGroupChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.GROUP, $event)\"\n ></fdp-grouping>\n }\n }\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"('platformTable.confirmBtnLabel' | fdTranslate)()\"\n [disabled]=\"!isDialogValid()\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"('platformTable.cancelBtnLabel' | fdTranslate)()\"\n fdkInitialFocus\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header", inputs: ["inShellbar"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]", inputs: ["stackContentsVertically"] }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]", inputs: ["stackContentsVertically"] }, { kind: "component", type: ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: SortingComponent, selector: "fdp-sorting", inputs: ["sortingData", "initialSorting"], outputs: ["sortChange", "resetAvailabilityChange", "validityChange"] }, { kind: "component", type: FiltersComponent, selector: "fdp-filters", inputs: ["filteringData", "headingLevel", "initialFilters"], outputs: ["activeFilterStepViewChange", "filterChange", "resetAvailabilityChange"] }, { kind: "component", type: GroupingComponent, selector: "fdp-grouping", inputs: ["groupingData", "initialGrouping"], outputs: ["groupChange", "resetAvailabilityChange"] }, { kind: "component", type: ColumnsComponent, selector: "fdp-columns", inputs: ["columnsData", "initialColumns"], outputs: ["columnsChange", "resetAvailabilityChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["twoLineClamp", "headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "tabHeadingLevel", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "settings", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4044
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: SettingsDialogComponent, isStandalone: true, selector: "fdp-settings-dialog-settings", inputs: { resetAnnouncementMessage: { classPropertyName: "resetAnnouncementMessage", publicName: "resetAnnouncementMessage", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: RESETTABLE_TOKEN, useExisting: forwardRef(() => SettingsDialogComponent) }], ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (activeTab() !== 'filter') {\n <fd-bar-element>\n <span role=\"heading\" [attr.aria-level]=\"headingLevel\" fd-title [headerSize]=\"4\">{{\n ('platformTable.settingsDialogHeader' | fdTranslate)()\n }}</span>\n </fd-bar-element>\n } @else {\n <fd-bar-element>\n @if (activeFilterStepView()?.titleTemplateRef) {\n <ng-container\n [ngTemplateOutlet]=\"activeFilterStepView()?.titleTemplateRef ?? null\"\n ></ng-container>\n }\n </fd-bar-element>\n }\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body disablePaddings>\n @if (showSubheader()) {\n <fdp-icon-tab-bar layoutMode=\"row\" iconTabSize=\"sm\" (iconTabSelected)=\"onTabSelected($event)\">\n @if (columnsData() && showColumns) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionColumnsButtonTitle' | fdTranslate)()\">\n <fdp-columns\n [columnsData]=\"columnsData()!\"\n [initialColumns]=\"_initialColumns()\"\n (columnsChange)=\"onColumnsChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.COLUMNS, $event)\"\n ></fdp-columns>\n </fdp-icon-tab-bar-tab>\n }\n @if (sortingData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionSortButtonTitle' | fdTranslate)()\">\n <fdp-sorting\n [sortingData]=\"sortingData()!\"\n [initialSorting]=\"_initialSorting()\"\n (sortChange)=\"onSortChange($event)\"\n (validityChange)=\"onSortValidityChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.SORT, $event)\"\n ></fdp-sorting>\n </fdp-icon-tab-bar-tab>\n }\n @if (filteringData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionFilterButtonTitle' | fdTranslate)()\">\n <fdp-filters\n [headingLevel]=\"headingLevel\"\n [filteringData]=\"filteringData()!\"\n [initialFilters]=\"_initialFilters()\"\n (activeFilterStepViewChange)=\"onActiveFilterStepViewChange($event)\"\n (filterChange)=\"onFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-filters>\n </fdp-icon-tab-bar-tab>\n }\n @if (includeExcludeFiltersData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionFilterButtonTitle' | fdTranslate)()\">\n <fdp-table-include-exclude-filters\n [filterData]=\"includeExcludeFiltersComponentData\"\n (filterChange)=\"onIncludeExcludeFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-table-include-exclude-filters>\n </fdp-icon-tab-bar-tab>\n }\n @if (groupingData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionGroupButtonTitle' | fdTranslate)()\">\n <fdp-grouping\n [groupingData]=\"groupingData()!\"\n [initialGrouping]=\"_initialGrouping()\"\n (groupChange)=\"onGroupChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.GROUP, $event)\"\n ></fdp-grouping>\n </fdp-icon-tab-bar-tab>\n }\n </fdp-icon-tab-bar>\n } @else {\n @if (columnsData() && showColumns) {\n <fdp-columns\n [columnsData]=\"columnsData()!\"\n [initialColumns]=\"_initialColumns()\"\n (columnsChange)=\"onColumnsChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.COLUMNS, $event)\"\n ></fdp-columns>\n }\n @if (sortingData()) {\n <fdp-sorting\n [sortingData]=\"sortingData()!\"\n [initialSorting]=\"_initialSorting()\"\n (sortChange)=\"onSortChange($event)\"\n (validityChange)=\"onSortValidityChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.SORT, $event)\"\n ></fdp-sorting>\n }\n @if (filteringData()) {\n <fdp-filters\n [headingLevel]=\"headingLevel\"\n [filteringData]=\"filteringData()!\"\n [initialFilters]=\"_initialFilters()\"\n (activeFilterStepViewChange)=\"onActiveFilterStepViewChange($event)\"\n (filterChange)=\"onFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-filters>\n }\n @if (includeExcludeFiltersData()) {\n <fdp-table-include-exclude-filters\n [filterData]=\"includeExcludeFiltersComponentData\"\n (filterChange)=\"onIncludeExcludeFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-table-include-exclude-filters>\n }\n @if (groupingData()) {\n <fdp-grouping\n [groupingData]=\"groupingData()!\"\n [initialGrouping]=\"_initialGrouping()\"\n (groupChange)=\"onGroupChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.GROUP, $event)\"\n ></fdp-grouping>\n }\n }\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"('platformTable.confirmBtnLabel' | fdTranslate)()\"\n [disabled]=\"!isDialogValid()\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"('platformTable.cancelBtnLabel' | fdTranslate)()\"\n fdkInitialFocus\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n", dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: DialogHeaderComponent, selector: "fd-dialog-header", inputs: ["inShellbar"] }, { kind: "directive", type: BarLeftDirective, selector: "[fd-bar-left]", inputs: ["stackContentsVertically"] }, { kind: "directive", type: BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth"] }, { kind: "directive", type: BarRightDirective, selector: "[fd-bar-right]", inputs: ["stackContentsVertically"] }, { kind: "component", type: ResetButtonComponent, selector: "fdp-table-reset-button" }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body", inputs: ["disablePaddings"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: SortingComponent, selector: "fdp-sorting", inputs: ["sortingData", "initialSorting"], outputs: ["sortChange", "resetAvailabilityChange", "validityChange"] }, { kind: "component", type: FiltersComponent, selector: "fdp-filters", inputs: ["filteringData", "headingLevel", "initialFilters"], outputs: ["activeFilterStepViewChange", "filterChange", "resetAvailabilityChange"] }, { kind: "component", type: GroupingComponent, selector: "fdp-grouping", inputs: ["groupingData", "initialGrouping"], outputs: ["groupChange", "resetAvailabilityChange"] }, { kind: "component", type: ColumnsComponent, selector: "fdp-columns", inputs: ["columnsData", "initialColumns"], outputs: ["columnsChange", "resetAvailabilityChange"] }, { kind: "component", type: IncludeExcludeFiltersComponent, selector: "fdp-table-include-exclude-filters", inputs: ["filterData", "validator"], outputs: ["filterChange", "resetAvailabilityChange"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["twoLineClamp", "headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "directive", type: InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }, { kind: "component", type: IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "tabHeadingLevel", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "settings", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3816
4045
  }
3817
4046
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: SettingsDialogComponent, decorators: [{
3818
4047
  type: Component,
@@ -3831,6 +4060,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3831
4060
  FiltersComponent,
3832
4061
  GroupingComponent,
3833
4062
  ColumnsComponent,
4063
+ IncludeExcludeFiltersComponent,
3834
4064
  NgTemplateOutlet,
3835
4065
  TemplateDirective,
3836
4066
  TitleComponent,
@@ -3838,7 +4068,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3838
4068
  InitialFocusDirective,
3839
4069
  IconTabBarComponent,
3840
4070
  IconTabBarTabComponent
3841
- ], template: "<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (activeTab() !== 'filter') {\n <fd-bar-element>\n <span role=\"heading\" [attr.aria-level]=\"headingLevel\" fd-title [headerSize]=\"4\">{{\n ('platformTable.settingsDialogHeader' | fdTranslate)()\n }}</span>\n </fd-bar-element>\n } @else {\n <fd-bar-element>\n @if (activeFilterStepView()?.titleTemplateRef) {\n <ng-container\n [ngTemplateOutlet]=\"activeFilterStepView()?.titleTemplateRef ?? null\"\n ></ng-container>\n }\n </fd-bar-element>\n }\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body disablePaddings>\n @if (showSubheader()) {\n <fdp-icon-tab-bar layoutMode=\"row\" iconTabSize=\"sm\" (iconTabSelected)=\"onTabSelected($event)\">\n @if (columnsData() && showColumns) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionColumnsButtonTitle' | fdTranslate)()\">\n <fdp-columns\n [columnsData]=\"columnsData()!\"\n [initialColumns]=\"_initialColumns()\"\n (columnsChange)=\"onColumnsChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.COLUMNS, $event)\"\n ></fdp-columns>\n </fdp-icon-tab-bar-tab>\n }\n @if (sortingData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionSortButtonTitle' | fdTranslate)()\">\n <fdp-sorting\n [sortingData]=\"sortingData()!\"\n [initialSorting]=\"_initialSorting()\"\n (sortChange)=\"onSortChange($event)\"\n (validityChange)=\"onSortValidityChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.SORT, $event)\"\n ></fdp-sorting>\n </fdp-icon-tab-bar-tab>\n }\n @if (filteringData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionFilterButtonTitle' | fdTranslate)()\">\n <fdp-filters\n [headingLevel]=\"headingLevel\"\n [filteringData]=\"filteringData()!\"\n [initialFilters]=\"_initialFilters()\"\n (activeFilterStepViewChange)=\"onActiveFilterStepViewChange($event)\"\n (filterChange)=\"onFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-filters>\n </fdp-icon-tab-bar-tab>\n }\n @if (groupingData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionGroupButtonTitle' | fdTranslate)()\">\n <fdp-grouping\n [groupingData]=\"groupingData()!\"\n [initialGrouping]=\"_initialGrouping()\"\n (groupChange)=\"onGroupChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.GROUP, $event)\"\n ></fdp-grouping>\n </fdp-icon-tab-bar-tab>\n }\n </fdp-icon-tab-bar>\n } @else {\n @if (columnsData() && showColumns) {\n <fdp-columns\n [columnsData]=\"columnsData()!\"\n [initialColumns]=\"_initialColumns()\"\n (columnsChange)=\"onColumnsChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.COLUMNS, $event)\"\n ></fdp-columns>\n }\n @if (sortingData()) {\n <fdp-sorting\n [sortingData]=\"sortingData()!\"\n [initialSorting]=\"_initialSorting()\"\n (sortChange)=\"onSortChange($event)\"\n (validityChange)=\"onSortValidityChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.SORT, $event)\"\n ></fdp-sorting>\n }\n @if (filteringData()) {\n <fdp-filters\n [headingLevel]=\"headingLevel\"\n [filteringData]=\"filteringData()!\"\n [initialFilters]=\"_initialFilters()\"\n (activeFilterStepViewChange)=\"onActiveFilterStepViewChange($event)\"\n (filterChange)=\"onFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-filters>\n }\n @if (groupingData()) {\n <fdp-grouping\n [groupingData]=\"groupingData()!\"\n [initialGrouping]=\"_initialGrouping()\"\n (groupChange)=\"onGroupChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.GROUP, $event)\"\n ></fdp-grouping>\n }\n }\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"('platformTable.confirmBtnLabel' | fdTranslate)()\"\n [disabled]=\"!isDialogValid()\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"('platformTable.cancelBtnLabel' | fdTranslate)()\"\n fdkInitialFocus\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n" }]
4071
+ ], template: "<fd-dialog>\n <fd-dialog-header>\n <ng-template fdkTemplate=\"header\">\n <div fd-bar-left>\n @if (activeTab() !== 'filter') {\n <fd-bar-element>\n <span role=\"heading\" [attr.aria-level]=\"headingLevel\" fd-title [headerSize]=\"4\">{{\n ('platformTable.settingsDialogHeader' | fdTranslate)()\n }}</span>\n </fd-bar-element>\n } @else {\n <fd-bar-element>\n @if (activeFilterStepView()?.titleTemplateRef) {\n <ng-container\n [ngTemplateOutlet]=\"activeFilterStepView()?.titleTemplateRef ?? null\"\n ></ng-container>\n }\n </fd-bar-element>\n }\n </div>\n <div fd-bar-right>\n <fd-bar-element>\n <fdp-table-reset-button></fdp-table-reset-button>\n </fd-bar-element>\n </div>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body disablePaddings>\n @if (showSubheader()) {\n <fdp-icon-tab-bar layoutMode=\"row\" iconTabSize=\"sm\" (iconTabSelected)=\"onTabSelected($event)\">\n @if (columnsData() && showColumns) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionColumnsButtonTitle' | fdTranslate)()\">\n <fdp-columns\n [columnsData]=\"columnsData()!\"\n [initialColumns]=\"_initialColumns()\"\n (columnsChange)=\"onColumnsChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.COLUMNS, $event)\"\n ></fdp-columns>\n </fdp-icon-tab-bar-tab>\n }\n @if (sortingData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionSortButtonTitle' | fdTranslate)()\">\n <fdp-sorting\n [sortingData]=\"sortingData()!\"\n [initialSorting]=\"_initialSorting()\"\n (sortChange)=\"onSortChange($event)\"\n (validityChange)=\"onSortValidityChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.SORT, $event)\"\n ></fdp-sorting>\n </fdp-icon-tab-bar-tab>\n }\n @if (filteringData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionFilterButtonTitle' | fdTranslate)()\">\n <fdp-filters\n [headingLevel]=\"headingLevel\"\n [filteringData]=\"filteringData()!\"\n [initialFilters]=\"_initialFilters()\"\n (activeFilterStepViewChange)=\"onActiveFilterStepViewChange($event)\"\n (filterChange)=\"onFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-filters>\n </fdp-icon-tab-bar-tab>\n }\n @if (includeExcludeFiltersData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionFilterButtonTitle' | fdTranslate)()\">\n <fdp-table-include-exclude-filters\n [filterData]=\"includeExcludeFiltersComponentData\"\n (filterChange)=\"onIncludeExcludeFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-table-include-exclude-filters>\n </fdp-icon-tab-bar-tab>\n }\n @if (groupingData()) {\n <fdp-icon-tab-bar-tab [label]=\"('platformTable.toolbarActionGroupButtonTitle' | fdTranslate)()\">\n <fdp-grouping\n [groupingData]=\"groupingData()!\"\n [initialGrouping]=\"_initialGrouping()\"\n (groupChange)=\"onGroupChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.GROUP, $event)\"\n ></fdp-grouping>\n </fdp-icon-tab-bar-tab>\n }\n </fdp-icon-tab-bar>\n } @else {\n @if (columnsData() && showColumns) {\n <fdp-columns\n [columnsData]=\"columnsData()!\"\n [initialColumns]=\"_initialColumns()\"\n (columnsChange)=\"onColumnsChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.COLUMNS, $event)\"\n ></fdp-columns>\n }\n @if (sortingData()) {\n <fdp-sorting\n [sortingData]=\"sortingData()!\"\n [initialSorting]=\"_initialSorting()\"\n (sortChange)=\"onSortChange($event)\"\n (validityChange)=\"onSortValidityChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.SORT, $event)\"\n ></fdp-sorting>\n }\n @if (filteringData()) {\n <fdp-filters\n [headingLevel]=\"headingLevel\"\n [filteringData]=\"filteringData()!\"\n [initialFilters]=\"_initialFilters()\"\n (activeFilterStepViewChange)=\"onActiveFilterStepViewChange($event)\"\n (filterChange)=\"onFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-filters>\n }\n @if (includeExcludeFiltersData()) {\n <fdp-table-include-exclude-filters\n [filterData]=\"includeExcludeFiltersComponentData\"\n (filterChange)=\"onIncludeExcludeFilterChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.FILTER, $event)\"\n ></fdp-table-include-exclude-filters>\n }\n @if (groupingData()) {\n <fdp-grouping\n [groupingData]=\"groupingData()!\"\n [initialGrouping]=\"_initialGrouping()\"\n (groupChange)=\"onGroupChange($event)\"\n (resetAvailabilityChange)=\"updateResetAvailability(ActiveTab.GROUP, $event)\"\n ></fdp-grouping>\n }\n }\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"('platformTable.confirmBtnLabel' | fdTranslate)()\"\n [disabled]=\"!isDialogValid()\"\n (click)=\"confirm()\"\n ></fd-button-bar>\n <fd-button-bar\n [label]=\"('platformTable.cancelBtnLabel' | fdTranslate)()\"\n fdkInitialFocus\n (click)=\"cancel()\"\n ></fd-button-bar>\n </fd-dialog-footer>\n</fd-dialog>\n" }]
3842
4072
  }], ctorParameters: () => [{ type: i1$1.DialogRef }, { type: i1.Table }], propDecorators: { resetAnnouncementMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetAnnouncementMessage", required: false }] }] } });
3843
4073
 
3844
4074
  const dialogConfig = {
@@ -3905,6 +4135,22 @@ class TableViewSettingsDialogComponent {
3905
4135
  viewSettingsFilters: this.filters.toArray(),
3906
4136
  filterBy: state?.filterBy
3907
4137
  };
4138
+ // Build include/exclude filters data if component is present
4139
+ const includeExcludeFiltersData = this.includeExcludeFilters
4140
+ ? {
4141
+ columns: columns
4142
+ .filter((col) => col.filterable)
4143
+ .map((col) => ({
4144
+ label: col.label,
4145
+ key: col.key,
4146
+ dataType: col.dataType,
4147
+ filterable: col.filterable,
4148
+ filterSelectOptions: col.filterSelectOptions
4149
+ })),
4150
+ filterBy: state?.filterBy ?? [],
4151
+ validator: this.includeExcludeFilters.validator()
4152
+ }
4153
+ : null;
3908
4154
  const groupData = {
3909
4155
  columns: columns.filter(({ groupable }) => groupable),
3910
4156
  direction: state.groupBy?.[0]?.direction,
@@ -3970,6 +4216,7 @@ class TableViewSettingsDialogComponent {
3970
4216
  data: {
3971
4217
  sortingData: sortData.columns.length > 0 ? sortData : null,
3972
4218
  filteringData: filterData.viewSettingsFilters.length > 0 ? filterData : null,
4219
+ includeExcludeFiltersData,
3973
4220
  groupingData: groupData.columns.length > 0 ? groupData : null,
3974
4221
  columnsData: currentColumnsData.columns.length > 0 ? currentColumnsData : null,
3975
4222
  headingLevel: this.headingLevel,
@@ -3978,13 +4225,16 @@ class TableViewSettingsDialogComponent {
3978
4225
  }, this.table.injector);
3979
4226
  this._dialogRef.afterClosed
3980
4227
  .pipe(filter((result) => !!result), takeUntilDestroyed(this.destroyRef))
3981
- .subscribe(({ sortingData, filteringData, groupingData, columnsData }) => {
4228
+ .subscribe(({ sortingData, filteringData, includeExcludeFiltersData: resultFiltersData, groupingData, columnsData }) => {
3982
4229
  if (sortingData) {
3983
4230
  this._applySorting(sortingData);
3984
4231
  }
3985
4232
  if (filteringData) {
3986
4233
  this._applyFiltering(filteringData.filterBy);
3987
4234
  }
4235
+ if (resultFiltersData) {
4236
+ this._applyFiltering(resultFiltersData.filterBy);
4237
+ }
3988
4238
  if (groupingData) {
3989
4239
  this._applyGrouping(groupingData.field, groupingData.direction);
3990
4240
  }
@@ -3996,7 +4246,7 @@ class TableViewSettingsDialogComponent {
3996
4246
  /** @hidden */
3997
4247
  _listenToFilters() {
3998
4248
  this.filters.changes.pipe(startWith(null), takeUntilDestroyed(this.destroyRef)).subscribe(() => {
3999
- if (this.filters.toArray().length > 0) {
4249
+ if (this.filters.toArray().length > 0 || this.includeExcludeFilters) {
4000
4250
  this._table?.showSettingsInToolbar(true);
4001
4251
  }
4002
4252
  });
@@ -4058,7 +4308,7 @@ class TableViewSettingsDialogComponent {
4058
4308
  this._table?.setColumns(visibleColumnNames);
4059
4309
  }
4060
4310
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TableViewSettingsDialogComponent, deps: [{ token: i1$1.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
4061
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: TableViewSettingsDialogComponent, isStandalone: true, selector: "fdp-table-view-settings-dialog", inputs: { table: "table", allowDisablingSorting: "allowDisablingSorting", headingLevel: "headingLevel", allowColumnConfiguration: "allowColumnConfiguration" }, queries: [{ propertyName: "filters", predicate: i0.forwardRef(() => TableViewSettingsFilterComponent) }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4311
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: TableViewSettingsDialogComponent, isStandalone: true, selector: "fdp-table-view-settings-dialog", inputs: { table: "table", allowDisablingSorting: "allowDisablingSorting", headingLevel: "headingLevel", allowColumnConfiguration: "allowColumnConfiguration" }, queries: [{ propertyName: "includeExcludeFilters", first: true, predicate: i0.forwardRef(() => IncludeExcludeFiltersComponent), descendants: true }, { propertyName: "filters", predicate: i0.forwardRef(() => TableViewSettingsFilterComponent) }], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4062
4312
  }
4063
4313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: TableViewSettingsDialogComponent, decorators: [{
4064
4314
  type: Component,
@@ -4080,6 +4330,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4080
4330
  }], filters: [{
4081
4331
  type: ContentChildren,
4082
4332
  args: [forwardRef(() => TableViewSettingsFilterComponent)]
4333
+ }], includeExcludeFilters: [{
4334
+ type: ContentChild,
4335
+ args: [forwardRef(() => IncludeExcludeFiltersComponent)]
4083
4336
  }] } });
4084
4337
 
4085
4338
  class TableGrowingButtonComponent {
@@ -6888,5 +7141,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
6888
7141
  * Generated bundle index. Do not edit.
6889
7142
  */
6890
7143
 
6891
- export { FILTERS_VIEW_STEP_TOKEN, FilterCustomComponent, FilterMultiSelectComponent, FilterRule, FilterRuleComponent, FilterSingleSelectComponent, FilterStepComponent, FiltersComponent, FiltersListStepComponent, GetAvailableSortColumnsPipe, GroupingComponent, IsColumnHasHeaderMenuPipe, NOT_FILTERED_OPTION_VALUE, NoDataWrapperComponent, P13ColumnsDialogComponent, P13FilteringDialogComponent, P13GroupingDialogComponent, P13SortingDialogComponent, PlatformTableColumnResizerComponent, PlatformTableModule, RESETTABLE_TOKEN, ResetButtonComponent, SortingComponent, TABLE_TOOLBAR, TableCellHeaderPopoverComponent, TableColumnComponent, TableComponent, TableEditableCellComponent, TableFooterRowComponent, TableGroupRowComponent, TableGrowingButtonComponent, TableHeaderCellContentComponent, TableHeaderRowComponent, TableP13ColumnsComponent, TableP13DialogComponent, TableP13FilterComponent, TableP13GroupComponent, TableP13SortComponent, TablePoppingRowComponent, TableRowComponent, TableToolbarActionsComponent, TableToolbarComponent, TableToolbarLeftActionsComponent, TableToolbarTemplateDirective, TableViewSettingsDialogComponent, TableViewSettingsFilterComponent, dialogConfig };
7144
+ export { FILTERS_VIEW_STEP_TOKEN, FilterCustomComponent, FilterMultiSelectComponent, FilterRule, FilterRuleComponent, FilterSingleSelectComponent, FilterStepComponent, FiltersComponent, FiltersListStepComponent, GetAvailableSortColumnsPipe, GroupingComponent, IncludeExcludeFiltersComponent, IsColumnHasHeaderMenuPipe, NOT_FILTERED_OPTION_VALUE, NoDataWrapperComponent, P13ColumnsDialogComponent, P13FilteringDialogComponent, P13GroupingDialogComponent, P13SortingDialogComponent, PlatformTableColumnResizerComponent, PlatformTableModule, RESETTABLE_TOKEN, ResetButtonComponent, SortingComponent, TABLE_TOOLBAR, TableCellHeaderPopoverComponent, TableColumnComponent, TableComponent, TableEditableCellComponent, TableFooterRowComponent, TableGroupRowComponent, TableGrowingButtonComponent, TableHeaderCellContentComponent, TableHeaderRowComponent, TableP13ColumnsComponent, TableP13DialogComponent, TableP13FilterComponent, TableP13GroupComponent, TableP13SortComponent, TablePoppingRowComponent, TableRowComponent, TableToolbarActionsComponent, TableToolbarComponent, TableToolbarLeftActionsComponent, TableToolbarTemplateDirective, TableViewSettingsDialogComponent, TableViewSettingsFilterComponent, dialogConfig };
6892
7145
  //# sourceMappingURL=fundamental-ngx-platform-table.mjs.map