@allsorter/ui-components 0.0.400 → 0.0.404

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.
@@ -62,9 +62,20 @@ export declare class CustomEditorComponent implements OnInit, OnDestroy, AfterVi
62
62
  deleteColumnLeftbtn?: boolean;
63
63
  deleteColumnRightbtn?: boolean;
64
64
  showTable: boolean;
65
+ externalHistory: string[];
66
+ externalRedoStack: string[];
67
+ useExternalHistory: boolean;
65
68
  contentChangeFromQuill: EventEmitter<string>;
66
69
  ApplyAIinQuill: EventEmitter<any>;
67
70
  onAutoBullet: EventEmitter<any>;
71
+ onHistoryChange: EventEmitter<{
72
+ history: string[];
73
+ redoStack: string[];
74
+ }>;
75
+ onUndoRedo: EventEmitter<{
76
+ type: "undo" | "redo";
77
+ content: string;
78
+ }>;
68
79
  toolbarConfig: ToolbarItem[];
69
80
  textFormattingConfig: ToolbarItem[];
70
81
  boldedText: boolean;
@@ -137,12 +148,12 @@ export declare class CustomEditorComponent implements OnInit, OnDestroy, AfterVi
137
148
  clearStylingDropdownTimeout(): void;
138
149
  clearTextFormattingDropdownTimeout(): void;
139
150
  handleClickOutside(event: Event): void;
140
- execCmd(event: MouseEvent, command: string, value?: string | null): void;
151
+ execCmd(event: Event, command: string, value?: string | null): void;
141
152
  updateTagHierarchy(): void;
142
153
  onEditorInput(): void;
143
154
  getActiveState(type: string): boolean;
144
- undo(event: MouseEvent): void;
145
- redo(event: MouseEvent): void;
155
+ undo(event: Event): void;
156
+ redo(event: Event): void;
146
157
  textChange(): void;
147
158
  TextChange(): void;
148
159
  saveHistory(): void;
@@ -183,6 +194,6 @@ export declare class CustomEditorComponent implements OnInit, OnDestroy, AfterVi
183
194
  useAITool(event: MouseEvent): void;
184
195
  useAutoBullet(event: MouseEvent): void;
185
196
  static ɵfac: i0.ɵɵFactoryDeclaration<CustomEditorComponent, never>;
