@quadrel-enterprise-ui/framework 20.4.1 → 20.6.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
@@ -17,7 +17,7 @@ import { Highlightable, ActiveDescendantKeyManager } from '@angular/cdk/a11y';
17
17
  import * as i39 from 'ngx-editor';
18
18
  import { Editor, Toolbar } from 'ngx-editor';
19
19
  import { Moment as Moment$1 } from 'moment';
20
- import * as i24 from '@ngrx/store';
20
+ import * as i25 from '@ngrx/store';
21
21
  import * as i5$1 from '@angular/cdk/stepper';
22
22
  import { CdkStep, CdkStepper, StepState, CdkStepHeader } from '@angular/cdk/stepper';
23
23
  import * as rxjs_internal_scheduler_AsyncScheduler from 'rxjs/internal/scheduler/AsyncScheduler';
@@ -1524,6 +1524,19 @@ interface QdTablePrimaryAction<T extends string> {
1524
1524
  * @description Refresh configuration for the table after the action completes.
1525
1525
  */
1526
1526
  refresh?: QdTableRefreshConfig;
1527
+ /**
1528
+ * @description Highlights the visited row when the user returns to the table.
1529
+ *
1530
+ * When enabled, the table remembers which row triggered this action.
1531
+ * Upon revisiting the table, that row is briefly highlighted to help the user regain orientation.
1532
+ *
1533
+ * **Requirements:**
1534
+ * - A `uid` must be set on the table configuration to persist the state across navigation.
1535
+ * - Set `trackRowBy` on the table config or provide a `uid` on each row for reliable identification.
1536
+ *
1537
+ * @default false
1538
+ */
1539
+ highlightOnRevisit?: boolean;
1527
1540
  }
1528
1541
  /**
1529
1542
  * @description Defines a secondary action that is shown in the menu. Can be disabled.
@@ -1553,6 +1566,19 @@ interface QdTableSecondaryAction<T extends string> {
1553
1566
  * @description Refresh configuration for the table after the action completes.
1554
1567
  */
1555
1568
  refresh?: QdTableRefreshConfig;
1569
+ /**
1570
+ * @description Highlights the visited row when the user returns to the table.
1571
+ *
1572
+ * When enabled, the table remembers which row triggered this action.
1573
+ * Upon revisiting the table, that row is briefly highlighted to help the user regain orientation.
1574
+ *
1575
+ * **Requirements:**
1576
+ * - A `uid` must be set on the table configuration to persist the state across navigation.
1577
+ * - Set `trackRowBy` on the table config or provide a `uid` on each row for reliable identification.
1578
+ *
1579
+ * @default false
1580
+ */
1581
+ highlightOnRevisit?: boolean;
1556
1582
  /**
1557
1583
  * @description Controls in which operation mode this action is shown. May be set by the Quadrel Framework ('edit' or 'view').
1558
1584
  *
@@ -1603,8 +1629,8 @@ interface QdTableConfigSelection<T extends string> {
1603
1629
  */
1604
1630
  type?: QdTableConfigSelectionType;
1605
1631
  /**
1606
- * @description Configure the rows that are initially selected. You can indicate a row by its uid or its index.
1607
- * The uids can be defined in the table data row objects.
1632
+ * @description Configure the rows that are initially selected.
1633
+ * Rows can be identified by the `trackRowBy` function result, `uid`, or index.
1608
1634
  *
1609
1635
  * * @default: []
1610
1636
  */
