@testgorilla/tgo-ui 10.0.0 → 10.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +45 -6
- package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-icon.mjs +9 -1
- package/fesm2022/testgorilla-tgo-ui-components-icon.mjs.map +1 -1
- package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs +369 -0
- package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs.map +1 -0
- package/mcp/catalog.json +1 -1
- package/package.json +5 -1
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Grid-list-view-filled.svg +3 -0
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Grid-list-view-in-line.svg +3 -0
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Table-view-filled.svg +3 -0
- package/projects/tgo-canopy-ui/assets/icons/rebrand/Table-view-in-line.svg +3 -0
- package/types/testgorilla-tgo-ui-components-filter-button.d.ts +18 -1
- package/types/testgorilla-tgo-ui-components-icon.d.ts +1 -1
- package/types/testgorilla-tgo-ui-components-infinite-scroll-table.d.ts +225 -0
|
@@ -2,13 +2,13 @@ import { CdkOverlayOrigin, CdkConnectedOverlay, OverlayModule } from '@angular/c
|
|
|
2
2
|
import { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';
|
|
3
3
|
import { AsyncPipe, CommonModule } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { input, EventEmitter, signal, computed, ViewChild, HostBinding, Input, Output, Optional, Inject, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
6
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { input, EventEmitter, signal, computed, booleanAttribute, ViewChild, HostBinding, Input, Output, Optional, Inject, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
6
|
+
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
7
7
|
import * as i1 from '@angular/forms';
|
|
8
8
|
import { FormsModule } from '@angular/forms';
|
|
9
9
|
import { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';
|
|
10
|
-
import { Subject } from 'rxjs';
|
|
11
|
-
import { debounceTime } from 'rxjs/operators';
|
|
10
|
+
import { Subject, EMPTY, fromEvent } from 'rxjs';
|
|
11
|
+
import { debounceTime, switchMap } from 'rxjs/operators';
|
|
12
12
|
import { ButtonComponent, ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';
|
|
13
13
|
import { CheckboxComponent, CheckboxComponentModule } from '@testgorilla/tgo-ui/components/checkbox';
|
|
14
14
|
import { IKeyboardEvent, EllipseTextDirective, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';
|
|
@@ -17,6 +17,9 @@ import { IconComponent, IconComponentModule } from '@testgorilla/tgo-ui/componen
|
|
|
17
17
|
import { RadioButtonComponent, RadioButtonComponentModule } from '@testgorilla/tgo-ui/components/radio-button';
|
|
18
18
|
|
|
19
19
|
class FilterButtonComponent {
|
|
20
|
+
get fullWidthClass() {
|
|
21
|
+
return this.fullWidth;
|
|
22
|
+
}
|
|
20
23
|
constructor(defaultAppTheme, cdr, destroyRef) {
|
|
21
24
|
this.defaultAppTheme = defaultAppTheme;
|
|
22
25
|
this.cdr = cdr;
|
|
@@ -88,6 +91,16 @@ class FilterButtonComponent {
|
|
|
88
91
|
* @memberof FilterButtonComponent
|
|
89
92
|
*/
|
|
90
93
|
this.noOptionsMessage = '';
|
|
94
|
+
/**
|
|
95
|
+
* Whether the button should stretch to fill its container, and the dropdown panel
|
|
96
|
+
* follow that width instead of the default 240px.
|
|
97
|
+
* The panel never shrinks below 240px, so a container narrower than that is safe.
|
|
98
|
+
* Default: false.
|
|
99
|
+
*
|
|
100
|
+
* @type {boolean}
|
|
101
|
+
* @memberof FilterButtonComponent
|
|
102
|
+
*/
|
|
103
|
+
this.fullWidth = false;
|
|
91
104
|
/**
|
|
92
105
|
* Emits the list of selected values when the selection changes.
|
|
93
106
|
*
|
|
@@ -113,6 +126,8 @@ class FilterButtonComponent {
|
|
|
113
126
|
/** Must match the `.item` height in the SCSS — the fixed-size viewport relies on it. */
|
|
114
127
|
this.ITEM_SIZE = 48;
|
|
115
128
|
this.MAX_LIST_HEIGHT = 290;
|
|
129
|
+
this.PANEL_MIN_WIDTH = 240;
|
|
130
|
+
this.MATCH_TRIGGER_PANEL_CLASS = 'ui-filter-button-panel-match-trigger';
|
|
116
131
|
this.isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
117
132
|
this.displayedLabel = signal('', ...(ngDevMode ? [{ debugName: "displayedLabel" }] : /* istanbul ignore next */ []));
|
|
118
133
|
this.tooltip = signal('', ...(ngDevMode ? [{ debugName: "tooltip" }] : /* istanbul ignore next */ []));
|
|
@@ -172,6 +187,18 @@ class FilterButtonComponent {
|
|
|
172
187
|
this.activeIndex.set(this.firstOptionIndex());
|
|
173
188
|
this.cdr.markForCheck();
|
|
174
189
|
});
|
|
190
|
+
toObservable(this.isOpen)
|
|
191
|
+
.pipe(switchMap(open => (open && this.fullWidth ? fromEvent(window, 'resize').pipe(debounceTime(100)) : EMPTY)), takeUntilDestroyed(destroyRef))
|
|
192
|
+
.subscribe(() => this.syncPanelWidth());
|
|
193
|
+
}
|
|
194
|
+
syncPanelWidth() {
|
|
195
|
+
const overlayRef = this.connectedOverlay?.overlayRef;
|
|
196
|
+
const trigger = this.triggerOrigin?.elementRef.nativeElement;
|
|
197
|
+
if (!overlayRef || !trigger) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
overlayRef.updateSize({ width: trigger.getBoundingClientRect().width });
|
|
201
|
+
overlayRef.updatePosition();
|
|
175
202
|
}
|
|
176
203
|
ngOnChanges(changes) {
|
|
177
204
|
if (changes['value']) {
|
|
@@ -285,7 +312,7 @@ class FilterButtonComponent {
|
|
|
285
312
|
this.cdr.markForCheck();
|
|
286
313
|
}
|
|
287
314
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FilterButtonComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
288
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: FilterButtonComponent, isStandalone: true, selector: "ui-filter-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, allowClear: { classPropertyName: "allowClear", publicName: "allowClear", isSignal: false, isRequired: false, transformFunction: null }, singleSelection: { classPropertyName: "singleSelection", publicName: "singleSelection", isSignal: false, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: false, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: false, isRequired: false, transformFunction: null }, noOptionsMessage: { classPropertyName: "noOptionsMessage", publicName: "noOptionsMessage", isSignal: false, isRequired: false, transformFunction: null }, applicationTheme: { classPropertyName: "applicationTheme", publicName: "applicationTheme", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", optionChange: "optionChange" }, host: { properties: { "class": "this.class", "attr.theme": "this.applicationTheme" } }, viewQueries: [{ propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true }, { propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer>\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}ui-filter-button{display:inline-block}ui-filter-button ui-button .button-wrapper button{padding:7px 24px!important}ui-filter-button ui-button .button-wrapper button .icon ui-icon mat-icon.size-16 svg{width:24px;height:24px}ui-filter-button ui-button .button-wrapper button .label{line-clamp:1;-webkit-line-clamp:1!important}ui-filter-button ui-button.button-opened .button-wrapper button{background-color:#666!important;border-color:#666}ui-filter-button ui-button button.secondary{border:1px solid #242424}ui-filter-button ui-button button.secondary:hover{border-color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button{margin-top:4px;box-shadow:0 4px 16px #24242414;border-radius:10px;background-color:#fff;padding:0 0 8px;width:240px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-header{padding:8px 16px 0}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .section-title{display:flex;align-items:center;height:48px;padding:0 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .no-results-found{padding:8px 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item{padding:0 16px 0 5px;display:flex;align-items:center;gap:5px;height:48px;cursor:pointer}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item:hover,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-active,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-selected{background-color:#f4f4f4}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-radio-button{margin-right:4px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox.with-label-number{max-width:calc(100% - 25px)}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-number{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-label{-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport{width:100%;max-height:290px;overflow-x:hidden}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport .cdk-virtual-scroll-content-wrapper{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer{display:flex;justify-content:space-between;align-items:center;padding:0 16px 0 5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer ui-button{margin-left:-5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer-message{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-no-options{padding:24px}.tooltip-multi-line .mdc-tooltip__surface{text-align:left;white-space:pre-line}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "loadingWithLabel", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaExpanded", "ariaControls", "ariaPressed", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: FieldComponent, selector: "ui-field", inputs: ["fullWidth", "fullHeight", "label", "labelHtml", "labelIcon", "fieldName", "placeholder", "id", "value", "badgeVariant", "errors", "disabled", "required", "readOnly", "hintMessage", "type", "updateOnBlur", "allowOnlyDigits", "isAutocompleteOff", "allowNegative", "showBottomContent", "applicationTheme", "ariaLabel", "loading", "isValid", "maxCharacters", "trimOnBlur", "trimOnSubmit", "maxRows", "hasTextAreaCounter", "hideBuiltInErrors", "hideLabelInErrors", "max", "min", "textareaHeight", "borderless", "autosizableTextarea", "isAIVariant", "ariaLabelledby", "ariaDescribedby", "hasError"], outputs: ["validateEvent", "fieldBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: RadioButtonComponent, selector: "ui-radio-button", inputs: ["disabled", "selected", "allowUnselect", "companyColor", "name", "label", "multiple", "mediaCard", "value", "applicationTheme", "ariaLabel", "ariaRequired", "hasError", "ariaLabelledby", "ariaDescribedby", "truncateText", "alignment", "tabIndex", "hideTooltipOnEllipsis"], outputs: ["changeRadio"] }, { kind: "component", type: CheckboxComponent, selector: "ui-checkbox", inputs: ["disabled", "checked", "indeterminate", "companyColor", "name", "label", "multiple", "applicationTheme", "ariaLabel", "ariaRequired", "hasError", "hideBuiltInErrors", "hideLabelInErrors", "ariaLabelledby", "ariaDescribedby", "truncateText", "alignment", "tabIndex"], outputs: ["changed"] }, { kind: "component", type: IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "directive", type: EllipseTextDirective, selector: "[uiEllipseText]", inputs: ["isMultiline", "maxDiffPixels", "refresh"], outputs: ["onChangeTextState"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
315
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: FilterButtonComponent, isStandalone: true, selector: "ui-filter-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: false, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, allowClear: { classPropertyName: "allowClear", publicName: "allowClear", isSignal: false, isRequired: false, transformFunction: null }, singleSelection: { classPropertyName: "singleSelection", publicName: "singleSelection", isSignal: false, isRequired: false, transformFunction: null }, iconName: { classPropertyName: "iconName", publicName: "iconName", isSignal: false, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: false, isRequired: false, transformFunction: null }, noOptionsMessage: { classPropertyName: "noOptionsMessage", publicName: "noOptionsMessage", isSignal: false, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, applicationTheme: { classPropertyName: "applicationTheme", publicName: "applicationTheme", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { changed: "changed", optionChange: "optionChange" }, host: { properties: { "class": "this.class", "attr.theme": "this.applicationTheme", "class.ui-filter-button-full-width": "this.fullWidthClass" } }, viewQueries: [{ propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true }, { propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }, { propertyName: "triggerOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true }, { propertyName: "connectedOverlay", first: true, predicate: CdkConnectedOverlay, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"fullWidth\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayMatchWidth]=\"fullWidth\"\n [cdkConnectedOverlayMinWidth]=\"fullWidth ? PANEL_MIN_WIDTH : ''\"\n [cdkConnectedOverlayPanelClass]=\"fullWidth ? MATCH_TRIGGER_PANEL_CLASS : ''\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer>\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}ui-filter-button{display:inline-block}ui-filter-button.ui-filter-button-full-width{display:block;width:100%}ui-filter-button ui-button .button-wrapper button{padding:7px 24px!important}ui-filter-button ui-button .button-wrapper button .icon ui-icon mat-icon.size-16 svg{width:24px;height:24px}ui-filter-button ui-button .button-wrapper button .label{line-clamp:1;-webkit-line-clamp:1!important}ui-filter-button ui-button.button-opened .button-wrapper button{background-color:#666!important;border-color:#666}ui-filter-button ui-button button.secondary{border:1px solid #242424}ui-filter-button ui-button button.secondary:hover{border-color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button{margin-top:4px;box-shadow:0 4px 16px #24242414;border-radius:10px;background-color:#fff;padding:0 0 8px;width:240px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-header{padding:8px 16px 0}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .section-title{display:flex;align-items:center;height:48px;padding:0 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .no-results-found{padding:8px 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item{padding:0 16px 0 5px;display:flex;align-items:center;gap:5px;height:48px;cursor:pointer}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item:hover,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-active,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-selected{background-color:#f4f4f4}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-radio-button{margin-right:4px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox.with-label-number{max-width:calc(100% - 25px)}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-number{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-label{-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport{width:100%;max-height:290px;overflow-x:hidden}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport .cdk-virtual-scroll-content-wrapper{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer{display:flex;justify-content:space-between;align-items:center;padding:0 16px 0 5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer ui-button{margin-left:-5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer-message{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-no-options{padding:24px}.cdk-overlay-container .cdk-overlay-pane.ui-filter-button-panel-match-trigger .ui-filter-button{width:100%}.tooltip-multi-line .mdc-tooltip__surface{text-align:left;white-space:pre-line}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "loadingWithLabel", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaExpanded", "ariaControls", "ariaPressed", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: FieldComponent, selector: "ui-field", inputs: ["fullWidth", "fullHeight", "label", "labelHtml", "labelIcon", "fieldName", "placeholder", "id", "value", "badgeVariant", "errors", "disabled", "required", "readOnly", "hintMessage", "type", "updateOnBlur", "allowOnlyDigits", "isAutocompleteOff", "allowNegative", "showBottomContent", "applicationTheme", "ariaLabel", "loading", "isValid", "maxCharacters", "trimOnBlur", "trimOnSubmit", "maxRows", "hasTextAreaCounter", "hideBuiltInErrors", "hideLabelInErrors", "max", "min", "textareaHeight", "borderless", "autosizableTextarea", "isAIVariant", "ariaLabelledby", "ariaDescribedby", "hasError"], outputs: ["validateEvent", "fieldBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: RadioButtonComponent, selector: "ui-radio-button", inputs: ["disabled", "selected", "allowUnselect", "companyColor", "name", "label", "multiple", "mediaCard", "value", "applicationTheme", "ariaLabel", "ariaRequired", "hasError", "ariaLabelledby", "ariaDescribedby", "truncateText", "alignment", "tabIndex", "hideTooltipOnEllipsis"], outputs: ["changeRadio"] }, { kind: "component", type: CheckboxComponent, selector: "ui-checkbox", inputs: ["disabled", "checked", "indeterminate", "companyColor", "name", "label", "multiple", "applicationTheme", "ariaLabel", "ariaRequired", "hasError", "hideBuiltInErrors", "hideLabelInErrors", "ariaLabelledby", "ariaDescribedby", "truncateText", "alignment", "tabIndex"], outputs: ["changed"] }, { kind: "component", type: IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "directive", type: EllipseTextDirective, selector: "[uiEllipseText]", inputs: ["isMultiline", "maxDiffPixels", "refresh"], outputs: ["onChangeTextState"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
289
316
|
}
|
|
290
317
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FilterButtonComponent, decorators: [{
|
|
291
318
|
type: Component,
|
|
@@ -305,7 +332,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
305
332
|
EllipseTextDirective,
|
|
306
333
|
AsyncPipe,
|
|
307
334
|
UiTranslatePipe,
|
|
308
|
-
], template: "<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer>\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}ui-filter-button{display:inline-block}ui-filter-button ui-button .button-wrapper button{padding:7px 24px!important}ui-filter-button ui-button .button-wrapper button .icon ui-icon mat-icon.size-16 svg{width:24px;height:24px}ui-filter-button ui-button .button-wrapper button .label{line-clamp:1;-webkit-line-clamp:1!important}ui-filter-button ui-button.button-opened .button-wrapper button{background-color:#666!important;border-color:#666}ui-filter-button ui-button button.secondary{border:1px solid #242424}ui-filter-button ui-button button.secondary:hover{border-color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button{margin-top:4px;box-shadow:0 4px 16px #24242414;border-radius:10px;background-color:#fff;padding:0 0 8px;width:240px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-header{padding:8px 16px 0}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .section-title{display:flex;align-items:center;height:48px;padding:0 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .no-results-found{padding:8px 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item{padding:0 16px 0 5px;display:flex;align-items:center;gap:5px;height:48px;cursor:pointer}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item:hover,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-active,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-selected{background-color:#f4f4f4}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-radio-button{margin-right:4px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox.with-label-number{max-width:calc(100% - 25px)}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-number{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-label{-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport{width:100%;max-height:290px;overflow-x:hidden}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport .cdk-virtual-scroll-content-wrapper{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer{display:flex;justify-content:space-between;align-items:center;padding:0 16px 0 5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer ui-button{margin-left:-5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer-message{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-no-options{padding:24px}.tooltip-multi-line .mdc-tooltip__surface{text-align:left;white-space:pre-line}\n"] }]
|
|
335
|
+
], template: "<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"fullWidth\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayMatchWidth]=\"fullWidth\"\n [cdkConnectedOverlayMinWidth]=\"fullWidth ? PANEL_MIN_WIDTH : ''\"\n [cdkConnectedOverlayPanelClass]=\"fullWidth ? MATCH_TRIGGER_PANEL_CLASS : ''\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer>\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}ui-filter-button{display:inline-block}ui-filter-button.ui-filter-button-full-width{display:block;width:100%}ui-filter-button ui-button .button-wrapper button{padding:7px 24px!important}ui-filter-button ui-button .button-wrapper button .icon ui-icon mat-icon.size-16 svg{width:24px;height:24px}ui-filter-button ui-button .button-wrapper button .label{line-clamp:1;-webkit-line-clamp:1!important}ui-filter-button ui-button.button-opened .button-wrapper button{background-color:#666!important;border-color:#666}ui-filter-button ui-button button.secondary{border:1px solid #242424}ui-filter-button ui-button button.secondary:hover{border-color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button{margin-top:4px;box-shadow:0 4px 16px #24242414;border-radius:10px;background-color:#fff;padding:0 0 8px;width:240px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-header{padding:8px 16px 0}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .section-title{display:flex;align-items:center;height:48px;padding:0 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .no-results-found{padding:8px 16px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item{padding:0 16px 0 5px;display:flex;align-items:center;gap:5px;height:48px;cursor:pointer}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item:hover,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-active,.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item.item-selected{background-color:#f4f4f4}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-radio-button{margin-right:4px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item ui-checkbox.with-label-number{max-width:calc(100% - 25px)}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-number{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-list .item-label{-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport{width:100%;max-height:290px;overflow-x:hidden}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-viewport .cdk-virtual-scroll-content-wrapper{max-width:100%}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer{display:flex;justify-content:space-between;align-items:center;padding:0 16px 0 5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer ui-button{margin-left:-5px}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-footer-message{color:#666}.cdk-overlay-container .cdk-overlay-pane .ui-filter-button-no-options{padding:24px}.cdk-overlay-container .cdk-overlay-pane.ui-filter-button-panel-match-trigger .ui-filter-button{width:100%}.tooltip-multi-line .mdc-tooltip__surface{text-align:left;white-space:pre-line}\n"] }]
|
|
309
336
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
310
337
|
type: Optional
|
|
311
338
|
}, {
|
|
@@ -331,6 +358,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
331
358
|
type: Input
|
|
332
359
|
}], noOptionsMessage: [{
|
|
333
360
|
type: Input
|
|
361
|
+
}], fullWidth: [{
|
|
362
|
+
type: Input,
|
|
363
|
+
args: [{ transform: booleanAttribute }]
|
|
334
364
|
}], changed: [{
|
|
335
365
|
type: Output
|
|
336
366
|
}], optionChange: [{
|
|
@@ -340,12 +370,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
340
370
|
args: ['attr.theme']
|
|
341
371
|
}, {
|
|
342
372
|
type: Input
|
|
373
|
+
}], fullWidthClass: [{
|
|
374
|
+
type: HostBinding,
|
|
375
|
+
args: ['class.ui-filter-button-full-width']
|
|
343
376
|
}], overlayContainer: [{
|
|
344
377
|
type: ViewChild,
|
|
345
378
|
args: ['overlayContainer']
|
|
346
379
|
}], viewport: [{
|
|
347
380
|
type: ViewChild,
|
|
348
381
|
args: [CdkVirtualScrollViewport]
|
|
382
|
+
}], triggerOrigin: [{
|
|
383
|
+
type: ViewChild,
|
|
384
|
+
args: [CdkOverlayOrigin]
|
|
385
|
+
}], connectedOverlay: [{
|
|
386
|
+
type: ViewChild,
|
|
387
|
+
args: [CdkConnectedOverlay]
|
|
349
388
|
}] } });
|
|
350
389
|
|
|
351
390
|
class FilterButtonComponentModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testgorilla-tgo-ui-components-filter-button.mjs","sources":["../../../components/filter-button/filter-button.component.ts","../../../components/filter-button/filter-button.component.html","../../../components/filter-button/filter-button.component.module.ts","../../../components/filter-button/testgorilla-tgo-ui-components-filter-button.ts"],"sourcesContent":["import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { AsyncPipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n input,\n Input,\n OnChanges,\n Optional,\n Output,\n signal,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { ButtonIconPosition, ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport { CheckboxComponent } from '@testgorilla/tgo-ui/components/checkbox';\nimport {\n ApplicationTheme,\n IKeyboardEvent,\n EllipseTextDirective,\n UiTranslatePipe,\n} from '@testgorilla/tgo-ui/components/core';\nimport { FieldComponent } from '@testgorilla/tgo-ui/components/field';\nimport { IconName, IconComponent } from '@testgorilla/tgo-ui/components/icon';\nimport { RadioButtonComponent } from '@testgorilla/tgo-ui/components/radio-button';\n\nimport { FilterButtonOption, FilterValue, OptionChangeEvent } from './filter-button.model';\n\ntype FilterButtonRow = { kind: 'header'; title: string } | { kind: 'option'; option: FilterButtonOption };\n\n@Component({\n selector: 'ui-filter-button',\n templateUrl: './filter-button.component.html',\n styleUrls: ['./filter-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonComponent,\n CdkOverlayOrigin,\n MatTooltip,\n CdkConnectedOverlay,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n FieldComponent,\n FormsModule,\n RadioButtonComponent,\n CheckboxComponent,\n IconComponent,\n EllipseTextDirective,\n AsyncPipe,\n UiTranslatePipe,\n ],\n})\nexport class FilterButtonComponent implements OnChanges {\n @HostBinding() class = 'ui-filter-button';\n\n /**\n * The button label when no value is selected.\n *\n * @type {string}\n * @memberof FilterButtonComponent\n */\n @Input() label = '';\n\n /**\n * Optional message to display on the overflow bottom.\n *\n * @type {string}\n * @memberof FilterButtonComponent\n */\n @Input() message? = '';\n\n /**\n * List of selected values.\n *\n * @type {string[]}\n * @memberof FilterButtonComponent\n */\n @Input() value: FilterValue[] = [];\n\n /**\n * Whether the component is disabled.\n * Default: false.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input() disabled = false;\n\n /**\n * List of options.\n *\n * @type {OptionType}\n * @memberof FilterButtonComponent\n */\n options = input<FilterButtonOption[]>([]);\n\n /**\n * Whether the user should be allowed to clear the values.\n * Default: true.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input() allowClear = true;\n\n /**\n * Whether the user should be allowed to select single or multiple values.\n * Default: false.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input() singleSelection? = false;\n\n /**\n * The icon name to display.\n *\n * @type {string}\n * @memberof FilterButtonComponent\n *\n **/\n\n @Input() iconName?: IconName;\n\n /**\n * The position of the icon.\n * Default: 'right'.\n *\n * @type {ButtonIconPosition}\n * @memberof FilterButtonComponent\n */\n @Input() iconPosition?: ButtonIconPosition = 'right';\n\n /**\n * Optional message to display if there are no options to select available\n *\n * @type {string}\n * @memberof FilterButtonComponent\n */\n @Input() noOptionsMessage? = '';\n\n /**\n * Emits the list of selected values when the selection changes.\n *\n * @type {EventEmitter<string[]>}\n * @memberof FilterButtonComponent\n */\n @Output() changed = new EventEmitter<FilterValue[]>();\n\n /**\n * Emits the option change event\n *\n * @type {EventEmitter<OptionChangeEvent>}\n * @memberof FilterButtonComponent\n */\n @Output() optionChange = new EventEmitter<OptionChangeEvent>();\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FilterButtonComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n @ViewChild('overlayContainer') overlayContainer: ElementRef<HTMLElement>;\n @ViewChild(CdkVirtualScrollViewport) viewport?: CdkVirtualScrollViewport;\n\n /** Must match the `.item` height in the SCSS — the fixed-size viewport relies on it. */\n readonly ITEM_SIZE = 48;\n readonly MAX_LIST_HEIGHT = 290;\n\n isOpen = signal<boolean>(false);\n displayedLabel = signal<string>('');\n tooltip = signal<string>('');\n search = signal<string>('');\n activeIndex = signal<number>(0);\n showTooltip: { [key: string]: boolean } = {};\n displayedOptions = computed(() => {\n let lastSectionTitle: string;\n return this.options()\n .map(option => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- an empty section title reuses the previous section\n lastSectionTitle = option.sectionTitle || lastSectionTitle;\n return { ...option, sectionTitle: lastSectionTitle };\n })\n .filter(option => option.label.toLowerCase().includes(this.search().toLowerCase()));\n });\n\n // Section titles become their own rows so the fixed-size viewport can position every row with one `itemSize`.\n flatOptions = computed<FilterButtonRow[]>(() => {\n const rows: FilterButtonRow[] = [];\n let lastTitle: string | undefined;\n for (const option of this.displayedOptions()) {\n if (option.sectionTitle && option.sectionTitle !== lastTitle) {\n lastTitle = option.sectionTitle;\n rows.push({ kind: 'header', title: option.sectionTitle });\n }\n rows.push({ kind: 'option', option });\n }\n return rows;\n });\n\n optionCount = computed(() => this.displayedOptions().length);\n\n activeOption = computed<FilterButtonOption | undefined>(() => {\n const row = this.flatOptions()[this.activeIndex()];\n return row?.kind === 'option' ? row.option : undefined;\n });\n\n // 1-based position of the active option (headers excluded) for the aria-live announcement.\n activePosition = computed(() => {\n const rows = this.flatOptions();\n const activeIndex = this.activeIndex();\n let position = 0;\n for (let i = 0; i <= activeIndex && i < rows.length; i++) {\n if (rows[i].kind === 'option') {\n position++;\n }\n }\n return position;\n });\n\n listHeight = computed(() =>\n Math.min(Math.max(this.flatOptions().length * this.ITEM_SIZE, this.ITEM_SIZE), this.MAX_LIST_HEIGHT)\n );\n\n protected trackByRow = (_index: number, row: FilterButtonRow): string =>\n row.kind === 'header' ? `header:${row.title}` : `option:${row.option.value}`;\n\n readonly MIN_OPTIONS_LENGTH_FOR_SEARCH = 8;\n protected translationContext = 'FILTER_BUTTON.';\n private readonly searchInput$ = new Subject<string>();\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private readonly cdr: ChangeDetectorRef,\n destroyRef: DestroyRef\n ) {\n if (this.defaultAppTheme) {\n this.applicationTheme = this.defaultAppTheme;\n }\n\n this.searchInput$.pipe(debounceTime(150), takeUntilDestroyed(destroyRef)).subscribe(value => {\n this.search.set(value);\n this.activeIndex.set(this.firstOptionIndex());\n this.cdr.markForCheck();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value']) {\n this.updateLabel();\n }\n }\n\n clearValue(): void {\n this.value = [];\n this.updateLabel();\n this.changed.emit(this.value);\n }\n\n outsideClick() {\n window.setTimeout(() => {\n this.isOpen.set(false);\n });\n }\n\n toggle(): void {\n this.isOpen.set(!this.isOpen());\n if (this.isOpen()) {\n this.activeIndex.set(this.firstOptionIndex());\n }\n this.cdr.markForCheck();\n }\n\n isSelected(value?: FilterValue) {\n return this.value?.includes(value ?? '');\n }\n\n optionChanged(selected: boolean, option: FilterButtonOption) {\n this.value = this.value || [];\n if (this.singleSelection) {\n this.value = selected ? [option.value] : [];\n } else {\n if (selected) {\n this.value.push(option.value);\n } else {\n this.value.splice(this.value.indexOf(option.value), 1);\n }\n }\n this.changed.emit(this.value);\n this.optionChange.emit({ selected, option });\n this.updateLabel();\n }\n\n onSearchChange(value: string): void {\n this.searchInput$.next(value);\n }\n\n keyDownHandler(ev: KeyboardEvent) {\n if (ev.key === (IKeyboardEvent.ARROW_DOWN as string)) {\n ev.preventDefault();\n this.moveActive(1);\n } else if (ev.key === (IKeyboardEvent.ARROW_UP as string)) {\n ev.preventDefault();\n this.moveActive(-1);\n } else if (ev.key === (IKeyboardEvent.ENTER as string) || ev.key === (IKeyboardEvent.SPACE as string)) {\n ev.preventDefault();\n this.toggleActiveOption();\n } else if (ev.key === (IKeyboardEvent.ESCAPE as string)) {\n this.isOpen.set(false);\n }\n }\n\n onLabelEllipsisChange(isEllipsis: boolean, value: FilterValue): void {\n this.showTooltip[value] = isEllipsis;\n }\n\n private firstOptionIndex(): number {\n const index = this.flatOptions().findIndex(row => row.kind === 'option');\n return index === -1 ? 0 : index;\n }\n\n private moveActive(delta: number): void {\n const rows = this.flatOptions();\n const optionIndexes: number[] = [];\n rows.forEach((row, index) => {\n if (row.kind === 'option') {\n optionIndexes.push(index);\n }\n });\n if (!optionIndexes.length) {\n return;\n }\n const currentPos = optionIndexes.indexOf(this.activeIndex());\n const basePos = currentPos === -1 ? 0 : currentPos;\n const nextPos = (basePos + delta + optionIndexes.length) % optionIndexes.length;\n const nextIndex = optionIndexes[nextPos];\n this.activeIndex.set(nextIndex);\n this.viewport?.scrollToIndex(nextIndex, 'smooth');\n }\n\n private toggleActiveOption(): void {\n const option = this.activeOption();\n if (option) {\n this.optionChanged(!this.isSelected(option.value), option);\n }\n }\n\n private updateLabel() {\n this.value = this.value || [];\n let displayedLabel = '';\n let tooltip = '';\n const sortedLabels = this.options()\n .filter(option => this.value.includes(option.value))\n .map(item => item?.label ?? '');\n\n if (sortedLabels.length > 0) {\n displayedLabel = this.options().find(option => option.value === this.value[0])?.label ?? '';\n tooltip = `${this.label}${sortedLabels.map(value => `\\n • ${value}`).join('')}`;\n }\n\n if (this.value.length > 1) {\n displayedLabel += ` (+${this.value.length - 1})`;\n }\n this.displayedLabel.set(displayedLabel);\n this.tooltip.set(tooltip);\n this.cdr.markForCheck();\n }\n}\n","<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer>\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { CheckboxComponentModule } from '@testgorilla/tgo-ui/components/checkbox';\nimport { EllipseTextDirective, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { FieldComponentModule } from '@testgorilla/tgo-ui/components/field';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { RadioButtonComponentModule } from '@testgorilla/tgo-ui/components/radio-button';\n\nimport { FilterButtonComponent } from './filter-button.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatTooltipModule,\n OverlayModule,\n UiTranslatePipe,\n ButtonComponentModule,\n IconComponentModule,\n CheckboxComponentModule,\n FieldComponentModule,\n EllipseTextDirective,\n RadioButtonComponentModule,\n FilterButtonComponent,\n ],\n exports: [FilterButtonComponent],\n})\nexport class FilterButtonComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testgorilla-tgo-ui-components-filter-button.mjs","sources":["../../../components/filter-button/filter-button.component.ts","../../../components/filter-button/filter-button.component.html","../../../components/filter-button/filter-button.component.module.ts","../../../components/filter-button/testgorilla-tgo-ui-components-filter-button.ts"],"sourcesContent":["import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { AsyncPipe } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n input,\n Input,\n OnChanges,\n Optional,\n Output,\n signal,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { EMPTY, fromEvent, Subject } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\n\nimport { ButtonIconPosition, ButtonComponent } from '@testgorilla/tgo-ui/components/button';\nimport { CheckboxComponent } from '@testgorilla/tgo-ui/components/checkbox';\nimport {\n ApplicationTheme,\n IKeyboardEvent,\n EllipseTextDirective,\n UiTranslatePipe,\n} from '@testgorilla/tgo-ui/components/core';\nimport { FieldComponent } from '@testgorilla/tgo-ui/components/field';\nimport { IconName, IconComponent } from '@testgorilla/tgo-ui/components/icon';\nimport { RadioButtonComponent } from '@testgorilla/tgo-ui/components/radio-button';\n\nimport { FilterButtonOption, FilterValue, OptionChangeEvent } from './filter-button.model';\n\ntype FilterButtonRow = { kind: 'header'; title: string } | { kind: 'option'; option: FilterButtonOption };\n\n@Component({\n selector: 'ui-filter-button',\n templateUrl: './filter-button.component.html',\n styleUrls: ['./filter-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonComponent,\n CdkOverlayOrigin,\n MatTooltip,\n CdkConnectedOverlay,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n FieldComponent,\n FormsModule,\n RadioButtonComponent,\n CheckboxComponent,\n IconComponent,\n EllipseTextDirective,\n AsyncPipe,\n UiTranslatePipe,\n ],\n})\nexport class FilterButtonComponent implements OnChanges {\n @HostBinding() class = 'ui-filter-button';\n\n /**\n * The button label when no value is selected.\n *\n * @type {string}\n * @memberof FilterButtonComponent\n */\n @Input() label = '';\n\n /**\n * Optional message to display on the overflow bottom.\n *\n * @type {string}\n * @memberof FilterButtonComponent\n */\n @Input() message? = '';\n\n /**\n * List of selected values.\n *\n * @type {string[]}\n * @memberof FilterButtonComponent\n */\n @Input() value: FilterValue[] = [];\n\n /**\n * Whether the component is disabled.\n * Default: false.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input() disabled = false;\n\n /**\n * List of options.\n *\n * @type {OptionType}\n * @memberof FilterButtonComponent\n */\n options = input<FilterButtonOption[]>([]);\n\n /**\n * Whether the user should be allowed to clear the values.\n * Default: true.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input() allowClear = true;\n\n /**\n * Whether the user should be allowed to select single or multiple values.\n * Default: false.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input() singleSelection? = false;\n\n /**\n * The icon name to display.\n *\n * @type {string}\n * @memberof FilterButtonComponent\n *\n **/\n\n @Input() iconName?: IconName;\n\n /**\n * The position of the icon.\n * Default: 'right'.\n *\n * @type {ButtonIconPosition}\n * @memberof FilterButtonComponent\n */\n @Input() iconPosition?: ButtonIconPosition = 'right';\n\n /**\n * Optional message to display if there are no options to select available\n *\n * @type {string}\n * @memberof FilterButtonComponent\n */\n @Input() noOptionsMessage? = '';\n\n /**\n * Whether the button should stretch to fill its container, and the dropdown panel\n * follow that width instead of the default 240px.\n * The panel never shrinks below 240px, so a container narrower than that is safe.\n * Default: false.\n *\n * @type {boolean}\n * @memberof FilterButtonComponent\n */\n @Input({ transform: booleanAttribute }) fullWidth = false;\n\n /**\n * Emits the list of selected values when the selection changes.\n *\n * @type {EventEmitter<string[]>}\n * @memberof FilterButtonComponent\n */\n @Output() changed = new EventEmitter<FilterValue[]>();\n\n /**\n * Emits the option change event\n *\n * @type {EventEmitter<OptionChangeEvent>}\n * @memberof FilterButtonComponent\n */\n @Output() optionChange = new EventEmitter<OptionChangeEvent>();\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @memberof FilterButtonComponent\n */\n @HostBinding('attr.theme')\n @Input()\n applicationTheme: ApplicationTheme = 'light';\n\n @HostBinding('class.ui-filter-button-full-width')\n get fullWidthClass(): boolean {\n return this.fullWidth;\n }\n\n @ViewChild('overlayContainer') overlayContainer: ElementRef<HTMLElement>;\n @ViewChild(CdkVirtualScrollViewport) viewport?: CdkVirtualScrollViewport;\n\n @ViewChild(CdkOverlayOrigin) private readonly triggerOrigin?: CdkOverlayOrigin;\n @ViewChild(CdkConnectedOverlay) private readonly connectedOverlay?: CdkConnectedOverlay;\n\n /** Must match the `.item` height in the SCSS — the fixed-size viewport relies on it. */\n readonly ITEM_SIZE = 48;\n readonly MAX_LIST_HEIGHT = 290;\n\n readonly PANEL_MIN_WIDTH = 240;\n\n readonly MATCH_TRIGGER_PANEL_CLASS = 'ui-filter-button-panel-match-trigger';\n\n isOpen = signal<boolean>(false);\n displayedLabel = signal<string>('');\n tooltip = signal<string>('');\n search = signal<string>('');\n activeIndex = signal<number>(0);\n showTooltip: { [key: string]: boolean } = {};\n displayedOptions = computed(() => {\n let lastSectionTitle: string;\n return this.options()\n .map(option => {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- an empty section title reuses the previous section\n lastSectionTitle = option.sectionTitle || lastSectionTitle;\n return { ...option, sectionTitle: lastSectionTitle };\n })\n .filter(option => option.label.toLowerCase().includes(this.search().toLowerCase()));\n });\n\n // Section titles become their own rows so the fixed-size viewport can position every row with one `itemSize`.\n flatOptions = computed<FilterButtonRow[]>(() => {\n const rows: FilterButtonRow[] = [];\n let lastTitle: string | undefined;\n for (const option of this.displayedOptions()) {\n if (option.sectionTitle && option.sectionTitle !== lastTitle) {\n lastTitle = option.sectionTitle;\n rows.push({ kind: 'header', title: option.sectionTitle });\n }\n rows.push({ kind: 'option', option });\n }\n return rows;\n });\n\n optionCount = computed(() => this.displayedOptions().length);\n\n activeOption = computed<FilterButtonOption | undefined>(() => {\n const row = this.flatOptions()[this.activeIndex()];\n return row?.kind === 'option' ? row.option : undefined;\n });\n\n // 1-based position of the active option (headers excluded) for the aria-live announcement.\n activePosition = computed(() => {\n const rows = this.flatOptions();\n const activeIndex = this.activeIndex();\n let position = 0;\n for (let i = 0; i <= activeIndex && i < rows.length; i++) {\n if (rows[i].kind === 'option') {\n position++;\n }\n }\n return position;\n });\n\n listHeight = computed(() =>\n Math.min(Math.max(this.flatOptions().length * this.ITEM_SIZE, this.ITEM_SIZE), this.MAX_LIST_HEIGHT)\n );\n\n protected trackByRow = (_index: number, row: FilterButtonRow): string =>\n row.kind === 'header' ? `header:${row.title}` : `option:${row.option.value}`;\n\n readonly MIN_OPTIONS_LENGTH_FOR_SEARCH = 8;\n protected translationContext = 'FILTER_BUTTON.';\n private readonly searchInput$ = new Subject<string>();\n\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme,\n private readonly cdr: ChangeDetectorRef,\n destroyRef: DestroyRef\n ) {\n if (this.defaultAppTheme) {\n this.applicationTheme = this.defaultAppTheme;\n }\n\n this.searchInput$.pipe(debounceTime(150), takeUntilDestroyed(destroyRef)).subscribe(value => {\n this.search.set(value);\n this.activeIndex.set(this.firstOptionIndex());\n this.cdr.markForCheck();\n });\n\n toObservable(this.isOpen)\n .pipe(\n switchMap(open => (open && this.fullWidth ? fromEvent(window, 'resize').pipe(debounceTime(100)) : EMPTY)),\n takeUntilDestroyed(destroyRef)\n )\n .subscribe(() => this.syncPanelWidth());\n }\n\n private syncPanelWidth(): void {\n const overlayRef = this.connectedOverlay?.overlayRef;\n const trigger = this.triggerOrigin?.elementRef.nativeElement as HTMLElement | undefined;\n if (!overlayRef || !trigger) {\n return;\n }\n overlayRef.updateSize({ width: trigger.getBoundingClientRect().width });\n overlayRef.updatePosition();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value']) {\n this.updateLabel();\n }\n }\n\n clearValue(): void {\n this.value = [];\n this.updateLabel();\n this.changed.emit(this.value);\n }\n\n outsideClick() {\n window.setTimeout(() => {\n this.isOpen.set(false);\n });\n }\n\n toggle(): void {\n this.isOpen.set(!this.isOpen());\n if (this.isOpen()) {\n this.activeIndex.set(this.firstOptionIndex());\n }\n this.cdr.markForCheck();\n }\n\n isSelected(value?: FilterValue) {\n return this.value?.includes(value ?? '');\n }\n\n optionChanged(selected: boolean, option: FilterButtonOption) {\n this.value = this.value || [];\n if (this.singleSelection) {\n this.value = selected ? [option.value] : [];\n } else {\n if (selected) {\n this.value.push(option.value);\n } else {\n this.value.splice(this.value.indexOf(option.value), 1);\n }\n }\n this.changed.emit(this.value);\n this.optionChange.emit({ selected, option });\n this.updateLabel();\n }\n\n onSearchChange(value: string): void {\n this.searchInput$.next(value);\n }\n\n keyDownHandler(ev: KeyboardEvent) {\n if (ev.key === (IKeyboardEvent.ARROW_DOWN as string)) {\n ev.preventDefault();\n this.moveActive(1);\n } else if (ev.key === (IKeyboardEvent.ARROW_UP as string)) {\n ev.preventDefault();\n this.moveActive(-1);\n } else if (ev.key === (IKeyboardEvent.ENTER as string) || ev.key === (IKeyboardEvent.SPACE as string)) {\n ev.preventDefault();\n this.toggleActiveOption();\n } else if (ev.key === (IKeyboardEvent.ESCAPE as string)) {\n this.isOpen.set(false);\n }\n }\n\n onLabelEllipsisChange(isEllipsis: boolean, value: FilterValue): void {\n this.showTooltip[value] = isEllipsis;\n }\n\n private firstOptionIndex(): number {\n const index = this.flatOptions().findIndex(row => row.kind === 'option');\n return index === -1 ? 0 : index;\n }\n\n private moveActive(delta: number): void {\n const rows = this.flatOptions();\n const optionIndexes: number[] = [];\n rows.forEach((row, index) => {\n if (row.kind === 'option') {\n optionIndexes.push(index);\n }\n });\n if (!optionIndexes.length) {\n return;\n }\n const currentPos = optionIndexes.indexOf(this.activeIndex());\n const basePos = currentPos === -1 ? 0 : currentPos;\n const nextPos = (basePos + delta + optionIndexes.length) % optionIndexes.length;\n const nextIndex = optionIndexes[nextPos];\n this.activeIndex.set(nextIndex);\n this.viewport?.scrollToIndex(nextIndex, 'smooth');\n }\n\n private toggleActiveOption(): void {\n const option = this.activeOption();\n if (option) {\n this.optionChanged(!this.isSelected(option.value), option);\n }\n }\n\n private updateLabel() {\n this.value = this.value || [];\n let displayedLabel = '';\n let tooltip = '';\n const sortedLabels = this.options()\n .filter(option => this.value.includes(option.value))\n .map(item => item?.label ?? '');\n\n if (sortedLabels.length > 0) {\n displayedLabel = this.options().find(option => option.value === this.value[0])?.label ?? '';\n tooltip = `${this.label}${sortedLabels.map(value => `\\n • ${value}`).join('')}`;\n }\n\n if (this.value.length > 1) {\n displayedLabel += ` (+${this.value.length - 1})`;\n }\n this.displayedLabel.set(displayedLabel);\n this.tooltip.set(tooltip);\n this.cdr.markForCheck();\n }\n}\n","<ng-container>\n <ui-button\n [matTooltip]=\"tooltip()\"\n [matTooltipClass]=\"'tooltip-multi-line ' + applicationTheme\"\n [matTooltipPosition]=\"'above'\"\n class=\"ui-filter-button-trigger\"\n [class.button-opened]=\"isOpen()\"\n [variant]=\"value.length || isOpen() ? 'secondary' : 'ghost'\"\n [label]=\"displayedLabel() || label\"\n [disabled]=\"disabled || (options().length === 0 && !noOptionsMessage)\"\n (click)=\"toggle()\"\n type=\"button\"\n size=\"small\"\n [role]=\"'combobox'\"\n [tooltip]=\"value.length ? ' ' : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [iconName]=\"iconName || (isOpen() ? 'Arrow-chevron-up-filled' : 'Arrow-chevron-down-filled')\"\n [iconPosition]=\"iconPosition\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"fullWidth\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n ></ui-button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayMatchWidth]=\"fullWidth\"\n [cdkConnectedOverlayMinWidth]=\"fullWidth ? PANEL_MIN_WIDTH : ''\"\n [cdkConnectedOverlayPanelClass]=\"fullWidth ? MATCH_TRIGGER_PANEL_CLASS : ''\"\n (overlayOutsideClick)=\"outsideClick()\"\n >\n @if (activeOption(); as active) {\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n translationContext + 'ACTIVE_ITEM' | uiTranslate: { active: activePosition(), total: optionCount() } | async\n }}\n </div>\n <div style=\"position: absolute; left: -9999px\" [attr.aria-live]=\"'polite'\">\n {{ active.label }}\n {{\n (value.includes(active.value) ? translationContext + 'SELECTED' : translationContext + 'DESELECTED')\n | uiTranslate\n | async\n }}\n </div>\n }\n <div class=\"ui-filter-button\" #overlayContainer>\n @if (options().length > MIN_OPTIONS_LENGTH_FOR_SEARCH) {\n <div class=\"ui-filter-button-header\">\n <ui-field\n type=\"search\"\n [showBottomContent]=\"false\"\n [ngModel]=\"search()\"\n (ngModelChange)=\"onSearchChange($event)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-field>\n </div>\n }\n <div\n class=\"ui-filter-button-list\"\n #list\n tabindex=\"0\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"isOpen() && activeOption() ? 'ui-fb-option-' + activeIndex() : null\"\n (keydown)=\"keyDownHandler($event)\"\n >\n @if (!displayedOptions().length && options().length) {\n <div class=\"no-results-found\">\n <span>{{ translationContext + 'NO_RESULTS_FOUND' | uiTranslate | async }}</span>\n </div>\n } @else {\n <cdk-virtual-scroll-viewport\n class=\"ui-filter-button-viewport\"\n [itemSize]=\"ITEM_SIZE\"\n [style.height.px]=\"listHeight()\"\n >\n <ng-container *cdkVirtualFor=\"let row of flatOptions(); let i = index; trackBy: trackByRow\">\n @if (row.kind === 'header') {\n <div class=\"section-title\">\n {{ row.title }}\n </div>\n } @else {\n <div\n class=\"item\"\n role=\"option\"\n tabindex=\"-1\"\n [id]=\"'ui-fb-option-' + i\"\n [class.item-selected]=\"isSelected(row.option.value)\"\n [class.item-active]=\"activeIndex() === i\"\n [attr.aria-selected]=\"isSelected(row.option.value)\"\n (click)=\"activeIndex.set(i); optionChanged(!isSelected(row.option.value), row.option)\"\n (keydown.enter)=\"optionChanged(!isSelected(row.option.value), row.option)\"\n >\n @if (singleSelection) {\n <ui-radio-button\n (click)=\"$event.stopPropagation()\"\n [tabIndex]=\"-1\"\n [selected]=\"isSelected(row.option.value)\"\n (changeRadio)=\"optionChanged($event.optionChecked, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n >\n </ui-radio-button>\n }\n @if (!singleSelection) {\n <ui-checkbox\n (click)=\"$event.stopPropagation()\"\n [class.with-label-number]=\"row.option.labelNumber !== undefined\"\n [tabIndex]=\"-1\"\n [checked]=\"isSelected(row.option.value)\"\n (changed)=\"optionChanged($event, row.option)\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-checkbox>\n }\n @if (row.option.icon) {\n <ui-icon [applicationTheme]=\"applicationTheme\" [name]=\"row.option.icon\"></ui-icon>\n }\n <span\n #tooltip=\"matTooltip\"\n class=\"item-label\"\n uiEllipseText\n [refresh]=\"row.option.value\"\n (onChangeTextState)=\"onLabelEllipsisChange($event, row.option.value)\"\n [matTooltip]=\"showTooltip[row.option.value] ? row.option.label : ''\"\n [matTooltipClass]=\"applicationTheme\"\n >\n {{ row.option.label }}\n </span>\n @if (row.option.labelNumber !== undefined) {\n <span class=\"item-number\">({{ row.option.labelNumber }})</span>\n }\n </div>\n }\n </ng-container>\n </cdk-virtual-scroll-viewport>\n }\n </div>\n @if (!options().length && !!noOptionsMessage) {\n <div class=\"ui-filter-button-no-options\" [innerHTML]=\"noOptionsMessage\"></div>\n } @else {\n @if (allowClear || message) {\n <div class=\"ui-filter-button-footer\">\n @if (allowClear) {\n <ui-button\n variant=\"text\"\n size=\"small\"\n [label]=\"('COMMON.RESET' | uiTranslate | async)!\"\n (click)=\"clearValue()\"\n [applicationTheme]=\"applicationTheme\"\n (keydown.escape)=\"toggle()\"\n ></ui-button>\n }\n <div class=\"ui-filter-button-footer-message\">\n {{ message }}\n </div>\n </div>\n }\n }\n </div>\n </ng-template>\n</ng-container>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { CheckboxComponentModule } from '@testgorilla/tgo-ui/components/checkbox';\nimport { EllipseTextDirective, UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\nimport { FieldComponentModule } from '@testgorilla/tgo-ui/components/field';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { RadioButtonComponentModule } from '@testgorilla/tgo-ui/components/radio-button';\n\nimport { FilterButtonComponent } from './filter-button.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatTooltipModule,\n OverlayModule,\n UiTranslatePipe,\n ButtonComponentModule,\n IconComponentModule,\n CheckboxComponentModule,\n FieldComponentModule,\n EllipseTextDirective,\n RadioButtonComponentModule,\n FilterButtonComponent,\n ],\n exports: [FilterButtonComponent],\n})\nexport class FilterButtonComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
|
|
|
9
9
|
/* eslint-disable */
|
|
10
10
|
/**
|
|
11
11
|
* Auto-generated file containing SVG icon content
|
|
12
|
-
* Generated on: 2026-07-
|
|
12
|
+
* Generated on: 2026-07-28T07:47:05.927Z
|
|
13
13
|
*
|
|
14
14
|
* DO NOT EDIT THIS FILE MANUALLY
|
|
15
15
|
* Run 'npm run generate:icons' to regenerate
|
|
@@ -321,6 +321,8 @@ const rebrandIconSvgContent = {
|
|
|
321
321
|
'Google-in-line': `<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.9999 13.2001C20.9999 12.4601 20.9386 11.9201 20.806 11.3601H12.1836V14.7001H17.2448C17.1428 15.5301 16.5918 16.7801 15.3672 17.6201L15.3501 17.7319L18.0763 19.8016L18.2652 19.8201C19.9999 18.2501 20.9999 15.9401 20.9999 13.2001Z" fill="#4285F4"/><path d="M12.1836 22C14.6632 22 16.7448 21.2 18.2652 19.82L15.3672 17.62C14.5918 18.15 13.5509 18.52 12.1836 18.52C9.75504 18.52 7.69383 16.95 6.95907 14.78L6.85137 14.789L4.01656 16.939L3.97949 17.04C5.48968 19.98 8.59173 22 12.1836 22Z" fill="#34A853"/><path d="M6.95914 14.7801C6.76527 14.2201 6.65307 13.62 6.65307 13.0001C6.65307 12.38 6.76527 11.7801 6.94894 11.2201L6.94381 11.1008L4.07348 8.91626L3.97957 8.96004C3.35715 10.1801 3 11.5501 3 13.0001C3 14.4501 3.35715 15.82 3.97957 17.04L6.95914 14.7801Z" fill="#FBBC05"/><path d="M12.1836 7.47998C13.9081 7.47998 15.0713 8.20997 15.7346 8.82002L18.3264 6.34C16.7346 4.89 14.6632 4 12.1836 4C8.59173 4 5.48968 6.01998 3.97949 8.95996L6.94887 11.22C7.69383 9.05 9.75504 7.47998 12.1836 7.47998Z" fill="#EB4335"/></svg>`,
|
|
322
322
|
'Grab-filled': `<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 20.5465C8.45 20.5465 7.97917 20.3507 7.5875 19.959C7.19583 19.5673 7 19.0965 7 18.5465C7 17.9965 7.19583 17.5257 7.5875 17.134C7.97917 16.7423 8.45 16.5465 9 16.5465C9.55 16.5465 10.0208 16.7423 10.4125 17.134C10.8042 17.5257 11 17.9965 11 18.5465C11 19.0965 10.8042 19.5673 10.4125 19.959C10.0208 20.3507 9.55 20.5465 9 20.5465ZM15 20.5465C14.45 20.5465 13.9792 20.3507 13.5875 19.959C13.1958 19.5673 13 19.0965 13 18.5465C13 17.9965 13.1958 17.5257 13.5875 17.134C13.9792 16.7423 14.45 16.5465 15 16.5465C15.55 16.5465 16.0208 16.7423 16.4125 17.134C16.8042 17.5257 17 17.9965 17 18.5465C17 19.0965 16.8042 19.5673 16.4125 19.959C16.0208 20.3507 15.55 20.5465 15 20.5465ZM9 14.5465C8.45 14.5465 7.97917 14.3507 7.5875 13.959C7.19583 13.5673 7 13.0965 7 12.5465C7 11.9965 7.19583 11.5257 7.5875 11.134C7.97917 10.7423 8.45 10.5465 9 10.5465C9.55 10.5465 10.0208 10.7423 10.4125 11.134C10.8042 11.5257 11 11.9965 11 12.5465C11 13.0965 10.8042 13.5673 10.4125 13.959C10.0208 14.3507 9.55 14.5465 9 14.5465ZM15 14.5465C14.45 14.5465 13.9792 14.3507 13.5875 13.959C13.1958 13.5673 13 13.0965 13 12.5465C13 11.9965 13.1958 11.5257 13.5875 11.134C13.9792 10.7423 14.45 10.5465 15 10.5465C15.55 10.5465 16.0208 10.7423 16.4125 11.134C16.8042 11.5257 17 11.9965 17 12.5465C17 13.0965 16.8042 13.5673 16.4125 13.959C16.0208 14.3507 15.55 14.5465 15 14.5465ZM9 8.54651C8.45 8.54651 7.97917 8.35068 7.5875 7.95901C7.19583 7.56734 7 7.09651 7 6.54651C7 5.99651 7.19583 5.52568 7.5875 5.13401C7.97917 4.74234 8.45 4.54651 9 4.54651C9.55 4.54651 10.0208 4.74234 10.4125 5.13401C10.8042 5.52568 11 5.99651 11 6.54651C11 7.09651 10.8042 7.56734 10.4125 7.95901C10.0208 8.35068 9.55 8.54651 9 8.54651ZM15 8.54651C14.45 8.54651 13.9792 8.35068 13.5875 7.95901C13.1958 7.56734 13 7.09651 13 6.54651C13 5.99651 13.1958 5.52568 13.5875 5.13401C13.9792 4.74234 14.45 4.54651 15 4.54651C15.55 4.54651 16.0208 4.74234 16.4125 5.13401C16.8042 5.52568 17 5.99651 17 6.54651C17 7.09651 16.8042 7.56734 16.4125 7.95901C16.0208 8.35068 15.55 8.54651 15 8.54651Z" fill="currentColor"/></svg>`,
|
|
323
323
|
'Grab-in-line': `<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9 20.5465C8.45 20.5465 7.97917 20.3507 7.5875 19.959C7.19583 19.5673 7 19.0965 7 18.5465C7 17.9965 7.19583 17.5257 7.5875 17.134C7.97917 16.7423 8.45 16.5465 9 16.5465C9.55 16.5465 10.0208 16.7423 10.4125 17.134C10.8042 17.5257 11 17.9965 11 18.5465C11 19.0965 10.8042 19.5673 10.4125 19.959C10.0208 20.3507 9.55 20.5465 9 20.5465ZM15 20.5465C14.45 20.5465 13.9792 20.3507 13.5875 19.959C13.1958 19.5673 13 19.0965 13 18.5465C13 17.9965 13.1958 17.5257 13.5875 17.134C13.9792 16.7423 14.45 16.5465 15 16.5465C15.55 16.5465 16.0208 16.7423 16.4125 17.134C16.8042 17.5257 17 17.9965 17 18.5465C17 19.0965 16.8042 19.5673 16.4125 19.959C16.0208 20.3507 15.55 20.5465 15 20.5465ZM9 14.5465C8.45 14.5465 7.97917 14.3507 7.5875 13.959C7.19583 13.5673 7 13.0965 7 12.5465C7 11.9965 7.19583 11.5257 7.5875 11.134C7.97917 10.7423 8.45 10.5465 9 10.5465C9.55 10.5465 10.0208 10.7423 10.4125 11.134C10.8042 11.5257 11 11.9965 11 12.5465C11 13.0965 10.8042 13.5673 10.4125 13.959C10.0208 14.3507 9.55 14.5465 9 14.5465ZM15 14.5465C14.45 14.5465 13.9792 14.3507 13.5875 13.959C13.1958 13.5673 13 13.0965 13 12.5465C13 11.9965 13.1958 11.5257 13.5875 11.134C13.9792 10.7423 14.45 10.5465 15 10.5465C15.55 10.5465 16.0208 10.7423 16.4125 11.134C16.8042 11.5257 17 11.9965 17 12.5465C17 13.0965 16.8042 13.5673 16.4125 13.959C16.0208 14.3507 15.55 14.5465 15 14.5465ZM9 8.54651C8.45 8.54651 7.97917 8.35068 7.5875 7.95901C7.19583 7.56734 7 7.09651 7 6.54651C7 5.99651 7.19583 5.52568 7.5875 5.13401C7.97917 4.74234 8.45 4.54651 9 4.54651C9.55 4.54651 10.0208 4.74234 10.4125 5.13401C10.8042 5.52568 11 5.99651 11 6.54651C11 7.09651 10.8042 7.56734 10.4125 7.95901C10.0208 8.35068 9.55 8.54651 9 8.54651ZM15 8.54651C14.45 8.54651 13.9792 8.35068 13.5875 7.95901C13.1958 7.56734 13 7.09651 13 6.54651C13 5.99651 13.1958 5.52568 13.5875 5.13401C13.9792 4.74234 14.45 4.54651 15 4.54651C15.55 4.54651 16.0208 4.74234 16.4125 5.13401C16.8042 5.52568 17 5.99651 17 6.54651C17 7.09651 16.8042 7.56734 16.4125 7.95901C16.0208 8.35068 15.55 8.54651 15 8.54651Z" fill="currentColor"/></svg>`,
|
|
324
|
+
'Grid-list-view-filled': `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 11.4536V3.45361H11V11.4536H3ZM3 21.4536V13.4536H11V21.4536H3ZM13 11.4536V3.45361H21V11.4536H13ZM13 21.4536V13.4536H21V21.4536H13Z" fill="currentColor"/></svg>`,
|
|
325
|
+
'Grid-list-view-in-line': `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 11.4536V3.45361H11V11.4536H3ZM3 21.4536V13.4536H11V21.4536H3ZM13 11.4536V3.45361H21V11.4536H13ZM13 21.4536V13.4536H21V21.4536H13ZM5 9.45361H9V5.45361H5V9.45361ZM15 9.45361H19V5.45361H15V9.45361ZM15 19.4536H19V15.4536H15V19.4536ZM5 19.4536H9V15.4536H5V19.4536Z" fill="currentColor"/></svg>`,
|
|
324
326
|
'Help-center-filled': `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><svg x="3.0" y="3.0" width="18.0" height="18.0" viewBox="0 0 18 18" fill="none" overflow="visible"><path id="Vector" d="M9.8875 14.6375C10.1292 14.3958 10.25 14.1 10.25 13.75C10.25 13.4 10.1292 13.1042 9.8875 12.8625C9.64583 12.6208 9.35 12.5 9 12.5C8.65 12.5 8.35417 12.6208 8.1125 12.8625C7.87083 13.1042 7.75 13.4 7.75 13.75C7.75 14.1 7.87083 14.3958 8.1125 14.6375C8.35417 14.8792 8.65 15 9 15C9.35 15 9.64583 14.8792 9.8875 14.6375ZM8.1 11.15H9.95C9.95 10.55 10.0167 10.1083 10.15 9.825C10.2833 9.54167 10.5667 9.18333 11 8.75C11.5833 8.16667 11.9958 7.67917 12.2375 7.2875C12.4792 6.89583 12.6 6.45 12.6 5.95C12.6 5.06667 12.3 4.35417 11.7 3.8125C11.1 3.27083 10.2917 3 9.275 3C8.35833 3 7.57917 3.225 6.9375 3.675C6.29583 4.125 5.85 4.75 5.6 5.55L7.25 6.2C7.36667 5.75 7.6 5.3875 7.95 5.1125C8.3 4.8375 8.70833 4.7 9.175 4.7C9.625 4.7 10 4.82083 10.3 5.0625C10.6 5.30417 10.75 5.625 10.75 6.025C10.75 6.30833 10.6583 6.60833 10.475 6.925C10.2917 7.24167 9.98333 7.59167 9.55 7.975C9 8.45833 8.62083 8.92083 8.4125 9.3625C8.20417 9.80417 8.1 10.4 8.1 11.15ZM0 18V0H18V18H0Z" fill="currentColor"/></svg></svg>`,
|
|
325
327
|
'Help-center-in-line': `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><svg x="3.0" y="3.0" width="18.0" height="18.0" viewBox="0 0 18 18" fill="none" overflow="visible"><path id="Vector" d="M9.8875 14.6375C10.1292 14.3958 10.25 14.1 10.25 13.75C10.25 13.4 10.1292 13.1042 9.8875 12.8625C9.64583 12.6208 9.35 12.5 9 12.5C8.65 12.5 8.35417 12.6208 8.1125 12.8625C7.87083 13.1042 7.75 13.4 7.75 13.75C7.75 14.1 7.87083 14.3958 8.1125 14.6375C8.35417 14.8792 8.65 15 9 15C9.35 15 9.64583 14.8792 9.8875 14.6375ZM8.1 11.15H9.95C9.95 10.55 10.0167 10.1083 10.15 9.825C10.2833 9.54167 10.5667 9.18333 11 8.75C11.5833 8.16667 11.9958 7.67917 12.2375 7.2875C12.4792 6.89583 12.6 6.45 12.6 5.95C12.6 5.06667 12.3 4.35417 11.7 3.8125C11.1 3.27083 10.2917 3 9.275 3C8.35833 3 7.57917 3.225 6.9375 3.675C6.29583 4.125 5.85 4.75 5.6 5.55L7.25 6.2C7.36667 5.75 7.6 5.3875 7.95 5.1125C8.3 4.8375 8.70833 4.7 9.175 4.7C9.625 4.7 10 4.82083 10.3 5.0625C10.6 5.30417 10.75 5.625 10.75 6.025C10.75 6.30833 10.6583 6.60833 10.475 6.925C10.2917 7.24167 9.98333 7.59167 9.55 7.975C9 8.45833 8.62083 8.92083 8.4125 9.3625C8.20417 9.80417 8.1 10.4 8.1 11.15ZM0 18V0H18V18H0ZM2 16H16V2H2V16Z" fill="currentColor"/></svg></svg>`,
|
|
326
328
|
'Help-filled': `<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.95 18.5464C12.3 18.5464 12.5958 18.4256 12.8375 18.1839C13.0792 17.9422 13.2 17.6464 13.2 17.2964C13.2 16.9464 13.0792 16.6506 12.8375 16.4089C12.5958 16.1672 12.3 16.0464 11.95 16.0464C11.6 16.0464 11.3042 16.1672 11.0625 16.4089C10.8208 16.6506 10.7 16.9464 10.7 17.2964C10.7 17.6464 10.8208 17.9422 11.0625 18.1839C11.3042 18.4256 11.6 18.5464 11.95 18.5464ZM11.05 14.6964H12.9C12.9 14.1464 12.9625 13.7131 13.0875 13.3964C13.2125 13.0797 13.5667 12.6464 14.15 12.0964C14.5833 11.6631 14.925 11.2506 15.175 10.8589C15.425 10.4672 15.55 9.99639 15.55 9.44639C15.55 8.51305 15.2083 7.79639 14.525 7.29639C13.8417 6.79639 13.0333 6.54639 12.1 6.54639C11.15 6.54639 10.3792 6.79639 9.7875 7.29639C9.19583 7.79639 8.78333 8.39639 8.55 9.09639L10.2 9.74639C10.2833 9.44639 10.4708 9.12139 10.7625 8.77139C11.0542 8.42139 11.5 8.24639 12.1 8.24639C12.6333 8.24639 13.0333 8.39222 13.3 8.68389C13.5667 8.97555 13.7 9.29639 13.7 9.64639C13.7 9.97972 13.6 10.2922 13.4 10.5839C13.2 10.8756 12.95 11.1464 12.65 11.3964C11.9167 12.0464 11.4667 12.5381 11.3 12.8714C11.1333 13.2047 11.05 13.8131 11.05 14.6964ZM12 22.5464C10.6167 22.5464 9.31667 22.2839 8.1 21.7589C6.88333 21.2339 5.825 20.5214 4.925 19.6214C4.025 18.7214 3.3125 17.6631 2.7875 16.4464C2.2625 15.2297 2 13.9297 2 12.5464C2 11.1631 2.2625 9.86305 2.7875 8.64639C3.3125 7.42972 4.025 6.37139 4.925 5.47139C5.825 4.57139 6.88333 3.85889 8.1 3.33389C9.31667 2.80889 10.6167 2.54639 12 2.54639C13.3833 2.54639 14.6833 2.80889 15.9 3.33389C17.1167 3.85889 18.175 4.57139 19.075 5.47139C19.975 6.37139 20.6875 7.42972 21.2125 8.64639C21.7375 9.86305 22 11.1631 22 12.5464C22 13.9297 21.7375 15.2297 21.2125 16.4464C20.6875 17.6631 19.975 18.7214 19.075 19.6214C18.175 20.5214 17.1167 21.2339 15.9 21.7589C14.6833 22.2839 13.3833 22.5464 12 22.5464Z" fill="currentColor"/></svg>`,
|
|
@@ -508,6 +510,8 @@ const rebrandIconSvgContent = {
|
|
|
508
510
|
'Switch-tab-in-line': `<svg width="16" height="22" viewBox="0 0 16 22" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.3335 17.6673V9.00065H4.00016V4.33398H14.6668V13.0007H12.0002V17.6673H1.3335ZM2.66683 16.334H10.6668V11.6673H2.66683V16.334ZM12.0002 11.6673H13.3335V7.00065H5.3335V9.00065H12.0002V11.6673Z" fill="currentColor"/></svg>`,
|
|
509
511
|
'Sync-filled': `<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 21V19H6.75L6.35 18.65C5.53333 17.8333 4.9375 16.9458 4.5625 15.9875C4.1875 15.0292 4 14.05 4 13.05C4 11.2 4.55417 9.55417 5.6625 8.1125C6.77083 6.67083 8.21667 5.71667 10 5.25V7.35C8.8 7.78333 7.83333 8.52083 7.1 9.5625C6.36667 10.6042 6 11.7667 6 13.05C6 13.8 6.14167 14.5292 6.425 15.2375C6.70833 15.9458 7.15 16.6 7.75 17.2L8 17.45V15H10V21H4ZM14 20.75V18.65C15.2 18.2167 16.1667 17.4792 16.9 16.4375C17.6333 15.3958 18 14.2333 18 12.95C18 12.2 17.8583 11.4708 17.575 10.7625C17.2917 10.0542 16.85 9.4 16.25 8.8L16 8.55V11H14V5H20V7H17.25L17.65 7.35C18.4667 8.16667 19.0625 9.05417 19.4375 10.0125C19.8125 10.9708 20 11.95 20 12.95C20 14.8 19.4458 16.4458 18.3375 17.8875C17.2292 19.3292 15.7833 20.2833 14 20.75Z" fill="currentColor"/></svg>`,
|
|
510
512
|
'Sync-in-line': `<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 21V19H6.75L6.35 18.65C5.53333 17.8333 4.9375 16.9458 4.5625 15.9875C4.1875 15.0292 4 14.05 4 13.05C4 11.2 4.55417 9.55417 5.6625 8.1125C6.77083 6.67083 8.21667 5.71667 10 5.25V7.35C8.8 7.78333 7.83333 8.52083 7.1 9.5625C6.36667 10.6042 6 11.7667 6 13.05C6 13.8 6.14167 14.5292 6.425 15.2375C6.70833 15.9458 7.15 16.6 7.75 17.2L8 17.45V15H10V21H4ZM14 20.75V18.65C15.2 18.2167 16.1667 17.4792 16.9 16.4375C17.6333 15.3958 18 14.2333 18 12.95C18 12.2 17.8583 11.4708 17.575 10.7625C17.2917 10.0542 16.85 9.4 16.25 8.8L16 8.55V11H14V5H20V7H17.25L17.65 7.35C18.4667 8.16667 19.0625 9.05417 19.4375 10.0125C19.8125 10.9708 20 11.95 20 12.95C20 14.8 19.4458 16.4458 18.3375 17.8875C17.2292 19.3292 15.7833 20.2833 14 20.75Z" fill="currentColor"/></svg>`,
|
|
513
|
+
'Table-view-filled': `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11 16H3V19C3 19.55 3.19583 20.0208 3.5875 20.4125C3.97917 20.8042 4.45 21 5 21H11V16ZM13 16V21H19C19.55 21 20.0208 20.8042 20.4125 20.4125C20.8042 20.0208 21 19.55 21 19V16H13ZM11 14V9H3V14H11ZM13 14H21V9H13V14ZM3 7H21V5C21 4.45 20.8042 3.97917 20.4125 3.5875C20.0208 3.19583 19.55 3 19 3H5C4.45 3 3.97917 3.19583 3.5875 3.5875C3.19583 3.97917 3 4.45 3 5V7Z" fill="currentColor"/></svg>`,
|
|
514
|
+
'Table-view-in-line': `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 21C4.45 21 3.97917 20.8042 3.5875 20.4125C3.19583 20.0208 3 19.55 3 19V5C3 4.45 3.19583 3.97917 3.5875 3.5875C3.97917 3.19583 4.45 3 5 3H19C19.55 3 20.0208 3.19583 20.4125 3.5875C20.8042 3.97917 21 4.45 21 5V19C21 19.55 20.8042 20.0208 20.4125 20.4125C20.0208 20.8042 19.55 21 19 21H5ZM11 15H5V19H11V15ZM13 15V19H19V15H13ZM11 13V9H5V13H11ZM13 13H19V9H13V13ZM5 7H19V5H5V7Z" fill="currentColor"/></svg>`,
|
|
511
515
|
'Tag-filled-AI': `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12.825 22.2786L2 11.4536V1.45361H12L22.8 12.3036L12.825 22.2786ZM6.5 7.45361C6.91667 7.45361 7.27083 7.30778 7.5625 7.01611C7.85417 6.72445 8 6.37028 8 5.95361C8 5.53695 7.85417 5.18278 7.5625 4.89111C7.27083 4.59945 6.91667 4.45361 6.5 4.45361C6.08333 4.45361 5.72917 4.59945 5.4375 4.89111C5.14583 5.18278 5 5.53695 5 5.95361C5 6.37028 5.14583 6.72445 5.4375 7.01611C5.72917 7.30778 6.08333 7.45361 6.5 7.45361Z" fill="currentColor"/><path d="M20 0L18.74 2.75L16 4L18.74 5.26L20 8L21.25 5.26L24 4L21.25 2.75" fill="currentColor"/></svg>`,
|
|
512
516
|
'Tag-filled': `<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12.825 22.825L2 12V2H12L22.8 12.85L12.825 22.825ZM6.5 8C6.91667 8 7.27083 7.85417 7.5625 7.5625C7.85417 7.27083 8 6.91667 8 6.5C8 6.08333 7.85417 5.72917 7.5625 5.4375C7.27083 5.14583 6.91667 5 6.5 5C6.08333 5 5.72917 5.14583 5.4375 5.4375C5.14583 5.72917 5 6.08333 5 6.5C5 6.91667 5.14583 7.27083 5.4375 7.5625C5.72917 7.85417 6.08333 8 6.5 8Z" fill="#242424"/></svg>`,
|
|
513
517
|
'Tag-in-line-AI': `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12.825 22.2786L2 11.4536V1.45361H12L22.8 12.3036L12.825 22.2786ZM12.825 19.4536L19.975 12.3036L11.15 3.45361H4V10.6036L12.825 19.4536ZM6.5 7.45361C6.91667 7.45361 7.27083 7.30778 7.5625 7.01611C7.85417 6.72445 8 6.37028 8 5.95361C8 5.53695 7.85417 5.18278 7.5625 4.89111C7.27083 4.59945 6.91667 4.45361 6.5 4.45361C6.08333 4.45361 5.72917 4.59945 5.4375 4.89111C5.14583 5.18278 5 5.53695 5 5.95361C5 6.37028 5.14583 6.72445 5.4375 7.01611C5.72917 7.30778 6.08333 7.45361 6.5 7.45361Z" fill="currentColor"/><path d="M20 0L18.74 2.75L16 4L18.74 5.26L20 8L21.25 5.26L24 4L21.25 2.75" fill="currentColor"/></svg>`,
|
|
@@ -868,6 +872,8 @@ const tgoRebrandIcons = [
|
|
|
868
872
|
'Google-in-line',
|
|
869
873
|
'Grab-filled',
|
|
870
874
|
'Grab-in-line',
|
|
875
|
+
'Grid-list-view-filled',
|
|
876
|
+
'Grid-list-view-in-line',
|
|
871
877
|
'Help-filled',
|
|
872
878
|
'Help-in-line',
|
|
873
879
|
'Hide-filled',
|
|
@@ -1011,6 +1017,8 @@ const tgoRebrandIcons = [
|
|
|
1011
1017
|
'Switch-in-line',
|
|
1012
1018
|
'Sync-filled',
|
|
1013
1019
|
'Sync-in-line',
|
|
1020
|
+
'Table-view-filled',
|
|
1021
|
+
'Table-view-in-line',
|
|
1014
1022
|
'Tag-filled',
|
|
1015
1023
|
'Tag-in-line',
|
|
1016
1024
|
'Team-filled',
|