186
- static ɵcmp: i0.ɵɵComponentDeclaration<CustomEditorComponent, "app-custom-editor", never, { "bold": { "alias": "bold"; "required": false; }; "italic": { "alias": "italic"; "required": false; }; "underline": { "alias": "underline"; "required": false; }; "list": { "alias": "list"; "required": false; }; "isVisible": { "alias": "isVisible"; "required": false; }; "dataTestId": { "alias": "dataTestId"; "required": false; }; "showLabels": { "alias": "showLabels"; "required": false; }; "leftLabelText": { "alias": "leftLabelText"; "required": false; }; "rightLabelText": { "alias": "rightLabelText"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "contentFromParent": { "alias": "contentFromParent"; "required": false; }; "editScreenSection": { "alias": "editScreenSection"; "required": false; }; "actionType": { "alias": "actionType"; "required": false; }; "historyControls": { "alias": "historyControls"; "required": false; }; "autobullet": { "alias": "autobullet"; "required": false; }; "skillsBullet": { "alias": "skillsBullet"; "required": false; }; "jsonData": { "alias": "jsonData"; "required": false; }; "formJsonData": { "alias": "formJsonData"; "required": false; }; "editorId": { "alias": "editorId"; "required": false; }; "sectionId": { "alias": "sectionId"; "required": false; }; "actionId": { "alias": "actionId"; "required": false; }; "undoCustom": { "alias": "undoCustom"; "required": false; }; "redoCustom": { "alias": "redoCustom"; "required": false; }; "undoSkill": { "alias": "undoSkill"; "required": false; }; "redoSkill": { "alias": "redoSkill"; "required": false; }; "matOptionAI": { "alias": "matOptionAI"; "required": false; }; "hideTableOption": { "alias": "hideTableOption"; "required": false; }; "hideAutoBulletOption": { "alias": "hideAutoBulletOption"; "required": false; }; "hideAIOption": { "alias": "hideAIOption"; "required": false; }; "showAIButton": { "alias": "showAIButton"; "required": false; }; "insertTablebtn": { "alias": "insertTablebtn"; "required": false; }; "insertRowAbovebtn": { "alias": "insertRowAbovebtn"; "required": false; }; "insertRowBelowbtn": { "alias": "insertRowBelowbtn"; "required": false; }; "insertColumnLeftbtn": { "alias": "insertColumnLeftbtn"; "required": false; }; "insertColumnRightbtn": { "alias": "insertColumnRightbtn"; "required": false; }; "deleteTablebtn": { "alias": "deleteTablebtn"; "required": false; }; "deleteRowAbovebtn": { "alias": "deleteRowAbovebtn"; "required": false; }; "deleteRowBelowbtn": { "alias": "deleteRowBelowbtn"; "required": false; }; "deleteColumnLeftbtn": { "alias": "deleteColumnLeftbtn"; "required": false; }; "deleteColumnRightbtn": { "alias": "deleteColumnRightbtn"; "required": false; }; "showTable": { "alias": "showTable"; "required": false; }; "toolbarConfig": { "alias": "toolbarConfig"; "required": false; }; "textFormattingConfig": { "alias": "textFormattingConfig"; "required": false; }; }, { "contentChangeFromQuill": "contentChangeFromQuill"; "ApplyAIinQuill": "ApplyAIinQuill"; "onAutoBullet": "onAutoBullet"; }, never, never, true, never>;
197
+ static ɵcmp: i0.ɵɵComponentDeclaration<CustomEditorComponent, "app-custom-editor", never, { "bold": { "alias": "bold"; "required": false; }; "italic": { "alias": "italic"; "required": false; }; "underline": { "alias": "underline"; "required": false; }; "list": { "alias": "list"; "required": false; }; "isVisible": { "alias": "isVisible"; "required": false; }; "dataTestId": { "alias": "dataTestId"; "required": false; }; "showLabels": { "alias": "showLabels"; "required": false; }; "leftLabelText": { "alias": "leftLabelText"; "required": false; }; "rightLabelText": { "alias": "rightLabelText"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "contentFromParent": { "alias": "contentFromParent"; "required": false; }; "editScreenSection": { "alias": "editScreenSection"; "required": false; }; "actionType": { "alias": "actionType"; "required": false; }; "historyControls": { "alias": "historyControls"; "required": false; }; "autobullet": { "alias": "autobullet"; "required": false; }; "skillsBullet": { "alias": "skillsBullet"; "required": false; }; "jsonData": { "alias": "jsonData"; "required": false; }; "formJsonData": { "alias": "formJsonData"; "required": false; }; "editorId": { "alias": "editorId"; "required": false; }; "sectionId": { "alias": "sectionId"; "required": false; }; "actionId": { "alias": "actionId"; "required": false; }; "undoCustom": { "alias": "undoCustom"; "required": false; }; "redoCustom": { "alias": "redoCustom"; "required": false; }; "undoSkill": { "alias": "undoSkill"; "required": false; }; "redoSkill": { "alias": "redoSkill"; "required": false; }; "matOptionAI": { "alias": "matOptionAI"; "required": false; }; "hideTableOption": { "alias": "hideTableOption"; "required": false; }; "hideAutoBulletOption": { "alias": "hideAutoBulletOption"; "required": false; }; "hideAIOption": { "alias": "hideAIOption"; "required": false; }; "showAIButton": { "alias": "showAIButton"; "required": false; }; "insertTablebtn": { "alias": "insertTablebtn"; "required": false; }; "insertRowAbovebtn": { "alias": "insertRowAbovebtn"; "required": false; }; "insertRowBelowbtn": { "alias": "insertRowBelowbtn"; "required": false; }; "insertColumnLeftbtn": { "alias": "insertColumnLeftbtn"; "required": false; }; "insertColumnRightbtn": { "alias": "insertColumnRightbtn"; "required": false; }; "deleteTablebtn": { "alias": "deleteTablebtn"; "required": false; }; "deleteRowAbovebtn": { "alias": "deleteRowAbovebtn"; "required": false; }; "deleteRowBelowbtn": { "alias": "deleteRowBelowbtn"; "required": false; }; "deleteColumnLeftbtn": { "alias": "deleteColumnLeftbtn"; "required": false; }; "deleteColumnRightbtn": { "alias": "deleteColumnRightbtn"; "required": false; }; "showTable": { "alias": "showTable"; "required": false; }; "externalHistory": { "alias": "externalHistory"; "required": false; }; "externalRedoStack": { "alias": "externalRedoStack"; "required": false; }; "useExternalHistory": { "alias": "useExternalHistory"; "required": false; }; "toolbarConfig": { "alias": "toolbarConfig"; "required": false; }; "textFormattingConfig": { "alias": "textFormattingConfig"; "required": false; }; }, { "contentChangeFromQuill": "contentChangeFromQuill"; "ApplyAIinQuill": "ApplyAIinQuill"; "onAutoBullet": "onAutoBullet"; "onHistoryChange": "onHistoryChange"; "onUndoRedo": "onUndoRedo"; }, never, never, true, never>;
187
198
  }
188
199
  export {};
@@ -24,6 +24,15 @@ export declare class InputComponent implements ControlValueAccessor, OnInit, OnC
24
24
  searchfilter: boolean;
25
25
  multipleSelect: boolean;
26
26
  options: string[];
27
+ /** Dropdown footer option configuration */
28
+ dropdownFooterOption: {
29
+ label: string;
30
+ value: string;
31
+ icon?: string;
32
+ showFooter?: boolean;
33
+ onClick?: () => void;
34
+ dataTestId?: string;
35
+ } | undefined;
27
36
  size: 'xs' | 'small' | 'base' | 'large' | 'header';
28
37
  types: 'simple' | 'primary' | 'success' | 'error' | 'disabled' | 'plain';
29
38
  tooltip: string;
@@ -53,6 +62,7 @@ export declare class InputComponent implements ControlValueAccessor, OnInit, OnC
53
62
  date: Date;
54
63
  datepicker?: MatDatepicker<any>;
55
64
  }>;
