@annalib/anna-core 38.0.2 → 38.0.3

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.
@@ -4,6 +4,7 @@ export interface IGtTableHeader {
4
4
  headerInfo: IHeaderInfo[];
5
5
  visible: boolean;
6
6
  width: string;
7
+ isFixedGroup?: boolean;
7
8
  rowspan?: number;
8
9
  colspan?: number;
9
10
  rowNumber?: number;
@@ -14,6 +15,20 @@ export type TDCellClass = "CENTRE";
14
15
  export interface IHeaderInfo {
15
16
  name: string;
16
17
  objectKey: string;
18
+ isVisible?: boolean;
19
+ visibleOrder?: number;
20
+ defaultShowTooltipIcon?: boolean;
21
+ defaultFilterConfig?: {
22
+ filter?: FILTERTYPE;
23
+ filterSortObjectKeys?: string[];
24
+ isSortRequired?: boolean[];
25
+ isFilterRequired?: boolean[];
26
+ };
27
+ activeFilterSortObjectKeys?: string[];
28
+ activeIsSortRequired?: boolean[];
29
+ activeIsFilterRequired?: boolean[];
30
+ customizeLabel?: string;
31
+ isChecked?: boolean;
17
32
  actionKey?: string;
18
33
  tooltipKey?: string;
19
34
  isDisabledKey?: string;
@@ -0,0 +1,76 @@
1
+ import { IGtTableHeader } from "../models/anna-non-editable-gt-models";
2
+ import * as i0 from "@angular/core";
3
+ export declare class CustomizableColumnsService {
4
+ /**
5
+ * Applies table preferences by updating table headers visibility and checked state
6
+ * @param tableHeaders - Table headers to update visibility for
7
+ * @param selectedColumnNames - Array of selected column object keys from preferences
8
+ */
9
+ applyColumnPreferences(tableHeaders: IGtTableHeader[], selectedColumnNames: string[]): void;
10
+ /**
11
+ * Ensures a header carries immutable copies of its default filter/tooltip configuration.
12
+ */
13
+ private ensureHeaderDefaultsAreStored;
14
+ /**
15
+ * Checks if a filter configuration has any filter settings
16
+ * @param config - Filter configuration to check
17
+ * @returns True if configuration has filter settings, false otherwise
18
+ */
19
+ private isFilterConfigPopulated;
20
+ /**
21
+ * Applies filter state for a header group based on visible headers and the selected filter header
22
+ * @param headerGroup - Header group to apply filter state to
23
+ * @param visibleHeaders - Array of visible header info
24
+ * @param firstHeaderWithFilter - Visible header with filter configuration
25
+ */
26
+ private updateGroupFilterState;
27
+ /**
28
+ * Checks if a header's filter config has keys that match visible columns
29
+ * @param header - Header to check
30
+ * @param visibleObjectKeys - Set of visible column keys
31
+ * @returns True if header has filter keys for visible columns, false otherwise
32
+ */
33
+ private headerHasVisibleColumnKeys;
34
+ /**
35
+ * Applies filter configuration to header info and updates active filter states
36
+ * @param header - Header info to apply configuration to
37
+ * @param config - Filter configuration to apply (if undefined, clears filter config)
38
+ */
39
+ private applyFilterConfigToHeader;
40
+ /**
41
+ * Keeps filter metadata in sync with the columns that remain visible.
42
+ * @param defaultConfig - Original filter configuration attached to the header
43
+ * @param visibleColumnKeys - Set of column object keys currently rendered
44
+ * @param visibleHeaderCount - Number of headers still visible within the group
45
+ * @param firstVisibleHeaderIndex - Index of the first visible header inside the group
46
+ * @returns Filter configuration aligned with the current visibility state
47
+ */
48
+ private buildFilteredConfig;
49
+ /**
50
+ * Extracts selected (checked) column object keys from table headers
51
+ * @param tableHeaders - Table headers to extract from
52
+ * @returns Array of selected column object keys (only non-fixed columns)
53
+ */
54
+ collectSelectedColumnKeys(tableHeaders: IGtTableHeader[]): string[];
55
+ /**
56
+ * Gets the count of fixed columns in the customizable columns list
57
+ * @param tableHeaders - Table headers to count fixed columns from
58
+ * @returns Number of fixed columns
59
+ */
60
+ countFixedColumns(tableHeaders: IGtTableHeader[]): number;
61
+ /**
62
+ * Checks if visible columns have changed between previous and new headers
63
+ * @param previousHeaders - Previous table headers to compare
64
+ * @param newHeaders - New table headers to compare
65
+ * @returns True if visible columns have changed, false otherwise
66
+ */
67
+ haveVisibleColumnKeysChanged(previousHeaders: IGtTableHeader[], newHeaders: IGtTableHeader[]): boolean;
68
+ /**
69
+ * Extracts all visible object keys from table headers
70
+ * @param headers - Table headers to extract visible keys from
71
+ * @returns Set of visible object keys
72
+ */
73
+ collectVisibleObjectKeys(headers: IGtTableHeader[]): Set<string>;
74
+ static ɵfac: i0.ɵɵFactoryDeclaration<CustomizableColumnsService, never>;
75
+ static ɵprov: i0.ɵɵInjectableDeclaration<CustomizableColumnsService>;
76
+ }
@@ -3,10 +3,11 @@ import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
3
3
  import { BehaviorSubject } from "rxjs";
4
4
  import { GtColumnIconEmittedData, RatingSellerGroupHierarchy } from "../../../anna-core-shared-lib/models/anna-generic-data-type.model";
5
5
  import { IWeekCalendar } from "../../../anna-core-shared-lib/models/anna-global-dropdown-config.model";
6
- import { EllipsisWithTableTooltip, ICustomizableColumn, IGtGeneralConfig, IGtTableHeader, IHeaderInfo, InnerHTMLTooltipAction, ITimeInputData, ITotalRowInfo } from "../../../anna-core-shared-lib/models/anna-non-editable-gt-models";
6
+ import { EllipsisWithTableTooltip, IGtGeneralConfig, IGtTableHeader, IHeaderInfo, InnerHTMLTooltipAction, ITimeInputData, ITotalRowInfo } from "../../../anna-core-shared-lib/models/anna-non-editable-gt-models";
7
7
  import { AnnaDateTimeFormatService } from "../../../anna-core-shared-lib/services/anna-date-time-format.service";
8
8
  import { AnnaFilterService } from "../../../anna-core-shared-lib/services/anna-filter.service";
9
9
  import { AnnaSortService } from "../../../anna-core-shared-lib/services/anna-sort.service";
10
+ import { CustomizableColumnsService } from "../../../anna-core-shared-lib/services/customizable-columns.service";
10
11
  import * as i0 from "@angular/core";
11
12
  interface TableTooltipType {
12
13
  tooltipTableHeader: string[];
@@ -21,6 +22,7 @@ export declare class AnnaNonEditableGenericTableComponent implements OnInit, OnC
21
22
  annaDateTimeFormatService: AnnaDateTimeFormatService;
22
23
  annaFilterService: AnnaFilterService;
23
24
  modalService: NgbModal;
25
+ private customizableColumnsService;
24
26
  showSkeletonLoading: boolean;
25
27
  tableHeaders: IGtTableHeader[];
26
28
  tableData: any[];
@@ -54,7 +56,6 @@ export declare class AnnaNonEditableGenericTableComponent implements OnInit, OnC
54
56
  multipleTablesPresent: boolean;
55
57
  showOrHideToggleForTotalRow: boolean;
56
58
  enableCustomizableColumns: boolean;
57
- customizableColumnsList: ICustomizableColumn[];
58
59
  toggleCheckbox: EventEmitter<any>;
59
60
  toggleRowCheckbox: EventEmitter<any>;
60
61
  toggleHeaderCheckbox: EventEmitter<any>;
@@ -180,7 +181,8 @@ export declare class AnnaNonEditableGenericTableComponent implements OnInit, OnC
180
181
  open: () => void;
181
182
  close: () => void;
182
183
  };
183
- customizableColumnsListClone: ICustomizableColumn[];
184
+ tableHeadersClone: IGtTableHeader[];
185
+ private initialCustomizeSelectedColumns;
184
186
  customizeColumnsModalReference: any;
185
187
  customizeColumnsModal: TemplateRef<any>;
186
188
  statusNoteTooltip: any;
@@ -201,7 +203,7 @@ export declare class AnnaNonEditableGenericTableComponent implements OnInit, OnC
201
203
  time: string;
202
204
  }[];
203
205
  selectedRowForTimeEdit: any;
204
- constructor(cdRef: ChangeDetectorRef, annaSortService: AnnaSortService, annaDateTimeFormatService: AnnaDateTimeFormatService, annaFilterService: AnnaFilterService, modalService: NgbModal);
206
+ constructor(cdRef: ChangeDetectorRef, annaSortService: AnnaSortService, annaDateTimeFormatService: AnnaDateTimeFormatService, annaFilterService: AnnaFilterService, modalService: NgbModal, customizableColumnsService: CustomizableColumnsService);
205
207
  ngAfterViewChecked(): void;
206
208
  ngOnInit(): void;
207
209
  detectChanges(): void;
@@ -277,9 +279,17 @@ export declare class AnnaNonEditableGenericTableComponent implements OnInit, OnC
277
279
  timeInputTooltipClickedInTableBody(event: ITimeInputData, rowData: any): void;
278
280
  timeSelectedInTableRow(event: string[][]): void;
279
281
  openCustomizeColumnsModal(): void;
280
- selectUnselectCustomizeColumns(column: ICustomizableColumn): void;
282
+ selectUnselectCustomizeColumns(objectKey: string): void;
283
+ getSelectedColumnsCount(): number;
284
+ private getCustomizableColumnsCount;
285
+ private getSelectedCustomizableColumnsCount;
286
+ isSelectAllDisabled(): boolean;
287
+ isUnselectAllDisabled(): boolean;
288
+ selectAllCustomizeColumns(): void;
289
+ unselectAllCustomizeColumns(): void;
290
+ hasCustomizeSelectionChanged(): boolean;
281
291
  customizeColumns(customize: boolean): void;
282
292
  static ɵfac: i0.ɵɵFactoryDeclaration<AnnaNonEditableGenericTableComponent, never>;
283
- static ɵcmp: i0.ɵɵComponentDeclaration<AnnaNonEditableGenericTableComponent, "anna-core-non-editable-generic-table-lib", never, { "showSkeletonLoading": { "alias": "showSkeletonLoading"; "required": false; }; "tableHeaders": { "alias": "tableHeaders"; "required": true; }; "tableData": { "alias": "tableData"; "required": true; }; "clonedTableData": { "alias": "clonedTableData"; "required": true; }; "gtGeneralConfig": { "alias": "gtGeneralConfig"; "required": true; }; "totalRowInfo": { "alias": "totalRowInfo"; "required": false; }; "gtDimension": { "alias": "gtDimension"; "required": true; }; "extraHeaderRowForAdjustingColumnWidths": { "alias": "extraHeaderRowForAdjustingColumnWidths"; "required": false; }; "tableClass": { "alias": "tableClass"; "required": false; }; "maximumRowsWhichCanBeRenderedWithoutScroll": { "alias": "maximumRowsWhichCanBeRenderedWithoutScroll"; "required": false; }; "fixNumberOfRowsForPopup": { "alias": "fixNumberOfRowsForPopup"; "required": false; }; "fixRowsToRender": { "alias": "fixRowsToRender"; "required": false; }; "includeBorderInTableHeight": { "alias": "includeBorderInTableHeight"; "required": false; }; "downloadInProgress": { "alias": "downloadInProgress"; "required": false; }; "percentDone": { "alias": "percentDone"; "required": false; }; "starredInProgress": { "alias": "starredInProgress"; "required": false; }; "clickableRow": { "alias": "clickableRow"; "required": false; }; "setTableHeightWhenRowSizeIsFixed": { "alias": "setTableHeightWhenRowSizeIsFixed"; "required": false; }; "tableBorderBottomClassRequired": { "alias": "tableBorderBottomClassRequired"; "required": false; }; "hideSomeTds": { "alias": "hideSomeTds"; "required": false; }; "tdsHaveRowSpan": { "alias": "tdsHaveRowSpan"; "required": false; }; "multipleTablesPresent": { "alias": "multipleTablesPresent"; "required": false; }; "showOrHideToggleForTotalRow": { "alias": "showOrHideToggleForTotalRow"; "required": false; }; "enableCustomizableColumns": { "alias": "enableCustomizableColumns"; "required": false; }; "customizableColumnsList": { "alias": "customizableColumnsList"; "required": false; }; }, { "toggleCheckbox": "toggleCheckbox"; "toggleRowCheckbox": "toggleRowCheckbox"; "toggleHeaderCheckbox": "toggleHeaderCheckbox"; "undoIconClicked": "undoIconClicked"; "filterAppliedToTable": "filterAppliedToTable"; "sortingAppliedToTable": "sortingAppliedToTable"; "rowClicked": "rowClicked"; "radioButtonSelected": "radioButtonSelected"; "columnFilterOpened": "columnFilterOpened"; "columnFilterClosed": "columnFilterClosed"; "gtIconClicked": "gtIconClicked"; "gtSVGIconClicked": "gtSVGIconClicked"; "gtTextActionClicked": "gtTextActionClicked"; "gtViewDetailClicked": "gtViewDetailClicked"; "gtInnerHTMLClicked": "gtInnerHTMLClicked"; "downloadSpotDetails": "downloadSpotDetails"; "clickableDataClicked": "clickableDataClicked"; "totalRowIconClicked": "totalRowIconClicked"; "notificationIconHover": "notificationIconHover"; "notificationIconHoverLeave": "notificationIconHoverLeave"; "editableInputEdited": "editableInputEdited"; "radioButtonMessageIconClicked": "radioButtonMessageIconClicked"; "statusNotePopupOpened": "statusNotePopupOpened"; "textPopupOpened": "textPopupOpened"; "digitOnlyInputChanged": "digitOnlyInputChanged"; "singleSelectDropdownValueEmit": "singleSelectDropdownValueEmit"; "timeSelected": "timeSelected"; "totalRowRadioButtonClicked": "totalRowRadioButtonClicked"; "totalRowRadioButtonIconClicked": "totalRowRadioButtonIconClicked"; "columnsCustomized": "columnsCustomized"; "acfiRateInputChanged": "acfiRateInputChanged"; "acfiRateCopyRequested": "acfiRateCopyRequested"; }, never, never, true, never>;
293
+ static ɵcmp: i0.ɵɵComponentDeclaration<AnnaNonEditableGenericTableComponent, "anna-core-non-editable-generic-table-lib", never, { "showSkeletonLoading": { "alias": "showSkeletonLoading"; "required": false; }; "tableHeaders": { "alias": "tableHeaders"; "required": true; }; "tableData": { "alias": "tableData"; "required": true; }; "clonedTableData": { "alias": "clonedTableData"; "required": true; }; "gtGeneralConfig": { "alias": "gtGeneralConfig"; "required": true; }; "totalRowInfo": { "alias": "totalRowInfo"; "required": false; }; "gtDimension": { "alias": "gtDimension"; "required": true; }; "extraHeaderRowForAdjustingColumnWidths": { "alias": "extraHeaderRowForAdjustingColumnWidths"; "required": false; }; "tableClass": { "alias": "tableClass"; "required": false; }; "maximumRowsWhichCanBeRenderedWithoutScroll": { "alias": "maximumRowsWhichCanBeRenderedWithoutScroll"; "required": false; }; "fixNumberOfRowsForPopup": { "alias": "fixNumberOfRowsForPopup"; "required": false; }; "fixRowsToRender": { "alias": "fixRowsToRender"; "required": false; }; "includeBorderInTableHeight": { "alias": "includeBorderInTableHeight"; "required": false; }; "downloadInProgress": { "alias": "downloadInProgress"; "required": false; }; "percentDone": { "alias": "percentDone"; "required": false; }; "starredInProgress": { "alias": "starredInProgress"; "required": false; }; "clickableRow": { "alias": "clickableRow"; "required": false; }; "setTableHeightWhenRowSizeIsFixed": { "alias": "setTableHeightWhenRowSizeIsFixed"; "required": false; }; "tableBorderBottomClassRequired": { "alias": "tableBorderBottomClassRequired"; "required": false; }; "hideSomeTds": { "alias": "hideSomeTds"; "required": false; }; "tdsHaveRowSpan": { "alias": "tdsHaveRowSpan"; "required": false; }; "multipleTablesPresent": { "alias": "multipleTablesPresent"; "required": false; }; "showOrHideToggleForTotalRow": { "alias": "showOrHideToggleForTotalRow"; "required": false; }; "enableCustomizableColumns": { "alias": "enableCustomizableColumns"; "required": false; }; }, { "toggleCheckbox": "toggleCheckbox"; "toggleRowCheckbox": "toggleRowCheckbox"; "toggleHeaderCheckbox": "toggleHeaderCheckbox"; "undoIconClicked": "undoIconClicked"; "filterAppliedToTable": "filterAppliedToTable"; "sortingAppliedToTable": "sortingAppliedToTable"; "rowClicked": "rowClicked"; "radioButtonSelected": "radioButtonSelected"; "columnFilterOpened": "columnFilterOpened"; "columnFilterClosed": "columnFilterClosed"; "gtIconClicked": "gtIconClicked"; "gtSVGIconClicked": "gtSVGIconClicked"; "gtTextActionClicked": "gtTextActionClicked"; "gtViewDetailClicked": "gtViewDetailClicked"; "gtInnerHTMLClicked": "gtInnerHTMLClicked"; "downloadSpotDetails": "downloadSpotDetails"; "clickableDataClicked": "clickableDataClicked"; "totalRowIconClicked": "totalRowIconClicked"; "notificationIconHover": "notificationIconHover"; "notificationIconHoverLeave": "notificationIconHoverLeave"; "editableInputEdited": "editableInputEdited"; "radioButtonMessageIconClicked": "radioButtonMessageIconClicked"; "statusNotePopupOpened": "statusNotePopupOpened"; "textPopupOpened": "textPopupOpened"; "digitOnlyInputChanged": "digitOnlyInputChanged"; "singleSelectDropdownValueEmit": "singleSelectDropdownValueEmit"; "timeSelected": "timeSelected"; "totalRowRadioButtonClicked": "totalRowRadioButtonClicked"; "totalRowRadioButtonIconClicked": "totalRowRadioButtonIconClicked"; "columnsCustomized": "columnsCustomized"; "acfiRateInputChanged": "acfiRateInputChanged"; "acfiRateCopyRequested": "acfiRateCopyRequested"; }, never, never, true, never>;
284
294
  }
