@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,
|
|
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
|