@quadrel-enterprise-ui/framework 20.26.2 → 20.27.1
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/quadrel-enterprise-ui-framework.mjs +344 -71
- package/fesm2022/quadrel-enterprise-ui-framework.mjs.map +1 -1
- package/index.d.ts +203 -51
- package/package.json +1 -1
- package/src/assets/i18n/de.json +2 -0
- package/src/assets/i18n/en.json +2 -2
- package/src/assets/i18n/fr.json +2 -2
- package/src/assets/i18n/it.json +2 -2
package/index.d.ts
CHANGED
|
@@ -3355,6 +3355,7 @@ declare class QdMockFilterItemDateRangeComponent {
|
|
|
3355
3355
|
timePickerConfig?: QdFormTimepickerConfiguration;
|
|
3356
3356
|
testId: any;
|
|
3357
3357
|
get dataTestId(): string;
|
|
3358
|
+
open(): void;
|
|
3358
3359
|
static ɵfac: i0.ɵɵFactoryDeclaration<QdMockFilterItemDateRangeComponent, never>;
|
|
3359
3360
|
static ɵcmp: i0.ɵɵComponentDeclaration<QdMockFilterItemDateRangeComponent, "qd-filter-item-date-range", never, { "filterId": { "alias": "filterId"; "required": false; }; "categoryIndex": { "alias": "categoryIndex"; "required": false; }; "itemIndex": { "alias": "itemIndex"; "required": false; }; "timePickerConfig": { "alias": "timePickerConfig"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, {}, never, never, false, never>;
|
|
3360
3361
|
}
|
|
@@ -3412,12 +3413,15 @@ declare class QdMockFilterService {
|
|
|
3412
3413
|
private postBodyWithEmptyDefaultSubjects;
|
|
3413
3414
|
private categoryByIdSubject;
|
|
3414
3415
|
private itemByIdSubject;
|
|
3416
|
+
private loadingSubject;
|
|
3415
3417
|
initializeFilterState(): void;
|
|
3416
3418
|
updateFilterState(): void;
|
|
3417
3419
|
getFilterState(): void;
|
|
3418
3420
|
setFilterSelection: any;
|
|
3419
3421
|
updateItem: any;
|
|
3420
3422
|
setItemIsActive: any;
|
|
3423
|
+
clearCategorySelection: any;
|
|
3424
|
+
setItemsLoading: any;
|
|
3421
3425
|
selectFilterDataById$: any;
|
|
3422
3426
|
getQueryString$(filterId: any): Observable<string>;
|
|
3423
3427
|
getFilterUrlParameter$(filterId: any): Observable<string>;
|
|
@@ -3426,6 +3430,7 @@ declare class QdMockFilterService {
|
|
|
3426
3430
|
getPostBodyWithEmptyDefault$(filterId: any): Observable<QdFilterPostBodyData>;
|
|
3427
3431
|
getCategoryById$(filterId: any): Observable<any>;
|
|
3428
3432
|
getItemById$(filterId: any): Observable<any>;
|
|
3433
|
+
getItemsLoading$(filterId: any): Observable<boolean>;
|
|
3429
3434
|
getQueryStringSubject(filterId: any): Subject<string>;
|
|
3430
3435
|
getFilterUrlParameterSubject(filterId: any): Subject<string>;
|
|
3431
3436
|
getPostBodySubject(filterId: any): Subject<QdFilterPostBodyData>;
|
|
@@ -3434,6 +3439,7 @@ declare class QdMockFilterService {
|
|
|
3434
3439
|
getMaxDate$: any;
|
|
3435
3440
|
emitCategory(value: any, filterId: any): void;
|
|
3436
3441
|
emitItem(value: any, filterId: any): void;
|
|
3442
|
+
emitLoading(value: any, filterId: any): void;
|
|
3437
3443
|
static ɵfac: i0.ɵɵFactoryDeclaration<QdMockFilterService, never>;
|
|
3438
3444
|
static ɵprov: i0.ɵɵInjectableDeclaration<QdMockFilterService>;
|
|
3439
3445
|
}
|
|
@@ -5190,6 +5196,7 @@ interface QdPopoverSizeConstraints {
|
|
|
5190
5196
|
* - The returned Observable emits `true` once initial sizing is applied and overlay is visible.
|
|
5191
5197
|
* - Even if autosize is turned off, the minimum and maximum width or height constraints are always enforced as hard limits.
|
|
5192
5198
|
* - This means the popover can never be smaller or larger than the values you set, no matter what content it contains.
|
|
5199
|
+
* - The width is also capped to the current screen width, so the popover never reaches past the screen edge — even if a larger maxWidth is set.
|
|
5193
5200
|
*
|
|
5194
5201
|
* #### For the hidden-content measuring
|
|
5195
5202
|
* @see https://stackoverflow.com/questions/1841124/find-the-potential-width-of-a-hidden-element
|
|
@@ -5209,6 +5216,7 @@ declare class QdPopoverSizingService {
|
|
|
5209
5216
|
observe(host: HTMLElement, popover: HTMLElement, overlayRef: OverlayRef, autoSize: QdPopoverAutoSizeConfig, constraints: QdPopoverSizeConstraints): Observable<boolean>;
|
|
5210
5217
|
private showOverlay;
|
|
5211
5218
|
private hideOverlay;
|
|
5219
|
+
private resolveWidthLimits;
|
|
5212
5220
|
private applySize;
|
|
5213
5221
|
private measureContentSize;
|
|
5214
5222
|
disconnect(): void;
|
|
@@ -5223,6 +5231,26 @@ declare class QdPopoverParentService {
|
|
|
5223
5231
|
static ɵprov: i0.ɵɵInjectableDeclaration<QdPopoverParentService>;
|
|
5224
5232
|
}
|
|
5225
5233
|
|
|
5234
|
+
/**
|
|
5235
|
+
* **QdPopoverOnClickDirective**
|
|
5236
|
+
*
|
|
5237
|
+
* Shows a popover next to its host element and opens or closes it on host click.
|
|
5238
|
+
*
|
|
5239
|
+
* It is an internal building block. Quadrel components such as dropdowns, menu buttons and
|
|
5240
|
+
* filters build on it; consumers do not use it directly.
|
|
5241
|
+
*
|
|
5242
|
+
* #### Features:
|
|
5243
|
+
* - Opens the popover on click and closes it on the next click or an outside click.
|
|
5244
|
+
* - With `qdPopoverEnableKeyControl`, Enter and Space open it, Escape and Tab close it.
|
|
5245
|
+
* - Sizes the popover to its host or content within the min/max limits, and never wider than the screen.
|
|
5246
|
+
* - Places it with the Angular CDK; with `qdPopoverFlipIntoViewport` it opens to the side that has room instead of off the screen edge.
|
|
5247
|
+
* - Keeps only one popover open: opening one closes the others, but a nested popover keeps its parents open.
|
|
5248
|
+
*
|
|
5249
|
+
* #### Notes & Best Practices
|
|
5250
|
+
* - Emits `opened` and `closed` so consumers can react.
|
|
5251
|
+
* - The flip is opt-in, so popovers that already sit correctly stay as they are.
|
|
5252
|
+
* - Not part of the public API; use the higher-level components like `qd-dropdown` or `qd-menu-button` instead.
|
|
5253
|
+
*/
|
|
5226
5254
|
declare class QdPopoverOnClickDirective implements OnInit, OnDestroy {
|
|
5227
5255
|
protected hostRef: ElementRef<HTMLElement>;
|
|
5228
5256
|
protected overlayPositionBuilder: OverlayPositionBuilder;
|
|
@@ -5241,6 +5269,7 @@ declare class QdPopoverOnClickDirective implements OnInit, OnDestroy {
|
|
|
5241
5269
|
qdPopoverMaxWidth: number | 'none';
|
|
5242
5270
|
qdPopoverAutoSize: QdPopoverAutoSizeConfig;
|
|
5243
5271
|
qdPopoverEnableKeyControl: boolean;
|
|
5272
|
+
qdPopoverFlipIntoViewport: boolean;
|
|
5244
5273
|
readonly opened: EventEmitter<any>;
|
|
5245
5274
|
readonly closed: EventEmitter<any>;
|
|
5246
5275
|
handleClick(event: MouseEvent): void;
|
|
@@ -5251,14 +5280,26 @@ declare class QdPopoverOnClickDirective implements OnInit, OnDestroy {
|
|
|
5251
5280
|
private _host;
|
|
5252
5281
|
private _popoverRef;
|
|
5253
5282
|
private _positionStrategyInstance;
|
|
5283
|
+
private _resolvedPositions;
|
|
5254
5284
|
private _subscriptions;
|
|
5255
5285
|
constructor();
|
|
5256
5286
|
ngOnInit(): void;
|
|
5257
5287
|
ngOnDestroy(): void;
|
|
5258
5288
|
open(): void;
|
|
5289
|
+
/**
|
|
5290
|
+
* Re-aligns an open overlay with its origin element.
|
|
5291
|
+
*
|
|
5292
|
+
* The connected position is only recomputed on scroll/resize, not when a
|
|
5293
|
+
* layout reflow moves the origin (e.g. a chip or action buttons appearing in
|
|
5294
|
+
* the host). Call this after such a reflow to keep the overlay attached to the
|
|
5295
|
+
* host. Deferred by one frame so the new layout is measured, and a no-op while
|
|
5296
|
+
* the overlay is detached, so it stays cheap to call on discrete events.
|
|
5297
|
+
*/
|
|
5298
|
+
updatePosition(): void;
|
|
5259
5299
|
close(): void;
|
|
5260
5300
|
private popoverInstance;
|
|
5261
5301
|
private initPositionStrategy;
|
|
5302
|
+
private withHorizontalFallbacks;
|
|
5262
5303
|
private createOverlay;
|
|
5263
5304
|
private runSizingAndOpen;
|
|
5264
5305
|
private setPopoverContent;
|
|
@@ -5268,7 +5309,7 @@ declare class QdPopoverOnClickDirective implements OnInit, OnDestroy {
|
|
|
5268
5309
|
private unsubscribeAll;
|
|
5269
5310
|
private cleanup;
|
|
5270
5311
|
static ɵfac: i0.ɵɵFactoryDeclaration<QdPopoverOnClickDirective, never>;
|
|
5271
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<QdPopoverOnClickDirective, "[qdPopoverOnClick]", ["qdPopoverOnClick"], { "qdPopoverOnClick": { "alias": "qdPopoverOnClick"; "required": false; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; }; "qdPopoverCloseStrategy": { "alias": "qdPopoverCloseStrategy"; "required": false; }; "qdPopoverDisabled": { "alias": "qdPopoverDisabled"; "required": false; }; "qdPopoverStopPropagation": { "alias": "qdPopoverStopPropagation"; "required": false; }; "qdPopoverBackgroundColor": { "alias": "qdPopoverBackgroundColor"; "required": false; }; "qdPopoverMaxHeight": { "alias": "qdPopoverMaxHeight"; "required": false; }; "qdPopoverMinWidth": { "alias": "qdPopoverMinWidth"; "required": false; }; "qdPopoverMaxWidth": { "alias": "qdPopoverMaxWidth"; "required": false; }; "qdPopoverAutoSize": { "alias": "qdPopoverAutoSize"; "required": false; }; "qdPopoverEnableKeyControl": { "alias": "qdPopoverEnableKeyControl"; "required": false; }; }, { "opened": "opened"; "closed": "closed"; }, never, never, false, never>;
|
|
5312
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<QdPopoverOnClickDirective, "[qdPopoverOnClick]", ["qdPopoverOnClick"], { "qdPopoverOnClick": { "alias": "qdPopoverOnClick"; "required": false; }; "positionStrategy": { "alias": "positionStrategy"; "required": false; }; "qdPopoverCloseStrategy": { "alias": "qdPopoverCloseStrategy"; "required": false; }; "qdPopoverDisabled": { "alias": "qdPopoverDisabled"; "required": false; }; "qdPopoverStopPropagation": { "alias": "qdPopoverStopPropagation"; "required": false; }; "qdPopoverBackgroundColor": { "alias": "qdPopoverBackgroundColor"; "required": false; }; "qdPopoverMaxHeight": { "alias": "qdPopoverMaxHeight"; "required": false; }; "qdPopoverMinWidth": { "alias": "qdPopoverMinWidth"; "required": false; }; "qdPopoverMaxWidth": { "alias": "qdPopoverMaxWidth"; "required": false; }; "qdPopoverAutoSize": { "alias": "qdPopoverAutoSize"; "required": false; }; "qdPopoverEnableKeyControl": { "alias": "qdPopoverEnableKeyControl"; "required": false; }; "qdPopoverFlipIntoViewport": { "alias": "qdPopoverFlipIntoViewport"; "required": false; }; }, { "opened": "opened"; "closed": "closed"; }, never, never, false, never>;
|
|
5272
5313
|
}
|
|
5273
5314
|
|
|
5274
5315
|
/**
|
|
@@ -6288,6 +6329,7 @@ declare class QdDatepickerComponent implements ControlValueAccessor, OnInit, OnC
|
|
|
6288
6329
|
registerOnTouched(fn: () => void): void;
|
|
6289
6330
|
writeValue(date: Date): void;
|
|
6290
6331
|
setDisabledState(disabled: boolean): void;
|
|
6332
|
+
open(): void;
|
|
6291
6333
|
handleUpdatedDate($rawValue: QdInputRawEventValue): void;
|
|
6292
6334
|
handleUpdatedTime($event: string): void;
|
|
6293
6335
|
handleUpdatedDateTime($rawValue: QdInputRawEventValue): void;
|
|
@@ -11521,6 +11563,7 @@ declare class QdFilterService {
|
|
|
11521
11563
|
private queryStringSubjects;
|
|
11522
11564
|
private filterUrlParameterSubjects;
|
|
11523
11565
|
private postBodySubjects;
|
|
11566
|
+
private itemsLoadingSubjects;
|
|
11524
11567
|
getItems$(filterId: any, categoryIndex: any): Observable<any>;
|
|
11525
11568
|
getItemById$(filterId: any, categoryIndex: any, itemIndex: any): Observable<QdFilterItem>;
|
|
11526
11569
|
getMinDate$(filterId: any, categoryIndex: any, itemIndex: any): Observable<string | undefined>;
|
|
@@ -11540,6 +11583,7 @@ declare class QdFilterService {
|
|
|
11540
11583
|
selectFilterDataById$(filterId: any): Observable<QdFilterCategory[]>;
|
|
11541
11584
|
selectHasActiveCategory$(filterId: any): Observable<boolean>;
|
|
11542
11585
|
getCategoryById$(filterId: any, categoryIndex: any): Observable<any>;
|
|
11586
|
+
getItemsLoading$(filterId: any, categoryIndex: any): Observable<boolean>;
|
|
11543
11587
|
getFilterCategoryValue$(filterId: any, categoryIndex: any): Observable<any>;
|
|
11544
11588
|
/**
|
|
11545
11589
|
* Action dispatcher
|
|
@@ -11555,6 +11599,9 @@ declare class QdFilterService {
|
|
|
11555
11599
|
resetEmissionReplaySubjects(filterId: any): void;
|
|
11556
11600
|
setCategoryFilter(filterId: any, categoryIndex: number, filter: string): void;
|
|
11557
11601
|
resetCategoryFilter(filterId: string, categoryIndex: number): void;
|
|
11602
|
+
clearCategorySelection(filterId: string, categoryIndex: number): void;
|
|
11603
|
+
setItemsLoading(filterId: string, categoryIndex: number, loading: boolean): void;
|
|
11604
|
+
private getItemsLoadingSubject;
|
|
11558
11605
|
private getQueryStringSubject;
|
|
11559
11606
|
private getFilterUrlParameterSubject;
|
|
11560
11607
|
private getPostBodySubject;
|
|
@@ -11563,43 +11610,123 @@ declare class QdFilterService {
|
|
|
11563
11610
|
}
|
|
11564
11611
|
|
|
11565
11612
|
/**
|
|
11566
|
-
*
|
|
11613
|
+
* **QdFilterComponent** lets users build and apply a filter with several categories over a data set.
|
|
11614
|
+
*
|
|
11615
|
+
* #### **Features**
|
|
11616
|
+
*
|
|
11617
|
+
* - **Category types**: single and multi select dropdowns, a boolean toggle, date and date-time pickers, date and date-time ranges, and free text. A select dropdown can also show a filter field that narrows the item list.
|
|
11618
|
+
* - **Outputs**: react to the applied selection through the query-string and post-body outputs, or read the current selection at any time.
|
|
11619
|
+
* - **Multi-staging**: chain categories so one stage loads its items from the selection of another.
|
|
11620
|
+
* - **URL sync**: the selection is kept in the URL, so a view can be shared, bookmarked, and reopened.
|
|
11621
|
+
*
|
|
11622
|
+
* #### **Quick start**
|
|
11623
|
+
*
|
|
11624
|
+
* **1. Add the filter to the template**
|
|
11625
|
+
*
|
|
11626
|
+
* ```html
|
|
11627
|
+
* <qd-filter
|
|
11628
|
+
* [filterData]="myFilterConfig"
|
|
11629
|
+
* (queryStringOutput)="callBackendWithQueryString($event)"
|
|
11630
|
+
* (postBodyOutput)="callBackendWithResultObject($event)"
|
|
11631
|
+
* ></qd-filter>
|
|
11632
|
+
* ```
|
|
11633
|
+
*
|
|
11634
|
+
* **2. Define the config in your component**
|
|
11635
|
+
*
|
|
11636
|
+
* ```typescript
|
|
11637
|
+
* myFilterConfig: QdFilterConfigData = {
|
|
11638
|
+
* categories: [
|
|
11639
|
+
* {
|
|
11640
|
+
* type: 'singleSelect',
|
|
11641
|
+
* category: 'controlObject',
|
|
11642
|
+
* i18n: 'i18n.my.category.controlObject',
|
|
11643
|
+
* items: [
|
|
11644
|
+
* { item: 'vehicle', i18n: 'i18n.my.item.vehicle', active: true },
|
|
11645
|
+
* { item: 'article', i18n: 'i18n.my.item.article' }
|
|
11646
|
+
* ],
|
|
11647
|
+
* filter: true
|
|
11648
|
+
* },
|
|
11649
|
+
* {
|
|
11650
|
+
* type: 'multiSelect',
|
|
11651
|
+
* category: 'enrollmentCountry',
|
|
11652
|
+
* i18n: 'i18n.my.category.enrollmentCountry',
|
|
11653
|
+
* items: [
|
|
11654
|
+
* { item: 'de', i18n: 'i18n.my.item.de' },
|
|
11655
|
+
* { item: 'ch', i18n: 'i18n.my.item.ch' }
|
|
11656
|
+
* ]
|
|
11657
|
+
* }
|
|
11658
|
+
* ],
|
|
11659
|
+
* uid: 'overview-filter'
|
|
11660
|
+
* };
|
|
11661
|
+
* ```
|
|
11662
|
+
*
|
|
11663
|
+
* The `filterData` input is the only configuration. It holds the categories and the behavior flags.
|
|
11567
11664
|
*
|
|
11568
|
-
*
|
|
11569
|
-
* - **Filter**: Name of the component.
|
|
11570
|
-
* - **Categories**: A list of one or more different categories.
|
|
11571
|
-
* - **Items**: A list with one or more items belongs to a parent category.
|
|
11665
|
+
* #### **Category types**
|
|
11572
11666
|
*
|
|
11573
|
-
*
|
|
11667
|
+
* A category sets its type to one of: singleSelect, multiSelect, boolean, date, dateTime,
|
|
11668
|
+
* dateRange, dateTimeRange or freeText. Single and multi select show a dropdown, boolean is a
|
|
11669
|
+
* toggle, the date types open a picker (the date-time variants add a time picker), and free text
|
|
11670
|
+
* is a text field applied on enter.
|
|
11574
11671
|
*
|
|
11575
|
-
*
|
|
11576
|
-
*
|
|
11577
|
-
* the applied filters as an url string with an encoded *filter* parameter. The `(postBodyOutput)`
|
|
11578
|
-
* yields an object containing the categories and active items.
|
|
11672
|
+
* On a single or multi select you can add a filter field above the items with `filter: true` to
|
|
11673
|
+
* narrow the item list. It has no effect on the other types.
|
|
11579
11674
|
*
|
|
11580
|
-
*
|
|
11581
|
-
* filter component methods `getCurrentQueryString`, `getCurrentFilterUrlParameterString` and `getCurrentPostBody`.
|
|
11675
|
+
* #### **Filter selection**
|
|
11582
11676
|
*
|
|
11583
|
-
*
|
|
11677
|
+
* Listen to the outputs to react when the user applies the filter. The query-string output gives
|
|
11678
|
+
* the selection as a URL string (for example filter=...); the post-body output gives it as an
|
|
11679
|
+
* object with the active categories and their values.
|
|
11584
11680
|
*
|
|
11585
|
-
*
|
|
11586
|
-
*
|
|
11681
|
+
* The outputs fire when the user applies the filter, on reset (only when a preselection exists),
|
|
11682
|
+
* when the last active item is removed, and on load if a category starts active.
|
|
11587
11683
|
*
|
|
11588
|
-
*
|
|
11684
|
+
* To read the selection without waiting for an apply, call `getCurrentQueryString` or
|
|
11685
|
+
* `getCurrentPostBody`, or subscribe to `getFilterChanges$` for a continuous stream.
|
|
11589
11686
|
*
|
|
11590
|
-
*
|
|
11591
|
-
* other filters. In the `dependsOn` property you set the names of the filter categories the category depends on.
|
|
11592
|
-
* Always when one of these categories change the `itemsResolver` will be called with the list
|
|
11593
|
-
* of categories given in `dependsOn`. The `itemsResolver` can also be defined in the config where `dependsOn`
|
|
11594
|
-
* is also defined.
|
|
11687
|
+
* #### **Multi-staging filters**
|
|
11595
11688
|
*
|
|
11596
|
-
*
|
|
11597
|
-
* the
|
|
11689
|
+
* To chain categories, give one a `dependsOn` list and an `itemsResolver`. In `dependsOn` you
|
|
11690
|
+
* name the parent categories. The resolver receives the active parents and returns the items for
|
|
11691
|
+
* this stage.
|
|
11598
11692
|
*
|
|
11599
|
-
*
|
|
11693
|
+
* ```typescript
|
|
11694
|
+
* const cityCategory: QdDependentFilterCategory = {
|
|
11695
|
+
* type: 'multiSelect',
|
|
11696
|
+
* category: 'city',
|
|
11697
|
+
* i18n: 'i18n.my.category.city',
|
|
11698
|
+
* dependsOn: ['country'],
|
|
11699
|
+
* itemsResolver: ([country]) =>
|
|
11700
|
+
* loadCitiesFor(country.items.filter(item => item.active)),
|
|
11701
|
+
* filter: true
|
|
11702
|
+
* };
|
|
11703
|
+
* ```
|
|
11600
11704
|
*
|
|
11601
|
-
*
|
|
11705
|
+
* The stage appears once every parent has an active item. While its items load, the open
|
|
11706
|
+
* dropdown shows a loading text instead of the list. If the resolver returns nothing, the list
|
|
11707
|
+
* stays empty. Multi-staging works only for single and multi select categories.
|
|
11602
11708
|
*
|
|
11709
|
+
* #### **URL synchronization**
|
|
11710
|
+
*
|
|
11711
|
+
* The filter keeps its selection in the URL filter parameter: it is saved when the selection
|
|
11712
|
+
* changes and read back when the page opens, so a user can share or bookmark the URL and return
|
|
11713
|
+
* to the same filter.
|
|
11714
|
+
*
|
|
11715
|
+
* This is on by default. With more than one filter in a view, only one may own the URL, so set
|
|
11716
|
+
* `connectWithRouter` to false on every other filter.
|
|
11717
|
+
*
|
|
11718
|
+
* #### **Preserve filter state**
|
|
11719
|
+
*
|
|
11720
|
+
* Give the config a stable `uid` to keep the selection while the user moves around the app, for
|
|
11721
|
+
* example from an overview to a detail page and back. The selection is restored the next time a
|
|
11722
|
+
* filter with the same `uid` is shown.
|
|
11723
|
+
*
|
|
11724
|
+
* #### **Reset behavior**
|
|
11725
|
+
*
|
|
11726
|
+
* An item set to active is a preselection. The reset button reads "Reset" when there is no
|
|
11727
|
+
* preselection, and "Back to preselection" when the config starts with active items. It restores
|
|
11728
|
+
* the initial state. With instant filtering (`isInstantFiltering`) the apply and reset buttons
|
|
11729
|
+
* are hidden and the filter applies on every change.
|
|
11603
11730
|
*/
|
|
11604
11731
|
declare class QdFilterComponent implements OnInit, OnChanges, OnDestroy {
|
|
11605
11732
|
readonly filterService: QdFilterService;
|
|
@@ -11846,6 +11973,7 @@ declare class QdFilterItemDateComponent implements OnInit, OnDestroy {
|
|
|
11846
11973
|
clickTimePlaceholder: EventEmitter<boolean>;
|
|
11847
11974
|
testId: string;
|
|
11848
11975
|
get dataTestId(): string;
|
|
11976
|
+
private datepicker?;
|
|
11849
11977
|
datepickerConfig: QdFormDatepickerConfiguration;
|
|
11850
11978
|
item: Date;
|
|
11851
11979
|
private _destroyed$;
|
|
@@ -11853,36 +11981,12 @@ declare class QdFilterItemDateComponent implements OnInit, OnDestroy {
|
|
|
11853
11981
|
ngOnDestroy(): void;
|
|
11854
11982
|
handleDateChange(date: Date): void;
|
|
11855
11983
|
handleClickTimePlaceholder($event: boolean): void;
|
|
11984
|
+
open(): void;
|
|
11856
11985
|
private subscribeGetItem;
|
|
11857
11986
|
static ɵfac: i0.ɵɵFactoryDeclaration<QdFilterItemDateComponent, never>;
|
|
11858
11987
|
static ɵcmp: i0.ɵɵComponentDeclaration<QdFilterItemDateComponent, "qd-filter-item-date", never, { "filterId": { "alias": "filterId"; "required": false; }; "categoryIndex": { "alias": "categoryIndex"; "required": false; }; "itemIndex": { "alias": "itemIndex"; "required": false; }; "timePickerConfig": { "alias": "timePickerConfig"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, { "clickTimePlaceholder": "clickTimePlaceholder"; }, never, never, false, never>;
|
|
11859
11988
|
}
|
|
11860
11989
|
|
|
11861
|
-
declare class QdFilterItemDateRangeCategoryComponent implements OnInit {
|
|
11862
|
-
private readonly filterService;
|
|
11863
|
-
filterId: string;
|
|
11864
|
-
categoryIndex: number;
|
|
11865
|
-
testId: string;
|
|
11866
|
-
timePickerConfig?: QdFormTimepickerConfiguration;
|
|
11867
|
-
i18n$: Observable<string>;
|
|
11868
|
-
fromItem$: Observable<QdFilterItem>;
|
|
11869
|
-
fromItemIndex: number;
|
|
11870
|
-
fromItemTimePickerConfig: QdFormTimepickerConfiguration;
|
|
11871
|
-
fromItemTimePlaceholderClicked: boolean;
|
|
11872
|
-
untilItem$: Observable<QdFilterItem>;
|
|
11873
|
-
untilItemIndex: number;
|
|
11874
|
-
untilItemTimePickerConfig: QdFormTimepickerConfiguration;
|
|
11875
|
-
untilItemTimePlaceholderClicked: boolean;
|
|
11876
|
-
ngOnInit(): void;
|
|
11877
|
-
removeItem(itemIndex: any): void;
|
|
11878
|
-
handleFromTimePlaceholderClicked($event: boolean): void;
|
|
11879
|
-
handleUntilTimePlaceholderClicked($event: boolean): void;
|
|
11880
|
-
private setCategoryI18n;
|
|
11881
|
-
private setFromItem;
|
|
11882
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<QdFilterItemDateRangeCategoryComponent, never>;
|
|
11883
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<QdFilterItemDateRangeCategoryComponent, "qd-filter-category-date-range", never, { "filterId": { "alias": "filterId"; "required": false; }; "categoryIndex": { "alias": "categoryIndex"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; "timePickerConfig": { "alias": "timePickerConfig"; "required": false; }; }, {}, never, never, false, never>;
|
|
11884
|
-
}
|
|
11885
|
-
|
|
11886
11990
|
declare class QdFilterItemDateRangeComponent implements OnInit, OnDestroy {
|
|
11887
11991
|
private readonly filterService;
|
|
11888
11992
|
filterId: string;
|
|
@@ -11896,6 +12000,8 @@ declare class QdFilterItemDateRangeComponent implements OnInit, OnDestroy {
|
|
|
11896
12000
|
private _destroyed$;
|
|
11897
12001
|
get itemClassName(): string;
|
|
11898
12002
|
get dataTestId(): string;
|
|
12003
|
+
private datepicker?;
|
|
12004
|
+
open(): void;
|
|
11899
12005
|
get minDate$(): Observable<string | undefined>;
|
|
11900
12006
|
get maxDate$(): Observable<string | undefined>;
|
|
11901
12007
|
ngOnInit(): void;
|
|
@@ -11909,6 +12015,32 @@ declare class QdFilterItemDateRangeComponent implements OnInit, OnDestroy {
|
|
|
11909
12015
|
static ɵcmp: i0.ɵɵComponentDeclaration<QdFilterItemDateRangeComponent, "qd-filter-item-date-range", never, { "filterId": { "alias": "filterId"; "required": false; }; "categoryIndex": { "alias": "categoryIndex"; "required": false; }; "itemIndex": { "alias": "itemIndex"; "required": false; }; "timePickerConfig": { "alias": "timePickerConfig"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, { "clickTimePlaceholder": "clickTimePlaceholder"; }, never, never, false, never>;
|
|
11910
12016
|
}
|
|
11911
12017
|
|
|
12018
|
+
declare class QdFilterItemDateRangeCategoryComponent implements OnInit {
|
|
12019
|
+
private readonly filterService;
|
|
12020
|
+
filterId: string;
|
|
12021
|
+
categoryIndex: number;
|
|
12022
|
+
testId: string;
|
|
12023
|
+
timePickerConfig?: QdFormTimepickerConfiguration;
|
|
12024
|
+
i18n$: Observable<string>;
|
|
12025
|
+
fromItem$: Observable<QdFilterItem>;
|
|
12026
|
+
fromItemIndex: number;
|
|
12027
|
+
fromItemTimePickerConfig: QdFormTimepickerConfiguration;
|
|
12028
|
+
fromItemTimePlaceholderClicked: boolean;
|
|
12029
|
+
untilItem$: Observable<QdFilterItem>;
|
|
12030
|
+
untilItemIndex: number;
|
|
12031
|
+
untilItemTimePickerConfig: QdFormTimepickerConfiguration;
|
|
12032
|
+
untilItemTimePlaceholderClicked: boolean;
|
|
12033
|
+
ngOnInit(): void;
|
|
12034
|
+
openItem(itemRef: QdFilterItemDateRangeComponent, event: Event): void;
|
|
12035
|
+
removeItem(itemIndex: any): void;
|
|
12036
|
+
handleFromTimePlaceholderClicked($event: boolean): void;
|
|
12037
|
+
handleUntilTimePlaceholderClicked($event: boolean): void;
|
|
12038
|
+
private setCategoryI18n;
|
|
12039
|
+
private setFromItem;
|
|
12040
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdFilterItemDateRangeCategoryComponent, never>;
|
|
12041
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QdFilterItemDateRangeCategoryComponent, "qd-filter-category-date-range", never, { "filterId": { "alias": "filterId"; "required": false; }; "categoryIndex": { "alias": "categoryIndex"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; "timePickerConfig": { "alias": "timePickerConfig"; "required": false; }; }, {}, never, never, false, never>;
|
|
12042
|
+
}
|
|
12043
|
+
|
|
11912
12044
|
declare class QdFilterItemFreeTextComponent implements OnInit, OnDestroy {
|
|
11913
12045
|
private readonly filterService;
|
|
11914
12046
|
filterId: string;
|
|
@@ -11921,6 +12053,7 @@ declare class QdFilterItemFreeTextComponent implements OnInit, OnDestroy {
|
|
|
11921
12053
|
i18n: any;
|
|
11922
12054
|
get dataTestId(): string;
|
|
11923
12055
|
get value(): string;
|
|
12056
|
+
inputValue: string;
|
|
11924
12057
|
private _destroyed$;
|
|
11925
12058
|
ngOnInit(): void;
|
|
11926
12059
|
ngOnDestroy(): void;
|
|
@@ -11931,8 +12064,14 @@ declare class QdFilterItemFreeTextComponent implements OnInit, OnDestroy {
|
|
|
11931
12064
|
static ɵcmp: i0.ɵɵComponentDeclaration<QdFilterItemFreeTextComponent, "qd-filter-item-free-text", never, { "filterId": { "alias": "filterId"; "required": false; }; "isInstantFiltering": { "alias": "isInstantFiltering"; "required": false; }; "categoryIndex": { "alias": "categoryIndex"; "required": false; }; "itemIndex": { "alias": "itemIndex"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, { "enterClick": "enterClick"; }, never, never, false, never>;
|
|
11932
12065
|
}
|
|
11933
12066
|
|
|
12067
|
+
interface QdFilterItemEntry {
|
|
12068
|
+
item: QdFilterItem;
|
|
12069
|
+
itemIndex: number;
|
|
12070
|
+
}
|
|
11934
12071
|
declare class QdFilterItemSelectCategoryComponent implements OnInit {
|
|
11935
12072
|
private readonly filterService;
|
|
12073
|
+
private readonly breakpointService;
|
|
12074
|
+
readonly isMobile$: Observable<boolean>;
|
|
11936
12075
|
filterId: string;
|
|
11937
12076
|
categoryIndex: number;
|
|
11938
12077
|
testId: string;
|
|
@@ -11944,10 +12083,18 @@ declare class QdFilterItemSelectCategoryComponent implements OnInit {
|
|
|
11944
12083
|
items: QdFilterItem[];
|
|
11945
12084
|
dependsOn: string[];
|
|
11946
12085
|
showSelectButton$: Observable<boolean>;
|
|
12086
|
+
itemsLoading$: Observable<boolean>;
|
|
11947
12087
|
positionStrategy: ConnectedPosition[];
|
|
11948
12088
|
maxFlyoutHeight: number;
|
|
11949
12089
|
private _destroyRef;
|
|
12090
|
+
private frozenSelectedKeys;
|
|
12091
|
+
private frozenUnselectedKeys;
|
|
11950
12092
|
get closeButton(): boolean;
|
|
12093
|
+
get activeItemCount(): number;
|
|
12094
|
+
get selectedDropdownEntries(): QdFilterItemEntry[];
|
|
12095
|
+
get unselectedDropdownEntries(): QdFilterItemEntry[];
|
|
12096
|
+
get showSelectedSeparator(): boolean;
|
|
12097
|
+
get hasNoVisibleItems(): boolean;
|
|
11951
12098
|
get buttonClassName(): string;
|
|
11952
12099
|
get layerContentClassName(): string;
|
|
11953
12100
|
get filterCategoryValue$(): Observable<string>;
|
|
@@ -11956,9 +12103,14 @@ declare class QdFilterItemSelectCategoryComponent implements OnInit {
|
|
|
11956
12103
|
onLayerClosed(): void;
|
|
11957
12104
|
closeLayer(): void;
|
|
11958
12105
|
close(itemIndex: string): void;
|
|
12106
|
+
clearAll(): void;
|
|
12107
|
+
trackByItem(_index: number, entry: QdFilterItemEntry): string;
|
|
12108
|
+
private freezeDropdownOrder;
|
|
12109
|
+
private toEntries;
|
|
11959
12110
|
changeValue($event: string): void;
|
|
11960
12111
|
private initCategorySubscription;
|
|
11961
12112
|
private initItemsSubscription;
|
|
12113
|
+
private haveSameItemKeys;
|
|
11962
12114
|
private initShowSelectButton;
|
|
11963
12115
|
static ɵfac: i0.ɵɵFactoryDeclaration<QdFilterItemSelectCategoryComponent, never>;
|
|
11964
12116
|
static ɵcmp: i0.ɵɵComponentDeclaration<QdFilterItemSelectCategoryComponent, "qd-filter-category-select", never, { "filterId": { "alias": "filterId"; "required": false; }; "categoryIndex": { "alias": "categoryIndex"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, {}, never, never, false, never>;
|
package/package.json
CHANGED
package/src/assets/i18n/de.json
CHANGED
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"i18n.qd.container.toolbar.filter.reset": "Zurücksetzen",
|
|
34
34
|
"i18n.qd.container.toolbar.filter.backToPreSelect": "Zurück zur Vorauswahl",
|
|
35
35
|
"i18n.qd.filter.layer.caption": "Filter",
|
|
36
|
+
"i18n.qd.filter.noResults": "Keine Treffer",
|
|
37
|
+
"i18n.qd.filter.loading": "Wird geladen …",
|
|
36
38
|
"i18n.qd.filter.category.date": "Datum",
|
|
37
39
|
"i18n.qd.filter.category.dateRange": "Datumsbereich",
|
|
38
40
|
"i18n.qd.filter.date.on": "am",
|
package/src/assets/i18n/en.json
CHANGED
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"i18n.qd.container.toolbar.filter.reset": "Reset",
|
|
34
34
|
"i18n.qd.container.toolbar.filter.backToPreSelect": "Back to preselection",
|
|
35
35
|
"i18n.qd.filter.layer.caption": "Filter",
|
|
36
|
+
"i18n.qd.filter.noResults": "No results",
|
|
37
|
+
"i18n.qd.filter.loading": "Loading …",
|
|
36
38
|
"i18n.qd.filter.category.date": "Date",
|
|
37
39
|
"i18n.qd.filter.category.dateRange": "Date range",
|
|
38
40
|
"i18n.qd.filter.date.on": "on",
|
|
@@ -68,12 +70,10 @@
|
|
|
68
70
|
"i18n.qd.input.units.percentage": "%",
|
|
69
71
|
"i18n.qd.input.options.loading": "Suggestions are loading...",
|
|
70
72
|
"i18n.qd.input.options.error": "Error loading suggestions",
|
|
71
|
-
|
|
72
73
|
"i18n.qd.input.number.ambiguousHint.comma": "The entered value is interpreted according to the regional formatting and uses a comma (,) as the decimal separator.",
|
|
73
74
|
"i18n.qd.input.number.ambiguousHint.dot": "The entered value is interpreted according to the regional formatting and uses a dot (.) as the decimal separator.",
|
|
74
75
|
"i18n.qd.input.number.invalidCharacters.comma": "The entered value is invalid. Expected number format: \"123,45\".",
|
|
75
76
|
"i18n.qd.input.number.invalidCharacters.dot": "The entered value is invalid. Expected number format: \"123.45\".",
|
|
76
|
-
|
|
77
77
|
"i18n.qd.multiInput.label.tariffNumbers": "[en]Tarifnummern",
|
|
78
78
|
"i18n.qd.multiInput.label.tariffNumbers.hint": "[en]Bitte erfassen Sie mindestens eine Tarifnummer.",
|
|
79
79
|
"i18n.qd.multiInput.label.tariffNumbers.hintFormat": "[en]Bitte erfassen Sie mindestens eine Tarifnummer (Format: 9- od. 13-stellig).",
|
package/src/assets/i18n/fr.json
CHANGED
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"i18n.qd.container.toolbar.filter.reset": "Réinitialiser",
|
|
34
34
|
"i18n.qd.container.toolbar.filter.backToPreSelect": "Retour à la présélection",
|
|
35
35
|
"i18n.qd.filter.layer.caption": "Filtre",
|
|
36
|
+
"i18n.qd.filter.noResults": "Aucun résultat",
|
|
37
|
+
"i18n.qd.filter.loading": "Chargement …",
|
|
36
38
|
"i18n.qd.filter.category.date": "Date",
|
|
37
39
|
"i18n.qd.filter.category.dateRange": "Plage de dates",
|
|
38
40
|
"i18n.qd.filter.date.on": "le",
|
|
@@ -68,12 +70,10 @@
|
|
|
68
70
|
"i18n.qd.input.units.percentage": "%",
|
|
69
71
|
"i18n.qd.input.options.loading": "[fr] Vorschläge werden geladen...",
|
|
70
72
|
"i18n.qd.input.options.error": "[fr] Fehler beim Laden der Vorschläge",
|
|
71
|
-
|
|
72
73
|
"i18n.qd.input.number.ambiguousHint.comma": "La valeur saisie est interprétée conformément au format régional et utilise une virgule (,) comme séparateur décimal.",
|
|
73
74
|
"i18n.qd.input.number.ambiguousHint.dot": "La valeur saisie est interprétée conformément au format régional et utilise un point (.) comme séparateur décimal.",
|
|
74
75
|
"i18n.qd.input.number.invalidCharacters.comma": "La valeur saisie est invalide. Format numérique attendu : « 123,45 ».",
|
|
75
76
|
"i18n.qd.input.number.invalidCharacters.dot": "La valeur saisie est invalide. Format numérique attendu : « 123.45 ».",
|
|
76
|
-
|
|
77
77
|
"i18n.qd.multiInput.label.tariffNumbers": "[fr]Tarifnummern",
|
|
78
78
|
"i18n.qd.multiInput.label.tariffNumbers.hint": "[fr]Bitte erfassen Sie mindestens eine Tarifnummer.",
|
|
79
79
|
"i18n.qd.multiInput.label.tariffNumbers.hintFormat": "[fr]Bitte erfassen Sie mindestens eine Tarifnummer (Format: 9- od. 13-stellig).",
|
package/src/assets/i18n/it.json
CHANGED
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
"i18n.qd.container.toolbar.filter.reset": "Azzerare",
|
|
34
34
|
"i18n.qd.container.toolbar.filter.backToPreSelect": "Torna alla preselezione",
|
|
35
35
|
"i18n.qd.filter.layer.caption": "Filtrare",
|
|
36
|
+
"i18n.qd.filter.noResults": "Nessun risultato",
|
|
37
|
+
"i18n.qd.filter.loading": "Caricamento …",
|
|
36
38
|
"i18n.qd.filter.category.date": "Date",
|
|
37
39
|
"i18n.qd.filter.category.dateRange": "Intervallo di date",
|
|
38
40
|
"i18n.qd.filter.date.on": "il",
|
|
@@ -68,12 +70,10 @@
|
|
|
68
70
|
"i18n.qd.input.units.percentage": "%",
|
|
69
71
|
"i18n.qd.input.options.loading": "[it] Vorschläge werden geladen...",
|
|
70
72
|
"i18n.qd.input.options.error": "[it] Fehler beim Laden der Vorschläge",
|
|
71
|
-
|
|
72
73
|
"i18n.qd.input.number.ambiguousHint.comma": "Il valore inserito viene interpretato in base al formato regionale e utilizza una virgola (,) come separatore decimale.",
|
|
73
74
|
"i18n.qd.input.number.ambiguousHint.dot": "Il valore inserito viene interpretato in base al formato regionale e utilizza un punto (.) come separatore decimale.",
|
|
74
75
|
"i18n.qd.input.number.invalidCharacters.comma": "Il valore inserito non è valido. Formato numerico previsto: \"123,45\".",
|
|
75
76
|
"i18n.qd.input.number.invalidCharacters.dot": "Il valore inserito non è valido. Formato numerico previsto: \"123.45\".",
|
|
76
|
-
|
|
77
77
|
"i18n.qd.multiInput.label.tariffNumbers": "[it]Tarifnummern",
|
|
78
78
|
"i18n.qd.multiInput.label.tariffNumbers.hint": "[it]Bitte erfassen Sie mindestens eine Tarifnummer.",
|
|
79
79
|
"i18n.qd.multiInput.label.tariffNumbers.hintFormat": "[it]Bitte erfassen Sie mindestens eine Tarifnummer (Format: 9- od. 13-stellig).",
|