285
295
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@annalib/anna-core",
3
- "version": "38.0.2",
3
+ "version": "38.0.3",
4
4
  "peerDependencies": {
5
5
  "@angular-slider/ngx-slider": "^19.0.0",
6
6
  "@angular/common": "^19.2.10",
package/public-api.d.ts CHANGED
@@ -22,6 +22,7 @@ export * from "./lib/anna-core-shared-lib/services/anna-persisting-filter.servic
22
22
  export * from "./lib/anna-core-shared-lib/services/anna-regex-patterns.service";
23
23
  export * from "./lib/anna-core-shared-lib/services/anna-sort.service";
24
24
  export * from "./lib/anna-core-shared-lib/services/anna-spinner-loader.service";
25
+ export * from "./lib/anna-core-shared-lib/services/customizable-columns.service";
25
26
  export * from "./lib/anna-core-shared-lib/services/update-station-id.service";
26
27
  export * from "./lib/anna-generic-table-lib/services/gt-table-related-common-functions.service";
27
28
  export * from "./lib/anna-core-shared-lib/models/anna-generic-data-type.model";
@@ -25,3 +25,16 @@
25
25
  #generic-table-conatiner.table-with-show-hide-total-row-toggle .total-row td:nth-of-type(2) {
26
26
  padding-left: 16px !important;
27
27
  }
28
+
29
+ // Apply padding to first column instead of second column for posting-and-ud-tracking-table
30
+ :host.posting-and-ud-tracking-table {
31
+ #generic-table-conatiner.table-with-show-hide-total-row-toggle .total-row {
32
+ td:nth-of-type(1) {
33
+ padding-left: 16px !important;
34
+ }
35
+
36
+ td:nth-of-type(2) {
37
+ padding-left: 8px !important;
38
+ }
39
+ }
40
+ }