@quadrel-enterprise-ui/framework 20.26.2 → 20.27.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/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
  }
@@ -5256,6 +5262,16 @@ declare class QdPopoverOnClickDirective implements OnInit, OnDestroy {
5256
5262
  ngOnInit(): void;
5257
5263
  ngOnDestroy(): void;
5258
5264
  open(): void;
5265
+ /**
5266
+ * Re-aligns an open overlay with its origin element.
5267
+ *
5268
+ * The connected position is only recomputed on scroll/resize, not when a
5269
+ * layout reflow moves the origin (e.g. a chip or action buttons appearing in
5270
+ * the host). Call this after such a reflow to keep the overlay attached to the
5271
+ * host. Deferred by one frame so the new layout is measured, and a no-op while
5272
+ * the overlay is detached, so it stays cheap to call on discrete events.
5273
+ */
5274
+ updatePosition(): void;
5259
5275
  close(): void;
5260
5276
  private popoverInstance;
5261
5277
  private initPositionStrategy;
@@ -6288,6 +6304,7 @@ declare class QdDatepickerComponent implements ControlValueAccessor, OnInit, OnC
6288
6304
  registerOnTouched(fn: () => void): void;
6289
6305
  writeValue(date: Date): void;
6290
6306
  setDisabledState(disabled: boolean): void;
6307
+ open(): void;
6291
6308
  handleUpdatedDate($rawValue: QdInputRawEventValue): void;
6292
6309
  handleUpdatedTime($event: string): void;
6293
6310
  handleUpdatedDateTime($rawValue: QdInputRawEventValue): void;
@@ -11521,6 +11538,7 @@ declare class QdFilterService {
11521
11538
  private queryStringSubjects;
11522
11539
  private filterUrlParameterSubjects;
11523
11540
  private postBodySubjects;
11541
+ private itemsLoadingSubjects;
11524
11542
  getItems$(filterId: any, categoryIndex: any): Observable<any>;
11525
11543
  getItemById$(filterId: any, categoryIndex: any, itemIndex: any): Observable<QdFilterItem>;
11526
11544
  getMinDate$(filterId: any, categoryIndex: any, itemIndex: any): Observable<string | undefined>;
@@ -11540,6 +11558,7 @@ declare class QdFilterService {
11540
11558
  selectFilterDataById$(filterId: any): Observable<QdFilterCategory[]>;
11541
11559
  selectHasActiveCategory$(filterId: any): Observable<boolean>;
11542
11560
  getCategoryById$(filterId: any, categoryIndex: any): Observable<any>;
11561
+ getItemsLoading$(filterId: any, categoryIndex: any): Observable<boolean>;
11543
11562
  getFilterCategoryValue$(filterId: any, categoryIndex: any): Observable<any>;
11544
11563
  /**
11545
11564
  * Action dispatcher
@@ -11555,6 +11574,9 @@ declare class QdFilterService {
11555
11574
  resetEmissionReplaySubjects(filterId: any): void;
11556
11575
  setCategoryFilter(filterId: any, categoryIndex: number, filter: string): void;
11557
11576
  resetCategoryFilter(filterId: string, categoryIndex: number): void;
11577
+ clearCategorySelection(filterId: string, categoryIndex: number): void;
11578
+ setItemsLoading(filterId: string, categoryIndex: number, loading: boolean): void;
11579
+ private getItemsLoadingSubject;
11558
11580
  private getQueryStringSubject;
11559
11581
  private getFilterUrlParameterSubject;
11560
11582
  private getPostBodySubject;
@@ -11563,43 +11585,123 @@ declare class QdFilterService {
11563
11585
  }
11564
11586
 
11565
11587
  /**
11566
- * The **QdFilter** is responsible for the filtering of data.
11588
+ * **QdFilterComponent** lets users build and apply a filter with several categories over a data set.
11589
+ *
11590
+ * #### **Features**
11591
+ *
11592
+ * - **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.
11593
+ * - **Outputs**: react to the applied selection through the query-string and post-body outputs, or read the current selection at any time.
11594
+ * - **Multi-staging**: chain categories so one stage loads its items from the selection of another.
11595
+ * - **URL sync**: the selection is kept in the URL, so a view can be shared, bookmarked, and reopened.
11596
+ *
11597
+ * #### **Quick start**
11598
+ *
11599
+ * **1. Add the filter to the template**
11600
+ *
11601
+ * ```html
11602
+ * <qd-filter
11603
+ * [filterData]="myFilterConfig"
11604
+ * (queryStringOutput)="callBackendWithQueryString($event)"
11605
+ * (postBodyOutput)="callBackendWithResultObject($event)"
11606
+ * ></qd-filter>
11607
+ * ```
11608
+ *
11609
+ * **2. Define the config in your component**
11610
+ *
11611
+ * ```typescript
11612
+ * myFilterConfig: QdFilterConfigData = {
11613
+ * categories: [
11614
+ * {
11615
+ * type: 'singleSelect',
11616
+ * category: 'controlObject',
11617
+ * i18n: 'i18n.my.category.controlObject',
11618
+ * items: [
11619
+ * { item: 'vehicle', i18n: 'i18n.my.item.vehicle', active: true },
11620
+ * { item: 'article', i18n: 'i18n.my.item.article' }
11621
+ * ],
11622
+ * filter: true
11623
+ * },
11624
+ * {
11625
+ * type: 'multiSelect',
11626
+ * category: 'enrollmentCountry',
11627
+ * i18n: 'i18n.my.category.enrollmentCountry',
11628
+ * items: [
11629
+ * { item: 'de', i18n: 'i18n.my.item.de' },
11630
+ * { item: 'ch', i18n: 'i18n.my.item.ch' }
11631
+ * ]
11632
+ * }
11633
+ * ],
11634
+ * uid: 'overview-filter'
11635
+ * };
11636
+ * ```
11637
+ *
11638
+ * The `filterData` input is the only configuration. It holds the categories and the behavior flags.
11639
+ *
11640
+ * #### **Category types**
11641
+ *
11642
+ * A category sets its type to one of: singleSelect, multiSelect, boolean, date, dateTime,
11643
+ * dateRange, dateTimeRange or freeText. Single and multi select show a dropdown, boolean is a
11644
+ * toggle, the date types open a picker (the date-time variants add a time picker), and free text
11645
+ * is a text field applied on enter.
11567
11646
  *
11568
- * Hirarchical structure::
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.
11647
+ * On a single or multi select you can add a filter field above the items with `filter: true` to
11648
+ * narrow the item list. It has no effect on the other types.
11572
11649
  *
11573
- * ### Filter selection ###
11650
+ * #### **Filter selection**
11574
11651
  *
11575
- * To get the applied filters you can listen to the outputs `(queryStringOutput)` and `(postBodyOutput)`.
11576
- * These outputs will be emitted when the filter is triggered. The `(queryStringOutput)` returns
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.
11652
+ * Listen to the outputs to react when the user applies the filter. The query-string output gives
11653
+ * the selection as a URL string (for example filter=...); the post-body output gives it as an
11654
+ * object with the active categories and their values.
11579
11655
  *
11580
- * In addition to the outputs, you also can query the current filter selection with the
11581
- * filter component methods `getCurrentQueryString`, `getCurrentFilterUrlParameterString` and `getCurrentPostBody`.
11656
+ * The outputs fire when the user applies the filter, on reset (only when a preselection exists),
11657
+ * when the last active item is removed, and on load if a category starts active.
11582
11658
  *
11583
- * ### Preserve filter state ###
11659
+ * To read the selection without waiting for an apply, call `getCurrentQueryString` or
11660
+ * `getCurrentPostBody`, or subscribe to `getFilterChanges$` for a continuous stream.
11661
+ *
11662
+ * #### **Multi-staging filters**
11663
+ *
11664
+ * To chain categories, give one a `dependsOn` list and an `itemsResolver`. In `dependsOn` you
11665
+ * name the parent categories. The resolver receives the active parents and returns the items for
11666
+ * this stage.
11667
+ *
11668
+ * ```typescript
11669
+ * const cityCategory: QdDependentFilterCategory = {
11670
+ * type: 'multiSelect',
11671
+ * category: 'city',
11672
+ * i18n: 'i18n.my.category.city',
11673
+ * dependsOn: ['country'],
11674
+ * itemsResolver: ([country]) =>
11675
+ * loadCitiesFor(country.items.filter(item => item.active)),
11676
+ * filter: true
11677
+ * };
11678
+ * ```
11584
11679
  *
11585
- * To preserve the filter state when navigating, for example between detail and overview page, you just have to define
11586
- * a uid in the filter data config.
11680
+ * The stage appears once every parent has an active item. While its items load, the open
11681
+ * dropdown shows a loading text instead of the list. If the resolver returns nothing, the list
11682
+ * stays empty. Multi-staging works only for single and multi select categories.
11587
11683
  *
11588
- * ### Multi Staging Filters
11684
+ * #### **URL synchronization**
11589
11685
  *
11590
- * To build a dependency chain of filters you can use the `dependsOn` property of a filter that depends on
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.
11686
+ * The filter keeps its selection in the URL filter parameter: it is saved when the selection
11687
+ * changes and read back when the page opens, so a user can share or bookmark the URL and return
11688
+ * to the same filter.
11595
11689
  *
11596
- * If the items resolver has not been called yet or when it returns an empty array of items,
11597
- * the corresponding filter stage won't be rendered.
11690
+ * This is on by default. With more than one filter in a view, only one may own the URL, so set
11691
+ * `connectWithRouter` to false on every other filter.
11598
11692
  *
11599
- * #### Support
11693
+ * #### **Preserve filter state**
11600
11694
  *
11601
- * Multi Staging Filters only work for `singleSelect` and `multiSelect` filters.
11695
+ * Give the config a stable `uid` to keep the selection while the user moves around the app, for
11696
+ * example from an overview to a detail page and back. The selection is restored the next time a
11697
+ * filter with the same `uid` is shown.
11602
11698
  *
11699
+ * #### **Reset behavior**
11700
+ *
11701
+ * An item set to active is a preselection. The reset button reads "Reset" when there is no
11702
+ * preselection, and "Back to preselection" when the config starts with active items. It restores
11703
+ * the initial state. With instant filtering (`isInstantFiltering`) the apply and reset buttons
11704
+ * are hidden and the filter applies on every change.
11603
11705
  */
11604
11706
  declare class QdFilterComponent implements OnInit, OnChanges, OnDestroy {
11605
11707
  readonly filterService: QdFilterService;
@@ -11846,6 +11948,7 @@ declare class QdFilterItemDateComponent implements OnInit, OnDestroy {
11846
11948
  clickTimePlaceholder: EventEmitter<boolean>;
11847
11949
  testId: string;
11848
11950
  get dataTestId(): string;
11951
+ private datepicker?;
11849
11952
  datepickerConfig: QdFormDatepickerConfiguration;
11850
11953
  item: Date;
11851
11954
  private _destroyed$;
@@ -11853,36 +11956,12 @@ declare class QdFilterItemDateComponent implements OnInit, OnDestroy {
11853
11956
  ngOnDestroy(): void;
11854
11957
  handleDateChange(date: Date): void;
11855
11958
  handleClickTimePlaceholder($event: boolean): void;
11959
+ open(): void;
11856
11960
  private subscribeGetItem;
11857
11961
  static ɵfac: i0.ɵɵFactoryDeclaration<QdFilterItemDateComponent, never>;
11858
11962
  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
11963
  }
11860
11964
 
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
11965
  declare class QdFilterItemDateRangeComponent implements OnInit, OnDestroy {
11887
11966
  private readonly filterService;
11888
11967
  filterId: string;
@@ -11896,6 +11975,8 @@ declare class QdFilterItemDateRangeComponent implements OnInit, OnDestroy {
11896
11975
  private _destroyed$;
11897
11976
  get itemClassName(): string;
11898
11977
  get dataTestId(): string;
11978
+ private datepicker?;
11979
+ open(): void;
11899
11980
  get minDate$(): Observable<string | undefined>;
11900
11981
  get maxDate$(): Observable<string | undefined>;
11901
11982
  ngOnInit(): void;
@@ -11909,6 +11990,32 @@ declare class QdFilterItemDateRangeComponent implements OnInit, OnDestroy {
11909
11990
  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
11991
  }
11911
11992
 
11993
+ declare class QdFilterItemDateRangeCategoryComponent implements OnInit {
11994
+ private readonly filterService;
11995
+ filterId: string;
11996
+ categoryIndex: number;
11997
+ testId: string;
11998
+ timePickerConfig?: QdFormTimepickerConfiguration;
11999
+ i18n$: Observable<string>;
12000
+ fromItem$: Observable<QdFilterItem>;
12001
+ fromItemIndex: number;
12002
+ fromItemTimePickerConfig: QdFormTimepickerConfiguration;
12003
+ fromItemTimePlaceholderClicked: boolean;
12004
+ untilItem$: Observable<QdFilterItem>;
12005
+ untilItemIndex: number;
12006
+ untilItemTimePickerConfig: QdFormTimepickerConfiguration;
12007
+ untilItemTimePlaceholderClicked: boolean;
12008
+ ngOnInit(): void;
12009
+ openItem(itemRef: QdFilterItemDateRangeComponent, event: Event): void;
12010
+ removeItem(itemIndex: any): void;
12011
+ handleFromTimePlaceholderClicked($event: boolean): void;
12012
+ handleUntilTimePlaceholderClicked($event: boolean): void;
12013
+ private setCategoryI18n;
12014
+ private setFromItem;
12015
+ static ɵfac: i0.ɵɵFactoryDeclaration<QdFilterItemDateRangeCategoryComponent, never>;
12016
+ 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>;
12017
+ }
12018
+
11912
12019
  declare class QdFilterItemFreeTextComponent implements OnInit, OnDestroy {
11913
12020
  private readonly filterService;
11914
12021
  filterId: string;
@@ -11921,6 +12028,7 @@ declare class QdFilterItemFreeTextComponent implements OnInit, OnDestroy {
11921
12028
  i18n: any;
11922
12029
  get dataTestId(): string;
11923
12030
  get value(): string;
12031
+ inputValue: string;
11924
12032
  private _destroyed$;
11925
12033
  ngOnInit(): void;
11926
12034
  ngOnDestroy(): void;
@@ -11931,8 +12039,14 @@ declare class QdFilterItemFreeTextComponent implements OnInit, OnDestroy {
11931
12039
  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
12040
  }
11933
12041
 
12042
+ interface QdFilterItemEntry {
12043
+ item: QdFilterItem;
12044
+ itemIndex: number;
12045
+ }
11934
12046
  declare class QdFilterItemSelectCategoryComponent implements OnInit {
11935
12047
  private readonly filterService;
12048
+ private readonly breakpointService;
12049
+ readonly isMobile$: Observable<boolean>;
11936
12050
  filterId: string;
11937
12051
  categoryIndex: number;
11938
12052
  testId: string;
@@ -11944,10 +12058,18 @@ declare class QdFilterItemSelectCategoryComponent implements OnInit {
11944
12058
  items: QdFilterItem[];
11945
12059
  dependsOn: string[];
11946
12060
  showSelectButton$: Observable<boolean>;
12061
+ itemsLoading$: Observable<boolean>;
11947
12062
  positionStrategy: ConnectedPosition[];
11948
12063
  maxFlyoutHeight: number;
11949
12064
  private _destroyRef;
12065
+ private frozenSelectedKeys;
12066
+ private frozenUnselectedKeys;
11950
12067
  get closeButton(): boolean;
12068
+ get activeItemCount(): number;
12069
+ get selectedDropdownEntries(): QdFilterItemEntry[];
12070
+ get unselectedDropdownEntries(): QdFilterItemEntry[];
12071
+ get showSelectedSeparator(): boolean;
12072
+ get hasNoVisibleItems(): boolean;
11951
12073
  get buttonClassName(): string;
11952
12074
  get layerContentClassName(): string;
11953
12075
  get filterCategoryValue$(): Observable<string>;
@@ -11956,9 +12078,14 @@ declare class QdFilterItemSelectCategoryComponent implements OnInit {
11956
12078
  onLayerClosed(): void;
11957
12079
  closeLayer(): void;
11958
12080
  close(itemIndex: string): void;
12081
+ clearAll(): void;
12082
+ trackByItem(_index: number, entry: QdFilterItemEntry): string;
12083
+ private freezeDropdownOrder;
12084
+ private toEntries;
11959
12085
  changeValue($event: string): void;
11960
12086
  private initCategorySubscription;
11961
12087
  private initItemsSubscription;
12088
+ private haveSameItemKeys;
11962
12089
  private initShowSelectButton;
11963
12090
  static ɵfac: i0.ɵɵFactoryDeclaration<QdFilterItemSelectCategoryComponent, never>;
11964
12091
  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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quadrel-enterprise-ui/framework",
3
- "version": "20.26.2",
3
+ "version": "20.27.0",
4
4
  "exports": {
5
5
  "./jest-preset": "./jest-preset.js",
6
6
  "./package.json": {
@@ -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",
@@ -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).",
@@ -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).",
@@ -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).",