@@ -3981,6 +4007,17 @@ interface QdTableConfig<T extends string> {
3981
4007
  * additional events to ensure that the displayed data remains up-to-date.
3982
4008
  */
3983
4009
  refreshingEvents?: QdTableOptionalRefreshingEventTypes[];
4010
+ /**
4011
+ * @description Specifies a function to derive the row identity for features like selection and highlightOnRevisit.
4012
+ *
4013
+ * When set, the function is called with the row data to produce a unique identifier.
4014
+ * The returned value **must be unique** across all rows in the table.
4015
+ *
4016
+ * Fallback chain: `trackRowBy(row)` → `row.uid` → `rowIndex`
4017
+ *
4018
+ * @example trackRowBy: row => row.reference
4019
+ */
4020
+ trackRowBy?: (row: QdTableDataRow<T>) => string | number;
3984
4021
  /**
3985
4022
  * @description Sets a unique identifier for the table. Used as key to hold in NgRx store.
3986
4023
  *
@@ -10904,6 +10941,7 @@ declare class QdFilterItemSelectCategoryComponent implements OnInit {
10904
10941
  filterId: string;
10905
10942
  categoryIndex: number;
10906
10943
  testId: string;
10944
+ popoverDirective: QdPopoverOnClickDirective;
10907
10945
  open: boolean;
10908
10946
  type: 'singleSelect' | 'multiSelect';
10909
10947
  i18n: string;
@@ -10911,14 +10949,17 @@ declare class QdFilterItemSelectCategoryComponent implements OnInit {
10911
10949
  items: QdFilterItem[];
10912
10950
  dependsOn: string[];
10913
10951
  showSelectButton$: Observable<boolean>;
10952
+ positionStrategy: ConnectedPosition[];
10953
+ maxFlyoutHeight: number;
10914
10954
  private _destroyRef;
10915
- handleClickClose($event: MouseEvent): void;
10916
10955
  get closeButton(): boolean;
10917
10956
  get buttonClassName(): string;
10918
- get categoryClassName(): string;
10957
+ get layerContentClassName(): string;
10919
10958
  get filterCategoryValue$(): Observable<string>;
10920
10959
  ngOnInit(): void;
10921
- toggleLayer(): void;
10960
+ onLayerOpened(): void;
10961
+ onLayerClosed(): void;
10962
+ closeLayer(): void;
10922
10963
  close(itemIndex: string): void;
10923
10964
  changeValue($event: string): void;
10924
10965
  private initCategorySubscription;
@@ -10969,7 +11010,7 @@ declare class QdFilterItemSingleSelectComponent implements OnInit, OnDestroy {
10969
11010
 
10970
11011
  declare class QdFilterModule {
10971
11012
  static ɵfac: i0.ɵɵFactoryDeclaration<QdFilterModule, never>;
10972
- static ɵmod: i0.ɵɵNgModuleDeclaration<QdFilterModule, [typeof LocaleDatePipe, typeof QdFilterComponent, typeof QdFilterCategoryComponent, typeof QdFilterCategoryBooleanComponent, typeof QdFilterItemBooleanComponent, typeof QdFilterItemDateCategoryComponent, typeof QdFilterItemDateComponent, typeof QdFilterItemDateRangeCategoryComponent, typeof QdFilterItemDateRangeComponent, typeof QdFilterItemFreeTextCategoryComponent, typeof QdFilterItemFreeTextComponent, typeof QdFilterItemSelectCategoryComponent, typeof QdFilterItemMultiSelectComponent, typeof QdFilterItemSingleSelectComponent], [typeof i2.CommonModule, typeof i31.FormsModule, typeof i5.TranslateModule, typeof QdButtonModule, typeof QdChipModule, typeof QdCoreModule, typeof QdFormModule, typeof QdIconModule, typeof QdTooltipModule, typeof i24.StoreFeatureModule], [typeof QdFilterComponent]>;
11013
+ static ɵmod: i0.ɵɵNgModuleDeclaration<QdFilterModule, [typeof LocaleDatePipe, typeof QdFilterComponent, typeof QdFilterCategoryComponent, typeof QdFilterCategoryBooleanComponent, typeof QdFilterItemBooleanComponent, typeof QdFilterItemDateCategoryComponent, typeof QdFilterItemDateComponent, typeof QdFilterItemDateRangeCategoryComponent, typeof QdFilterItemDateRangeComponent, typeof QdFilterItemFreeTextCategoryComponent, typeof QdFilterItemFreeTextComponent, typeof QdFilterItemSelectCategoryComponent, typeof QdFilterItemMultiSelectComponent, typeof QdFilterItemSingleSelectComponent], [typeof i2.CommonModule, typeof i31.FormsModule, typeof i5.TranslateModule, typeof QdButtonModule, typeof QdChipModule, typeof QdCoreModule, typeof QdFormModule, typeof QdIconModule, typeof QdPopoverModule, typeof QdTooltipModule, typeof i25.StoreFeatureModule], [typeof QdFilterComponent]>;
10973
11014
  static ɵinj: i0.ɵɵInjectorDeclaration<QdFilterModule>;
10974
11015
  }
10975
11016
 
@@ -13796,7 +13837,7 @@ declare class QdSectionToolbarActionComponent implements OnInit, OnDestroy {
13796
13837
 
13797
13838
  declare class QdSearchModule {
13798
13839
  static ɵfac: i0.ɵɵFactoryDeclaration<QdSearchModule, never>;
13799
- static ɵmod: i0.ɵɵNgModuleDeclaration<QdSearchModule, [typeof QdSearchComponent], [typeof i2.CommonModule, typeof i5.TranslateModule, typeof i24.StoreFeatureModule, typeof QdButtonModule, typeof QdFormModule, typeof QdIconModule, typeof QdTooltipModule], [typeof QdSearchComponent]>;
13840
+ static ɵmod: i0.ɵɵNgModuleDeclaration<QdSearchModule, [typeof QdSearchComponent], [typeof i2.CommonModule, typeof i5.TranslateModule, typeof i25.StoreFeatureModule, typeof QdButtonModule, typeof QdFormModule, typeof QdIconModule, typeof QdTooltipModule], [typeof QdSearchComponent]>;
13800
13841
  static ɵinj: i0.ɵɵInjectorDeclaration<QdSearchModule>;
13801
13842
  }
13802
13843
 
@@ -13901,6 +13942,7 @@ interface QdTableState<T extends string> {
13901
13942
  requestState?: QdTableRequestState;
13902
13943
  connectors?: QdTableConnector[];
13903
13944
  connectorCriteria?: QdTableConnectorCriteria;
13945
+ lastVisitedRowIdentifier?: QdTableRowIdentifier;
13904
13946
  }
13905
13947
  interface QdTablePaginatorCurrentPage {
13906
13948
  start: number;
@@ -14188,6 +14230,7 @@ declare class QdTableComponent<T extends string> implements OnInit, OnChanges, O
14188
14230
  private initRefresh;
14189
14231
  private triggerRefresh;
14190
14232
  private validateConfig;
14233
+ private hasHighlightOnRevisit;
14191
14234
  /**
14192
14235
  * @description Can be deleted when the property "mainColumnNotFillingWidth" is dropped.
14193
14236
  *
@@ -14605,17 +14648,22 @@ declare class QdScrollToPaginationDirective<T extends string> implements OnInit,
14605
14648
  static ɵdir: i0.ɵɵDirectiveDeclaration<QdScrollToPaginationDirective<any>, "[qdScrollToPagination]", never, {}, {}, never, never, false, never>;
14606
14649
  }
14607
14650
 
14608
- declare class QdTableBodyComponent<T extends string> implements OnDestroy {
14651
+ declare class QdTableBodyComponent<T extends string> implements OnInit, OnDestroy {
14609
14652
  private tableStoreService;
14610
14653
  private resolverService;
14654
+ private cdr;
14611
14655
  config: QdTableConfig<T>;
14612
14656
  data: QdTableDataRow<T>[];
14613
14657
  testId?: string;
14614
14658
  isLoading$: Observable<boolean>;
14659
+ highlightedRowIdentifier: QdTableRowIdentifier | undefined;
14615
14660
  private _primaryActionRefreshSubscription?;
14616
14661
  constructor();
14662
+ ngOnInit(): void;
14617
14663
  ngOnDestroy(): void;
14664
+ isLastVisitedRow(rowData: QdTableDataRow<T>, rowIndex: number): boolean;
14618
14665
  primaryAction(rowData: QdTableDataRow<T>, index: number): void;
14666
+ private initHighlight;
14619
14667
  private triggerRefresh;
14620
14668
  static ɵfac: i0.ɵɵFactoryDeclaration<QdTableBodyComponent<any>, never>;
14621
14669
  static ɵcmp: i0.ɵɵComponentDeclaration<QdTableBodyComponent<any>, "[qd-table-body]", never, { "config": { "alias": "config"; "required": false; }; "data": { "alias": "data"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, {}, never, never, false, never>;
@@ -14756,6 +14804,7 @@ declare class QdTableRowComponent<T extends string> implements OnInit {
14756
14804
  declare class QdTableRowSelectionComponent<T extends string> {
14757
14805
  private rowSelectionService;
14758
14806
  rowIndex: QdTableRowIndex;
14807
+ rowData: QdTableDataRow<T>;
14759
14808
  testId: string;
14760
14809
  get dataTestId(): string;
14761
14810
  get selectionType(): string;
@@ -14764,7 +14813,7 @@ declare class QdTableRowSelectionComponent<T extends string> {
14764
14813
  stopPropagation(event: Event): void;
14765
14814
  handleChange(event: Event): void;
14766
14815
  static ɵfac: i0.ɵɵFactoryDeclaration<QdTableRowSelectionComponent<any>, never>;
14767
- static ɵcmp: i0.ɵɵComponentDeclaration<QdTableRowSelectionComponent<any>, "[qd-table-row-selection]", never, { "rowIndex": { "alias": "rowIndex"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, {}, never, never, false, never>;
14816
+ static ɵcmp: i0.ɵɵComponentDeclaration<QdTableRowSelectionComponent<any>, "[qd-table-row-selection]", never, { "rowIndex": { "alias": "rowIndex"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, {}, never, never, false, never>;
14768
14817
  }
14769
14818
 
14770
14819
  declare class QdTableSortComponent<T extends string> implements OnInit, OnDestroy {
@@ -15013,13 +15062,13 @@ declare class QdTreeRowActionsSecondaryMenuComponent<T extends string> implement
15013
15062
 
15014
15063
  declare class QdTreeModule {
15015
15064
  static ɵfac: i0.ɵɵFactoryDeclaration<QdTreeModule, never>;
15016
- static ɵmod: i0.ɵɵNgModuleDeclaration<QdTreeModule, [typeof QdTreeComponent, typeof QdTreeHeadComponent, typeof QdTreeBodyComponent, typeof QdTreeRowComponent, typeof QdTreeEmptyStateComponent, typeof QdTreeRowActionsSecondaryMenuComponent], [typeof i2.CommonModule, typeof i5.TranslateModule, typeof i24.StoreFeatureModule, typeof QdButtonModule, typeof QdChipModule, typeof QdDataFacetsModule, typeof QdIconModule, typeof QdPopoverModule, typeof QdStatusIndicatorModule, typeof QdSpinnerModule, typeof QdTooltipModule], [typeof QdTreeComponent]>;
15065
+ static ɵmod: i0.ɵɵNgModuleDeclaration<QdTreeModule, [typeof QdTreeComponent, typeof QdTreeHeadComponent, typeof QdTreeBodyComponent, typeof QdTreeRowComponent, typeof QdTreeEmptyStateComponent, typeof QdTreeRowActionsSecondaryMenuComponent], [typeof i2.CommonModule, typeof i5.TranslateModule, typeof i25.StoreFeatureModule, typeof QdButtonModule, typeof QdChipModule, typeof QdDataFacetsModule, typeof QdIconModule, typeof QdPopoverModule, typeof QdStatusIndicatorModule, typeof QdSpinnerModule, typeof QdTooltipModule], [typeof QdTreeComponent]>;
15017
15066
  static ɵinj: i0.ɵɵInjectorDeclaration<QdTreeModule>;
15018
15067
  }
15019
15068
 
15020
15069
  declare class QdTableModule {
15021
15070
  static ɵfac: i0.ɵɵFactoryDeclaration<QdTableModule, never>;
15022
- static ɵmod: i0.ɵɵNgModuleDeclaration<QdTableModule, [typeof QdScrollToPaginationDirective, typeof QdTableBodyComponent, typeof QdTableComponent, typeof QdTableEmptyStateComponent, typeof QdTableHeadComponent, typeof QdTablePaginatorComponent, typeof QdTablePaginatorPageSizeComponent, typeof QdTablePaginatorPageSizeDirective, typeof QdTableRowActionsSecondaryMenuComponent, typeof QdTableRowComponent, typeof QdTableRowSelectionComponent, typeof QdTableSortComponent], [typeof i2.CommonModule, typeof i5.TranslateModule, typeof i24.StoreFeatureModule, typeof QdButtonModule, typeof QdChipModule, typeof QdDataFacetsModule, typeof QdIconModule, typeof QdPopoverModule, typeof QdStatusIndicatorModule, typeof QdSpinnerModule, typeof QdTooltipModule, typeof QdTreeModule], [typeof QdTableComponent, typeof QdTreeComponent]>;
15071
+ static ɵmod: i0.ɵɵNgModuleDeclaration<QdTableModule, [typeof QdScrollToPaginationDirective, typeof QdTableBodyComponent, typeof QdTableComponent, typeof QdTableEmptyStateComponent, typeof QdTableHeadComponent, typeof QdTablePaginatorComponent, typeof QdTablePaginatorPageSizeComponent, typeof QdTablePaginatorPageSizeDirective, typeof QdTableRowActionsSecondaryMenuComponent, typeof QdTableRowComponent, typeof QdTableRowSelectionComponent, typeof QdTableSortComponent], [typeof i2.CommonModule, typeof i5.TranslateModule, typeof i25.StoreFeatureModule, typeof QdButtonModule, typeof QdChipModule, typeof QdDataFacetsModule, typeof QdIconModule, typeof QdPopoverModule, typeof QdStatusIndicatorModule, typeof QdSpinnerModule, typeof QdTooltipModule, typeof QdTreeModule], [typeof QdTableComponent, typeof QdTreeComponent]>;
15023
15072
  static ɵinj: i0.ɵɵInjectorDeclaration<QdTableModule>;
15024
15073
  }
15025
15074
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quadrel-enterprise-ui/framework",
3
- "version": "20.4.1",
3
+ "version": "20.6.0",
4
4
  "exports": {
5
5
  "./jest-preset": "./jest-preset.js",
6
6
  "./package.json": {
@@ -1,3 +1,4 @@
1
1
  @use "components.button";
2
+ @use "components.filter" as components4;
2
3
  @use "components.dialog" as components2;
3
4
  @use "components.grid" as components3;
@@ -0,0 +1,52 @@
1
+ @use "../settings/settings.verticalRythm" as settings2;
2
+ @use "../tools/tools.convertPxToRem" as tools;
3
+ @use "../../../lib/filter/shared/filter.constants" as filter;
4
+
5
+ .qd-filter__category-layer {
6
+ min-width: tools.to-rem(260);
7
+ max-width: tools.to-rem(900);
8
+ padding: settings2.$vertical-spacing-default 0 0;
9
+ border: filter.$filter-border-width solid filter.$filter-open-border-color;
10
+ background: white;
11
+ box-shadow: filter.$filter-category-box-shadow-color filter.$filter-category-box-shadow-size;
12
+
13
+ .qd-filter-form-items__filter {
14
+ margin-bottom: 0;
15
+ }
16
+
17
+ .qd-checkbox__label {
18
+ display: flex;
19
+ height: filter.$filter-item-line-height;
20
+ }
21
+
22
+ .qd-checkbox__indicator,
23
+ .qd-radio-buttons__indicator {
24
+ transform: translateY(-(tools.to-rem(1)));
25
+ }
26
+ }
27
+
28
+ .qd-filter__category-layer-items {
29
+ max-height: filter.$filter-flyout-items-max-height-no-search;
30
+ overflow-y: auto;
31
+ }
32
+
33
+ .qd-filter__category-layer--has-search .qd-filter__category-layer-items {
34
+ max-height: filter.$filter-flyout-items-max-height-with-search;
35
+ }
36
+
37
+ .qd-filter__category-layer-container {
38
+ position: relative;
39
+ }
40
+
41
+ .qd-filter__category-layer-close {
42
+ position: absolute;
43
+ top: settings2.$vertical-spacing-default;
44
+ right: filter.$filter-category-layer-horizontal-margin;
45
+ color: filter.$filter-button-color;
46
+ cursor: pointer;
47
+
48
+ &:hover,
49
+ &:focus {
50
+ color: filter.$filter-button-hover-color;
51
+ }
52
+ }