65
+ footerOptionClick: EventEmitter<string>;
56
66
  private onChange;
57
67
  onTouched: () => void;
58
68
  get isDisabled(): boolean;
@@ -69,6 +79,7 @@ export declare class InputComponent implements ControlValueAccessor, OnInit, OnC
69
79
  setDisabledState(isDisabled: boolean): void;
70
80
  onInputChange(value: string): void;
71
81
  onSelectionChange(value: string | string[]): void;
82
+ onFooterOptionClick(event?: Event): void;
72
83
  onSearchInputChange(event: Event): void;
73
84
  onOptionSelected(event: any): void;
74
85
  filterOptions(searchTerm: string): void;
@@ -82,5 +93,5 @@ export declare class InputComponent implements ControlValueAccessor, OnInit, OnC
82
93
  getSizeClass(): string;
83
94
  getCategoryClass(): string;
84
95
  static ɵfac: i0.ɵɵFactoryDeclaration<InputComponent, never>;
85
- static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "al-input", never, { "labelText": { "alias": "labelText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "dataTestId": { "alias": "dataTestId"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "leftIcon": { "alias": "leftIcon"; "required": false; }; "rightIcon": { "alias": "rightIcon"; "required": false; }; "hasDropDown": { "alias": "hasDropDown"; "required": false; }; "dropDown": { "alias": "dropDown"; "required": false; }; "searchfilter": { "alias": "searchfilter"; "required": false; }; "multipleSelect": { "alias": "multipleSelect"; "required": false; }; "options": { "alias": "options"; "required": false; }; "size": { "alias": "size"; "required": false; }; "types": { "alias": "types"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; "matDatepicker": { "alias": "matDatepicker"; "required": false; }; "dateType": { "alias": "dateType"; "required": false; }; }, { "change": "change"; "valueChange": "valueChange"; "onColorChange": "onColorChange"; "monthSelected": "monthSelected"; "yearSelected": "yearSelected"; }, never, never, true, never>;
96
+ static ɵcmp: i0.ɵɵComponentDeclaration<InputComponent, "al-input", never, { "labelText": { "alias": "labelText"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "formControlName": { "alias": "formControlName"; "required": false; }; "dataTestId": { "alias": "dataTestId"; "required": false; }; "type": { "alias": "type"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "error": { "alias": "error"; "required": false; }; "errorMessage": { "alias": "errorMessage"; "required": false; }; "leftIcon": { "alias": "leftIcon"; "required": false; }; "rightIcon": { "alias": "rightIcon"; "required": false; }; "hasDropDown": { "alias": "hasDropDown"; "required": false; }; "dropDown": { "alias": "dropDown"; "required": false; }; "searchfilter": { "alias": "searchfilter"; "required": false; }; "multipleSelect": { "alias": "multipleSelect"; "required": false; }; "options": { "alias": "options"; "required": false; }; "dropdownFooterOption": { "alias": "dropdownFooterOption"; "required": false; }; "size": { "alias": "size"; "required": false; }; "types": { "alias": "types"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; "matDatepicker": { "alias": "matDatepicker"; "required": false; }; "dateType": { "alias": "dateType"; "required": false; }; }, { "change": "change"; "valueChange": "valueChange"; "onColorChange": "onColorChange"; "monthSelected": "monthSelected"; "yearSelected": "yearSelected"; "footerOptionClick": "footerOptionClick"; }, never, never, true, never>;
86
97
  }
@@ -23,6 +23,20 @@ export declare class NewResumeHeaderComponent implements OnInit, OnDestroy, Afte
23
23
  * 2. Otherwise, fall back to `hiddenSection.headerSectionHidden` for backward compatibility.
24
24
  */
25
25
  get isSectionHidden(): boolean;
26
+ /**
27
+ * Returns dynamic styles based on field visibility.
28
+ * Used by extra sections to apply template-driven background colors.
29
+ *
30
+ * Only applies custom styles when fieldVisibility is configured.
31
+ * When section is hidden without fieldVisibility: no custom styles (CSS handles opacity)
32
+ * When field is visible: light background (#ECEDF1)
33
+ * When field is hidden: dark background (#4B4F62)
34
+ *
35
+ * @returns Object with CSS properties for ngStyle binding, or empty object for default CSS
36
+ */
37
+ getDynamicStyles(): {
38
+ [key: string]: string;
39
+ };
26
40
  buttonConfig: HeaderButton[];
27
41
  isLargeScreen: boolean;
28
42
  private resizeListener?;
@@ -33,6 +47,31 @@ export declare class NewResumeHeaderComponent implements OnInit, OnDestroy, Afte
33
47
  showPopOutPanel: boolean;
34
48
  popOutMessage: string;
35
49
  dataTestId?: string;
50
+ /**
51
+ * Field visibility configuration for extra sections.
52
+ * Controls dynamic background color and padding based on template field visibility.
53
+ * When not provided, defaults to visible state (light background).
54
+ */
55
+ fieldVisibility: {
56
+ isVisible: boolean;
57
+ fieldIdentifier?: string;
58
+ };
59
+ /**
60
+ * Index for indexed field checks (e.g., extra-section with esd1, esd2, etc.)
61
+ * Optional - only needed when using indexed field identifiers
62
+ */
63
+ index?: number;
64
+ /**
65
+ * Whether to show a bottom border on the header
66
+ * When true, adds a 1px solid border at the bottom of the header
67
+ */
68
+ showBottomBorder: boolean;
69
+ /**
70
+ * Custom border color for the bottom border
71
+ * When provided, overrides the default color (#D1D3DB)
72
+ * Accepts any valid CSS color value (hex, rgb, named color, etc.)
73
+ */
74
+ borderColor?: string;
36
75
  get shouldShowPopOut(): boolean;
37
76
  /**
38
77
  * Combined state for expand/collapse animation.
@@ -123,5 +162,5 @@ export declare class NewResumeHeaderComponent implements OnInit, OnDestroy, Afte
123
162
  ngAfterViewInit(): void;
124
163
  ngOnDestroy(): void;
125
164
  static ɵfac: i0.ɵɵFactoryDeclaration<NewResumeHeaderComponent, never>;
126
- static ɵcmp: i0.ɵɵComponentDeclaration<NewResumeHeaderComponent, "al-newresumeheader", never, { "title": { "alias": "title"; "required": false; }; "showHeaderCheckbox": { "alias": "showHeaderCheckbox"; "required": false; }; "headerCheckboxChecked": { "alias": "headerCheckboxChecked"; "required": false; }; "configEyeToggle": { "alias": "configEyeToggle"; "required": false; }; "hiddenSection": { "alias": "hiddenSection"; "required": false; }; "buttonConfig": { "alias": "buttonConfig"; "required": false; }; "isLargeScreen": { "alias": "isLargeScreen"; "required": false; }; "popOutButtonLabel": { "alias": "popOutButtonLabel"; "required": false; }; "popOutButtonIcon": { "alias": "popOutButtonIcon"; "required": false; }; "popOutButtonTooltip": { "alias": "popOutButtonTooltip"; "required": false; }; "popOutButtonTooltipPosition": { "alias": "popOutButtonTooltipPosition"; "required": false; }; "showPopOutPanel": { "alias": "showPopOutPanel"; "required": false; }; "popOutMessage": { "alias": "popOutMessage"; "required": false; }; "dataTestId": { "alias": "dataTestId"; "required": false; }; }, { "titleChange": "titleChange"; "sectionToggled": "sectionToggled"; "headerCheckboxChange": "headerCheckboxChange"; "showHideToggleSection": "showHideToggleSection"; "buttonClicked": "buttonClicked"; "popOutButtonClick": "popOutButtonClick"; }, never, ["[header-left]", "[header-center-left]", "[header-center-center]", "[header-center-right]", "[header-right]", "[header-left]", "[header-center-right]", "[header-right]", "*"], true, never>;
165
+ static ɵcmp: i0.ɵɵComponentDeclaration<NewResumeHeaderComponent, "al-newresumeheader", never, { "title": { "alias": "title"; "required": false; }; "showHeaderCheckbox": { "alias": "showHeaderCheckbox"; "required": false; }; "headerCheckboxChecked": { "alias": "headerCheckboxChecked"; "required": false; }; "configEyeToggle": { "alias": "configEyeToggle"; "required": false; }; "hiddenSection": { "alias": "hiddenSection"; "required": false; }; "buttonConfig": { "alias": "buttonConfig"; "required": false; }; "isLargeScreen": { "alias": "isLargeScreen"; "required": false; }; "popOutButtonLabel": { "alias": "popOutButtonLabel"; "required": false; }; "popOutButtonIcon": { "alias": "popOutButtonIcon"; "required": false; }; "popOutButtonTooltip": { "alias": "popOutButtonTooltip"; "required": false; }; "popOutButtonTooltipPosition": { "alias": "popOutButtonTooltipPosition"; "required": false; }; "showPopOutPanel": { "alias": "showPopOutPanel"; "required": false; }; "popOutMessage": { "alias": "popOutMessage"; "required": false; }; "dataTestId": { "alias": "dataTestId"; "required": false; }; "fieldVisibility": { "alias": "fieldVisibility"; "required": false; }; "index": { "alias": "index"; "required": false; }; "showBottomBorder": { "alias": "showBottomBorder"; "required": false; }; "borderColor": { "alias": "borderColor"; "required": false; }; }, { "titleChange": "titleChange"; "sectionToggled": "sectionToggled"; "headerCheckboxChange": "headerCheckboxChange"; "showHideToggleSection": "showHideToggleSection"; "buttonClicked": "buttonClicked"; "popOutButtonClick": "popOutButtonClick"; }, never, ["[header-left]", "[header-center-left]", "[header-center-center]", "[header-center-right]", "[header-right]", "[header-left]", "[header-center-right]", "[header-right]", "*"], true, never>;
127
166
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allsorter/ui-components",
3
- "version": "0.0.400",
3
+ "version": "0.0.404",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.0.0",
6
6
  "@angular/core": "^18.0.0",
@@ -82,7 +82,7 @@
82
82
  <!-- Individual Text Formatting Buttons (Large Containers Only) -->
83
83
  <ng-container *ngIf="!isSmallScreen">
84
84
  <button *ngFor="let item of textFormattingConfig" class="format-button" [class.active]="getActiveState(item.type)"
85
- (onClick)="handleTextFormattingClick($event, item)" [title]="item.title" type="button" [matTooltip]="item.title"
85
+ (click)="handleTextFormattingClick($event, item)" [title]="item.title" type="button" [matTooltip]="item.title"
86
86
  matTooltipPosition="above">
87
87
  <mat-icon *ngIf="isSvgIcon(item.icon)" [svgIcon]="item.icon"
88
88
  [class.active-icon]="getActiveState(item.type)"></mat-icon>
@@ -113,7 +113,7 @@
113
113
  <!-- History Controls (Undo/Redo) -->
114
114
  <div *ngIf="historyControls" class="history-controls">
115
115
  <!-- Undo Button -->
116
- <button class="format-button" (onClick)="execCmd($event, 'undo')" title="Undo" type="button" matTooltip="Undo"
116
+ <button class="format-button" (click)="execCmd($event, 'undo')" title="Undo" type="button" matTooltip="Undo"
117
117
  matTooltipPosition="above">
118
118
  <span class="material-icons" [class.active-icon]="getActiveState('undo')">
119
119
  undo
@@ -121,7 +121,7 @@
121
121
  </button>
122
122
 
123
123
  <!-- Redo Button -->
124
- <button class="format-button" (clionClickck)="execCmd($event, 'redo')" title="Redo" type="button" matTooltip="Redo"
124
+ <button class="format-button" (click)="execCmd($event, 'redo')" title="Redo" type="button" matTooltip="Redo"
125
125
  matTooltipPosition="above">
126
126
  <span class="material-icons" [class.active-icon]="getActiveState('redo')">
127
127
  redo
@@ -131,7 +131,7 @@
131
131
 
132
132
  <!-- Apply AI Button -->
133
133
  <al-button class="apply-ai-button" *ngIf="showAIButton" [labelText]="ApplyAiButton" [buttonType]="'icon-label'"
134
- [color]="'gradient'" [size]="'xs'" [disabled]="isLoadingAI" (onClick)="useAITool($event)"
134
+ [color]="'gradient'" [size]="'xs'" [disabled]="isLoadingAI" (click)="useAITool($event)"
135
135
  [tooltip]="ApplyAiButton" [tooltipPosition]="'above'">
136
136
  </al-button>
137
137
 
@@ -42,6 +42,20 @@
42
42
  [ngModel]="multipleSelect ? selectedValues : value" (selectionChange)="onSelectionChange($event.value)"
43
43
  [placeholder]="placeholder || labelText">
44
44
  <mat-option *ngFor="let option of options" [value]="option">{{ option }}</mat-option>
45
+
46
+ <!-- Footer option -->
47
+ <span *ngIf="dropdownFooterOption?.showFooter">
48
+ <hr class="dropdown-footer-separator m-0">
49
+ <mat-option [value]="dropdownFooterOption.value" (click)="onFooterOptionClick($event)"
50
+ (keydown)="onFooterOptionClick($event)"
51
+ [attr.data-test-id]="dropdownFooterOption.dataTestId || 'option-dropdown-footer'">
52
+ <span style="display: flex; align-items: center; gap: 8px;">
53
+ <img *ngIf="dropdownFooterOption.icon" [src]="dropdownFooterOption.icon"
54
+ style="width: 20px; height: 20px;" [alt]="dropdownFooterOption.label" />
55
+ <span>{{ dropdownFooterOption.label }}</span>
56
+ </span>
57
+ </mat-option>
58
+ </span>
45
59
  </mat-select>
46
60
  </ng-template>
47
61
  </ng-container>
@@ -2,7 +2,15 @@
2
2
  [padding]="'0'" [width]="'100%'"><cdk-accordion class="example-accordion"><cdk-accordion-item
3
3
  #accordionItem="cdkAccordionItem" [expanded]="true" class="example-accordion-item">
4
4
  <div class="example-accordion-item-header" #accordionHeader
5
- [ngClass]="{'header-hidden': isSectionHidden, 'header-with-bottom-margin': !showPopOutPanel}">
5
+ [ngClass]="{
6
+ 'header-hidden': isSectionHidden,
7
+ 'header-hide-sb': (fieldVisibility?.isVisible === false),
8
+ 'header-visible-sb': (fieldVisibility?.isVisible !== false),
9
+ 'header-with-bottom-margin': !showPopOutPanel
10
+ }"
11
+ [ngStyle]="getDynamicStyles()"
12
+ [style.border-bottom]="showBottomBorder ? '2px solid ' + (borderColor || '#D1D3DB') : ''"
13
+ [attr.data-test-id]="dataTestId">
6
14
  <!-- Normal header layout (shows when section is NOT hidden) --><ng-container
7
15
  *ngIf="!isSectionHidden; else hiddenHeaderLayout"><al-responsive-columns [stackAt]="0" [gap]="'12px'"
8
16
  [padding]="'8px 12px'">
@@ -26,6 +34,7 @@
26
34
  <div left>
27
35
  <div class="edit-input-group" [ngClass]="{'input-focused': isInputFocused}">
28
36
  <div class="content_width"><span *ngIf="!isTitleEditing" class="title-text"
37
+ [ngClass]="{ 'title-text-white': fieldVisibility?.isVisible === false }"
29
38
  (click)="onTitleClick()">
30
39
  {{ title || 'Click to edit' }}
31
40
  </span><input *ngIf="isTitleEditing" #titleInput type="text" [(ngModel)]="editedTitle"
@@ -71,13 +80,14 @@
71
80
  [rightWidth]="'32px'">
72
81
  <div left>
73
82
  <div class="edit-input-group hide-header-title">
74
- <div class="content_width"><span class="title-text header-text-turncate">
83
+ <div class="content_width"><span class="title-text header-text-turncate"
84
+ [ngClass]="{ 'title-text-white': fieldVisibility?.isVisible === false }">
75
85
  {{ title }}
76
86
  </span></div>
77
87
  </div>
78
88
  </div>
79
89
  <div center>
80
- <div class="hidden-write">Section hidden</div>
90
+ <div class="hidden-write-sb" [ngClass]="{ 'hidden-write-white-sb': fieldVisibility?.isVisible === false }">Section hidden</div>
81
91
  </div>
82
92
  <div right><ng-content select="[header-center-right]"></ng-content>
83
93
  <!-- Eye icon - uses actual isHidden value from config, always visible --><ng-container
@@ -123,12 +133,13 @@
123
133
  <div class="mat-checkbox-margin align-center"
124
134
  [attr.data-test-id]="isHidden ? 'section-show-eye-div' : 'section-hide-eye-div'"
125
135
  style="display: flex; align-items: center; justify-content: center;"><mat-icon
126
- class="delete-multiple mat-fab.mat-accent eye-icon" [svgIcon]="isHidden ? 'visibility' : 'visibility_off'"
136
+ class="delete-multiple mat-fab.mat-accent eye-icon" [svgIcon]="isHidden ? (fieldVisibility?.isVisible === false ? 'visibility_white' : 'visibility') : (fieldVisibility?.isVisible === false ? 'visibility_off_white' : 'visibility_off')"
127
137
  [matTooltip]="configEyeToggle?.tooltips?.[isHidden ? 'collapse' : 'expand'] || (isHidden ? 'Show Section' : 'Hide Section')"
128
138
  [matTooltipPosition]="configEyeToggle?.tooltips?.position || 'above'"
129
139
  [attr.aria-label]="configEyeToggle?.ariaLabels?.[isHidden ? 'collapsed' : 'expanded'] || (isHidden ? 'Show section' : 'Hide section')"
130
140
  (click)="onEyeIconClick(isHidden, accordionItem, configEyeToggle)"
131
141
  [attr.data-test-id]="isHidden ? 'section-show-eye-icon' : 'section-hide-eye-icon'"
132
- style="cursor: pointer; display: inline-block; width: 24px; height: 24px; font-size: 24px; color: #717793;"
142
+ [style.color]="fieldVisibility?.isVisible === false ? '#fff' : '#717793'"
143
+ style="cursor: pointer; display: inline-block; width: 24px; height: 24px; font-size: 24px;"
133
144
  [style.opacity]="1" [style.visibility]="'visible'"></mat-icon></div>
134
145
  </ng-template>
@@ -474,6 +474,11 @@
474
474
  cursor: pointer;
475
475
  }
476
476
 
477
+ /* White text for dark background */
478
+ .title-text-white {
479
+ color: #fff;
480
+ }
481
+
477
482
  .title-input {
478
483
  font-size: 16px;
479
484
  font-weight: 400;
@@ -588,18 +593,39 @@
588
593
  flex-shrink: 0;
589
594
  }
590
595
 
591
- .hidden-write {
596
+ .hidden-write-sb {
592
597
  color: #a2a6b8;
593
598
  font-weight: 400;
594
599
  font-family: 'Roboto', sans-serif;
595
600
  white-space: nowrap;
596
601
  }
597
602
 
603
+ /* White text for dark background */
604
+ .hidden-write-white-sb {
605
+ color: #fff;
606
+ }
607
+
598
608
  /* Apply reduced opacity to entire header when hidden */
599
609
  .example-accordion-item-header.header-hidden {
600
610
  opacity: 0.7;
601
611
  }
602
612
 
613
+ /**
614
+ * Extra Section Header Styles
615
+ * These classes are used for extra sections to support dynamic background colors
616
+ * based on template field visibility
617
+ */
618
+
619
+ /* Standard header style - visible section with light background */
620
+ .example-accordion-item-header.header-visible-sb {
621
+ transition: background-color 0.2s ease;
622
+ }
623
+
624
+ /* Collapsed header style - hidden section or field with dark background */
625
+ .example-accordion-item-header.header-hide-sb {
626
+ background-color: #4B4F62;
627
+ }
628
+
603
629
  .mat-checkbox-margin {
604
630
  margin-left: 8px;
605
631
  }
@@ -640,4 +666,4 @@
640
666
  // position: relative;
641
667
  // z-index: 1;
642
668
  // }
643
- // }
669
+ // }