@allsorter/ui-components 0.0.365 → 0.0.367

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.
@@ -1 +1 @@
1
- {"version":3,"file":"allsorter-ui-components.mjs","sources":["../../../projects/allsorter-lib/src/lib/allsorter-lib.service.ts","../../../projects/allsorter-lib/src/lib/allsorter-lib.component.ts","../../../projects/allsorter-lib/src/lib/button/button.component.ts","../../../projects/allsorter-lib/src/lib/button/button.component.html","../../../projects/allsorter-lib/src/lib/button/button.module.ts","../../../projects/allsorter-lib/src/lib/input/input.component.ts","../../../projects/allsorter-lib/src/lib/input/input.component.html","../../../projects/allsorter-lib/src/lib/input/input.module.ts","../../../projects/allsorter-lib/src/lib/resume-header/resume-header.component.ts","../../../projects/allsorter-lib/src/lib/resume-header/resume-header.component.html","../../../projects/allsorter-lib/src/lib/resume-header/resume-header.module.ts","../../../projects/allsorter-lib/src/lib/loader/loader.component.ts","../../../projects/allsorter-lib/src/lib/loader/loader.component.html","../../../projects/allsorter-lib/src/lib/loader/loader.module.ts","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.component.ts","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.component.html","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.component.ts","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.component.html","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.module.ts","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.component.ts","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.component.html","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.module.ts","../../../projects/allsorter-lib/src/lib/radio/radio.component.ts","../../../projects/allsorter-lib/src/lib/radio/radio.component.html","../../../projects/allsorter-lib/src/lib/radio/radio.module.ts","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.component.ts","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.component.html","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.module.ts","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/allsorter-lib/src/lib/icon-button/icon-button.component.ts","../../../projects/allsorter-lib/src/lib/icon-button/icon-button.component.html","../../../projects/allsorter-lib/src/lib/ai-apply-bar/ai-apply-bar.component.ts","../../../projects/allsorter-lib/src/lib/ai-apply-bar/ai-apply-bar.component.html","../../../projects/allsorter-lib/src/lib/action-bar-wrapper/action-bar-wrapper.component.ts","../../../projects/allsorter-lib/src/lib/action-bar-wrapper/action-bar-wrapper.component.html","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.component.ts","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.component.html","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.module.ts","../../../projects/allsorter-lib/src/lib/custom-editor/table/table.component.ts","../../../projects/allsorter-lib/src/lib/custom-editor/table/table.component.html","../../../projects/allsorter-lib/src/lib/custom-editor/bullet-utils.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.component.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.component.html","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.module.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor-demo.component.ts","../../../projects/allsorter-lib/src/lib/date-range/date-range.component.ts","../../../projects/allsorter-lib/src/lib/date-range/date-range.component.html","../../../projects/allsorter-lib/src/lib/date-range/date-range.module.ts","../../../projects/allsorter-lib/src/lib/tabs/tabs.component.ts","../../../projects/allsorter-lib/src/lib/tabs/tabs.component.html","../../../projects/allsorter-lib/src/lib/tabs/tabs.module.ts","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.component.ts","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.component.html","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.module.ts","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.component.ts","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.component.html","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.module.ts","../../../projects/allsorter-lib/src/lib/new-typography/new-typography.component.ts","../../../projects/allsorter-lib/src/lib/new-typography/new-typography.component.html","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.module.ts","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.component.ts","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.component.html","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.module.ts","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.component.ts","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.component.html","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.module.ts","../../../projects/allsorter-lib/src/lib/app-toolbar/app-toolbar.component.ts","../../../projects/allsorter-lib/src/lib/app-toolbar/app-toolbar.component.html","../../../projects/allsorter-lib/src/lib/app-toolbar-right/app-toolbar-right.component.ts","../../../projects/allsorter-lib/src/lib/app-toolbar-right/app-toolbar-right.component.html","../../../projects/allsorter-lib/src/lib/app-toolbar-right/app-toolbar-right.module.ts","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.component.ts","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.component.html","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.module.ts","../../../projects/allsorter-lib/src/lib/general-container/colors.constants.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.component.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.component.html","../../../projects/allsorter-lib/src/lib/general-container/general-container.module.ts","../../../projects/allsorter-lib/src/lib/app-toolbar/app-toolbar.module.ts","../../../projects/allsorter-lib/src/public-api.ts","../../../projects/allsorter-lib/src/allsorter-ui-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AllsorterLibService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-allsorter-lib',\n template: `\n <p>\n allsorter-lib works!\n </p>\n `,\n styles: ``\n})\nexport class AllsorterLibComponent {\n\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewChild, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatMenuTrigger } from '@angular/material/menu';\n\n@Component({\n selector: 'al-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule],\n standalone: true,\n})\nexport class ButtonComponent implements OnDestroy, OnChanges {\n /**\n * Returns the typography class to apply. If the consumer passes `fontClass`,\n * that value wins. Otherwise we derive a sensible default based on `size`.\n */\n get effectiveFontClass(): string {\n if (this.fontClass) {\n return this.fontClass;\n }\n switch (this.size) {\n case 'xs':\n return 'font-body-small';\n case 'sm':\n case 'base':\n return 'font-body-medium';\n case 'l':\n case 'xl':\n case 'header':\n return 'font-body-large';\n default:\n return '';\n }\n }\n @Input() state: 'default' | 'hover' | 'pressed' | 'disabled' = 'default';\n /** Button color (blue, green, grey, error, gradient, white, success) */\n @Input() color: 'blue' | 'green' | 'grey' | 'error' | 'gradient' | 'white' | 'success' = 'blue';\n /** DEPRECATED: category -> color */\n @Input() set category(val: string) {\n if (val !== undefined) {\n console.warn('[al-button] \"category\" is deprecated. Use \"color\" instead.');\n this.color = val as any;\n }\n }\n /** Button outline style (true = outlined, false = filled) */\n @Input() outline: boolean = false;\n\n @Input() label: string | undefined = ' '; // Default label\n @Input() arialabel: string | undefined = ' '; // Default label\n @Input() iconOnly: boolean = false; // Toggle for icon-only button\n @Input() leftIcon: string | null | undefined = null;\n @Input() rightIcon: string | null | undefined = null;\n /** Alias input: `icon` maps to `leftIcon` for convenience across types. */\n private _icon: string | null | undefined = null;\n @Input() set icon(value: string | null | undefined) {\n this._icon = value;\n // If provided, mirror into leftIcon so all templates and types pick it up.\n if (value !== undefined) {\n this.leftIcon = value;\n }\n }\n get icon(): string | null | undefined {\n return this._icon;\n }\n /** If true, use outlined style for icons (new name). */\n @Input() iconOutlined: boolean = false;\n /** DEPRECATED: outlined -> iconOutlined (remove next major) */\n @Input() set outlined(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"outlined\" is deprecated. Use \"iconOutlined\" instead.');\n this.iconOutlined = val;\n }\n }\n /** Text size option for label and icons */\n @Input() size: 'header' | 'xs' | 'sm' | 'base' | 'l' | 'xl' = 'base';\n\n /** Visual type of button: icon only circle, icon+label, two icons + label */\n @Input() buttonType: 'icon-circle' | 'icon-label' | 'two-icon-label' | 'dropdown' = 'icon-label';\n\n /** Optional typography class, e.g. 'font-display-large' */\n @Input() fontClass: string = '';\n /** Optional data-test-id for e2e or integration tests */\n @Input() dataTestId: string | undefined;\n\n @Output() onClick = new EventEmitter<Event>(); // Initialize\n @Output() onHover = new EventEmitter<Event>(); // Initialize\n @Output() onMouseLeave = new EventEmitter<Event>(); // Initialize\n\n /** Dropdown items (new). */\n @Input() dropdownItems: Array<{ label: string; value?: any } | string> = [];\n /** DEPRECATED: dropdownOptions -> dropdownItems */\n @Input() set dropdownOptions(opts: Array<{ label: string; value?: any } | string>) {\n if (opts !== undefined) {\n console.warn('[al-button] \"dropdownOptions\" is deprecated. Use \"dropdownItems\" instead.');\n this.dropdownItems = opts;\n }\n }\n /** Enable dropdown behavior. */\n @Input() dropdown: boolean = false;\n /** DEPRECATED: hasDropdown -> dropdown */\n @Input() set hasDropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"hasDropdown\" is deprecated. Use \"dropdown\" instead.');\n this.dropdown = val;\n }\n }\n /** DEPRECATED: isDropdown -> dropdown */\n @Input() set isDropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"isDropdown\" is deprecated. Use \"dropdown\" instead.');\n this.dropdown = val;\n }\n }\n\n /** Emits the selected dropdown option's value */\n @Output() optionSelect = new EventEmitter<any>();\n\n selectOption(option: any) {\n this.optionSelect.emit(option?.value ?? option);\n }\n\n computeGap(): number {\n // Header size uses a tighter 4px gap across all combinations\n if (this.size === 'header') {\n return 4;\n }\n const hasLabel = !!(this.label && this.label.trim()) && !this.iconOnly;\n const leftIconPresent = !!(this.leftIcon && this.leftIcon.toString().trim());\n const rightIconPresent = !!(this.rightIcon && this.rightIcon.toString().trim());\n const iconCount = (leftIconPresent ? 1 : 0) + (rightIconPresent ? 1 : 0);\n\n // 0 gap for purely icon-only buttons (≤1 icon and no label)\n if (!hasLabel && iconCount <= 1) {\n return 0;\n }\n\n // Tighter gap when we have two icons and a label (e.g., two-icon buttons)\n if (iconCount === 2 && !hasLabel) {\n return 4;\n }\n\n // Default gap\n return 8;\n }\n\n stateClasses: { [key: string]: string } = {\n default: 'btn-default',\n hover: 'btn-hover',\n pressed: 'btn-pressed',\n disabled: 'btn-disabled',\n };\n\n // Reference to the MatMenu trigger; used to proactively close overlays on state changes\n @ViewChild(MatMenuTrigger, { static: false }) private menuTrigger?: MatMenuTrigger;\n\n constructor(private iconRegistry: MatIconRegistry) {\n this.iconRegistry.registerFontClassAlias('material-icons-outlined', 'material-icons-outlined');\n this.iconRegistry.registerFontClassAlias('material-icons', 'material-icons');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // If dropdown gets disabled due to control changes, ensure any open menu is closed\n if (changes['dropdown'] || changes['buttonType']) {\n const dropdownEnabled = this.dropdown || this.buttonType === 'dropdown';\n if (!dropdownEnabled) {\n this.menuTrigger?.closeMenu();\n }\n }\n }\n\n ngOnDestroy(): void {\n // Ensure overlay is cleaned up when component is destroyed\n this.menuTrigger?.closeMenu();\n }\n}\n","<!-- Regular button types -->\n<ng-container *ngIf=\"!(dropdown || buttonType === 'dropdown'); else dropdownTpl\">\n <button\n mat-flat-button\n class=\"btn custom-button\" [class]=\"effectiveFontClass\"\n [attr.data-test-id]=\"dataTestId\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n\n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-circle': buttonType === 'icon-circle',\n 'blue': color === 'blue',\n 'green': color === 'green',\n 'grey': color === 'grey',\n 'error': color === 'error',\n 'success': color === 'success',\n 'gradient': color === 'gradient',\n 'white': color === 'white',\n 'btn-outlined': outline,\n 'btn-default': state === 'default',\n 'btn-hover': state === 'hover',\n 'btn-pressed': state === 'pressed',\n 'btn-disabled': state === 'disabled'\n }\"\n [disabled]=\"state === 'disabled'\"\n (click)=\"onClick.emit($event)\"\n (mouseenter)=\"onHover.emit($event)\"\n (mouseleave)=\"onMouseLeave.emit($event)\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap()\"\n >\n <!-- Left Icon (Only shown if leftIcon is set and not empty). If icon-circle, prefer 'icon' prop. -->\n <mat-icon *ngIf=\"(buttonType === 'icon-circle' ? (icon || leftIcon) : leftIcon)?.trim() as leftIconText\"\n [fontSet]=\"iconOutlined ? 'material-icons-outlined' : 'material-icons'\"\n class=\"left-icon\">{{ leftIconText }}</mat-icon>\n <!-- Label (Only shown if iconOnly is false) -->\n <span *ngIf=\"!iconOnly\" class=\"button-label\">{{ label || '' }}</span>\n\n <!-- Right Icon (Only shown if rightIcon is set and not empty) -->\n <mat-icon *ngIf=\"rightIcon?.trim() as rightIconText\"\n [fontSet]=\"iconOutlined ? 'material-icons-outlined' : 'material-icons'\"\n class=\"right-icon\">{{ rightIconText }}</mat-icon>\n </button>\n </ng-container>\n\n <!-- Dropdown button template -->\n <ng-template #dropdownTpl>\n <button\n mat-flat-button\n class=\"btn custom-button\" [class]=\"effectiveFontClass\"\n [attr.data-test-id]=\"dataTestId\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-label': true,\n 'blue': color === 'blue',\n 'green': color === 'green',\n 'grey': color === 'grey',\n 'error': color === 'error',\n 'success': color === 'success',\n 'gradient': color === 'gradient',\n 'white': color === 'white',\n 'btn-outlined': outline,\n 'btn-default': state === 'default',\n 'btn-hover': state === 'hover',\n 'btn-pressed': state === 'pressed',\n 'btn-disabled': state === 'disabled',\n\n }\"\n [disabled]=\"state === 'disabled'\"\n (mouseenter)=\"onHover.emit($event)\"\n (mouseleave)=\"onMouseLeave.emit($event)\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap()\"\n [matMenuTriggerFor]=\"menu\"\n >\n <!-- Left Icon (optional) -->\n <mat-icon *ngIf=\"leftIcon?.trim() as leftIconText\"\n [fontSet]=\"iconOutlined ? 'material-icons-outlined' : 'material-icons'\"\n class=\"left-icon\">{{ leftIconText }}</mat-icon>\n <!-- Label -->\n <span *ngIf=\"!iconOnly\" class=\"button-label\">{{ label || '' }}</span>\n <!-- Dropdown Arrow Icon -->\n <mat-icon class=\"right-icon\">arrow_drop_down</mat-icon>\n </button>\n </ng-template>\n\n <!-- Mat Menu kept outside conditional to avoid portal reattachment across toggles -->\n <mat-menu #menu=\"matMenu\" panelClass=\"custom-dropdown-menu\">\n <button mat-menu-item *ngFor=\"let opt of dropdownItems\" (click)=\"selectOption(opt)\" [ngClass]=\"effectiveFontClass\">\n {{ opt.label || opt }}\n </button>\n </mat-menu>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from './button.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, ButtonComponent],\n exports: [ButtonComponent],\n})\nexport class ButtonModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // register the CSS class alias so <mat-icon> knows about it…\n this.iconRegistry.registerFontClassAlias(\n 'material-symbols-outlined',\n 'material-symbols-outlined'\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'al-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatSelectModule,\n MatOptionModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatButtonModule,\n MatTooltipModule\n ],\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ]\n})\nexport class InputComponent implements ControlValueAccessor {\n @Input() label: string = '';\n @Input() placeholder: string = '';\n @Input() value: string = '';\n @Input() formControlName: string = '';\n @Input() dataTestId: string = '';\n\n @Input() type: 'text' | 'email' | 'number' | 'password' | 'tel' | 'url' | 'date' | 'color' = 'text';\n @Input() disabled: boolean = false;\n @Input() helperText: boolean = false;\n @Input() helperTextLabel: string = '';\n @Input() error: boolean = false;\n @Input() errorMessage: string = '';\n @Input() leftIcon: string = '';\n @Input() rightIcon: string = '';\n @Input() dropDown: boolean = false;\n @Input() options: string[] = [];\n @Input() size: 'xs' | 'small' | 'base' | 'large' | 'header' = 'base';\n @Input() types: 'simple' | 'primary' | 'success' | 'error' | 'disabled' | 'plain' = 'plain';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n noBorder: boolean = false;\n outlined: boolean = false;\n\n // Date picker specific properties - matching Calendar component\n selectedDate: Date | null = null;\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() onColorChange = new EventEmitter<string>();\n @Output() monthSelected = new EventEmitter<Date>();\n @Output() yearSelected = new EventEmitter<Date>();\n\n private onChange = (value: string) => { };\n onTouched = () => { };\n\n get isDisabled(): boolean {\n return this.disabled || this.types === 'disabled';\n }\n\n // Check if date picker should be shown\n get isDatePicker(): boolean {\n return this.type === 'date' || this.shouldShowDatePicker(this.value);\n }\n\n // Check if color picker should be shown\n get isColorPicker(): boolean {\n return this.type === 'color';\n }\n\n writeValue(value: string | null | undefined): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(value: string): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n onSelectionChange(value: string): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n // Handle color picker change\n handleColorChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(target.value);\n this.valueChange.emit(target.value);\n this.onColorChange.emit(target.value);\n }\n\n // Handle month selection - matching Calendar component exactly\n onMonthSelected(event: Date, dp: any) {\n this.selectedDate = event;\n this.onChange(event.toISOString().split(\"T\")[0]);\n this.onTouched();\n this.monthSelected.emit(event);\n }\n\n // Handle year selection\n onYearSelected(event: Date, dp: any) {\n this.selectedDate = event;\n this.onChange(event.toISOString().split(\"T\")[0]);\n this.onTouched();\n this.yearSelected.emit(event);\n }\n private shouldShowDatePicker(value: string): boolean {\n // Check if the selected value indicates a date picker should be shown\n const dateKeywords = ['date', 'birth', 'start', 'end', 'due', 'deadline', 'calendar'];\n return dateKeywords.some(keyword => value.toLowerCase().includes(keyword));\n }\n\n getSizeClass(): string {\n return 'al-input-size-' + this.size;\n }\n\n getCategoryClass(): string {\n if (this.disabled) {\n return 'al-input-category-disabled';\n }\n if (this.types === 'plain') {\n return 'al-input-category-plain';\n }\n return 'al-input-category-' + this.types;\n }\n}\n","<!-- Standard floating label layout for all inputs including date picker -->\n<mat-form-field appearance=\"outline\" class=\"al-input-field\" [ngClass]=\"[\n helperText ? 'has-helper-text' : '',\n getSizeClass(),\n getCategoryClass(),\n noBorder ? 'al-input-no-border' : '',\n leftIcon ? 'has-left-icon' : ''\n ]\" [attr.data-test-id]=\"dataTestId\" [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!tooltip\">\n <mat-label *ngIf=\"label && !noBorder\">{{ label }}</mat-label>\n\n <mat-icon *ngIf=\"leftIcon?.trim() as leftIconText\" [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\"\n matPrefix class=\"left-icon\">{{ leftIconText }}</mat-icon>\n\n <ng-container *ngIf=\"dropDown; else regularInput\">\n <mat-select [disabled]=\"isDisabled\" [(ngModel)]=\"value\" (selectionChange)=\"onSelectionChange($event.value)\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</mat-option>\n </mat-select>\n </ng-container>\n <ng-template #regularInput>\n <!-- Color Picker Input -->\n <ng-container *ngIf=\"isColorPicker; else datePickerInput\">\n <div class=\"color-picker-container\">\n <input matInput [placeholder]=\"label ? '' : placeholder\" [disabled]=\"isDisabled\" [(ngModel)]=\"value\"\n (input)=\"onInputChange($any($event.target).value)\" (blur)=\"onTouched()\" />\n <input type=\"color\" class=\"color-picker-input\" [value]=\"value || '#000000'\" [disabled]=\"isDisabled\"\n (input)=\"handleColorChange($event)\" (blur)=\"onTouched()\" />\n <mat-icon class=\"color-picker-icon\" matSuffix>palette</mat-icon>\n </div>\n </ng-container>\n\n <!-- Date Picker Input - with floating label animation -->\n <ng-template #datePickerInput>\n <ng-container *ngIf=\"isDatePicker; else standardInput\">\n <input matInput [matDatepicker]=\"dp\" [placeholder]=\"label ? '' : placeholder\" [disabled]=\"isDisabled\"\n [(ngModel)]=\"selectedDate\" (blur)=\"onTouched()\" />\n <mat-datepicker-toggle matSuffix [for]=\"dp\"></mat-datepicker-toggle>\n <mat-datepicker #dp startView=\"multi-year\" (monthSelected)=\"onMonthSelected($event, dp)\"\n (yearSelected)=\"onYearSelected($event, dp)\" panelClass=\"example-month-picker\">\n </mat-datepicker>\n </ng-container>\n\n <!-- Standard Input -->\n <ng-template #standardInput>\n <input matInput [placeholder]=\"label ? '' : placeholder\" [type]=\"type\" [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\" (input)=\"onInputChange($any($event.target).value)\" (blur)=\"onTouched()\" />\n </ng-template>\n </ng-template>\n </ng-template>\n\n <!-- Right icon - only show when not date picker and not color picker -->\n <mat-icon *ngIf=\"!isDatePicker && !isColorPicker && rightIcon?.trim() as rightIconText\"\n [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\" matSuffix class=\"right-icon\">{{ rightIconText\n }}</mat-icon>\n\n <mat-error *ngIf=\"false && helperTextLabel\">{{ helperTextLabel }}</mat-error>\n <mat-hint *ngIf=\"helperText && helperTextLabel\">{{ helperTextLabel }}</mat-hint>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputComponent } from './input.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatSelectModule,\n MatOptionModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatButtonModule,\n InputComponent\n ],\n exports: [InputComponent],\n})\nexport class InputModule { }\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, OnInit, OnDestroy, AfterViewInit, ViewChild, ElementRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ButtonComponent } from '../button/button.component';\nimport { EyeIconConfig, HeaderButton, InputHandlersConfig, SectionCheckboxConfig } from './resume-header.model';\n\n@Component({\n selector: 'al-resume-header',\n templateUrl: './resume-header.component.html',\n styleUrl: './resume-header.component.css',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n MatCheckboxModule,\n MatTooltipModule,\n MatMenuModule,\n MatIconModule,\n CdkAccordionModule,\n ButtonComponent\n ]\n})\nexport class ResumeHeaderComponent implements OnInit, OnDestroy, AfterViewInit {\n hideTimeout: any;\n isMenuVisible = false;\n isEducationHidden = false;\n private resizeListener?: () => void;\n @Input() hiddenSection: { headerSectionHidden: boolean } = { headerSectionHidden: false };\n @Input() isLargeScreen = true;\n @Input() inputHandlers!: InputHandlersConfig;\n @Output() focusField = new EventEmitter<string>();\n @Output() blurField = new EventEmitter<void>();\n @Output() enterKeyPressed = new EventEmitter<KeyboardEvent>();\n @Input() checked = false;\n @Input() checkboxConfig!: SectionCheckboxConfig;\n @Output() checkedCheckBoxChange = new EventEmitter<boolean>();\n @Input() disabled = false;\n @Input() buttonConfig: HeaderButton[] = [];\n @Output() buttonClicked = new EventEmitter<HeaderButton>();\n @Input() configEyeToggle!: EyeIconConfig[];\n @Input() accordionItem: any;\n @Output() showHideToggleSection = new EventEmitter<{ isHidden: boolean; accordionItem?: any; config: EyeIconConfig }>();\n @Input() toggleEditIcon?: (field: string) => void;\n @Input() showSection = true;\n @Output() sectionToggled = new EventEmitter<boolean>();\n @Input() borderColor = '#37c1ce';\n @Input() dataTestId?: string;\n @Input() showPopOutPanel: boolean = false;\n @Input() popOutMessage: string = 'Takes a little longer, but deals with tricky resumes much better than fast extraction.'; // Click here to run automatically every time.\n @Input() popOutButtonLabel: string = 'Run Deep Extraction';\n @Input() popOutButtonIcon: string = 'auto_fix_high';\n @Input() popOutButtonTooltip: string = ' Deep Extraction';\n @Input() popOutButtonTooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n @Output() popOutButtonClick = new EventEmitter<void>();\n\n showPopOut: boolean = false;\n inputWidth: number = 100;\n maxContainerWidth: number = 0;\n @ViewChild('textInputSection') textInputSection?: ElementRef<HTMLInputElement>;\n\n constructor(private sanitizer: DomSanitizer) { }\n\n toggleAccordion(accordionItem: any) {\n accordionItem.toggle();\n this.showSection = accordionItem.expanded;\n this.sectionToggled.emit(this.showSection);\n }\n\n ngOnInit() {\n this.checkScreenSize();\n // Add resize listener\n this.resizeListener = () => this.checkScreenSize();\n window.addEventListener('resize', this.resizeListener);\n\n // Check if pop-out should be shown\n this.checkPopOutVisibility();\n }\n\n ngAfterViewInit() {\n // Calculate max container width\n this.calculateMaxContainerWidth();\n // Initialize input width based on current value\n if (this.textInputSection?.nativeElement) {\n this.adjustInputWidth({ target: this.textInputSection.nativeElement } as any);\n }\n }\n\n private checkPopOutVisibility() {\n if (!this.showPopOutPanel) {\n this.showPopOut = false;\n return;\n }\n\n // Generate storage key based on dataTestId\n const storageKey = `resume-header-popout-${this.dataTestId || 'default'}`;\n\n // Check if user has dismissed it before\n const dismissed = localStorage.getItem(storageKey);\n if (dismissed === 'true') {\n this.showPopOut = false;\n } else {\n this.showPopOut = true;\n }\n }\n\n dismissPopOut() {\n this.showPopOut = false;\n\n // Store dismissal preference\n const storageKey = `resume-header-popout-${this.dataTestId || 'default'}`;\n localStorage.setItem(storageKey, 'true');\n }\n\n get sanitizedMessage(): SafeHtml {\n const message = this.popOutMessage || 'Takes a little longer, but deals with tricky resumes much better than fast extraction.'; // Click here to run automatically every time.\n // Replace \"Click here\" with a styled link and add line break before it\n const processedMessage = message.replace(\n /Click here/g,\n '<br><a href=\"#\" class=\"pop-out-link\">Click here</a>'\n );\n return this.sanitizer.bypassSecurityTrustHtml(processedMessage);\n }\n\n calculateMaxContainerWidth(): void {\n const leftSideHeader = document.querySelector('.left_side_header');\n const rightSideHeader = document.querySelector('.right_side_header');\n\n if (leftSideHeader && rightSideHeader) {\n const leftHeaderRect = leftSideHeader.getBoundingClientRect();\n const rightHeaderRect = rightSideHeader.getBoundingClientRect();\n const toggleButtonWidth = leftSideHeader.querySelector('.toggle-button')?.getBoundingClientRect().width || 0;\n const editIconWidth = 24; // Approximate width of edit icon\n\n // Adjust gaps based on screen size\n const isSmallScreen = window.innerWidth <= 768;\n const gaps = isSmallScreen ? 8 + 4 : 16 + 4; // Gap between toggle and input group + gap inside input group\n const padding = isSmallScreen ? 10 : 20; // Padding adjustment for small screens\n\n // Calculate available width from left header start to right header start\n this.maxContainerWidth = rightHeaderRect.left - leftHeaderRect.left - toggleButtonWidth - editIconWidth - gaps - padding;\n } else {\n this.maxContainerWidth = window.innerWidth * 0.5;\n }\n }\n\n adjustInputWidth(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input) {\n // Recalculate max container width on resize\n this.calculateMaxContainerWidth();\n\n // Create a temporary span to measure text width\n const tempSpan = document.createElement('span');\n tempSpan.style.visibility = 'hidden';\n tempSpan.style.position = 'absolute';\n tempSpan.style.whiteSpace = 'nowrap';\n tempSpan.style.font = window.getComputedStyle(input).font;\n tempSpan.textContent = input.value || input.placeholder || 'M';\n document.body.appendChild(tempSpan);\n\n const textWidth = tempSpan.offsetWidth;\n document.body.removeChild(tempSpan);\n\n // Set width to text width + padding, with min 100px\n const minWidth = 100;\n const padding = 16; // 8px on each side\n const calculatedWidth = textWidth + padding;\n\n // If content is large, allow it to expand to full available width\n if (calculatedWidth > this.maxContainerWidth) {\n this.inputWidth = Math.max(minWidth, this.maxContainerWidth);\n } else {\n this.inputWidth = Math.max(minWidth, calculatedWidth);\n }\n }\n }\n\n ngOnDestroy() {\n // Remove resize listener\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n }\n // Clear any pending timeouts\n this.clearHideTimeout();\n }\n\n checkScreenSize() {\n this.isLargeScreen = window.innerWidth >= 1400;\n }\n\n showMenu() {\n this.isMenuVisible = true;\n this.clearHideTimeout();\n }\n\n startHideTimeout() {\n this.clearHideTimeout();\n this.hideTimeout = setTimeout(() => {\n this.isMenuVisible = false;\n }, 200);\n }\n\n clearHideTimeout() {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n\n onButtonClick(btn: any) {\n if (btn.buttonType !== 'dropdown') {\n this.buttonClicked.emit(btn);\n }\n }\n\n onDropdownSelect(btn: any, value: any) {\n if (btn.buttonType === 'dropdown') {\n // Find the selected option\n const selectedOption = btn.dropdownOptions?.find((option: any) => option.value === value);\n\n // If the option has a custom function, call it\n if (selectedOption?.function) {\n selectedOption.function();\n }\n\n // Always emit the buttonClicked event for tracking\n this.buttonClicked.emit({ ...btn, dropdownValue: value });\n }\n }\n}\n","<cdk-accordion class=\"example-accordion\">\n <cdk-accordion-item #accordionItem=\"cdkAccordionItem\" [expanded]=\"true\" class=\"example-accordion-item\">\n\n <div class=\"example-accordion-item-header\" [ngStyle]=\"{ 'border-color': borderColor }\">\n <div class=\"left_side_header\" *ngIf=\"!hiddenSection?.headerSectionHidden; else hiddenHeaderLayout\">\n <div [matTooltip]=\"accordionItem.expanded ? 'Collapse' : 'Expand'\" matTooltipPosition=\"above\">\n <button (click)=\"toggleAccordion(accordionItem)\" tabindex=\"0\" class=\"toggle-button align-center \"\n [attr.aria-expanded]=\"accordionItem.expanded\">\n <span class=\"material-icons-outlined\" *ngIf=\"!accordionItem.expanded\">\n expand_less\n </span>\n <span class=\"material-icons-outlined\" *ngIf=\"accordionItem.expanded\">\n expand_more\n </span>\n </button>\n </div>\n\n <div class=\"edit-input-group\" [style.max-width.px]=\"maxContainerWidth\">\n <div class=\"content_width\" data-test-id=\"edu-section-title-input\">\n <div class=\"content_width\" data-test-id=\"edu-section-title-input\" *ngIf=\"!inputHandlers.headersLoading\">\n <input #textInputSection type=\"text\" [ngClass]=\"{\n 'focusout-input-text': !inputHandlers?.isFocused,\n 'onfocus-input-text': inputHandlers?.isFocused\n }\" [(ngModel)]=\"inputHandlers.shownTitle\" [attr.aria-label]=\"inputHandlers.shownTitle\"\n (focus)=\"focusField.emit('educationHeader')\" (focusout)=\"blurField.emit()\"\n (keypress)=\"enterKeyPressed.emit($event)\" (input)=\"adjustInputWidth($event)\"\n [style.width.px]=\"inputWidth\" [style.max-width.%]=\"100\"\n [disabled]=\"inputHandlers?.isDisabled?.() ?? false\" />\n </div>\n </div>\n <span *ngIf=\"!inputHandlers.headersLoading\" class=\"align-center\">\n <span class=\"material-symbols-outlined\" [attr.alt]=\"inputHandlers.iconAltText || 'edit-icon'\"\n (click)=\"toggleEditIcon?.('educationHeader')\"\n [matTooltip]=\"inputHandlers.tooltipText || 'This header can be edited'\"\n [matTooltipPosition]=\"inputHandlers.tooltipPosition || 'above'\"\n *ngIf=\"inputHandlers.getFieldNotHidden('')\">\n edit\n </span>\n </span>\n </div>\n </div>\n\n <!-- ✅ FIXED: Right side header (shows when section is NOT hidden) -->\n <div class=\"right_side_header\" *ngIf=\"!hiddenSection?.headerSectionHidden\">\n <ng-container *ngIf=\"isLargeScreen\">\n <al-button [label]=\"popOutButtonLabel || 'Run Deep Extraction'\" [leftIcon]=\"popOutButtonIcon\"\n [rightIcon]=\"'arrow_forward'\" [buttonType]=\"'icon-label'\" [category]=\"'gradient'\" [size]=\"'header'\"\n [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\" [dataTestId]=\"'header-run-deep-extraction'\"\n [title]=\"popOutButtonLabel || 'Run Deep Extraction'\" [matTooltip]=\"popOutButtonTooltip\"\n [matTooltipPosition]=\"popOutButtonTooltipPosition\">\n </al-button>\n <ng-container class=\"button-margin\"\n *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\">\n </ng-container>\n </ng-container>\n\n <div class=\"hover-menu-container\" *ngIf=\"!isLargeScreen\">\n <div class=\"menu-trigger\" (mouseenter)=\"showMenu()\" (mouseleave)=\"startHideTimeout()\">\n <al-button buttonType=\"icon-label\" iconOnly size=\"header\" category=\"grey\" leftIcon=\"more_vert\"\n aria-label=\"More options\" [dataTestId]=\"'resume-header-more-menu'\">\n </al-button>\n </div>\n <div class=\"slide-out-panel\" [class.visible]=\"isMenuVisible\" (mouseenter)=\"showMenu()\"\n (mouseleave)=\"startHideTimeout()\">\n <div class=\"fit-panel\">\n <al-button [label]=\"popOutButtonLabel || 'Run Deep Extraction'\" [leftIcon]=\"popOutButtonIcon\"\n [rightIcon]=\"'arrow_forward'\" [buttonType]=\"'icon-label'\" [category]=\"'gradient'\" [size]=\"'header'\"\n [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\" [dataTestId]=\"'header-run-deep-extraction'\"\n [title]=\"popOutButtonLabel || ' Deep Extraction'\" [matTooltip]=\"popOutButtonTooltip\"\n [matTooltipPosition]=\"popOutButtonTooltipPosition\">\n </al-button>\n <ng-container *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\">\n </ng-container>\n </div>\n </div>\n </div>\n\n <!-- ✅ FIXED: Eye icon for hiding section -->\n <ng-container *ngIf=\"!hiddenSection?.headerSectionHidden\">\n <ng-container *ngFor=\"let eyeConfig of configEyeToggle\">\n <ng-container\n *ngTemplateOutlet=\"eyeIconTemplate; context: { isHidden: false, accordionItem: accordionItem, configEyeToggle: eyeConfig }\"></ng-container>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"checkboxConfig?.sectionItems?.length\" class=\"mat-checkbox-margin\">\n <mat-checkbox class=\"example-margin\" [matTooltip]=\"checkboxConfig?.tooltipText || 'Select All'\"\n [matTooltipPosition]=\"checkboxConfig.tooltipPosition|| 'above'\" [(ngModel)]=\"checked\"\n (ngModelChange)=\"checkedCheckBoxChange.emit($event)\"\n [disabled]=\"disabled || checkboxConfig?.disabled ?? false\" data-test-id=\"edu-section-select-all-checkbox\">\n </mat-checkbox>\n </div>\n </div>\n\n <!-- ✅ FIXED: Hidden header layout (shows when section IS hidden) -->\n <ng-template #hiddenHeaderLayout>\n <div class=\"hide-header\">\n <span class=\"header-text-turncate\">{{ inputHandlers?.shownTitle }}</span>\n <div class=\"hidden-write\">Section hidden</div>\n\n <!-- ✅ FIXED: Eye icon for showing section -->\n <ng-container *ngIf=\"hiddenSection?.headerSectionHidden\">\n <ng-container *ngFor=\"let eyeConfig of configEyeToggle\">\n <ng-container *ngIf=\"!eyeConfig['onClick']\">\n <ng-container\n *ngTemplateOutlet=\"eyeIconTemplate; context: { isHidden: true, accordionItem: accordionItem, configEyeToggle: eyeConfig }\"></ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n </div>\n\n <!-- Pop-out Panel -->\n <div *ngIf=\"showPopOut\" class=\"pop-out-panel\">\n <div class=\"pop-out-content\">\n <al-button [label]=\"popOutButtonLabel || 'Run Deep Extraction'\" [leftIcon]=\"popOutButtonIcon\"\n [rightIcon]=\"'arrow_forward'\" [buttonType]=\"'icon-label'\" [category]=\"'gradient'\" [size]=\"'xs'\"\n [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\" [dataTestId]=\"'pop-out-run-deep-extraction'\"\n [title]=\"popOutButtonLabel || 'Run Deep Extraction'\">\n </al-button>\n <p class=\"pop-out-message\" [innerHTML]=\"sanitizedMessage\"></p>\n <button type=\"button\" class=\"pop-out-close\" (click)=\"dismissPopOut()\" aria-label=\"Close pop-out panel\">\n <span class=\"material-icons-outlined\">close</span>\n </button>\n </div>\n </div>\n\n <!-- ✅ FIXED: Accordion body (only shows when expanded AND not hidden) -->\n <div *ngIf=\"accordionItem.expanded && !hiddenSection?.headerSectionHidden\" class=\"example-accordion-item-body\"\n role=\"region\">\n Lorem ipsum dolor, sit amet, consectetur adipisicing elit. Perferendis excepturi incidunt ipsum\n deleniti labore, tempore non nam doloribus blanditiis veritatis illo autem iure aliquid ullam\n rem tenetur deserunt velit culpa?\n </div>\n\n </cdk-accordion-item>\n</cdk-accordion>\n\n<!-- Header Buttons Template -->\n<ng-template #headerButtonsTemplate let-buttons=\"buttons\" let-handleClick=\"handleClick\">\n <ng-container *ngFor=\"let btn of buttonConfig\">\n <al-button *ngIf=\"!btn.hidden && (!btn.displayCondition || btn.displayCondition())\" [category]=\"btn.category\"\n [buttonType]=\"btn.buttonType\" [label]=\"btn.label\" [leftIcon]=\"btn.leftIcon\" [rightIcon]=\"btn.rightIcon\"\n [state]=\"btn.state\" [color]=\"btn.color\" [size]=\"btn.size\" [outlined]=\"btn.outlined\"\n [dropdownOptions]=\"btn.buttonType === 'dropdown' ? btn.dropdownOptions : null\"\n (optionSelect)=\"onDropdownSelect(btn, $event)\" (click)=\"onButtonClick(btn)\" [attr.alt]=\"btn.alt\"\n [attr.data-test-id]=\"btn.testId\" [matTooltip]=\"btn.tooltipText\"\n [matTooltipPosition]=\"btn.tooltipPosition || 'above'\">\n </al-button>\n </ng-container>\n</ng-template>\n\n<!-- ✅ FIXED: Eye Icon Template with proper click handler -->\n<ng-template #eyeIconTemplate let-isHidden=\"isHidden\" let-accordionItem=\"accordionItem\"\n let-configEyeToggle=\"configEyeToggle\">\n <div *ngIf=\"configEyeToggle\" class=\"mat-checkbox-margin align-center\"\n [attr.data-test-id]=\"isHidden ? 'edu-section-show-eye-div' : 'edu-section-hide-eye-div'\">\n <span class=\"material-symbols-outlined delete-multiple mat-fab.mat-accent\"\n [matTooltip]=\"configEyeToggle.tooltips[isHidden ? 'collapse' : 'expand']\"\n [matTooltipPosition]=\"configEyeToggle.tooltips.position\"\n [attr.aria-label]=\"configEyeToggle.ariaLabels[isHidden ? 'collapsed' : 'expanded']\"\n (click)=\"showHideToggleSection.emit({ isHidden: isHidden, accordionItem: accordionItem, config: configEyeToggle })\"\n [attr.data-test-id]=\"isHidden ? 'edu-section-show-eye-icon' : 'edu-section-show-hide-eye-icon'\">\n {{ isHidden ? 'visibility' : 'visibility_off' }}\n </span>\n </div>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResumeHeaderComponent } from './resume-header.component';\n\n@NgModule({\n imports: [CommonModule, ResumeHeaderComponent],\n exports: [ResumeHeaderComponent],\n})\nexport class ResumeHeaderModule { }\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, HostBinding, OnInit, OnDestroy } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n// Define a type for the possible status values for better type safety.\nexport type LoaderStatus = 'analyzing' | 'gathering' | 'processing' | 'applying' | 'done';\n\n@Component({\n selector: 'al-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n imports: [CommonModule, MatIconModule],\n standalone: true,\n})\nexport class LoaderComponent implements OnInit, OnDestroy {\n /**\n * Optional data-testid for QA/testing. If not provided, will auto-generate with 'loader_' prefix.\n */\n @Input() dataTestId?: string;\n public effectiveDataTestId!: string;\n\n private genLoaderId(): string {\n return 'loader_' + Math.random().toString(36).slice(2, 10);\n }\n\n \n @Input() status: LoaderStatus = 'analyzing';\n\n /**\n * Optional custom text to display instead of the default status text.\n */\n @Input() customText?: string;\n\n /**\n * Whether to show the text below the loader icon.\n * @default true\n */\n @Input() showText = true;\n\n /**\n * Size of the loader component.\n * @default 'medium'\n */\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether to automatically loop through all statuses.\n * @default false\n */\n @Input() autoLoop: boolean = false;\n\n /**\n * Duration in milliseconds for each status when auto-looping.\n * @default 3000\n */\n @Input() loopDuration: number = 3000;\n\n /**\n * Custom text array for each status. If provided, overrides default status text.\n * Array should have 5 elements corresponding to: analyzing, gathering, processing, applying, done\n */\n @Input() customTexts?: string[];\n\n /**\n * Whether to show completion state and stop looping when reaching 'done' status.\n * @default false\n */\n @Input() completeOnDone: boolean = false;\n\n // Private properties for looping functionality\n private loopInterval?: number;\n private currentLoopIndex = 0;\n private readonly statusOrder: LoaderStatus[] = ['analyzing', 'gathering', 'processing', 'applying', 'done'];\n\n /**\n * This @HostBinding adds a class to the component's host element (<al-loader>)\n * that matches the current status. For example, if status is 'processing',\n * it adds `class=\"status-processing\"`. This is what our CSS uses to show the right icon.\n */\n @HostBinding('class')\n get statusClass() {\n const classes = [`status-${this.status}`, `size-${this.size}`];\n if (this.autoLoop) {\n classes.push('auto-loop');\n }\n return classes.join(' ');\n }\n\n /**\n * Get the display text for the current status\n */\n get displayText(): string {\n if (this.customText) {\n return this.customText;\n }\n \n // Use custom texts array if provided\n if (this.customTexts && this.customTexts.length >= 5) {\n const statusIndex = this.statusOrder.indexOf(this.status);\n if (statusIndex >= 0) {\n return this.customTexts[statusIndex];\n }\n }\n \n switch (this.status) {\n case 'analyzing':\n return 'Analyzing...';\n case 'gathering':\n return 'Gathering...';\n case 'processing':\n return 'Processing...';\n case 'applying':\n return 'Applying...';\n case 'done':\n return 'Done!';\n default:\n return '';\n }\n }\n\n constructor() { }\n\n ngOnInit() {\n // Generate or use provided dataTestId\n this.updateEffectiveDataTestId();\n if (this.autoLoop) {\n this.startLoop();\n }\n }\n\n ngOnChanges() {\n this.updateEffectiveDataTestId();\n }\n\n private updateEffectiveDataTestId() {\n this.effectiveDataTestId = this.dataTestId && this.dataTestId.trim() ? this.dataTestId : this.genLoaderId();\n }\n\n ngOnDestroy() {\n this.stopLoop();\n }\n\n /**\n * Start the auto-loop functionality\n */\n startLoop() {\n if (this.loopInterval) {\n this.stopLoop();\n }\n \n // Set initial status\n this.status = this.statusOrder[this.currentLoopIndex];\n \n this.loopInterval = window.setInterval(() => {\n this.currentLoopIndex = (this.currentLoopIndex + 1) % this.statusOrder.length;\n this.status = this.statusOrder[this.currentLoopIndex];\n \n // If completeOnDone is true and we reach 'done', stop looping\n if (this.completeOnDone && this.status === 'done') {\n this.stopLoop();\n }\n }, this.loopDuration);\n }\n\n /**\n * Stop the auto-loop functionality\n */\n stopLoop() {\n if (this.loopInterval) {\n clearInterval(this.loopInterval);\n this.loopInterval = undefined;\n }\n }\n\n /**\n * Manually trigger completion (sets status to 'done' and stops loop)\n */\n triggerCompletion() {\n this.stopLoop();\n this.status = 'done';\n }\n\n /**\n * Reset the loader to the beginning\n */\n reset() {\n this.stopLoop();\n this.currentLoopIndex = 0;\n this.status = this.statusOrder[0];\n if (this.autoLoop) {\n this.startLoop();\n }\n }\n}\n","<div class=\"loader-container\" [attr.data-testid]=\"effectiveDataTestId\">\n <!-- Brain Icon -->\n <mat-icon class=\"loader-icon font-icon icon-brain\" fontSet=\"material-icons\">psychology</mat-icon>\n <!-- Cog Icon -->\n <mat-icon class=\"loader-icon font-icon icon-cog\" fontSet=\"material-icons\">sync</mat-icon>\n <!-- Document Icon -->\n <mat-icon class=\"loader-icon font-icon icon-document\" fontSet=\"material-icons\">article</mat-icon>\n <!-- Wand Icon -->\n <mat-icon class=\"loader-icon font-icon icon-wand\" fontSet=\"material-icons\">auto_awesome</mat-icon>\n <!-- Tick Icon -->\n <mat-icon class=\"loader-icon font-icon icon-tick\" fontSet=\"material-icons\">task_alt</mat-icon>\n</div>\n<div class=\"text-container\" *ngIf=\"showText\">\n <span class=\"loader-text\">{{ displayText }}</span>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoaderComponent } from './loader.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, LoaderComponent],\n exports: [LoaderComponent],\n})\nexport class LoaderModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // register the CSS class alias so <mat-icon> knows about it…\n this.iconRegistry.registerFontClassAlias(\n 'material-symbols-outlined',\n 'material-symbols-outlined'\n );\n }\n}\n","\nimport { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'lib-field-placeholder',\n standalone: true,\n imports: [CommonModule, MatTooltipModule, MatIconModule],\n templateUrl: './field-placeholder.component.html',\n styleUrls: ['./field-placeholder.component.scss'],\n})\nexport class FieldPlaceholderComponent {\n @Input() value: string | null | undefined = '';\n @Input() placeholder: string = '';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n @Input() testId: string = '';\n /** Optional CSS class(es) applied when showing the value text */\n @Input() valueClass: string | string[] | Set<string> | { [klass: string]: any } = '';\n /** Optional CSS class(es) applied when showing the placeholder text */\n @Input() placeholderClass: string | string[] | Set<string> | { [klass: string]: any } = '';\n /**\n * The image path or icon to display in the field row (left column).\n */\n @Input() icon: string = '';\n /**\n * The alt text for the icon image (for accessibility).\n */\n @Input() iconAlt: string = '';\n /**\n * The font set for Material icons (e.g., 'material-icons', 'material-icons-outlined').\n */\n @Input() iconFont: string = 'material-icons';\n /**\n * When true, applies the 'field-row-compact' class for 28px height.\n * Only applies when explicitly set to true from a parent component.\n */\n @Input() compact?: boolean;\n /**\n * When true, applies the 'field-row-padded' class for 8px top and bottom padding.\n * Only applies when explicitly set to true from a parent component.\n */\n @Input() padded?: boolean;\n\n isMaterialIcon(icon: string): boolean {\n return !!icon && !icon.includes('/') && !icon.includes('.');\n }\n}\n","<div class=\"field-row\" [class.field-row-compact]=\"compact === true\" [class.field-row-padded]=\"padded === true\">\n <ng-container *ngIf=\"icon\">\n <span class=\"field-icon\">\n <ng-container *ngIf=\"isMaterialIcon(icon); else imageIcon\">\n <mat-icon [fontSet]=\"iconFont\">{{ icon }}</mat-icon>\n </ng-container>\n <ng-template #imageIcon>\n <img [src]=\"icon\" [alt]=\"iconAlt || 'icon'\" />\n </ng-template>\n </span>\n </ng-container>\n <span [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\"\n [ngClass]=\"value ? ['value-text', valueClass] : ['placeholder-text', placeholderClass]\"\n [attr.data-test-id]=\"testId\">\n <span [innerHTML]=\"value ? value : placeholder\"></span>\n </span>\n</div>","// Wrapper for Angular Material mat-checkbox (template for candidate section)\nimport { Component, Input } from '@angular/core';\n\n\n@Component({\n selector: 'al-candidate-section',\n templateUrl: './candidate-section.component.html',\n styleUrls: ['./candidate-section.component.scss'],\n\n})\nexport class CandidateSectionComponent {\n @Input() useCustomHeader: boolean = false;\n @Input() candidateDetails: any;\n @Input() getFieldNotHidden?: (field: string) => boolean;\n @Input() getForceShowAllFields?: () => boolean;\n @Input() resumeService?: any;\n @Input() fieldVisibilityKeys?: Record<string, string | string[]>;\n\n shouldShow(...keys: string[]): boolean {\n if (keys.length === 0) {\n // If no specific keys are provided, default to visible unless force-show is explicitly false\n return this.getForceShowAllFields?.() ?? true;\n }\n if (this.getForceShowAllFields?.()) return true;\n if (!this.getFieldNotHidden) return true; // default visible if no checker\n return keys.some(k => this.getFieldNotHidden!(k));\n }\n\n private resolveKeys(fieldId: string): string[] {\n const configured = this.fieldVisibilityKeys?.[fieldId];\n if (!configured) return [];\n return Array.isArray(configured) ? configured : [configured];\n }\n\n shouldShowFor(fieldId: string, fallbackKeys: string[]): boolean {\n const externalKeys = this.resolveKeys(fieldId);\n const effectiveKeys = externalKeys.length ? externalKeys : fallbackKeys;\n return this.shouldShow(...effectiveKeys);\n }\n\n getCurrentJob(): string {\n return this.candidateDetails?.currentJobTitle || '';\n }\n getCurrentEmployer(): string {\n return this.candidateDetails?.currentEmployer || '';\n }\n getTotalExpYears(): string {\n return this.candidateDetails?.totalExpYears || '';\n }\n\n hasValue(): boolean {\n return !!(this.candidateDetails?.firstName || this.candidateDetails?.lastName ||\n this.candidateDetails?.phone || this.candidateDetails?.email ||\n this.candidateDetails?.linkedin || this.candidateDetails?.gender);\n }\n\n hasAddressValue(): boolean {\n return !!(this.candidateDetails?.street || this.candidateDetails?.city ||\n this.candidateDetails?.region || this.candidateDetails?.regionCode ||\n this.candidateDetails?.country || this.candidateDetails?.postCode);\n }\n\n hasExperienceValue(): boolean {\n return !!(this.candidateDetails?.totalExpYears || this.candidateDetails?.currentJobTitle ||\n this.candidateDetails?.currentEmployer);\n }\n}\n","<div class=\"candidate-container\">\n <div class=\"columns-wrapper\">\n <div class=\"column\">\n <div class=\"container\" data-test-id=\"candidate-section-name-container\"\n [ngClass]=\"shouldShowFor('name', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"person\"\n iconFont=\"material-icons\"\n [value]=\"candidateDetails?.firstName && candidateDetails?.lastName ? candidateDetails?.firstName + ' ' + candidateDetails?.lastName : candidateDetails?.firstName || candidateDetails?.lastName\"\n [placeholder]=\"'Name'\" [tooltip]=\"candidateDetails?.firstName + ' ' + candidateDetails?.lastName\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-name'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-phone-container\"\n [ngClass]=\"shouldShowFor('phone', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"phone\"\n iconFont=\"material-icons\" [value]=\"candidateDetails?.phoneNumber\" [placeholder]=\"'Phone Number'\"\n [tooltip]=\"candidateDetails?.phoneNumber\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-phone'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-email-container\"\n [ngClass]=\"shouldShowFor('email', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"email\"\n iconFont=\"material-icons\" [value]=\"candidateDetails?.emailAddress\" [placeholder]=\"'Email Address'\"\n [tooltip]=\"candidateDetails?.emailAddress\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-email'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-linkedin-container\"\n [ngClass]=\"shouldShowFor('linkedin', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"link\"\n iconAlt=\"LinkedIn\" [value]=\"candidateDetails?.linkedin\" [placeholder]=\"'LinkedIn'\"\n [tooltip]=\"candidateDetails?.linkedin\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-linkedin'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-gender-container\"\n [ngClass]=\"shouldShowFor('gender', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"transgender\"\n iconFont=\"material-icons\" [value]=\"candidateDetails?.userAssignedGender\" [placeholder]=\"'Gender'\"\n [tooltip]=\"candidateDetails?.userAssignedGender\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-gender'\"></lib-field-placeholder></div>\n <div class=\"total-exp-parent container mobile-only\" data-test-id=\"candidate-section-total-exp-parent\"\n [ngClass]=\"shouldShowFor('experience', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"schedule\"\n iconFont=\"material-icons\"\n [value]=\"getTotalExpYears() ? 'Total Exp - <span class=\\'total-exp-value\\'>' + getTotalExpYears() + '</span> yrs' : ''\"\n [placeholder]=\"'Total Exp'\"\n [tooltip]=\"getTotalExpYears() ? 'Total Exp - ' + getTotalExpYears() + ' yrs' : 'Total Exp'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-total-exp-value'\"></lib-field-placeholder></div>\n </div>\n <div class=\"column\">\n <div class=\"container\" data-test-id=\"candidate-section-address-container\"\n [ngClass]=\"shouldShowFor('address', []) ? '' : 'not-in-template'\">\n <div [ngClass]=\"shouldShowFor('addressStreet', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"location_on\" iconFont=\"material-icons\" [value]=\"candidateDetails?.street\" [placeholder]=\"'Street'\"\n [tooltip]=\"candidateDetails?.street\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-street'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressCity', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.city\" [placeholder]=\"'City'\"\n [tooltip]=\"candidateDetails?.city\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-city'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressRegion', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.region\" [placeholder]=\"'Region'\"\n [tooltip]=\"candidateDetails?.region\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-region'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressRegionCode', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.regionCode\"\n [placeholder]=\"'Region Code'\" [tooltip]=\"candidateDetails?.regionCode\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-region-code'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressCountry', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.country\" [placeholder]=\"'Country'\"\n [tooltip]=\"candidateDetails?.country\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-country'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressPostCode', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.postCode\" [placeholder]=\"'Post Code'\"\n [tooltip]=\"candidateDetails?.postCode\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-post-code'\"></lib-field-placeholder></div>\n </div>\n </div>\n </div>\n\n <div class=\"column experience-column\">\n <div class=\"total-exp-parent container \" data-test-id=\"candidate-section-total-exp-parent\"\n [ngClass]=\"shouldShowFor('experience', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"schedule\"\n iconFont=\"material-icons\"\n [value]=\"getTotalExpYears() ? 'Total Exp - <span class=\\'total-exp-value\\'>' + getTotalExpYears() + '</span> yrs' : ''\"\n [placeholder]=\"'Total Exp'\"\n [tooltip]=\"getTotalExpYears() ? 'Total Exp - ' + getTotalExpYears() + ' yrs' : 'Total Exp'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-total-exp-value'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-current-employer-container\">\n <div [ngClass]=\"shouldShowFor('currentJob', []) || shouldShowFor('currentEmployer', []) ? '' : 'not-in-template'\">\n <lib-field-placeholder icon=\"work\" iconFont=\"material-icons\"\n [value]=\"(getCurrentJob() || getCurrentEmployer()) ? 'Most Recently : <span class=\\'total-exp-value\\'>' + getCurrentJob() + '</span>' + (getCurrentEmployer() ? ' at <span class=\\'total-exp-value\\'>' + getCurrentEmployer() + '</span>' : '') : ''\"\n [placeholder]=\"'Current Job'\"\n [tooltip]=\"(getCurrentJob() || getCurrentEmployer()) ? 'Most Recently : ' + getCurrentJob() + (getCurrentEmployer() ? ' at ' + getCurrentEmployer() : '') : 'Current Job'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-current-job'\"></lib-field-placeholder>\n </div>\n </div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CandidateSectionComponent } from './candidate-section.component';\nimport { FieldPlaceholderComponent } from '../field-placeholder/field-placeholder.component';\n\n@NgModule({\n declarations: [CandidateSectionComponent],\n imports: [CommonModule, FieldPlaceholderComponent],\n exports: [CandidateSectionComponent]\n})\nexport class CandidateSectionModule { }\n","// Wrapper for Angular Material mat-checkbox\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n HostBinding\n}\n\n from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR\n}\n\n from '@angular/forms';\n\n@Component({\n\n selector: 'al-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n\n ]\n}\n\n) export class CheckboxComponent implements ControlValueAccessor {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() labelPosition: 'before' | 'after' = 'after';\n @Input() name: string = '';\n @Input() required: boolean = false;\n @Input() value: any;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelText: string = '';\n @Input() helperTextLabel: string = '';\n @Input() showLabels: boolean = true;\n @HostBinding('class.has-labels') get hasLabelsClass(): boolean {\n return !!this.labelText && this.labelText.trim().length > 0;\n }\n\n @Input() dataTestId: string = \"\";\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<boolean> = new EventEmitter();\n @Output() indeterminateChange: EventEmitter<boolean> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n\n onChange = (_: any) => { }\n\n ;\n\n onTouched = () => { }\n\n ;\n\n writeValue(value: any): void {\n this.checked = ! !value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = event.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n handleIndeterminateChange(value: boolean) {\n this.indeterminateChange.emit(value);\n }\n}\n","<mat-checkbox [checked]=\"checked\" [disabled]=\"disabled\" [labelPosition]=\"labelPosition\" [name]=\"name\"\n touchTargetSize=\"none\" [attr.data-testid]=\"dataTestId\" [required]=\"required\" [value]=\"value\" [color]=\"color\"\n [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\"\n (indeterminateChange)=\"handleIndeterminateChange($event)\">\n <div *ngIf=\"showLabels\" style=\"display: flex; flex-direction: column;\">\n <div *ngIf=\"labelText\" class=\"checkbox-label-main\">\n {{ labelText }}\n </div>\n <div *ngIf=\"helperTextLabel\" class=\"checkbox-label-helper\">\n {{ helperTextLabel }}\n </div>\n </div>\n <ng-content></ng-content>\n</mat-checkbox>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, MatCheckboxModule, MatTooltipModule],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule { }\n","// Wrapper for Angular Material mat-radio-button\nimport { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\n\n@Component({\n selector: 'al-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true\n }\n ]\n})\nexport class RadioComponent implements ControlValueAccessor {\n @Input() value: any;\n @Input() name: string = '';\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelPosition: 'before' | 'after' = 'after';\n @Input() required: boolean = false;\n @Input() labelText: string = '';\n @Input() helperTextLabel: string = '';\n @Input() showLabels: boolean = true;\n @Input() dataTestId: string = \"\";\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<any> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n writeValue(value: any): void {\n this.checked = value === this.value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = true;\n this.onChange(this.value);\n this.change.emit(this.value);\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n getColorClass(): string {\n if (this.color === 'green') {\n return 'mat-green';\n } else if (this.color === 'error') {\n return 'mat-error';\n }\n return '';\n }\n}\n","<mat-radio-button [value]=\"value\" [name]=\"name\" [checked]=\"checked\" [disabled]=\"disabled\" [color]=\"color\"\n [labelPosition]=\"labelPosition\" [required]=\"required\" [attr.data-testid]=\"dataTestId\" [ngClass]=\"getColorClass()\"\n [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\">\n <div *ngIf=\"showLabels\" style=\"display: flex; flex-direction: column;\">\n <div *ngIf=\"labelText\" class=\"radio-label-main\">\n {{ labelText }}\n </div>\n <div *ngIf=\"helperTextLabel\" class=\"radio-label-helper\">\n {{ helperTextLabel }}\n </div>\n </div>\n <ng-content></ng-content>\n</mat-radio-button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RadioComponent } from './radio.component';\n\n@NgModule({\n declarations: [RadioComponent],\n imports: [CommonModule, MatRadioModule, MatTooltipModule],\n exports: [RadioComponent]\n})\nexport class RadioModule { }\n","import {\n Component,\n Input,\n Output,\n EventEmitter\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n MatButtonToggleModule\n}\n\n from '@angular/material/button-toggle';\n\nimport {\n MatIconModule\n}\n\n from '@angular/material/icon';\n\nimport {\n FormsModule\n}\n\n from '@angular/forms';\n\nexport interface ToggleButton {\n id: string;\n label?: string;\n icon?: string;\n disabled?: boolean;\n dataTestId?: string;\n}\n\n@Component({\n selector: 'al-toggle-buttons',\n templateUrl: './toggle-buttons.component.html',\n styleUrls: ['./toggle-buttons.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonToggleModule, MatIconModule, FormsModule]\n}\n\n) export class ToggleButtonsComponent {\n @Input() buttons: ToggleButton[] = [];\n @Input() selectedId: string = '';\n @Input() disabled: boolean = false;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() type: 'default' | 'text-only' | 'icon-only' = 'default';\n @Input() multiple: boolean = false;\n @Input() vertical: boolean = false;\n @Input() dataTestId: string = '';\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() buttonClick: EventEmitter<ToggleButton> = new EventEmitter<ToggleButton>();\n\n onSelectionChange(value: string): void {\n this.selectedId = value;\n this.selectionChange.emit(value);\n\n const selectedButton = this.buttons.find(btn => btn.id === value);\n\n if (selectedButton) {\n this.buttonClick.emit(selectedButton);\n }\n }\n\n getSelectedValue(): string {\n return this.selectedId;\n }\n\n getSizeClass(): string {\n return 'al-toggle-buttons-size-' + this.size;\n }\n\n computeGap(button: ToggleButton): number {\n const hasLabel = ! !(button.label && button.label.trim());\n const hasIcon = ! !(button.icon && button.icon.trim());\n\n // 0 gap for icon-only buttons\n if (this.type === 'icon-only' || (!hasLabel && hasIcon)) {\n return 0;\n }\n\n // 4px gap for default type (icon + text)\n if (this.type === 'default' && hasIcon && hasLabel) {\n return 4;\n }\n\n // 8px gap for text-only buttons\n return 8;\n }\n}\n","<mat-button-toggle-group [value]=\"getSelectedValue()\" [disabled]=\"disabled\" [multiple]=\"multiple\" [vertical]=\"vertical\"\n (change)=\"onSelectionChange($event.value)\" [ngClass]=\"[getSizeClass()]\">\n\n <mat-button-toggle *ngFor=\"let button of buttons\" [value]=\"button.id\" [disabled]=\"button.disabled\"\n [attr.aria-label]=\"button.label\" [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap(button)\" [attr.data-testid]=\"button.dataTestId || dataTestId\">\n\n <!-- Icon (shown based on type) -->\n <mat-icon *ngIf=\"(type === 'default' || type === 'icon-only') && button.icon?.trim()\" class=\"button-icon\">{{\n button.icon }}</mat-icon>\n\n <!-- Label (shown based on type) -->\n <span *ngIf=\"(type === 'default' || type === 'text-only') && button.label?.trim()\" class=\"button-label\">{{\n button.label }}</span>\n </mat-button-toggle>\n\n</mat-button-toggle-group>\n","import { NgModule } from '@angular/core';\nimport { ToggleButtonsComponent } from './toggle-buttons.component';\n\n@NgModule({\n imports: [ToggleButtonsComponent],\n exports: [ToggleButtonsComponent]\n})\nexport class ToggleButtonsModule { }\n","// Wrapper for Angular Material mat-slide-toggle with custom icons\nimport { Component, Input, Output, EventEmitter, forwardRef, AfterViewInit, ElementRef, Renderer2, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'al-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n standalone: true,\n imports: [CommonModule, MatSlideToggleModule, MatIconModule, MatTooltipModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true\n }\n ]\n})\nexport class SlideToggleComponent implements ControlValueAccessor, AfterViewInit {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() name: string = '';\n @Input() required: boolean = false;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelText: string = '';\n @Input() helperTextLabel: string = '';\n @Input() showLabels: boolean = true;\n @Input() onIcon: string = 'dark_mode'; // Material Icon for ON state\n @Input() offIcon: string = 'light_mode'; // Material Icon for OFF state\n @Input() showIcons: boolean = true; // Toggle to show/hide custom icons\n @Input() size: 'small' | 'medium' | 'large' = 'medium'; // Size variant\n @Input() dataTestId: string = '';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<boolean> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n\n @ViewChild('slideToggle', { read: ElementRef }) element: ElementRef | undefined;\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n constructor(private renderer: Renderer2) { }\n\n writeValue(value: any): void {\n this.checked = !!value;\n this.updateIcon();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = event.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n this.updateIcon();\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.setIcon();\n }, 100);\n }\n\n setIcon() {\n if (this.element && this.showIcons) {\n try {\n // Try multiple selectors to find the handle\n let targetSpan: HTMLElement | null = this.element.nativeElement.querySelector('.mdc-switch__handle');\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mat-slide-toggle-thumb');\n }\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mdc-switch__thumb');\n }\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mdc-switch__icon');\n }\n\n if (targetSpan) {\n // Clear existing content\n while (targetSpan.firstChild) {\n targetSpan.firstChild.remove();\n }\n\n // Create new icon element\n const elem = this.renderer.createElement('span');\n const icon = this.checked ? this.onIcon : this.offIcon;\n elem.setAttribute('class', 'material-icons slide-toggle-custom-icon');\n elem.textContent = icon;\n targetSpan.appendChild(elem);\n }\n } catch (error) {\n console.error('Error updating Material icons:', error);\n }\n }\n }\n\n private updateIcon() {\n setTimeout(() => {\n this.setIcon();\n }, 200);\n }\n\n\n}\n","<div class=\"slide-toggle-container\" [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\">\n <mat-slide-toggle #slideToggle [checked]=\"checked\" [disabled]=\"disabled\" [name]=\"name\" [required]=\"required\"\n [color]=\"color\" (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\"\n class=\"custom-slide-toggle\" [class.slide-toggle-small]=\"size === 'small'\"\n [class.slide-toggle-medium]=\"size === 'medium'\" [class.slide-toggle-large]=\"size === 'large'\"\n [attr.data-testid]=\"dataTestId\">\n <div *ngIf=\"showLabels\" class=\"slide-toggle-labels\">\n <div *ngIf=\"labelText\" class=\"slide-toggle-label-main\">\n {{ labelText }}\n </div>\n <div *ngIf=\"helperTextLabel\" class=\"slide-toggle-label-helper\">\n {{ helperTextLabel }}\n </div>\n </div>\n <ng-content></ng-content>\n </mat-slide-toggle>\n</div>","import { NgModule } from '@angular/core';\nimport { SlideToggleComponent } from './slide-toggle.component';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, SlideToggleComponent, MatTooltipModule],\n exports: [SlideToggleComponent]\n})\nexport class SlideToggleModule { }\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'al-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule],\n})\nexport class IconButtonComponent {\n /** Icon name (Material icon name) */\n @Input() icon!: string;\n\n /** Custom color (CSS color value) */\n @Input() customColor: string = '#a62121';\n\n /** Use outlined icon font */\n @Input() iconOutlined: boolean = false;\n\n /** Button size (xs, sm, base, l, xl, header) */\n @Input() size: 'xs' | 'sm' | 'base' | 'l' | 'xl' | 'header' = 'base';\n\n /** Button color (blue, green, grey, error, gradient, etc.) */\n @Input() color: string = 'blue';\n\n /** Disabled state */\n @Input() disabled: boolean = false;\n\n /** Optional custom data-testid for QA/testing */\n @Input() dataTestId?: string;\n public effectiveDataTestId!: string;\n\n /** Click event */\n @Output() onClick = new EventEmitter<Event>();\n\n constructor(private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) {\n this.iconRegistry.registerFontClassAlias('material-icons-outlined', 'material-icons-outlined');\n this.iconRegistry.registerFontClassAlias('material-icons', 'material-icons');\n }\n\n ngOnInit() {\n this.effectiveDataTestId = this.dataTestId && this.dataTestId.trim() ? this.dataTestId : this.genIconBtnId();\n }\n\n public genId(): string {\n return 'icon-btn_' + Math.random().toString(36).slice(2, 10);\n }\n\n private genIconBtnId(): string {\n return this.genId();\n }\n\n handleClick(event: Event) {\n if (!this.disabled) {\n this.onClick.emit(event);\n }\n }\n}\n","<button\n type=\"button\"\n class=\"icon-btn\"\n [ngClass]=\"[\n 'icon-btn',\n 'size-' + size,\n 'color-' + color,\n iconOutlined ? 'icon-outlined' : '',\n disabled ? 'icon-btn-disabled' : ''\n ]\"\n [ngStyle]=\"{ color: customColor }\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n [attr.aria-label]=\"icon\"\n [attr.data-test-id]=\"effectiveDataTestId\"\n>\n <mat-icon\n [fontSet]=\"iconOutlined ? 'material-icons-outlined' : 'material-icons'\"\n class=\"icon-btn-icon\"\n >{{ icon }}</mat-icon>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { InputComponent } from '../input/input.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'al-ai-apply-bar',\n standalone: true,\n imports: [CommonModule, InputComponent, ButtonComponent, IconButtonComponent],\n templateUrl: './ai-apply-bar.component.html',\n styleUrls: ['./ai-apply-bar.component.scss']\n})\nexport class AiApplyBarComponent {\n /** Optional data-test-id for QA/testing */\n @Input() dataTestId?: string;\n /**\n * If true, show chevron icon on Apply AI button (second variation).\n */\n @Input() showChevron: boolean = false;\n /**\n * If true, show a separate chevron button after the Apply AI button.\n */\n @Input() showChevronButton = true;\n\n\n // Input field (dropdown) API\n @Input() placeholder: string = 'Typing';\n @Input() options: string[] = ['Typing', 'Gathering', 'Processing'];\n @Input() value: string = '';\n @Input() disabled: boolean = false;\n\n // Apply button\n @Input() applyLabel: string = 'Apply AI';\n @Input() applyDisabled: boolean = false;\n\n // Close button\n @Input() showClose: boolean = true;\n\n // Helper text (second row)\n @Input() showHelperText: boolean = false;\n @Input() helperText: string = 'Action will be applied globally to all sections';\n\n // Outputs\n @Output() valueChange = new EventEmitter<string>();\n @Output() applyClick = new EventEmitter<void>();\n @Output() closeClick = new EventEmitter<void>();\n /** Emitted when the chevron icon button is clicked */\n @Output() chevronClick = new EventEmitter<void>();\n\n onValueChange(v: string) {\n this.value = v;\n this.valueChange.emit(v);\n }\n}\n","<div class=\"ai-apply-wrap\" [attr.data-test-id]=\"dataTestId\">\n <div class=\"ai-apply-rail\">\n <div class=\"ai-apply-row\">\n <div class=\"ai-apply-input\">\n <al-input\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [type]=\"'text'\"\n [disabled]=\"disabled\"\n [helperText]=\"false\"\n [leftIcon]=\"''\"\n [rightIcon]=\"'expand_more'\"\n [dropDown]=\"true\"\n [options]=\"options\"\n [size]=\"'base'\"\n [types]=\"'primary'\"\n (valueChange)=\"onValueChange($event)\">\n </al-input>\n </div>\n\n <div class=\"ai-apply-button\">\n <al-button\n [label]=\"applyLabel\"\n [buttonType]=\"'icon-label'\"\n [category]=\"'gradient'\"\n [size]=\"'base'\"\n [state]=\"applyDisabled ? 'disabled' : 'default'\"\n (onClick)=\"applyClick.emit()\">\n </al-button>\n <al-icon-button\n *ngIf=\"showChevronButton\"\n icon=\"chevron_right\"\n [iconOutlined]=\"false\"\n [color]=\"'#ffffff'\"\n [category]=\"'gradient'\"\n [size]=\"'xl'\"\n [disabled]=\"applyDisabled\"\n (onClick)=\"chevronClick.emit()\"\n [dataTestId]=\"'icon-btn_Uwofs4q_3kWU'\"\n ></al-icon-button>\n </div>\n </div>\n\n <div class=\"ai-apply-helper\" *ngIf=\"showHelperText\">\n {{ helperText }}\n </div>\n </div>\n <div class=\"ai-apply-close\" *ngIf=\"showClose\">\n <al-button\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"'close'\"\n [category]=\"'grey'\"\n [size]=\"'base'\"\n (onClick)=\"closeClick.emit()\">\n </al-button>\n </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'al-action-bar',\n standalone: true,\n imports: [CommonModule, ButtonComponent],\n templateUrl: './action-bar-wrapper.component.html',\n styleUrls: ['./action-bar-wrapper.component.scss']\n})\nexport class ActionBarWrapperComponent implements AfterContentInit {\n @ContentChildren(ButtonComponent) actionButtons!: QueryList<ButtonComponent>;\n\n @Input() showClose: boolean = true;\n // Visibility flag: if false, wrapper does not render\n @Input() visible: boolean = true;\n // Wrapper mode: legacy icon buttons rail or AI Apply variant\n @Input() mode: 'buttons' | 'ai-apply' = 'buttons';\n\n // AI Apply variant inputs\n @Input() showHelperText: boolean = false;\n @Input() helperText: string = 'Action will be applied globally to all sections';\n @Input() showChevronOnApply: boolean = false;\n @Input() showExtraButton: boolean = false;\n @Input() extraButtonIcon: string = 'chevron_right';\n @Input() extraButtonAriaLabel: string = 'More actions';\n // Sticky button that remains when the bar is hidden (e.g., after Apply)\n @Input() showStickyButton: boolean = true;\n @Input() stickyButtonIcon: string = 'chevron_right';\n @Input() stickyButtonAriaLabel: string = 'Open AI Apply Bar';\n @Output() closeClick = new EventEmitter<void>();\n @Output() applyClick = new EventEmitter<void>();\n @Output() extraButtonClick = new EventEmitter<void>();\n @Output() stickyButtonClick = new EventEmitter<void>();\n\n /** If true, clicking Apply hides the bar (sets visible = false) after emitting applyClick */\n @Input() autoHideOnApply: boolean = false;\n\n buttons: ButtonComponent[] = [];\n\n ngAfterContentInit(): void {\n this.buttons = this.actionButtons?.toArray() ?? [];\n this.applyDefaultsToButtons();\n this.actionButtons.changes.subscribe(() => {\n this.buttons = this.actionButtons.toArray();\n this.applyDefaultsToButtons();\n });\n }\n\n /**\n * Enforce wrapper defaults on projected buttons:\n * - size = 'base'\n * - outline style for non-gradient categories\n * - preserve any button explicitly set to gradient (e.g., AI)\n */\n private applyDefaultsToButtons(): void {\n this.buttons.forEach((btn) => {\n try {\n // Ensure base size\n if (btn.size !== 'base') {\n btn.size = 'base';\n }\n\n // Respect gradient/colored buttons (e.g., AI)\n if (btn['category'] === 'gradient') {\n // Do not force outline on gradient\n return;\n }\n\n // Default to colour-outline variant and outlined icons\n if (!btn['category'] || btn['category'] === 'grey' || btn['category'] === 'grey-no-outline') {\n btn['category'] = 'grey-colour-outline' as any;\n }\n btn.iconOutlined = true;\n } catch {\n // no-op; defensive to avoid breaking if API changes\n }\n });\n }\n\n onApply(): void {\n this.applyClick.emit();\n if (this.autoHideOnApply) {\n this.visible = false;\n }\n }\n}\n","<div class=\"al-action-bar-wrap\">\n <!-- Visible bar -->\n <ng-container *ngIf=\"visible; else stickyTpl\">\n <div class=\"al-action-bar\" [ngClass]=\"{ 'mode-ai': mode === 'ai-apply' }\">\n <div class=\"al-action-bar__close\" *ngIf=\"showClose\">\n <al-button\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"'close'\"\n [category]=\"'grey'\"\n [size]=\"'base'\"\n (onClick)=\"closeClick.emit()\"\n ></al-button>\n </div>\n\n <!-- Buttons rail mode -->\n <ng-container *ngIf=\"mode === 'buttons'; else aiApplyTpl\">\n <div class=\"al-action-bar__rail\">\n <div class=\"al-action\" *ngFor=\"let b of buttons; let i = index\">\n <div class=\"al-action__label\" *ngIf=\"b.label && b.label.trim()\">{{ b.label }}</div>\n <al-button\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"b.leftIcon || ''\"\n [outlined]=\"b.outlined\"\n [category]=\"b.category || 'grey-no-outline'\"\n [size]=\"b.size || 'base'\"\n (onClick)=\"b.onClick.emit()\"\n (onHover)=\"b.onHover.emit()\"\n (onMouseLeave)=\"b.onMouseLeave.emit()\"\n ></al-button>\n </div>\n </div>\n </ng-container>\n\n <!-- AI Apply variant -->\n <ng-template #aiApplyTpl>\n <div class=\"al-action-bar__rail\">\n <div class=\"al-ai-row\">\n <div class=\"al-ai-left\">\n <ng-content></ng-content>\n </div>\n <div class=\"al-ai-actions\">\n <al-button\n *ngIf=\"showExtraButton\"\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"extraButtonIcon\"\n [category]=\"'grey-colour-outline'\"\n [size]=\"'base'\"\n [aria-label]=\"extraButtonAriaLabel\"\n (onClick)=\"extraButtonClick.emit()\"\n ></al-button>\n <al-button\n [label]=\"'Apply AI'\"\n [category]=\"'gradient'\"\n [size]=\"'base'\"\n [rightIcon]=\"showChevronOnApply ? 'chevron_right' : ''\"\n (onClick)=\"onApply()\"\n ></al-button>\n \n </div>\n </div>\n <div class=\"al-ai-helper\" *ngIf=\"showHelperText\">{{ helperText }}</div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n\n <!-- Sticky opener when hidden -->\n <ng-template #stickyTpl>\n <div class=\"al-action-bar__sticky\" *ngIf=\"showStickyButton\">\n <al-button\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"stickyButtonIcon\"\n [category]=\"'grey'\"\n [size]=\"'base'\"\n [aria-label]=\"stickyButtonAriaLabel\"\n (onClick)=\"stickyButtonClick.emit()\"\n ></al-button>\n <al-button\n *ngIf=\"showClose\"\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"'close'\"\n [category]=\"'grey'\"\n [size]=\"'base'\"\n aria-label=\"Close\"\n (onClick)=\"closeClick.emit()\"\n ></al-button>\n </div>\n </ng-template>\n</div>\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n Component,\n HostBinding,\n Input\n}\n\n from '@angular/core';\n\n/**\n * Responsive layout container that can behave as a row (columns) or a column (rows)\n * with breakpoint-specific item counts.\n *\n * Breakpoints (px):\n * - mobile: 0 - 500\n * - mobile-sm: 500 - 767\n * - tablet: 767 - 1024\n * - desktop: 1024+\n */\n@Component({\n selector: 'app-flex-grid',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './responsive-layout.component.html',\n styleUrls: ['./responsive-layout.component.scss'],\n}\n\n) export class ResponsiveLayoutComponent {\n /** Optional data-testid for test selectors */\n @Input() dataTestId?: string;\n /** Layout mode: 'row' has bottom margin, 'column' has no bottom margin. Both use responsive column counts. */\n @Input() type: 'row' | 'column' = 'row';\n\n /** Gap between items (in px) */\n @Input() gap: number | string = 8;\n\n /** Optional bottom margin for row mode. Set to false to remove. */\n @Input() marginBottom: number | string | boolean = 16;\n\n // Per-breakpoint counts. Defines number of columns at each breakpoint.\n @Input() countMobile: number = 1;\n @Input() countMobileSm: number = 2;\n @Input() countTablet: number = 3;\n @Input() countDesktop: number = 4;\n\n // Aliases for convenience (e.g., mobRow=\"3\" as requested). They map to countMobile.\n @Input() set mobRow(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countMobile = Number(v);\n }\n }\n\n @Input() set mobCols(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countMobile = Number(v);\n }\n }\n\n /** Alias: rows sets a base count used for all breakpoints unless overridden */\n @Input() set rows(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n const n = Number(v);\n this.countMobile = n;\n this.countMobileSm = n;\n this.countTablet = n;\n this.countDesktop = n;\n }\n }\n\n /** Alias for tablet breakpoint */\n @Input() set tabRow(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countTablet = Number(v);\n }\n }\n\n /** Alias for desktop breakpoint */\n @Input() set desktop(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countDesktop = Number(v);\n }\n }\n\n // Expose CSS variables on host for SCSS to pick up.\n @HostBinding('style.--gap') get cssGap() {\n return typeof this.gap === 'string' ? this.gap : `$ {\n this.gap\n }\n\n px`;\n }\n\n @HostBinding('style.--count-mobile') get cssCountMobile() {\n return this.countMobile;\n }\n\n @HostBinding('style.--count-mobile-sm') get cssCountMobileSm() {\n return this.countMobileSm;\n }\n\n @HostBinding('style.--count-tablet') get cssCountTablet() {\n return this.countTablet;\n }\n\n @HostBinding('style.--count-desktop') get cssCountDesktop() {\n return this.countDesktop;\n }\n\n // Expose bottom margin as CSS var. If explicitly false => 0px\n @HostBinding('style.--mb') get cssMarginBottom() {\n const v = this.marginBottom;\n if (v === false || v === 0 || v === '0') return '0px';\n if (typeof v === 'string') return v; // allow '1rem', '12px'\n\n return `$ {\n v\n }\n\n px`;\n }\n\n @HostBinding('class.row') get isRow() {\n return this.type === 'row';\n }\n\n @HostBinding('class.col') get isCol() {\n return this.type === 'column';\n }\n\n @HostBinding('attr.data-testid') get dataTestIdAttr() {\n return this.dataTestId || null;\n }\n}\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResponsiveLayoutComponent } from './responsive-layout.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResponsiveLayoutComponent],\n exports: [ResponsiveLayoutComponent],\n})\nexport class ResponsiveLayoutModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ViewChild,\n OnInit,\n AfterViewInit\n} from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'app-table',\n standalone: true,\n imports: [CommonModule, MatTooltipModule],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css']\n})\nexport class TableComponent implements OnInit, AfterViewInit {\n @Input() getEditorElement!: () => HTMLElement | undefined;\n @Input() saveHistoryMethod!: () => void;\n @Input() textChangeMethod!: () => void;\n\n\n\n showTableDropdown = false;\n\n ngOnInit(): void {\n\n }\n\n ngAfterViewInit(): void {\n\n }\n\n toggleTableDropdown(): void {\n this.showTableDropdown = !this.showTableDropdown;\n }\n\n addTable(event: MouseEvent): void {\n const editorElement = this.getEditorElement();\n if (!editorElement) {\n // Wait a bit and try again\n setTimeout(() => {\n const retryEditorElement = this.getEditorElement();\n if (retryEditorElement) {\n this.addTable(event);\n }\n }, 100);\n return;\n }\n\n const tableHTML = `\n <table style=\"border-collapse: collapse; width: 100%;\">\n <tbody>\n <tr height=34>\n <td></td>\n <td></td>\n </tr>\n <tr height=34>\n <td></td>\n <td></td>\n </tr>\n </tbody>\n </table>\n <br>\n `;\n\n // Focus the editor first\n editorElement.focus();\n\n // Execute the command in the context of the editor\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n // Ensure the range is within the editor\n if (editorElement.contains(range.startContainer)) {\n document.execCommand(\"insertHTML\", false, tableHTML);\n }\n } else {\n // If no selection, append to the end\n editorElement.innerHTML += tableHTML;\n }\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n // Close dropdown after creating table\n this.showTableDropdown = false;\n }\n\n deleteTable(event: MouseEvent): void {\n const editorElement = this.getEditorElement();\n if (editorElement) {\n const table = editorElement.querySelector(\"table\");\n\n if (table) {\n table.remove();\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n }\n }\n this.showTableDropdown = false;\n }\n\n addRowBelow(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = (cell as HTMLElement).parentNode as HTMLElement;\n const table = row.parentNode as HTMLElement;\n\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const newRow = row.cloneNode(true) as HTMLElement;\n Array.from(newRow.children).forEach(cell => (cell.textContent = \"\"));\n newRow.setAttribute(\"height\", \"34\");\n row.insertAdjacentElement(\"afterend\", newRow);\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n\n addRowAbove(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = (cell as HTMLElement).parentNode as HTMLElement;\n const table = row.parentNode as HTMLElement;\n\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const newRow = row.cloneNode(true) as HTMLElement;\n Array.from(newRow.children).forEach(cell => (cell.textContent = \"\"));\n newRow.setAttribute(\"height\", \"34\");\n row.insertAdjacentElement(\"beforebegin\", newRow);\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n\n addColumnLeft(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = (cell as HTMLElement).closest(\"table\");\n\n if (table) {\n const rowIndex = Array.from((cell as HTMLElement).parentNode!.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row) => {\n const newCell = row.cells[rowIndex].cloneNode(false) as HTMLElement;\n newCell.textContent = \"\";\n row.cells[rowIndex].insertAdjacentElement(\"beforebegin\", newCell);\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n\n addColumnRight(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = (cell as HTMLElement).closest(\"table\");\n\n if (table) {\n const cellIndex = Array.from((cell as HTMLElement).parentNode!.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row) => {\n const newCell = row.cells[cellIndex].cloneNode(false) as HTMLElement;\n newCell.textContent = \"\";\n row.cells[cellIndex].insertAdjacentElement(\"afterend\", newCell);\n }\n\n );\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n\n deleteCurrentColumn(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = (cell as HTMLElement).closest(\"table\");\n if (!table) return;\n const cellIndex = Array.from((cell as HTMLElement).parentNode!.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row) => {\n if (row.cells.length > cellIndex) {\n row.deleteCell(cellIndex);\n }\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n\n deleteCurrentRow(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n // Find the nearest cell element\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = (cell as HTMLElement).parentNode as HTMLElement;\n const table = row.parentNode as HTMLElement;\n\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n row.remove();\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n}\n","<div class=\"table-controls\"><button class=\"format-button table-button\" (click)=\"toggleTableDropdown()\"\n title=\"Table Operations\" type=\"button\"><span class=\"material-icons\">table_chart</span></button>\n <div *ngIf=\"showTableDropdown\" class=\"table-dropdown\">\n <div class=\"table-row\"><button type=\"button\" class=\"table-btn\" (click)=\"addTable($event)\" title=\"Add table\"\n matTooltip=\"Add Table\" matTooltipPosition=\"above\"><span class=\"material-icons\">add</span></button><button\n type=\"button\" class=\"table-btn\" (click)=\"deleteTable($event)\" title=\"Delete table\" matTooltip=\"Delete Table\"\n matTooltipPosition=\"above\"><span class=\"material-icons\">delete</span></button><button type=\"button\"\n class=\"table-btn\" (click)=\"addColumnLeft($event)\" title=\"Column left\" matTooltip=\"Add Column Left\"\n matTooltipPosition=\"above\"><span class=\"material-icons\">add_circle_outline</span></button><button type=\"button\"\n class=\"table-btn\" (click)=\"addColumnRight($event)\" title=\"Column right\" matTooltip=\"Add Column Right\"\n matTooltipPosition=\"above\"><span class=\"material-icons\">add_circle</span></button></div>\n <div class=\"table-row\"><button type=\"button\" class=\"table-btn\" (click)=\"addRowAbove($event)\" title=\"Row top\"\n matTooltip=\"Add Row Above\" matTooltipPosition=\"above\"><span\n class=\"material-icons\">expand_less</span></button><button type=\"button\" class=\"table-btn\"\n (click)=\"addRowBelow($event)\" title=\"Row bottom\" matTooltip=\"Add Row Below\" matTooltipPosition=\"above\"><span\n class=\"material-icons\">expand_more</span></button><button type=\"button\" class=\"table-btn\"\n (click)=\"deleteCurrentRow($event)\" title=\"Delete row\" matTooltip=\"Delete Current Row\"\n matTooltipPosition=\"above\"><span class=\"material-icons\">remove_circle_outline</span></button><button\n type=\"button\" class=\"table-btn\" (click)=\"deleteCurrentColumn($event)\" title=\"Delete column\"\n matTooltip=\"Delete Current Column\" matTooltipPosition=\"above\"><span\n class=\"material-icons\">remove_circle</span></button></div>\n </div>\n</div>","\nexport default class BulletUtils {\n static sampleBullets = ['•', '●', '◎', '◍', '◌', '○', '◉', '▪'];\n static autoBullet(text: string) {\n var array = text.split('.');\n let final = \"<ul>\";\n const regexForStripHTML = /(<([^>]+)>)/ig;\n for (let i = 0; i < array.length; i++) {\n const stripContent = array[i].replace(regexForStripHTML, '');\n if (stripContent.trim().length) {\n final = final + \"<li>\" + stripContent + \"</li>\";\n }\n }\n return final + \"</ul>\";\n }\n\n static skillBullet(text: string) {\n text = text.replace(/<p[^>]*>/g, \"\");\n var array = text.split(',');\n let final = \"<ul>\"\n for (let i = 0; i < array.length; i++) {\n final = final + \"<li>\" + array[i] + \"</li>\";\n }\n return final + \"</ul>\";\n }\n\n static legacyOnPasteHandler(text: string) {\n let containsBullets = BulletUtils.sampleBullets.some(bullets => text.includes(bullets));\n let result = '';\n if (containsBullets) {\n const actualBullet = BulletUtils.sampleBullets.filter(bullets => text.includes(bullets));\n const charCodeOfBullet = Number(actualBullet[0].charCodeAt(0));\n const bulletTags = BulletUtils.getTagOfBullets(text, actualBullet[0]);\n const splittedText = text.split(bulletTags.beforeBulletTag + String.fromCharCode(charCodeOfBullet) + bulletTags.afterBullterTag);\n result = splittedText[0].length > 0 ? splittedText[0] : '';\n result = result + '<ul>';\n let bulletedText = '';\n for (let i = 1; i < splittedText.length; i++) {\n let splittedLine = splittedText[i].split('</p>');\n if (splittedLine[1] && splittedLine[1].length > 0)\n bulletedText = bulletedText + '<li>' + splittedLine[0].replace('<p>', '') + '</li>' + BulletUtils.otherBullets(splittedLine);\n else\n bulletedText = bulletedText + '<li>' + splittedLine[0].replace('<p>', '') + '</li>';\n }\n result = result + bulletedText + '</ul>';\n return result;\n }\n else\n return result = text;\n }\n\n\n static getFirstLineOnPaste(text: string, actualBullet: string[]) {\n return text.length > 0 && text.includes(actualBullet[0]) ?\n '<ul>' + '<li>' + text.replace(actualBullet[0], '') + '</li>' : '<p>' + text + '</p>';\n }\n\n static onPasteBulletHandler(text: string) {\n let result = '';\n let map = BulletUtils.extractExistedBullets(text);\n text = map.get('text');\n\n let containsBullets = BulletUtils.sampleBullets.some(bullets => text.includes(bullets));\n if (containsBullets) {\n let actualBullet = BulletUtils.sampleBullets.filter(bullets => text.includes(bullets));\n const parser = new DOMParser();\n const htmlDoc = parser.parseFromString(text, 'text/html');\n let bodyTag = htmlDoc.getElementsByTagName('body')[0].children;\n result = BulletUtils.getFirstLineOnPaste(bodyTag[0].innerHTML, actualBullet);\n let bulletedText = !result.includes('<ul>') ? '<ul>' : '';\n for (let i = 1; i < bodyTag.length; i++) {\n if (bodyTag[i].innerHTML.includes(actualBullet[0])) {\n if ((i < bodyTag.length - 1) && !bodyTag[i + 1].innerHTML.includes(actualBullet[0]) && bodyTag[i + 1].innerHTML.length > 5) {\n if (bodyTag[i].innerHTML === actualBullet[0]) {\n bulletedText = bulletedText + '<li>' + bodyTag[i + 1].innerHTML.replace(actualBullet[0], '') + '</li>';\n i = i + 1;\n }\n else if (bodyTag[i].innerHTML !== actualBullet[0] && !bulletedText.includes(bodyTag[i].innerHTML))\n bulletedText = bulletedText + '<li>' + bodyTag[i].innerHTML.replace(actualBullet[0], '') + '</li>';\n }\n else {\n let insideText = bodyTag[i].innerHTML.replace(actualBullet[0], '');\n bulletedText = bulletedText + '<li>' + insideText + '</li>';\n }\n }\n else if (bulletedText.length > 10 && !bodyTag[i].innerHTML.includes(actualBullet[0]) && i < bodyTag.length - 1 && bodyTag[i + 1].innerHTML.includes(actualBullet[0])) {\n bulletedText = bulletedText.substring(0, bulletedText.lastIndexOf('</li>'));\n bulletedText = bulletedText + bodyTag[i].innerHTML.replace(actualBullet[0], '') + '</li>';\n }\n else {\n if (bulletedText.length > 10) {\n result = result + bulletedText + '</ul>';\n if (!bodyTag[i].innerHTML.includes(actualBullet[0])) {\n if (bodyTag[i].innerHTML.startsWith('<span>') && bodyTag[i].innerHTML.endsWith('</span>'))\n result = result + bodyTag[i].innerHTML.replace('span', 'p');\n else if (bodyTag[i].innerHTML.startsWith('<p>') && !bodyTag[i].innerHTML.endsWith('</p>'))\n result = result + bodyTag[i].innerHTML.replace('span', 'p') + '</p>';\n else if (!bodyTag[i].innerHTML.startsWith('<p>') && bodyTag[i].innerHTML.endsWith('</p>'))\n result = result + '<p>' + bodyTag[i].innerHTML.replace('span', 'p');\n else\n result = result + '<p>' + bodyTag[i].innerHTML.replace('<p>', '').replace('</p>', '') + '</p>';\n }\n bulletedText = '<ul>';\n }\n else\n result = result + BulletUtils.transform(bodyTag[i] as HTMLElement);\n }\n\n }\n result = result + bulletedText + '</ul>';\n result = map.has('existedBullets') ? (map.get('existedBullets') + result) : result;\n return result;\n }\n else\n return map.has('existedBullets') ? (map.get('existedBullets') + result) + BulletUtils.sanitizeHtml(text) : result + BulletUtils.sanitizeHtml(text);\n\n }\n\n\n private static otherBullets(tag: any) {\n let otherTag = '</ul><p>'\n for (let i = 1; i < tag.length; i++)\n otherTag = otherTag + tag[i];\n return otherTag + '</p><ul>';\n }\n\n\n private static getTagOfBullets(text: string, actualBullet: string) {\n let beforeBulletTag = text.substring(0, text.indexOf(actualBullet));\n let afterBullterTag = text.substring(text.indexOf(actualBullet), text.length);\n beforeBulletTag = beforeBulletTag.substring(beforeBulletTag.lastIndexOf('<'), beforeBulletTag.length);\n afterBullterTag = afterBullterTag.substring(1, afterBullterTag.indexOf('>')) + '>';\n return {\n beforeBulletTag: beforeBulletTag,\n afterBullterTag: afterBullterTag\n };\n }\n private static transformSimpleText(text: string) {\n return text.startsWith('<p') || text.startsWith('<div') ?\n '<p>' + text.replaceAll('</p>', '&nbsp;').replaceAll('<p>', '') + '</p>' : '<span>' + text.replaceAll('</span>', '&nbsp;').replaceAll('<span>', '') + '</span>';\n\n }\n private static transform(node: HTMLElement) {\n if (node.tagName.startsWith('P')) {\n return '<p>' + node.innerHTML + '</p>';\n }\n else if (node.tagName.startsWith('S')) {\n return '<span>' + node.innerHTML + '</span>';\n }\n else\n return '<p>' + node.innerHTML + '</p>';\n }\n\n private static sanitizeHtml(text: string) {\n return new DOMParser().parseFromString(text, \"text/html\").body.innerHTML;\n }\n\n\n static onPasteBulletHandlerOriginalResume(text: string) {\n let result = '';\n text = text.replace(/style=\"[^\"]*color:\\s*transparent[^\"]*\"/g, 'style=\"color: black;\"');\n // let map = BulletUtils.extractExistedBullets(text);\n // text = BulletUtils.removeTags(map.get('text'), ['p'])\n // text = text.split('<p></p>').join('').split('<p> </p>').join('');\n result = BulletUtils.onPasteBulletHandler(text);\n // result = map.has('existedBullets') ? (map.get('existedBullets') + result) : result;\n return result;\n }\n\n // this function take html and tags we want to keep in the provided html and remove all other tags from html\n static removeTags(string: string, array: string[]) {\n return array ? string.split(\"<\").filter(function (val) { return f(array, val); }).map(function (val) { return f(array, val); }).join(\"\") : string.split(\"<\").map(function (d) { return d.split(\">\").pop(); }).join(\"\");\n function f(array: string[], value: string) {\n return array.map(function (d) { return value.includes(d + \">\"); }).indexOf(true) != -1 ? \"<\" + value : value.split(\">\")[1];\n }\n }\n\n /**\n * this funcation take the whole text we have in editor and\n * extract already exicted bullets in it.\n * @param text\n * @returns map -> with the following values\n * 1: 'existedBullets' if we have any in the text.\n * 2: 'text' newly pasted text in the editor\n */\n static extractExistedBullets(text: string) {\n let map = new Map();\n let existedBullets = text.substring(0, text.lastIndexOf('</ul>'));\n if (existedBullets) {\n existedBullets = existedBullets + '</ul>';\n map.set('existedBullets', existedBullets);\n let x = text.split(existedBullets);\n text = x[1] ? x[1] : '';\n }\n map.set('text', text);\n return map;\n }\n static cleanSpans(htmlString: string) {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n // Select all <li> elements\n const listItems = doc.querySelectorAll('li');\n listItems.forEach(li => {\n if (li?.childNodes?.length > 1) {\n let combinedText = '';\n // Iterate through all child nodes of the <li>\n li?.childNodes?.forEach(child => {\n // Only process element nodes (skip text nodes and other types)\n if (child.nodeType === Node.ELEMENT_NODE) {\n combinedText += (child.textContent || '').trim() + ' ';\n }\n });\n // Remove any trailing whitespace\n combinedText = combinedText.trim();\n // Clear the existing content of the <li> and set its text content\n li.innerHTML = combinedText;\n }\n });\n\n // Serialize the updated DOM back to an HTML string\n return doc.body.innerHTML;\n }\n\n static cleanDiv(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Select all <div> and <span> elements\n const divAndSpanItems = doc.querySelectorAll('div');\n divAndSpanItems.forEach(item => {\n // Create a new <p> element\n const p = document.createElement('p');\n\n let combinedText = '';\n // Iterate through all child nodes of the <div> or <span>\n item.childNodes.forEach(child => {\n // Only process element nodes (skip text nodes and other types)\n if (child.nodeType === Node.ELEMENT_NODE || child.nodeType === Node.TEXT_NODE) {\n combinedText += child.textContent?.replace(/\\u00A0/g, ' ') + ' ';\n }\n });\n combinedText = combinedText.trim();\n p.textContent = combinedText;\n\n // Replace the original <div> or <span> with the new <p>\n item.parentNode?.replaceChild(p, item);\n\n this.removeEmptyChildren(p);\n });\n\n return doc.body.innerHTML;\n }\n\n\n\n static removeEmptyChildren(element: HTMLElement): void {\n const children = Array.from(element.childNodes);\n\n children.forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE && (child as HTMLElement).innerHTML.trim() === '') {\n element.removeChild(child);\n }\n });\n }\n\n static cleanEmptyTags(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively remove empty tags\n function removeEmptyTags(element: HTMLElement): boolean {\n let hasData = false;\n\n const children = Array.from(element.childNodes);\n for (const child of children) {\n if (child.nodeType === Node.ELEMENT_NODE) {\n const el = child as HTMLElement;\n\n // Recursively clean children and check if they have data\n if (removeEmptyTags(el)) {\n hasData = true;\n }\n } else if (child.nodeType === Node.TEXT_NODE && child.textContent?.trim() !== '') {\n // If the text node has non-whitespace content, mark as having data\n hasData = true;\n }\n }\n\n // Remove the element if it has no data and no children with data\n if (!hasData) {\n element.parentNode?.removeChild(element);\n }\n\n return hasData;\n }\n removeEmptyTags(doc.body);\n return doc.body.innerHTML;\n }\n\n static refineAllTags(htmlString: string): string {\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to process b u and i contents\n function cleanBoldItalicUnderline(el: HTMLElement): string {\n let combinedContent = '';\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it is just a text\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n // clean child elements recursiverly\n combinedContent += cleanBoldItalicUnderline(elementChild);\n }\n });\n el.innerHTML = combinedContent;\n //remove empty child\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE && child.textContent === '') {\n el.removeChild(child);\n }\n });\n // cobine content wrap up in the b or u or i\n return `<${el.tagName.toLowerCase()}>${combinedContent}</${el.tagName.toLowerCase()}>`;\n }\n\n\n // Function to combine p\n function combinedivContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'div') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'div') {\n // If it's a nested <p> tag, combine its content recursively\n combinedContent += combinedivContents(elementChild);\n } else if (elementChild.tagName.toLowerCase() === 'p') {\n // Combine content of nested <span> elements\n combinedContent += combinedivContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <p> content\n el.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Function to combine span contents recursively\n function combineSpanContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'span') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'span') {\n // If it's a <span> element, process its content recursively\n combinedContent += combineSpanContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n // For other element nodes, add their outer HTML\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <span> content\n el.innerHTML = combinedContent;\n const ptag = document.createElement('p');\n ptag.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Function to combine p contents recursively\n function combinePContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'p') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'p') {\n // If it's a nested <p> tag, combine its content recursively\n combinedContent += combinePContents(elementChild);\n } else if (elementChild.tagName.toLowerCase() === 'span') {\n // Combine content of nested <span> elements\n combinedContent += combineSpanContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n // For other element nodes, add their outer HTML\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <p> content\n el.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Helper function to wrap adjacent <span> tags in a <p> tag if there are no ancestor tags\n function wrapSpansInP(element: HTMLElement): void {\n // Get all top-level child elements inside the body\n const children = Array.from(element.childNodes);\n const spanElements = children.filter(node => node.nodeType === Node.ELEMENT_NODE && (node as HTMLElement).tagName.toLowerCase() === 'span');\n\n // If all top-level elements are <span> tags, wrap them in a <p> tag\n if (spanElements.length === children.length && children.length > 0) {\n const pElement = document.createElement('p');\n spanElements.forEach(span => {\n pElement.appendChild(span); // Move the <span> elements inside the <p>\n });\n element.appendChild(pElement); // Replace with new <p>\n }\n }\n\n // Function to process all elements\n function processAllElements(element: HTMLElement): void {\n // Select all elements within the current element\n const allElements = Array.from(element.querySelectorAll('*'));\n\n allElements.forEach(el => {\n if (el instanceof HTMLElement) {\n if (el.tagName.toLowerCase() === 'p') {\n combinePContents(el);\n } else if (el.tagName.toLowerCase() === 'span') {\n combineSpanContents(el);\n }\n else if (el.tagName.toLowerCase() === 'div') {\n combinedivContents(el);\n }\n\n // Clean empty tags\n if (el.childNodes.length === 0 || el.textContent?.trim() === '') {\n el.parentNode?.removeChild(el);\n }\n }\n });\n\n // Recursively apply to all child elements\n Array.from(element.children).forEach(child => {\n if (child instanceof HTMLElement) {\n processAllElements(child);\n }\n });\n }\n // check whether the span within the p tags or not\n wrapSpansInP(doc.body);\n\n // Start processing from the body of the document\n processAllElements(doc.body);\n return doc.body.innerHTML;\n }\n\n\n static processParagraphs(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively combine child elements and text into a single <p> tag\n function flattenParagraphs(element: HTMLElement) {\n // Process each <p> element within the current element\n element.querySelectorAll('p').forEach(p => {\n let combinedText = '';\n\n // Iterate through child nodes and elements\n p.childNodes.forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n const el = child as HTMLElement;\n // Combine text from child elements\n combinedText += (el.textContent || '').trim() + ' ';\n // Recursively process child elements if they contain further <p> tags\n if (el.querySelector('p')) {\n flattenParagraphs(el);\n }\n } else if (child.nodeType === Node.TEXT_NODE) {\n combinedText += (child.textContent || '').trim() + ' ';\n }\n });\n\n // Remove any trailing whitespace\n combinedText = combinedText.trim();\n // Update the <p> tag with the combined text\n p.textContent = combinedText;\n\n // Remove all child <p> elements to avoid nested <p> tags\n p.querySelectorAll('p').forEach(childP => childP.remove());\n });\n\n // Recursively process any nested elements within the current element\n element.querySelectorAll('*').forEach(childElement => {\n if (childElement.tagName !== 'P') {\n flattenParagraphs(childElement as HTMLElement);\n }\n });\n }\n\n // Start the flattening process from the root of the document body\n flattenParagraphs(doc.body);\n\n // Serialize the updated DOM back to an HTML string\n return doc.body?.innerHTML;\n }\n\n\n static removeInlineStyles(htmlString: string) {\n // Create a new DOM parser\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively remove styles from all elements\n function removeStylesFromElement(element: HTMLElement) {\n // Remove the 'style' attribute from the current element\n element.removeAttribute('style');\n\n // Recursively remove styles from child nodes\n element.childNodes.forEach((child: Node) => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n removeStylesFromElement(child as HTMLElement);\n }\n });\n }\n\n // Start from the document body\n removeStylesFromElement(doc.body);\n\n // Serialize the document back to an HTML string\n return doc.body.innerHTML;\n }\n\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n OnInit,\n OnDestroy,\n AfterViewInit,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter\n}\n from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TableComponent } from './table/table.component';\nimport BulletUtils from './bullet-utils';\n\ninterface ToolbarItem {\n type: string;\n icon: string;\n title: string;\n command: string;\n}\n\n@Component({\n selector: 'app-custom-editor',\n standalone: true,\n imports: [CommonModule, TableComponent, MatTooltipModule],\n templateUrl: './custom-editor.component.html',\n styleUrls: ['./custom-editor.component.scss'],\n encapsulation: ViewEncapsulation.None\n}\n\n) export class CustomEditorComponent implements OnInit,\n OnDestroy,\n AfterViewInit {\n constructor(private router: Router) { }\n\n @ViewChild('editorReference', {\n static: true\n }\n\n ) editorReference !: ElementRef<HTMLElement>;\n\n @Input() bold: boolean = true;\n @Input() italic: boolean = true;\n @Input() underline: boolean = true;\n @Input() list: boolean = true;\n @Input() isVisible: boolean = true;\n @Input() dataTestId: string = '';\n\n // Editor labels inputs\n @Input() showLabels: boolean = false;\n @Input() leftLabelText: string = 'Left Text';\n @Input() rightLabelText: string = 'Right Text';\n\n // New input properties\n @Input() initialValue: string = '';\n @Input() contentFromParent: string = '';\n @Input() editScreenSection: string = '';\n @Input() actionType: string = '';\n @Input() historyControls: boolean = true; // Single flag for undo/redo buttons\n @Input() autobullet: boolean = true;\n\n // Table visibility control\n @Input() showTable: boolean = true;\n\n @Output() contentChangeFromQuill = new EventEmitter<string>();\n @Output() ApplyAIinQuill = new EventEmitter<any>();\n\n // Generic configuration approach\n @Input() toolbarConfig: ToolbarItem[] = [{\n type: 'bold', icon: 'format_bold', title: 'Bold', command: 'bold'\n },\n {\n type: 'italic', icon: 'format_italic', title: 'Italic', command: 'italic'\n },\n {\n type: 'underline', icon: 'format_underline', title: 'Underline ', command: 'underline'\n }\n\n ];\n\n // Text formatting configuration\n @Input() textFormattingConfig: ToolbarItem[] = [{\n type: 'list', icon: 'format_list_bulleted', title: 'Bullet List', command: 'insertUnorderedList'\n }];\n\n boldedText = false;\n italicTexted = false;\n underlineTexted = false;\n listTexted = false;\n\n // Auto bullet and skills bullet properties\n hideAutoBulletOption: boolean = false;\n skillsBullet: boolean = true;\n autoBulletDisable: boolean = false;\n isLoadingAI: boolean = false;\n isDisabled: boolean = false;\n AutoBulletButton: string = \"Auto Bullet\";\n skillsButton: string = \"Bullet Skills\";\n isSkillBullet: boolean = false;\n previousContent: string = '';\n\n // History management for undo/redo\n private history: string[] = [];\n private redoStack: string[] = [];\n private content: string = '';\n\n // Responsive styling dropdown\n isSmallScreen: boolean = false;\n showStylingDropdown: boolean = false;\n showTextFormattingDropdown: boolean = false;\n\n // Timeout handlers for dropdown hiding\n private stylingDropdownTimeout: any;\n private textFormattingDropdownTimeout: any;\n\n ngOnInit(): void {\n\n // Initialize editor with initial value or default content\n if (this.editorReference?.nativeElement) {\n const content = this.initialValue || this.contentFromParent || '<p>Start typing here...</p>';\n this.editorReference.nativeElement.innerHTML = content;\n }\n\n // Check initial screen size\n this.checkScreenSize();\n\n // Add resize listener\n window.addEventListener('resize', () => this.checkScreenSize());\n\n // Add click outside listener to close dropdowns\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n }\n\n ngAfterViewInit(): void {\n\n // Ensure editor reference is available for child components\n if (this.editorReference?.nativeElement) {\n const content = this.initialValue || this.contentFromParent || '<p>Start typing here...</p>';\n this.editorReference.nativeElement.innerHTML = content;\n }\n\n this.saveHistory();\n }\n\n getEditorElement(): HTMLElement | undefined {\n return this.editorReference?.nativeElement;\n }\n\n // Bound methods for table component\n getBoundGetEditorElement(): () => HTMLElement | undefined {\n return () => this.getEditorElement();\n }\n\n getBoundSaveHistory(): () => void {\n return () => this.saveHistory();\n }\n\n getBoundTextChange(): () => void {\n return () => this.textChange();\n }\n\n ngOnDestroy(): void {\n // Cleanup if needed\n window.removeEventListener('resize', () => this.checkScreenSize());\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n\n // Clear any pending timeouts\n if (this.stylingDropdownTimeout) {\n clearTimeout(this.stylingDropdownTimeout);\n }\n if (this.textFormattingDropdownTimeout) {\n clearTimeout(this.textFormattingDropdownTimeout);\n }\n }\n\n // Responsive methods\n private checkScreenSize(): void {\n this.isSmallScreen = window.innerWidth < 1500;\n }\n\n // Handle text formatting button clicks\n handleTextFormattingClick(event: MouseEvent, item: ToolbarItem): void {\n event.preventDefault();\n\n switch (item.command) {\n case 'table':\n // Table functionality is handled by the app-table component\n break;\n case 'autobullet':\n this.transformToBullets(event);\n break;\n case 'skillsbullet':\n this.transformToSkillsBullets(event);\n break;\n default:\n // For list and other commands, use the standard execCmd\n this.execCmd(event, item.command);\n break;\n }\n }\n\n // Toggle styling dropdown\n toggleStylingDropdown(): void {\n this.showStylingDropdown = !this.showStylingDropdown;\n if (this.showStylingDropdown) {\n this.showTextFormattingDropdown = false;\n }\n }\n\n // Toggle text formatting dropdown\n toggleTextFormattingDropdown(): void {\n this.showTextFormattingDropdown = !this.showTextFormattingDropdown;\n if (this.showTextFormattingDropdown) {\n this.showStylingDropdown = false;\n }\n }\n\n // Show styling dropdown on hover\n showStylingDropdownOnHover(): void {\n this.showStylingDropdown = true;\n this.showTextFormattingDropdown = false;\n }\n\n // Show text formatting dropdown on hover\n showTextFormattingDropdownOnHover(): void {\n this.showTextFormattingDropdown = true;\n this.showStylingDropdown = false;\n }\n\n // Hide styling dropdown with delay\n hideStylingDropdown(): void {\n this.stylingDropdownTimeout = setTimeout(() => {\n this.showStylingDropdown = false;\n }, 200);\n }\n\n // Hide text formatting dropdown with delay\n hideTextFormattingDropdown(): void {\n this.textFormattingDropdownTimeout = setTimeout(() => {\n this.showTextFormattingDropdown = false;\n }, 200);\n }\n\n // Clear timeout when re-entering dropdown\n clearStylingDropdownTimeout(): void {\n if (this.stylingDropdownTimeout) {\n clearTimeout(this.stylingDropdownTimeout);\n }\n }\n\n clearTextFormattingDropdownTimeout(): void {\n if (this.textFormattingDropdownTimeout) {\n clearTimeout(this.textFormattingDropdownTimeout);\n }\n }\n\n // Handle click outside to close dropdowns\n handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n if (!target.closest('.styling-dropdown') && !target.closest('.text-formatting-dropdown')) {\n this.showStylingDropdown = false;\n this.showTextFormattingDropdown = false;\n }\n }\n\n\n\n\n\n execCmd(event: MouseEvent, command: string): void {\n event.preventDefault();\n\n\n\n // Execute the command\n if (command === 'undo') {\n this.undo(event);\n return;\n }\n\n else if (command === 'redo') {\n this.redo(event);\n return;\n }\n\n\n else {\n document.execCommand(command, false, undefined);\n }\n\n this.updateTagHierarchy();\n }\n\n updateTagHierarchy(): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let element = range.startContainer as Node;\n\n // Reset flags at the beginning\n this.boldedText = false;\n this.underlineTexted = false;\n this.italicTexted = false;\n this.listTexted = false;\n const tags: string[] = [];\n\n // Traverse up the DOM tree to set flags\n while (element && element.nodeName !== \"DIV\") {\n if (element.nodeType === Node.ELEMENT_NODE) {\n const tagName = (element.nodeName || \"\").toLowerCase();\n tags.unshift(tagName);\n\n // Set flags based on tag names\n if (tagName === \"b\" || tagName === \"strong\") {\n this.boldedText = true;\n }\n\n else if (tagName === \"u\" || tagName === \"ins\") {\n this.underlineTexted = true;\n }\n\n else if (tagName === \"i\" || tagName === \"em\") {\n this.italicTexted = true;\n }\n\n else if (tagName === \"ul\" || tagName === \"ol\" || tagName === \"li\") {\n this.listTexted = true;\n }\n\n else if (tagName === \"h1\" || tagName === \"h2\" || tagName === \"h3\" || tagName === \"h4\" || tagName === \"h5\" || tagName === \"h6\") {\n // this.headerTexted = true; // Removed headerTexted\n }\n }\n\n element = element.parentNode!;\n }\n\n const tagHierarchyDiv = document.getElementById(\"tag-hierarchy\");\n\n if (tagHierarchyDiv) {\n tagHierarchyDiv.textContent = tags.join(\" > \");\n }\n }\n }\n\n onEditorInput(): void {\n // Save history on input changes\n this.saveHistory();\n // Emit content changes\n this.textChange();\n }\n\n getActiveState(type: string): boolean {\n switch (type) {\n case 'bold': return this.boldedText;\n case 'italic': return this.italicTexted;\n case 'underline': return this.underlineTexted;\n case 'header': return false; // Removed headerTexted\n case 'list': return this.listTexted;\n case 'table': return false; // Table button is never active\n case 'autobullet': return false; // Auto bullet button is never active\n case 'skillsbullet': return this.isSkillBullet; // Skills bullet button shows active state\n default: return false;\n }\n }\n\n undo(event: MouseEvent): void {\n\n event.preventDefault();\n const editor = document.getElementById(\"editor\");\n\n if (editor) {\n const lastState = this.history.pop();\n\n if (lastState !== undefined) {\n this.redoStack.push(editor.innerHTML);\n editor.innerHTML = lastState;\n }\n }\n\n this.textChange();\n }\n\n redo(event: MouseEvent): void {\n event.preventDefault();\n const editor = document.getElementById(\"editor\");\n\n if (editor) {\n const nextState = this.redoStack.pop();\n\n if (nextState !== undefined) {\n this.history.push(editor.innerHTML);\n editor.innerHTML = nextState;\n }\n }\n\n this.textChange();\n }\n\n textChange() {\n if (this.editorReference.nativeElement.innerHTML !== \"<p>Awaiting response from AI...</p>\"\n\n ) {\n this.content = this.editorReference.nativeElement.innerHTML;\n this.contentChangeFromQuill.emit(this.content);\n }\n }\n\n saveHistory(): void {\n\n const editor = document.getElementById(\"editor\");\n if (editor && this.editorReference.nativeElement.innerHTML !== \"<p>Awaiting response from AI...</p>\"\n\n ) {\n this.history.push(editor.innerHTML);\n this.redoStack = [];\n }\n\n this.textChange();\n }\n\n\n toggleDiv(event: Event, visible: boolean): void {\n event.preventDefault();\n\n if (visible) {\n this.isVisible = false;\n }\n\n else {\n this.isVisible = true;\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const selection = window.getSelection();\n const range = selection?.getRangeAt(0);\n const selectedLiTags = this.getSelectedLiTags();\n\n if (event.key === \"Enter\" && selection && range) {\n const parentElement = range.startContainer.parentElement;\n const parentNode = range.startContainer; // Get the current node\n\n // Check if the cursor is within an empty <p> tag\n if (parentElement && parentElement.tagName === \"P\" && parentElement.textContent?.trim() === \"\"\n\n ) {\n event.preventDefault(); // Prevent the default Enter behavior\n\n // Create the new <p><br></p> structure\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n // Insert the new element at the current cursor position\n range.deleteContents(); // Optional: clear any selected text\n range.insertNode(newParagraph);\n\n // Optionally, place the cursor at the end of the new paragraph\n const newRange = document.createRange();\n newRange.setStartAfter(newParagraph);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n\n else if ((parentElement?.tagName === \"B\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"U\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"I\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"SPAN\" && (parentElement.closest(\"b\") || parentElement.closest(\"u\") || parentElement.closest(\"i\")) && range.startOffset === 0) || (parentElement?.tagName === \"SPAN\" && (range.startOffset === 0 || range.endOffset === 0))) {\n event.preventDefault();\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n if (parentElement?.parentElement) {\n parentElement.parentElement.insertBefore(newParagraph, parentElement);\n }\n\n const newRange = document.createRange();\n const selection = window.getSelection();\n newRange.setStart(newParagraph, 0);\n newRange.collapse(true);\n selection?.removeAllRanges();\n selection?.addRange(newRange);\n }\n\n else if (parentNode.nodeType === Node.TEXT_NODE && parentElement?.tagName === \"DIV\" && range.startOffset === (parentElement.textContent?.length || 0)) {\n event.preventDefault();\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n if (parentElement?.parentElement) {\n parentElement.insertBefore(newParagraph, parentNode.nextSibling);\n }\n\n const newRange = document.createRange();\n newRange.setStart(newParagraph, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n }\n\n else if (event.key === \"Tab\") {\n event.preventDefault();\n\n if (event.shiftKey) {\n // Outdent if Shift + Tab is pressed\n document.execCommand(\"outdent\");\n }\n\n else {\n // Indent if Tab is pressed\n document.execCommand(\"indent\");\n }\n }\n\n else if (event.key === \"Backspace\") {\n if (selectedLiTags.length === 1) {\n if (range?.startOffset === 0) {\n if (!this.isTextHighlighted()) {\n event.preventDefault();\n this.handleBackspace(range, selectedLiTags[0]);\n return;\n }\n\n else {\n document.execCommand(\"insertUnorderedList\", false);\n }\n }\n }\n }\n\n this.saveHistory();\n }\n\n handleBackspace(range: Range, liElement: HTMLElement): void {\n if (range.startContainer.nodeType === Node.TEXT_NODE) {\n const pElement = document.createElement(\"p\");\n pElement.innerHTML = liElement.innerHTML;\n liElement.parentNode?.replaceChild(pElement, liElement);\n }\n\n document.execCommand(\"insertUnorderedList\", false);\n this.saveHistory();\n }\n\n\n isTextHighlighted(): boolean {\n const selection = window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n return !range.collapsed && range.toString().trim().length > 0;\n }\n\n\n handlePaste(event: ClipboardEvent): void {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n if (!clipboardData) return;\n const selectedLiTags = this.getSelectedLiTags();\n let pastedData = this.getPastedData(clipboardData);\n\n if (selectedLiTags?.length >= 1) {\n pastedData = pastedData.replace(/<\\/?ul[^>]*>/gi, \"\");\n }\n\n pastedData = this.removeSpacesFromHtml(pastedData);\n pastedData = this.applyRegexTransformations(pastedData);\n pastedData = BulletUtils.refineAllTags(pastedData);\n pastedData = BulletUtils.removeInlineStyles(pastedData);\n pastedData = BulletUtils.cleanDiv(pastedData);\n\n let tempDiv = this.createTemporaryDiv(pastedData);\n this.removeStylesFromElements(tempDiv);\n\n const tables = tempDiv.getElementsByTagName(\"table\");\n\n if (tables.length > 0) {\n this.transformTableData(tables);\n }\n\n else {\n pastedData = this.applyBulletUtilsTransformations(pastedData);\n tempDiv.innerHTML = pastedData;\n }\n\n this.insertTransformedContent(tempDiv);\n this.saveHistory();\n this.updateTagHierarchy();\n }\n\n transformData(data: string): string {\n if (this.router.url.endsWith(\"extractionAnalysis=false\")) {\n data = BulletUtils.onPasteBulletHandlerOriginalResume(data);\n }\n\n else {\n data = BulletUtils.onPasteBulletHandler(data);\n }\n\n data = BulletUtils.cleanSpans(data);\n // data = BulletUtils.processParagraphs(data);\n return data;\n }\n\n applyBulletUtilsTransformations(data: string): string {\n if (this.router.url.endsWith(\"extractionAnalysis=false\")) {\n data = BulletUtils.onPasteBulletHandlerOriginalResume(data);\n }\n\n else {\n data = BulletUtils.onPasteBulletHandler(data);\n }\n\n // data = BulletUtils.cleanSpans(data);\n // data = BulletUtils.processParagraphs(data);\n return data;\n }\n\n\n getSelectedLiTags(): HTMLElement[] {\n\n const selection = window.getSelection();\n const selectedLiTags: HTMLElement[] = [];\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n const startContainer = range.startContainer;\n const endContainer = range.endContainer;\n\n // Check up to 8 levels of ancestors for start and end containers\n const startLi = this.getAncestorLi(startContainer);\n const endLi = this.getAncestorLi(endContainer);\n\n if (startLi && startLi === endLi) {\n selectedLiTags.push(startLi);\n }\n }\n\n return selectedLiTags;\n }\n\n getAncestorLi(node: Node): HTMLElement | null {\n let currentNode: Node | null = node;\n\n for (let i = 0; i < 8 && currentNode; i++) {\n if (currentNode.nodeType === Node.ELEMENT_NODE && (currentNode as HTMLElement).nodeName === \"LI\"\n\n ) {\n return currentNode as HTMLElement;\n }\n\n currentNode = currentNode.parentNode;\n }\n\n return null;\n }\n\n getPastedData(clipboardData: DataTransfer): string {\n return (clipboardData.getData(\"text/html\") || clipboardData.getData(\"text/plain\"));\n }\n\n removeSpacesFromHtml(htmlString: string) {\n return htmlString?.replace(/\\n/g, \"\");\n }\n\n removeStylesFromHtml(htmlString: string): string {\n // Remove inline styles but preserve HTML structure\n return htmlString.replace(/style=\"[^\"]*\"/g, '');\n\n }\n\n applyRegexTransformations(data: string): string {\n const regexPattern = /<p>(.*?)<span.*?>(.*?)<\\/span>(.*?)<\\/p>/g;\n return data.replace(regexPattern, \"<p>$1$2$3</p>\");\n }\n\n createTemporaryDiv(data: string): HTMLDivElement {\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = data;\n return tempDiv;\n }\n\n removeStylesFromElements(tempDiv: HTMLDivElement): void {\n // Remove styles from <p> tags\n const pTags = tempDiv.getElementsByTagName(\"p\");\n\n Array.from(pTags).forEach((p) => {\n p.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <span> tags\n const spanTags = tempDiv.getElementsByTagName(\"span\");\n\n Array.from(spanTags).forEach((span) => {\n span.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <div> tags\n const divTags = tempDiv.getElementsByTagName(\"div\");\n\n Array.from(divTags).forEach((div) => {\n div.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <table> and its children\n const tables = tempDiv.getElementsByTagName(\"table\");\n\n Array.from(tables).forEach((table) => {\n table.removeAttribute(\"style\");\n\n Array.from(table.getElementsByTagName(\"tr\")).forEach((tr) => {\n tr.removeAttribute(\"style\");\n }\n\n );\n\n Array.from(table.getElementsByTagName(\"td\")).forEach((td) => {\n td.removeAttribute(\"style\");\n }\n\n );\n }\n\n );\n }\n\n insertTransformedContent(tempDiv: HTMLDivElement): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n const fragment = document.createDocumentFragment();\n let node;\n while ((node = tempDiv.firstChild)) {\n fragment.appendChild(node);\n }\n range.insertNode(fragment);\n selection.removeAllRanges();\n selection.addRange(range);\n } else {\n // Fallback: insert at cursor position or append to editor\n if (this.editorReference?.nativeElement) {\n const editor = this.editorReference.nativeElement;\n\n // Try to place cursor at the end and insert there\n const range = document.createRange();\n range.selectNodeContents(editor);\n range.collapse(false); // collapse to end\n\n const fragment = document.createDocumentFragment();\n let node;\n while ((node = tempDiv.firstChild)) {\n fragment.appendChild(node);\n }\n\n range.insertNode(fragment);\n range.collapse(false);\n\n // Set cursor position\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n }\n\n transformTableData(tables: HTMLCollectionOf<HTMLTableElement>): void {\n Array.from(tables).forEach((table) => {\n const rows = table.getElementsByTagName(\"tr\");\n\n Array.from(rows).forEach((row) => {\n const cells = row.getElementsByTagName(\"td\");\n\n Array.from(cells).forEach((cell) => {\n cell.innerHTML = this.transformData(cell.innerHTML);\n }\n\n );\n }\n\n );\n }\n\n );\n }\n\n // Auto bullet and skills bullet methods\n transformToBullets(event: MouseEvent): void {\n event.preventDefault();\n\n if (this.editorReference?.nativeElement) {\n const text = this.editorReference.nativeElement.innerText;\n const transformedText = BulletUtils.autoBullet(text);\n this.editorReference.nativeElement.innerHTML = transformedText;\n this.saveHistory();\n this.textChange();\n }\n }\n\n transformToSkillsBullets(event: MouseEvent): void {\n event.preventDefault();\n\n if (!this.isSkillBullet) {\n this.previousContent = this.editorReference.nativeElement.innerHTML;\n this.isSkillBullet = true;\n this.editorReference.nativeElement.innerHTML = BulletUtils.skillBullet(this.previousContent);\n this.skillsButton = \"Undo\";\n }\n\n else {\n this.isSkillBullet = false;\n this.editorReference.nativeElement.innerHTML = this.previousContent;\n this.skillsButton = \"Bullet Skills\";\n }\n\n this.saveHistory();\n this.textChange();\n }\n\n checkHtmlContent(content: string): boolean {\n\n // Check current editor content if no content is passed\n if (!content) {\n return this.editorReference?.nativeElement?.innerHTML !== '<p>Start typing here...</p>' && this.editorReference?.nativeElement?.innerHTML.trim().length > 0;\n }\n\n return Boolean(content && content.trim().length > 0);\n }\n}\n","<!-- Editor Labels Section -->\n<div class=\"editor-labels\" *ngIf=\"showLabels\">\n <div class=\"left-label\">{{ leftLabelText }}</div>\n <div class=\"right-label\">{{ rightLabelText }}</div>\n</div>\n<div class=\"editor-container\">\n <!-- Toolbar Section -->\n <div class=\"toolbar\">\n <!-- Styling Dropdown (Small Screens Only) -->\n <div class=\"styling-dropdown\" *ngIf=\"isSmallScreen\">\n <span class=\"styling-text\" (mouseenter)=\"showStylingDropdownOnHover()\" (mouseleave)=\"hideStylingDropdown()\">\n Styling\n </span>\n\n <div class=\"styling-dropdown-content\" *ngIf=\"showStylingDropdown\" (mouseenter)=\"clearStylingDropdownTimeout()\"\n (mouseleave)=\"hideStylingDropdown()\">\n <button *ngFor=\"let item of toolbarConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n (click)=\"execCmd($event, item.command)\" [title]=\"item.title\" type=\"button\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n </div>\n </div>\n\n <!-- Individual Styling Buttons (Large Screens Only) -->\n <button *ngFor=\"let item of toolbarConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n [class.hide-on-small]=\"true\" (click)=\"execCmd($event, item.command)\" [title]=\"item.title\" type=\"button\"\n [matTooltip]=\"item.title\" matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n\n <!-- Text Formatting Dropdown (Small Screens Only) -->\n <div class=\"text-formatting-dropdown\" *ngIf=\"isSmallScreen\">\n <span class=\"text-formatting-text\" (mouseenter)=\"showTextFormattingDropdownOnHover()\"\n (mouseleave)=\"hideTextFormattingDropdown()\">\n Text Formatting\n </span>\n\n <div class=\"text-formatting-dropdown-content\" *ngIf=\"showTextFormattingDropdown\"\n (mouseenter)=\"clearTextFormattingDropdownTimeout()\" (mouseleave)=\"hideTextFormattingDropdown()\">\n\n <!-- Text Formatting Buttons -->\n <button *ngFor=\"let item of textFormattingConfig\" class=\"format-button\"\n [class.active]=\"getActiveState(item.type)\" (click)=\"handleTextFormattingClick($event, item)\"\n [title]=\"item.title\" type=\"button\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n\n <!-- Auto Bullet Button -->\n <button *ngIf=\"autobullet\" class=\"ms-3 auto-bullet\" mat-flat-button (click)=\"transformToBullets($event)\"\n [disabled]=\"autoBulletDisable || isLoadingAI || !checkHtmlContent('')\">\n {{ AutoBulletButton }}\n </button>\n\n <!-- Bullet Skill Button -->\n <button *ngIf=\"skillsBullet\" class=\"ms-3 bullet-skill\" mat-flat-button\n (click)=\"transformToSkillsBullets($event)\" [disabled]=\"isDisabled || isLoadingAI\">\n {{ skillsButton }}\n </button>\n </div>\n </div>\n\n <!-- Individual Text Formatting Buttons (Large Screens Only) -->\n <button *ngFor=\"let item of textFormattingConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n [class.hide-on-small]=\"true\" (click)=\"handleTextFormattingClick($event, item)\" [title]=\"item.title\" type=\"button\"\n [matTooltip]=\"item.title\" matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n\n <!-- Table Component -->\n <app-table *ngIf=\"showTable\" [getEditorElement]=\"getBoundGetEditorElement()\"\n [saveHistoryMethod]=\"getBoundSaveHistory()\" [textChangeMethod]=\"getBoundTextChange()\" matTooltip=\"Table\"\n matTooltipPosition=\"above\">\n </app-table>\n\n <!-- Auto Bullet Button (Large Screens Only) -->\n <button *ngIf=\"autobullet && !isSmallScreen\" class=\"ms-3 auto-bullet\" mat-flat-button\n (click)=\"transformToBullets($event)\" [disabled]=\"autoBulletDisable || isLoadingAI || !checkHtmlContent('')\">\n {{ AutoBulletButton }}\n </button>\n\n <!-- Bullet Skill Button (Large Screens Only) -->\n <button *ngIf=\"skillsBullet && !isSmallScreen\" class=\"ms-3 bullet-skill\" mat-flat-button\n (click)=\"transformToSkillsBullets($event)\" [disabled]=\"isDisabled || isLoadingAI\">\n {{ skillsButton }}\n </button>\n\n <!-- History Controls (Undo/Redo) -->\n <div *ngIf=\"historyControls\" class=\"history-controls\">\n <!-- Undo Button -->\n <button class=\"ms-3 format-button\" (click)=\"execCmd($event, 'undo')\" title=\"Undo\" type=\"button\" matTooltip=\"Undo\"\n matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState('undo')\">\n undo\n </span>\n </button>\n\n <!-- Redo Button -->\n <button class=\"ms-3 format-button\" (click)=\"execCmd($event, 'redo')\" title=\"Redo\" type=\"button\" matTooltip=\"Redo\"\n matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState('redo')\">\n redo\n </span>\n </button>\n </div>\n </div>\n\n <!-- Editor Content Area -->\n <div class=\"editor-content\" #editorReference contenteditable=\"true\" id=\"editor\" (click)=\"updateTagHierarchy()\"\n (input)=\"onEditorInput()\" (paste)=\"handlePaste($event)\" (keydown)=\"handleKeydown($event)\"\n (click)=\"toggleDiv($event, true)\" spellcheck=\"false\" role=\"textbox\" aria-label=\"Rich text editor\"\n aria-multiline=\"true\" [attr.data-testid]=\"dataTestId\">\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CustomEditorComponent } from './custom-editor.component';\n\n@NgModule({\n imports: [CustomEditorComponent],\n exports: [CustomEditorComponent]\n})\nexport class CustomEditorModule { }\n","import { Component } from '@angular/core';\nimport { CustomEditorComponent } from './custom-editor.component';\n\n@Component({\n selector: 'app-custom-editor-demo',\n standalone: true,\n imports: [CustomEditorComponent],\n template: `\n <div class=\"demo-container\">\n <h2>Custom Editor Demo</h2>\n <p class=\"demo-description\">\n This is a simple text editor with basic formatting options.\n Select text and use the toolbar buttons to apply Bold, Italic, or Underline formatting.\n </p>\n\n <app-custom-editor></app-custom-editor>\n\n <div class=\"demo-instructions\">\n <h3>Instructions:</h3>\n <ul>\n <li>Click in the editor area to start typing</li>\n <li>Select text to apply formatting</li>\n <li>Use the toolbar buttons for Bold (B), Italic (I), and Underline (U)</li>\n <li>The buttons will change color to show active formatting</li>\n </ul>\n </div>\n </div>\n `,\n styles: [`\n .demo-container {\n max-width: 800px;\n margin: 0 auto;\n padding: 20px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n h2 {\n color: #333;\n margin-bottom: 16px;\n }\n\n .demo-description {\n color: #666;\n margin-bottom: 24px;\n line-height: 1.5;\n }\n\n .demo-instructions {\n margin-top: 24px;\n padding: 16px;\n background-color: #f8f9fa;\n border-radius: 4px;\n border-left: 4px solid #37c1ce;\n }\n\n .demo-instructions h3 {\n margin-top: 0;\n color: #333;\n }\n\n .demo-instructions ul {\n margin-bottom: 0;\n padding-left: 20px;\n }\n\n .demo-instructions li {\n margin-bottom: 8px;\n color: #555;\n }\n `]\n})\nexport class CustomEditorDemoComponent { }\n","import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateRange } from '@angular/material/datepicker';\n\nexport interface DateRangeValue {\n start: Date | null;\n end: Date | null;\n}\n\n@Component({\n selector: 'al-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n }\n ]\n})\nexport class DateRangeComponent implements ControlValueAccessor {\n @Input() dataTestId?: string;\n @Input() formControlName?: string;\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n @Input() label: string = 'Date Range';\n @Input() startPlaceholder: string = 'Start date';\n @Input() endPlaceholder: string = 'End date';\n @Input() hint: string = 'MM/DD/YYYY – MM/DD/YYYY';\n @Input() disabled: boolean = false;\n @Input() required: boolean = false;\n @Input() minDate?: Date;\n @Input() maxDate?: Date\n @Input() startAt?: Date;\n @Input() opened: boolean = false;\n @Input() touchUi: boolean = false;\n\n @Output() dateRangeChange = new EventEmitter<DateRangeValue>();\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() startDateChange = new EventEmitter<Date | null>();\n @Output() endDateChange = new EventEmitter<Date | null>();\n\n startDate: Date | null = null;\n endDate: Date | null = null;\n isDatePickerOpen = false;\n\n private onChange = (value: any) => { };\n private onTouched = () => { };\n\n // Getter for size class\n get sizeClass(): string {\n return `al-date-range-size-${this.size}`;\n }\n\n // Get size class method (matching input component)\n getSizeClass(): string {\n return 'al-date-range-size-' + this.size;\n }\n\n // Get category class method (matching input component)\n getCategoryClass(): string {\n if (this.disabled) {\n return 'al-date-range-category-disabled';\n }\n return 'al-date-range-category-default';\n }\n\n // Get all classes method (combines size and category)\n getAllClasses(): string[] {\n return [this.getSizeClass(), this.getCategoryClass()];\n }\n\n // Getter for date range value\n get dateRangeValue(): DateRangeValue {\n return {\n start: this.startDate,\n end: this.endDate\n };\n }\n\n // Getter for display value in the input\n get displayValue(): string {\n if (this.startDate && this.endDate) {\n return `${this.formatDate(this.startDate)} – ${this.formatDate(this.endDate)}`;\n } else if (this.startDate) {\n return `${this.formatDate(this.startDate)} – `;\n } else if (this.endDate) {\n return ` – ${this.formatDate(this.endDate)}`;\n }\n return '';\n }\n\n // Getter for validation state\n get isRangeValid(): boolean {\n if (!this.startDate || !this.endDate) return true;\n return this.startDate <= this.endDate;\n }\n\n // Getter for display text\n get displayText(): string {\n return this.displayValue;\n }\n\n // ControlValueAccessor implementation\n writeValue(value: DateRangeValue | null): void {\n if (value) {\n this.startDate = value.start;\n this.endDate = value.end;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Handle start date change\n onStartDateChange(event: any) {\n this.startDate = event.value;\n this.emitChanges();\n }\n\n // Handle end date change\n onEndDateChange(event: any) {\n this.endDate = event.value;\n this.emitChanges();\n }\n\n // Handle date range selection from the picker\n onDateRangeChange(event: DateRange<Date> | null) {\n if (event) {\n this.startDate = event.start;\n this.endDate = event.end;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n this.emitChanges();\n }\n\n // Handle date picker open/close\n onOpenedChange(opened: boolean) {\n this.isDatePickerOpen = opened;\n this.openedChange.emit(opened);\n }\n\n // Open date picker\n openDatePicker() {\n if (!this.disabled) {\n this.isDatePickerOpen = true;\n }\n }\n\n // Clear date range\n clearDateRange() {\n this.startDate = null;\n this.endDate = null;\n this.emitChanges();\n }\n\n // Format date for display\n formatDate(date: Date | null): string {\n if (!date) return '';\n return date.toLocaleDateString();\n }\n\n // Emit all changes\n private emitChanges() {\n this.onChange(this.dateRangeValue);\n this.onTouched();\n this.startDateChange.emit(this.startDate);\n this.endDateChange.emit(this.endDate);\n this.dateRangeChange.emit(this.dateRangeValue);\n }\n}\n","<mat-form-field class=\"mat_form\" [ngClass]=\"[getSizeClass(), getCategoryClass()]\" appearance=\"outline\"\n [attr.data-test-id]=\"dataTestId\">\n\n <mat-label>{{ label }}</mat-label>\n\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate [placeholder]=\"startPlaceholder\" [value]=\"startDate\" [disabled]=\"disabled\" [required]=\"required\"\n [min]=\"minDate\" [max]=\"endDate || maxDate\" (dateInput)=\"onStartDateChange($event)\"\n (dateChange)=\"onStartDateChange($event)\" [attr.data-testid]=\"dataTestId ? dataTestId + '-start' : null\">\n <input matEndDate [placeholder]=\"endPlaceholder\" [value]=\"endDate\" [disabled]=\"disabled\" [required]=\"required\"\n [min]=\"startDate || minDate\" [max]=\"maxDate\" (dateInput)=\"onEndDateChange($event)\"\n (dateChange)=\"onEndDateChange($event)\" [attr.data-testid]=\"dataTestId ? dataTestId + '-end' : null\">\n </mat-date-range-input>\n\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"disabled\">\n </mat-datepicker-toggle>\n\n <mat-date-range-picker #picker [startAt]=\"startAt\" [opened]=\"opened\" [touchUi]=\"touchUi\"\n (openedChange)=\"onOpenedChange($event)\" (selectedChange)=\"onDateRangeChange($event)\">\n </mat-date-range-picker>\n\n\n</mat-form-field>\n\n<!-- Range display and validation -->\n<div *ngIf=\"startDate || endDate\" class=\"range-display\" [ngClass]=\"getSizeClass()\">\n <span class=\"range-text\" [class.invalid]=\"!isRangeValid\">\n {{ displayText }}\n </span>\n <span *ngIf=\"!isRangeValid\" class=\"error-message\">\n End date must be after start date\n </span>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateRangeComponent } from './date-range.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule,\n DateRangeComponent\n ],\n exports: [DateRangeComponent]\n})\nexport class DateRangeModule { }\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, TemplateRef, ViewChild, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\n\n@Component({\n selector: 'al-tab',\n standalone: true,\n template: '<ng-template><ng-content></ng-content></ng-template>'\n})\nexport class AlTabComponent implements AfterViewInit {\n @Input() label: string = '';\n @Input() selected: boolean = false;\n @ViewChild(TemplateRef) templateRef!: TemplateRef<any>;\n\n ngAfterViewInit() {\n // Template ref will be available after view init\n }\n}\n\n@Component({\n selector: 'al-tabs',\n standalone: true,\n imports: [CommonModule, MatTabsModule, AlTabComponent],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss']\n})\nexport class TabsComponent implements AfterContentInit, AfterViewInit {\n @ContentChildren(AlTabComponent, { descendants: true }) tabComponents!: QueryList<AlTabComponent>;\n @Input() selectedIndex: number = 0;\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n ngAfterContentInit() {\n console.log('Tab components found:', this.tabComponents?.length || 0);\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n // Set the selected tab based on selectedIndex or selected property\n if (this.tabComponents && this.tabComponents.length > 0) {\n this.tabComponents.forEach((tab, index) => {\n if (tab.selected || index === this.selectedIndex) {\n this.selectedIndex = index;\n }\n });\n this.cdr.detectChanges();\n }\n }\n}\n","<mat-tab-group [selectedIndex]=\"selectedIndex\" [class]=\"'tabs-' + size\" mat-align-tabs=\"start\" headerPosition=\"above\">\n <mat-tab *ngFor=\"let tab of tabComponents; let i = index\" [label]=\"tab.label\">\n <ng-container [ngTemplateOutlet]=\"tab.templateRef\"></ng-container>\n </mat-tab>\n <!-- Debug info -->\n <div *ngIf=\"!tabComponents || tabComponents.length === 0\" style=\"padding: 20px; color: red;\">\n No tabs found. Tab components: {{ tabComponents?.length || 0 }}\n </div>\n</mat-tab-group>\n","import { NgModule } from '@angular/core';\nimport { TabsComponent } from './tabs.component';\n\n@NgModule({\n imports: [TabsComponent],\n exports: [TabsComponent]\n})\nexport class TabsModule { }\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n Optional,\n ContentChild,\n AfterContentInit,\n ElementRef\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n MatDialogModule,\n MatDialogRef\n}\n\n from '@angular/material/dialog';\n\nimport {\n MatButtonModule\n}\n\n from '@angular/material/button';\n\nimport {\n MatIconModule\n}\n\n from '@angular/material/icon';\n\nimport {\n ButtonComponent\n}\n\n from '../button/button.component';\n\nimport {\n IconButtonComponent\n}\n\n from '../icon-button/icon-button.component';\n\n@Component({\n selector: 'al-modal',\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatButtonModule, MatIconModule, ButtonComponent, IconButtonComponent],\n templateUrl: './shared-popup-modal.component.html',\n styleUrls: ['./shared-popup-modal.component.scss']\n}\n\n) export class ModalComponent implements AfterContentInit {\n @Input() titleText: string = '';\n @Input() userMessage: string = '';\n @Input() leftIcon: string = '';\n @Input() rightIcon: string = '';\n @Input() closeIcon: boolean = true;\n @Input() showHeader: boolean = true;\n @Input() cancelLabel: string = 'Cancel';\n @Input() submitLabel: string = 'Submit';\n @Input() cancelCategory: string = 'error';\n @Input() submitCategory: string = 'green';\n @Input() buttonSize: string = 'base';\n @Input() cancelIcon: string = '';\n @Input() submitIcon: string = '';\n @Input() showCancelButton: boolean = true;\n @Input() showSubmitButton: boolean = true;\n @Input() showFooter: boolean = true;\n @Input() buttonAlignment: 'left' | 'center' | 'right' = 'center';\n @Input() messageAlignment: 'left' | 'center' | 'right' = 'left';\n @Input() useCustomHeader: boolean = false;\n @Input() customHeaderTitle: string = '';\n @Input() customHeaderDescription: string = '';\n @Input() customHeaderIcon: string = '';\n @Input() customActionLabel: string = '';\n @Input() customActionIcon: string = '';\n @Input() customActionRightIcon: string = '';\n // Templating guide text and link can be passed from the main project\n @Input() templatingGuidePrefix: string = 'Click here to see our ';\n @Input() templatingGuideLabel: string = 'Templating guide';\n @Input() templatingGuideHref: string = '#';\n @Input() modalType: 'generic' | 'feedback' = 'generic';\n @Input() feedbackVariant: 'success' | 'warning' | 'error' = 'success';\n // Optional single icon override for feedback modal (Material icon name)\n @Input() feedbackIcon: string = '';\n\n @Output() cancel = new EventEmitter<void>();\n @Output() submit = new EventEmitter<void>();\n @Output() close = new EventEmitter<void>();\n // Emitted when the custom action button in the Mega Header is clicked\n @Output() requestTemplate = new EventEmitter<void>();\n @Output() onHover = new EventEmitter<Event>();\n @Output() onMouseLeave = new EventEmitter<Event>();\n @Output() optionSelect = new EventEmitter<any>();\n\n hasProjectedContent: boolean = false;\n\n constructor(@Optional() public dialogRef: MatDialogRef<ModalComponent>, private elementRef: ElementRef) { }\n\n // Getter to determine if this should display as a generic modal\n get isGenericModal(): boolean {\n return this.modalType === 'generic' || this.modalType === 'feedback';\n }\n\n // Visibility helpers for footer actions\n get showCancelAction(): boolean {\n const hasLabel = (this.cancelLabel ?? '').toString().trim().length > 0;\n return this.showFooter && this.showCancelButton && hasLabel;\n }\n\n get showSubmitAction(): boolean {\n const hasLabel = (this.submitLabel ?? '').toString().trim().length > 0;\n return this.showFooter && this.showSubmitButton && hasLabel;\n }\n\n // Getter to determine if this should display as success no header modal\n get isSuccessNoHeaderModal(): boolean {\n return this.modalType === 'feedback';\n }\n\n // Get default message based on feedback variant\n getDefaultMessage(): string {\n switch (this.feedbackVariant) {\n case 'success':\n return 'Operation completed successfully.';\n case 'warning':\n return 'Please review the information before proceeding.';\n case 'error':\n return 'Something went wrong. Please try again.';\n default:\n return 'Operation completed successfully.';\n }\n }\n\n ngAfterContentInit() {\n // Check if there's any projected content\n const contentElement = this.elementRef.nativeElement.querySelector('ng-content');\n this.hasProjectedContent = contentElement && contentElement.children.length > 0;\n }\n\n onCancel() {\n this.cancel.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('cancel');\n }\n }\n\n onSubmit() {\n this.submit.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('submit');\n }\n }\n\n onRequestTemplate() {\n this.requestTemplate.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('requestTemplate');\n }\n }\n\n onClose() {\n this.close.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('close');\n }\n }\n}\n","<div class=\"modal-container\">\n <!-- Feedback Modal Type - Success, Warning, or Error -->\n <div *ngIf=\"modalType === 'feedback'\" class=\"modal-body\">\n <div mat-dialog-content>\n <div style=\"display:flex;flex-direction:column;align-items:center;gap:16px;padding-top:8px;\">\n <!-- Feedback Icon (hardcoded by variant, optional single override via feedbackIcon) -->\n <mat-icon *ngIf=\"feedbackIcon\" class=\"feedback-icon\" [ngClass]=\"{\n 'success': feedbackVariant === 'success',\n 'warning': feedbackVariant === 'warning',\n 'error': feedbackVariant === 'error'\n }\">{{ feedbackIcon }}</mat-icon>\n <mat-icon *ngIf=\"!feedbackIcon && feedbackVariant === 'success'\"\n class=\"feedback-icon success\">check_circle</mat-icon>\n <mat-icon *ngIf=\"!feedbackIcon && feedbackVariant === 'warning'\"\n class=\"feedback-icon warning\">warning</mat-icon>\n <mat-icon *ngIf=\"!feedbackIcon && feedbackVariant === 'error'\" class=\"feedback-icon error\">error</mat-icon>\n\n <div style=\"color:#3c4553;font-weight:600;\">{{ userMessage || getDefaultMessage() }}</div>\n </div>\n </div>\n\n <div *ngIf=\"showFooter\" mat-dialog-actions class=\"modal-actions\"\n [style.justify-content]=\"buttonAlignment === 'left' ? 'flex-start' : buttonAlignment === 'right' ? 'flex-end' : 'center'\">\n <al-button *ngIf=\"showSubmitAction\" [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [label]=\"submitLabel || 'Ok'\" [leftIcon]=\"submitIcon\" [rightIcon]=\"''\" [dataTestId]=\"'submit-btn'\"\n [hasDropdown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onSubmit()\"></al-button>\n </div>\n </div>\n\n <!-- Regular Modal for Generic Type -->\n <div *ngIf=\"modalType !== 'feedback'\">\n <!-- Default Header -->\n <h2 *ngIf=\"!useCustomHeader && showHeader\" mat-dialog-title class=\"modal-title\">\n <span class=\"title-content\">\n <mat-icon *ngIf=\"leftIcon\" class=\"title-icon\">{{ leftIcon }}</mat-icon>\n {{ titleText }}\n <mat-icon *ngIf=\"rightIcon\" class=\"title-icon\">{{ rightIcon }}</mat-icon>\n </span>\n <al-icon-button *ngIf=\"closeIcon\" [icon]=\"'close'\" [iconOutlined]=\"false\" [color]=\"'#ffffff'\" [category]=\"'blue'\"\n [size]=\"'base'\" [disabled]=\"false\" (onClick)=\"onClose()\" [dataTestId]=\"'close-btn'\"></al-icon-button>\n </h2>\n\n <!-- Custom Header -->\n <div *ngIf=\"useCustomHeader && showHeader\" class=\"custom-header\">\n <!-- Left side content -->\n <div class=\"custom-header-left\">\n <!-- Icon and Title -->\n <div class=\"custom-header-title-section\">\n <div *ngIf=\"customHeaderIcon\" class=\"custom-header-icon\">\n <span>{{ customHeaderIcon }}</span>\n </div>\n <h2 class=\"custom-header-title\">{{ customHeaderTitle }}</h2>\n </div>\n\n <!-- Description paragraph -->\n <p class=\"custom-header-description\">{{ customHeaderDescription }}</p>\n\n <!-- Templating guide link/text -->\n <span class=\"templating-guide-prefix\">{{ templatingGuidePrefix }}</span>\n <a class=\"templating-guide-link\" [href]=\"templatingGuideHref\">{{ templatingGuideLabel }}</a>\n <span class=\"templating-guide-suffix\">.</span>\n </div>\n\n <!-- Right side content -->\n <div class=\"custom-header-right\">\n <!-- Close button -->\n <al-icon-button *ngIf=\"closeIcon\" class=\"custom-close\" [icon]=\"'close'\" [iconOutlined]=\"false\"\n [color]=\"'#ffffff'\" [category]=\"'blue'\" [size]=\"'base'\" [disabled]=\"false\" (onClick)=\"onClose()\"\n [dataTestId]=\"'close-btn'\"></al-icon-button>\n\n <!-- Action button -->\n <al-button [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\" [label]=\"customActionLabel\"\n [leftIcon]=\"customActionIcon\" [rightIcon]=\"customActionRightIcon\" [dataTestId]=\"'custom-action-btn'\"\n [hasDropdown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onRequestTemplate()\"></al-button>\n </div>\n </div>\n\n <div class=\"modal-body\">\n <div mat-dialog-content>\n <p *ngIf=\"userMessage && !hasProjectedContent\" class=\"modal-message\" [style.text-align]=\"messageAlignment\">{{\n userMessage }}</p>\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"showFooter\" mat-dialog-actions class=\"modal-actions\"\n [style.justify-content]=\"buttonAlignment === 'left' ? 'flex-start' : buttonAlignment === 'right' ? 'flex-end' : 'center'\">\n <al-button *ngIf=\"showCancelAction\" [category]=\"cancelCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [label]=\"cancelLabel\" [leftIcon]=\"cancelIcon\" [rightIcon]=\"''\" [dataTestId]=\"'cancel-btn'\"\n [hasDropdown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onCancel()\"></al-button>\n\n <al-button *ngIf=\"showSubmitAction\" [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [label]=\"submitLabel\" [leftIcon]=\"submitIcon\" [rightIcon]=\"''\" [dataTestId]=\"'submit-btn'\"\n [hasDropdown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onSubmit()\"></al-button>\n </div>\n </div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalComponent } from './shared-popup-modal.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n ModalComponent\n ],\n exports: [ModalComponent],\n})\nexport class SharedPopupModalModule { }\n","import {\n CommonModule\n}\n\nfrom '@angular/common';\n\nimport {\n Component,\n Input,\n TemplateRef,\n ContentChild\n}\n\nfrom '@angular/core';\n\nimport {\n MatTooltipModule\n}\n\nfrom '@angular/material/tooltip';\n\n@Component( {\n selector: 'al-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n imports: [CommonModule, MatTooltipModule],\n standalone: true,\n }\n\n) export class TooltipComponent {\n @Input() message: string='';\n @Input() header: string='';\n @Input() body: string='';\n @Input() position: 'left'| 'right'| 'above'| 'below'| 'before'| 'after'='below';\n @Input() disabled: boolean=false;\n @Input() dataTestId: string='';\n\n @ContentChild('tooltipContent') tooltipContent?: TemplateRef<any>;\n\n getTooltipContent(): string {\n if (this.header && this.body) {\n return `$ {\n this.header\n }\n\n \\n$ {\n this.body\n }\n\n `;\n }\n\n return this.message || '';\n }\n}","<ng-container>\n <div [matTooltip]=\"getTooltipContent()\" [matTooltipPosition]=\"position\" [matTooltipDisabled]=\"disabled\"\n [attr.data-test-id]=\"dataTestId\" class=\"al-tooltip-wrapper\">\n <ng-content></ng-content>\n </div>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipComponent } from './tooltip.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, TooltipComponent],\n exports: [TooltipComponent],\n})\nexport class TooltipModule { }\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n Component,\n Input,\n ViewEncapsulation\n}\n\n from '@angular/core';\n\ntype TypographyVariant = | 'font-text-5xl' | 'font-text-5xl-medium' | 'font-text-5xl-bold'\n | 'font-text-4xl' | 'font-text-4xl-medium' | 'font-text-4xl-bold'\n | 'font-text-3xl' | 'font-text-3xl-medium' | 'font-text-3xl-bold'\n | 'font-text-2xl' | 'font-text-2xl-medium' | 'font-text-2xl-bold'\n | 'font-text-xl' | 'font-text-xl-medium' | 'font-text-xl-bold'\n | 'font-text-lg' | 'font-text-lg-medium' | 'font-text-lg-bold'\n | 'font-text-base' | 'font-text-base-medium' | 'font-text-base-bold'\n | 'font-text-sm' | 'font-text-sm-medium' | 'font-text-sm-bold'\n | 'font-text-xs' | 'font-text-xs-medium' | 'font-text-xs-bold';\n\ntype TypographyWeight = 'light' | 'regular' | 'medium' | 'semibold' | 'bold';\n\ntype LineHeight = 'none' | 'tight' | 'normal';\n\ntype LetterSpacing = 'normal' | 'wide' | 'wider';\n\ntype TextDecoration = 'none' | 'underline' | 'italic' | 'strike';\n\n@Component({\n selector: 'al-new-typography',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './new-typography.component.html',\n styleUrls: ['./new-typography.component.scss'],\n // Expose the typography utility classes globally when this component is used\n encapsulation: ViewEncapsulation.None,\n}\n\n) export class NewTypographyComponent {\n /** The textual content to render. */\n @Input() text: string = 'The quick brown fox';\n /** Which semantic tag to render as. */\n @Input() tag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' = 'p';\n /** Typography variant selecting size/line-height/letter-spacing. */\n @Input() variant: TypographyVariant = 'font-text-base';\n /** Font weight to apply on top of the variant. */\n @Input() weight: TypographyWeight = 'regular';\n\n /** Line height variant to apply. */\n @Input() lineHeight: LineHeight = 'normal';\n\n /** Letter spacing variant to apply. */\n @Input() letterSpacing: LetterSpacing = 'normal';\n\n /** Text decoration to apply. */\n @Input() textDecoration: TextDecoration = 'none';\n\n /** Whether to apply font-size (default: true) */\n @Input() enableFontSize: boolean = true;\n\n /** Whether to apply font-weight (default: true) */\n @Input() enableFontWeight: boolean = true;\n\n /** Whether to apply line-height (default: true) */\n @Input() enableLineHeight: boolean = true;\n\n /** Whether to apply letter-spacing (default: true) */\n @Input() enableLetterSpacing: boolean = true;\n\n /** Optional data-test-id for QA/testing */\n @Input() dataTestId?: string;\n\n get classList(): string {\n // All variants are now combined classes (start with 'font-text-')\n // But we still need to add additional classes for weight, line-height, letter-spacing, and text-decoration\n const baseClass = this.variant;\n const weightClass = this.enableFontWeight ? `weight-${this.weight}` : '';\n const lineHeightClass = this.enableLineHeight ? `line-height-${this.lineHeight}` : '';\n const letterSpacingClass = this.enableLetterSpacing ? `letter-spacing-${this.letterSpacing}` : '';\n const textDecorationClass = `text-decoration-${this.textDecoration}`;\n return `${baseClass} ${weightClass} ${lineHeightClass} ${letterSpacingClass} ${textDecorationClass}`.trim();\n }\n}\n","<ng-container [ngSwitch]=\"tag\">\n <h1 *ngSwitchCase=\"'h1'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h1>\n <h2 *ngSwitchCase=\"'h2'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h2>\n <h3 *ngSwitchCase=\"'h3'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h3>\n <h4 *ngSwitchCase=\"'h4'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h4>\n <h5 *ngSwitchCase=\"'h5'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h5>\n <h6 *ngSwitchCase=\"'h6'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h6>\n <p *ngSwitchCase=\"'p'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</p>\n <span *ngSwitchDefault [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</span>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldPlaceholderComponent } from './field-placeholder.component';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, FieldPlaceholderComponent],\n exports: [FieldPlaceholderComponent],\n})\nexport class FieldPlaceholderModule { }\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n AfterViewInit,\n Component,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChanges\n}\n\n from '@angular/core';\n\nimport {\n ElementRef\n}\n\n from '@angular/core';\n\n@Component({\n selector: 'al-responsive-columns',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './responsive-columns.component.html',\n styleUrls: ['./responsive-columns.component.scss'],\n}\n\n) export class ResponsiveColumnsComponent implements AfterViewInit,\n OnChanges,\n OnDestroy {\n /** Optional data-testid for test selectors */\n @Input() dataTestId?: string;\n\n /** Gap between the three columns */\n @Input() gap: string | number = '16px';\n\n /** Padding applied to the container (e.g. '12px 16px') */\n @Input() padding: string | number = 0;\n\n /** Optional explicit widths for side columns; defaults to 'auto' */\n @Input() leftWidth: string = 'auto';\n @Input() rightWidth: string = 'auto';\n\n /** Breakpoint (px) below which columns stack vertically */\n @Input() stackAt: number = 480;\n\n @HostBinding('class.stack') isStacked = false;\n\n @HostBinding('attr.data-testid') get dataTestIdAttr() {\n return this.dataTestId || null;\n }\n\n @HostBinding('style.--gap') get cssGap() {\n return typeof this.gap === 'number' ? `$ {\n this.gap\n }\n\n px` : this.gap;\n }\n\n @HostBinding('style.--padding') get cssPadding() {\n return typeof this.padding === 'number' ? `$ {\n this.padding\n }\n\n px` : this.padding as string;\n }\n\n @HostBinding('style.--left-width') get cssLeftWidth() { return this.leftWidth || 'auto'; }\n\n @HostBinding('style.--right-width') get cssRightWidth() { return this.rightWidth || 'auto'; }\n\n @HostBinding('style.--stack-at') get cssStackAt() {\n return `$ {\n this.stackAt\n }\n\n px`;\n }\n\n // no dynamic template columns; side visibility controlled by widths only\n\n private resizeObserver?: ResizeObserver;\n\n constructor(private hostRef: ElementRef<HTMLElement>, private zone: NgZone) { }\n\n ngAfterViewInit(): void {\n this.zone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry?.contentRect?.width ?? this.hostRef.nativeElement.clientWidth;\n const shouldStack = width < this.stackAt;\n\n if (shouldStack !== this.isStacked) {\n this.zone.run(() => (this.isStacked = shouldStack));\n }\n }\n\n );\n this.resizeObserver.observe(this.hostRef.nativeElement);\n }\n\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['stackAt']) {\n const width = this.hostRef?.nativeElement?.clientWidth || 0;\n this.isStacked = width < this.stackAt;\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n}\n","<div class=\"container\">\n <div class=\"column left\"><ng-content select=\"[left],[slot=left],[data-slot=left]\"></ng-content></div>\n <div class=\"column center\"><ng-content></ng-content><ng-content\n select=\"[center],[slot=center],[data-slot=center]\"></ng-content></div>\n <div class=\"column right\"><ng-content select=\"[right],[slot=right],[data-slot=right]\"></ng-content></div>\n</div>","import {\n NgModule\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n ResponsiveColumnsComponent\n}\n\n from './responsive-columns.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResponsiveColumnsComponent],\n exports: [ResponsiveColumnsComponent],\n}\n\n) export class ResponsiveColumnsModule { }\n","import {\n Component,\n Input,\n Output,\n EventEmitter\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n FieldPlaceholderComponent\n}\n\n from '../field-placeholder/field-placeholder.component';\n\nimport {\n ButtonComponent\n}\n\n from '../button/button.component';\n\nimport {\n LoaderComponent,\n LoaderStatus\n}\n\n from '../loader/loader.component';\n\nimport {\n MatTooltipModule\n}\n\n from '@angular/material/tooltip';\n\nexport interface ResumeEntry {\n companyName?: string;\n institution?: string;\n jobTitle?: string;\n courseName?: string;\n startDate?: string;\n endDate?: string;\n isPresent?: boolean;\n city?: string;\n region?: string;\n country?: string;\n descriptions?: string[];\n rightSideItems?: string[];\n}\n\n@Component({\n selector: 'al-resume-entries',\n standalone: true,\n imports: [CommonModule, FieldPlaceholderComponent, ButtonComponent, LoaderComponent, MatTooltipModule],\n templateUrl: './resume-entries.component.html',\n styleUrls: ['./resume-entries.component.scss'],\n}\n\n) export class ResumeEntriesComponent {\n @Input() entries: ResumeEntry[] = [];\n @Input() showHeader: boolean = true;\n @Input() showDescriptionLabel: boolean = true;\n /** When false, hides Company/Institution field entirely */\n @Input() showCompany: boolean = true;\n /** When false, hides Job Title/Course Name field entirely */\n @Input() showJobTitle: boolean = true;\n /** When false, hides the date column (start/end/present) entirely */\n @Input() showDates: boolean = true;\n /** When false, hides location fields (City, Region, Country) entirely */\n @Input() showLocation: boolean = true;\n /** When true, displays a timeline line with dot on the left side of each entry */\n @Input() showTimeline: boolean = false;\n /** When true, displays the Re-apply/Undo button at the end of each entry */\n @Input() showReapplyButton: boolean = true;\n /** When true, displays a loader in place of the description section */\n @Input() showLoader: boolean = false;\n /** When true, loader replaces the entire entry; when false, loader only replaces the description section */\n @Input() loaderForAllEntries: boolean = false;\n /** Loader status - can be 'analyzing', 'gathering', 'processing', 'applying', or 'done' */\n @Input() loaderStatus: LoaderStatus = 'processing';\n /** Loader size - can be 'small', 'medium', or 'large' */\n @Input() loaderSize: 'small' | 'medium' | 'large' = 'medium';\n /** Array of skills to display in the skill section */\n @Input() skills?: string[];\n /** Tooltip message for Company/Institution field */\n @Input() companyTooltip?: string;\n /** Tooltip message for Job Title/Course Name field */\n @Input() jobTitleTooltip?: string;\n /** Tooltip message for Date fields */\n @Input() dateTooltip?: string;\n /** Tooltip message for Location fields */\n @Input() locationTooltip?: string;\n /** Tooltip message for Description fields */\n @Input() descriptionTooltip?: string;\n /** Tooltip position - can be 'left', 'right', 'above', 'below', 'before', or 'after' */\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n\n /** Event emitted when the reapply button is clicked for a specific entry */\n @Output() reapplyClick = new EventEmitter<{\n entry: ResumeEntry;\n index: number\n }\n\n >();\n\n /** Event emitted when the undo button is clicked for a specific entry */\n @Output() undoClick = new EventEmitter<{\n entry: ResumeEntry;\n index: number\n }\n\n >();\n\n // Track which entries have been reapplied (show undo button)\n reappliedEntries = new Set<number>();\n\n onReapplyClick(entry: ResumeEntry, index: number) {\n this.reappliedEntries.add(index);\n\n this.reapplyClick.emit({\n entry, index\n }\n\n );\n }\n\n onUndoClick(entry: ResumeEntry, index: number) {\n this.reappliedEntries.delete(index);\n\n this.undoClick.emit({\n entry, index\n }\n\n );\n }\n\n isReapplied(index: number): boolean {\n return this.reappliedEntries.has(index);\n }\n}\n","<div class=\"resume-entries-container\">\n <div *ngFor=\"let entry of entries; let i = index\" class=\"resume-entry\" [class.with-timeline]=\"showTimeline\">\n <div *ngIf=\"showLoader && loaderForAllEntries\" class=\"entry-loader-container\"><al-loader [status]=\"loaderStatus\"\n [size]=\"loaderSize\" [showText]=\"true\" [dataTestId]=\"'entry-' + i + '-loader'\"></al-loader></div><ng-container\n *ngIf=\"!showLoader || !loaderForAllEntries\">\n <div *ngIf=\"showTimeline\" class=\"timeline-indicator\">\n <div class=\"timeline-dot\"></div>\n <div class=\"timeline-line\"></div>\n </div>\n <div class=\"resume-entry-content\">\n <div *ngIf=\"showHeader\" class=\"entry-header\">\n <div class=\"header-left\"><ng-container\n *ngIf=\"(entry.companyName || entry.institution) && showCompany; else titleTop\">\n <div *ngIf=\"showCompany\" class=\"mobile-order-2\" [matTooltip]=\"companyTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!companyTooltip\"><lib-field-placeholder\n [value]=\"entry.companyName || entry.institution\" [placeholder]=\"'Company Name / Institution'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-company'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div *ngIf=\"showJobTitle\" class=\"mobile-order-3\" [matTooltip]=\"jobTitleTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!jobTitleTooltip\"><lib-field-placeholder\n [value]=\"entry.jobTitle || entry.courseName\" [placeholder]=\"'Job title / Course name'\"\n valueClass=\"font-title-text\" [testId]=\"'entry-' + i + '-title'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n </ng-container><ng-template #titleTop>\n <div *ngIf=\"showJobTitle\" class=\"mobile-order-3\" [matTooltip]=\"jobTitleTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!jobTitleTooltip\"><lib-field-placeholder\n [value]=\"entry.jobTitle || entry.courseName\" [placeholder]=\"'Job title / Course name'\"\n valueClass=\"font-title-text\" [testId]=\"'entry-' + i + '-title'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div *ngIf=\"showCompany\" class=\"mobile-order-2\" [matTooltip]=\"companyTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!companyTooltip\"><lib-field-placeholder\n [value]=\"entry.companyName || entry.institution\" [placeholder]=\"'Company Name / Institution'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-company'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n </ng-template></div>\n <div class=\"header-right\">\n <div class=\"date-range mobile-order-1\" *ngIf=\"showDates\" [matTooltip]=\"dateTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!dateTooltip\"><ng-container\n *ngIf=\"entry.startDate; else endOnly\"><lib-field-placeholder [value]=\"entry.startDate\"\n [placeholder]=\"'Start Date'\" valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-start-date'\"\n [compact]=\"true\"></lib-field-placeholder><span class=\"date-separator\">-</span><lib-field-placeholder\n [value]=\"entry.isPresent ? 'Present' : entry.endDate\" [placeholder]=\"'End Date'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-end-date'\"\n [compact]=\"true\"></lib-field-placeholder></ng-container><ng-template #endOnly><lib-field-placeholder\n [value]=\"entry.isPresent ? 'Present' : entry.endDate\" [placeholder]=\"'End Date'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-end-date'\"\n [compact]=\"true\"></lib-field-placeholder></ng-template></div>\n <div class=\"location-row mobile-order-4\" *ngIf=\"showLocation\" [matTooltip]=\"locationTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!locationTooltip\"><lib-field-placeholder\n [value]=\"entry.city\" [placeholder]=\"'City'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-city'\" [compact]=\"true\"></lib-field-placeholder><lib-field-placeholder\n [value]=\"entry.region\" [placeholder]=\"'Region'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-region'\" [compact]=\"true\"></lib-field-placeholder><lib-field-placeholder\n [value]=\"entry.country\" [placeholder]=\"'Country'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-country'\" [compact]=\"true\"></lib-field-placeholder></div>\n </div>\n </div>\n <div class=\"descriptions-container\">\n <div *ngIf=\"showLoader && !loaderForAllEntries\" class=\"loader-container\"><al-loader [status]=\"loaderStatus\"\n [size]=\"loaderSize\" [showText]=\"true\" [dataTestId]=\"'entry-' + i + '-loader'\"></al-loader></div>\n <div *ngIf=\"!showLoader || loaderForAllEntries\">\n <div *ngFor=\"let desc of entry.descriptions; let descIndex = index\" class=\"description-item\"\n [matTooltip]=\"descriptionTooltip\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!descriptionTooltip\"><label *ngIf=\"showDescriptionLabel\"\n class=\"description-label\">Description </label><lib-field-placeholder [value]=\"desc\"\n [placeholder]=\"'Missing item'\" [padded]=\"true\" valueClass=\"font-text-base\"\n [testId]=\"'entry-' + i + '-desc-' + descIndex\"></lib-field-placeholder></div>\n </div>\n <div class=\"reapply-button-container\" *ngIf=\"showReapplyButton\"><al-button *ngIf=\"!isReapplied(i)\"\n [label]=\"'Re-apply'\" [buttonType]=\"'icon-label'\" [leftIcon]=\"'refresh'\" [category]=\"'gradient'\"\n [size]=\"'xs'\" [dataTestId]=\"'entry-' + i + '-reapply'\"\n (onClick)=\"onReapplyClick(entry, i)\"></al-button><al-button *ngIf=\"isReapplied(i)\" [label]=\"'Undo'\"\n [buttonType]=\"'icon-label'\" [leftIcon]=\"'undo'\" [category]=\"'grey'\" [size]=\"'xs'\"\n [dataTestId]=\"'entry-' + i + '-undo'\" (onClick)=\"onUndoClick(entry, i)\"></al-button></div>\n <hr *ngIf=\"i < entries.length - 1\" class=\"entry-separator\" [class.with-timeline-separator]=\"showTimeline\" />\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"resume-entry-projection\"><ng-content></ng-content></div>\n <div *ngIf=\"skills && skills.length > 0\" class=\"skill-section-common\">\n <div class=\"skill-list-items\">\n <ul>\n <li *ngFor=\"let skill of skills\" class=\"list-items\">{{ skill }}</li>\n </ul>\n </div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResumeEntriesComponent } from './resume-entries.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResumeEntriesComponent],\n exports: [ResumeEntriesComponent],\n})\nexport class ResumeEntriesModule { }\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output\n}\n\n from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport {\n MatIconModule,\n MatIconRegistry\n} from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport interface IconConfig {\n display: boolean;\n title: string;\n}\n\nexport interface RequiredIconConfig {\n handle: IconConfig;\n edit: IconConfig;\n search: IconConfig;\n}\n\n@Component({\n selector: 'app-toolbar',\n standalone: true,\n imports: [CommonModule, MatIconModule],\n templateUrl: './app-toolbar.component.html',\n styleUrls: ['./app-toolbar.component.scss']\n}\n\n) export class AppToolbarComponent implements OnInit {\n @Input() variant: string = 'default';\n\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // Get base path dynamically\n const basePath = this.getBasePath();\n\n // Register the Move.svg icon\n this.iconRegistry.addSvgIcon(\n 'move',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Move.svg`)\n );\n // Register the Edit.svg icon\n this.iconRegistry.addSvgIcon(\n 'edit',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/edit.svg`)\n );\n // Register the Search.svg icon\n this.iconRegistry.addSvgIcon(\n 'search',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/search.svg`)\n );\n }\n\n /**\n * Dynamically determines the base path for assets\n * Handles both root deployment and subdirectory deployment (e.g., /allsorter-lib/)\n */\n private getBasePath(): string {\n // Check if we're in a browser environment\n if (typeof document === 'undefined') {\n return '';\n }\n\n // Get base href from document\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n // Remove trailing slash and return\n return baseHref.replace(/\\/$/, '');\n }\n\n // Fallback: extract base path from current location\n const pathname = window.location.pathname;\n // Check if pathname contains a known subdirectory pattern\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n // Default to root\n return '';\n }\n\n ngOnInit() {\n // Component initialization if needed\n }\n\n private _overrideConfig: Partial<RequiredIconConfig> = {}\n\n ;\n\n @Input() set overrideConfig(val: Partial<RequiredIconConfig>) {\n this._overrideConfig = val;\n\n this.requiredIcon = {\n ...this._defaultRequiredIcon,\n ...val\n }\n\n ;\n }\n\n get overrideConfig() {\n return this._overrideConfig;\n }\n\n private _defaultRequiredIcon: RequiredIconConfig = {\n handle: {\n display: false, title: 'Drag'\n }\n\n ,\n edit: {\n display: true, title: 'Edit'\n }\n\n ,\n search: {\n display: true, title: 'Search'\n }\n }\n\n ;\n\n requiredIcon: RequiredIconConfig = {\n ...this._defaultRequiredIcon\n }\n\n ;\n @Input() content: string = \"\";\n @Output() editEvent = new EventEmitter<string>();\n @Input() isExtractionAnalysisActive: boolean = false;\n @Input() showSearch: boolean = true;\n\n\n editSelectedSection() {\n this.editEvent.emit(this.content);\n }\n\n sendMessage() {\n // Simulate sending a message or updating query param\n // Implement as needed\n }\n}\n","<div class=\"toolbar-container\">\n <div class=\"icon-wrapper\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--drag\"\n [attr.aria-label]=\"requiredIcon.handle.title\" [attr.title]=\"requiredIcon.handle.title\"\n (click)=\"$event.stopPropagation()\"><mat-icon svgIcon=\"move\" class=\"move-icon\"></mat-icon></button></div>\n <div class=\"toolbar-icons\">\n <div class=\"icon-wrapper\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--edit\"\n [attr.aria-label]=\"requiredIcon.edit.title\" [attr.title]=\"requiredIcon.edit.title\"\n (click)=\"editSelectedSection()\"><mat-icon svgIcon=\"edit\" class=\"edit-icon\"></mat-icon></button></div>\n <div class=\"icon-wrapper\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--search\"\n [attr.aria-label]=\"requiredIcon.search.title\" [attr.title]=\"requiredIcon.search.title\"\n (click)=\"$event.stopPropagation(); sendMessage()\"><mat-icon svgIcon=\"search\"\n class=\"search-icon\"></mat-icon></button></div>\n </div>\n</div>","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport interface AppToolbarRightIconConfig {\n display: boolean;\n title: string;\n isHidden?: boolean;\n}\n\nexport interface AppToolbarRightRequiredIconConfig {\n eye: AppToolbarRightIconConfig;\n sr: AppToolbarRightIconConfig;\n checkbox: AppToolbarRightIconConfig;\n}\n\n@Component({\n selector: 'app-toolbar-right',\n templateUrl: './app-toolbar-right.component.html',\n styleUrls: ['./app-toolbar-right.component.scss']\n})\n\nexport class AppToolbarRightComponent implements OnInit, OnChanges {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // Get base path dynamically\n const basePath = this.getBasePath();\n\n // Register the Subrole.svg icon (using Vector.svg as placeholder - update path if you have a specific subrole icon)\n this.iconRegistry.addSvgIcon(\n 'subrole',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Vector.svg`)\n );\n }\n\n /**\n * Dynamically determines the base path for assets\n * Handles both root deployment and subdirectory deployment (e.g., /allsorter-lib/)\n */\n private getBasePath(): string {\n // Check if we're in a browser environment\n if (typeof document === 'undefined') {\n return '';\n }\n\n // Get base href from document\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n // Remove trailing slash and return\n return baseHref.replace(/\\/$/, '');\n }\n\n // Fallback: extract base path from current location\n const pathname = window.location.pathname;\n // Check if pathname contains a known subdirectory pattern\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n // Default to root\n return '';\n }\n @Input() alwaysShowIcons = false;\n @Input() checked: boolean = false;\n @Input() overrideConfig: Partial<AppToolbarRightRequiredIconConfig> = {};\n @Input() currentObj: Partial<any> = {};\n\n private _showIcons = false;\n isVisible = true;\n\n requiredIcon: AppToolbarRightRequiredIconConfig = {\n eye: {\n display: false,\n title: 'Hide Section',\n isHidden: false\n },\n sr: {\n display: false,\n title: 'Set as Subrole'\n },\n checkbox: {\n display: false,\n title: 'Select'\n }\n };\n\n @Output() checkboxChange = new EventEmitter<boolean>();\n @Output() visibilityToggle = new EventEmitter<boolean>();\n @Output() hideShowEvent = new EventEmitter<any>();\n @Output() checkboxEvent = new EventEmitter<object>();\n @Output() setSubroleEvent = new EventEmitter<any>();\n\n ngOnInit(): void {\n console.log(\"this.overrideConfig\", JSON.stringify(this.overrideConfig));\n this.requiredIcon = {\n ...this.requiredIcon,\n ...this.overrideConfig\n };\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['overrideConfig']) {\n this.requiredIcon = {\n ...this.requiredIcon,\n ...this.overrideConfig\n };\n }\n }\n\n get showIcons(): boolean {\n return this.alwaysShowIcons || this._showIcons;\n }\n\n get eyeIcon(): string {\n return this.isVisible ? 'visibility' : 'visibility_off';\n }\n get eyeLabel(): string {\n return this.isVisible ? 'Show' : 'Hide';\n }\n get eyeTitle(): string {\n return this.isVisible ? 'Show content' : 'Hide content';\n }\n\n onCheckboxHover(state: boolean) {\n this._showIcons = state;\n }\n\n onCheckboxChange(checked: boolean) {\n this.checked = checked;\n this.checkboxChange.emit(checked);\n this.checkboxactiveInactiveStatus();\n }\n\n onToggleVisibility() {\n this.isVisible = !this.isVisible;\n this.visibilityToggle.emit(this.isVisible);\n this.showHideSection();\n }\n\n showHideSection() {\n this.currentObj['hidden'] = !this.currentObj['hidden'];\n this.requiredIcon.eye.isHidden = !this.currentObj['hidden'];\n this.hideShowEvent.emit(this.currentObj);\n }\n\n checkboxactiveInactiveStatus() {\n this.checkboxEvent.emit(this.currentObj);\n }\n\n setSubrole() {\n this.setSubroleEvent.emit(!this.currentObj['subrole']);\n }\n}\n\n","<div class=\"toolbar-right-container\">\n <div class=\"icon-wrapper\"><al-checkbox *ngIf=\"requiredIcon.checkbox.display\" [checked]=\"checked\" [showLabels]=\"false\"\n (change)=\"onCheckboxChange($event)\" (mouseenter)=\"onCheckboxHover(true)\"\n (mouseleave)=\"onCheckboxHover(false)\"></al-checkbox></div>\n <div class=\"toolbar-right-icons\">\n <div class=\"icon-wrapper\"><button *ngIf=\"requiredIcon.sr.display\" type=\"button\"\n class=\"toolbar-icon toolbar-icon--subrole\" [attr.aria-label]=\"requiredIcon.sr.title\"\n [attr.title]=\"requiredIcon.sr.title\" (click)=\"setSubrole()\"><mat-icon svgIcon=\"subrole\"\n class=\"subrole-icon\"></mat-icon></button></div>\n <div class=\"icon-wrapper\"><al-icon-button *ngIf=\"requiredIcon.eye.display\" [icon]=\"eyeIcon\" size=\"xxl\"\n category=\"grey\" [color]=\"'#6B7280'\" [attr.aria-label]=\"eyeLabel\" [attr.title]=\"eyeTitle\"\n (click)=\"onToggleVisibility()\"></al-icon-button></div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppToolbarRightComponent } from './app-toolbar-right.component';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [AppToolbarRightComponent],\n imports: [\n CommonModule,\n CheckboxModule,\n IconButtonComponent, // Standalone component\n MatIconModule\n ],\n exports: [AppToolbarRightComponent]\n})\nexport class AppToolbarRightModule { }\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ResponsiveColumnsComponent } from '../responsive-columns/responsive-columns.component';\nimport { ResumeEntriesComponent, ResumeEntry } from '../resume-entries/resume-entries.component';\nimport { AppToolbarComponent, RequiredIconConfig } from '../app-toolbar/app-toolbar.component';\nimport { AppToolbarRightModule } from '../app-toolbar-right/app-toolbar-right.module';\nimport { AppToolbarRightRequiredIconConfig } from '../app-toolbar-right/app-toolbar-right.component';\n\n@Component({\n selector: 'al-experience-section',\n standalone: true,\n imports: [CommonModule, ResponsiveColumnsComponent, ResumeEntriesComponent, AppToolbarComponent, AppToolbarRightModule],\n templateUrl: './experience-section.component.html',\n styleUrls: ['./experience-section.component.scss'],\n})\nexport class ExperienceSectionComponent {\n @Input() entries: ResumeEntry[] = [];\n @Input() showHeader: boolean = true;\n @Input() showDescriptionLabel: boolean = true;\n @Input() showCompany: boolean = true;\n @Input() showJobTitle: boolean = true;\n @Input() showDates: boolean = true;\n @Input() showLocation: boolean = true;\n @Input() showTimeline: boolean = false;\n @Input() showReapplyButton: boolean = true;\n @Input() showLoader: boolean = false;\n @Input() loaderForAllEntries: boolean = false;\n @Input() loaderStatus: 'analyzing' | 'gathering' | 'processing' | 'applying' | 'done' = 'processing';\n @Input() loaderSize: 'small' | 'medium' | 'large' = 'medium';\n @Input() skills?: string[];\n @Input() companyTooltip?: string;\n @Input() jobTitleTooltip?: string;\n @Input() dateTooltip?: string;\n @Input() locationTooltip?: string;\n @Input() descriptionTooltip?: string;\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n\n // ResponsiveColumns inputs (optional overrides)\n @Input() gap: string | number = '8px';\n @Input() padding: string | number = 0;\n @Input() leftWidth: string = 'auto';\n @Input() rightWidth: string = 'auto';\n @Input() stackAt: number = 0;\n\n // AppToolbar inputs\n @Input() variant: string = 'default';\n @Input() content: string = '';\n @Input() isExtractionAnalysisActive: boolean = false;\n @Input() showSearch: boolean = true;\n @Input() overrideConfig: Partial<RequiredIconConfig> = {};\n\n // AppToolbar outputs\n @Output() editEvent = new EventEmitter<string>();\n\n // Resume Entries outputs\n @Output() reapplyClick = new EventEmitter<{ entry: ResumeEntry; index: number }>();\n @Output() undoClick = new EventEmitter<{ entry: ResumeEntry; index: number }>();\n\n // AppToolbarRight inputs\n @Input() checked: boolean = false;\n @Input() alwaysShowIcons: boolean = false;\n @Input() overrideConfigRight: Partial<AppToolbarRightRequiredIconConfig> = {};\n @Input() currentObj: Partial<any> = {};\n\n // AppToolbarRight outputs\n @Output() checkboxChange = new EventEmitter<boolean>();\n @Output() visibilityToggle = new EventEmitter<boolean>();\n @Output() hideShowEvent = new EventEmitter<any>();\n @Output() checkboxEvent = new EventEmitter<object>();\n @Output() setSubroleEvent = new EventEmitter<any>();\n\n // AppToolbarRight event handlers\n onCheckboxChange(checked: boolean) {\n this.checkboxChange.emit(checked);\n }\n\n onVisibilityToggle(isVisible: boolean) {\n this.visibilityToggle.emit(isVisible);\n }\n\n onHideShowEvent(obj: any) {\n this.hideShowEvent.emit(obj);\n }\n\n onCheckboxEvent(obj: object) {\n this.checkboxEvent.emit(obj);\n }\n\n onSetSubroleEvent(subrole: any) {\n this.setSubroleEvent.emit(subrole);\n }\n\n // AppToolbar event handler\n onEditEvent(content: string) {\n this.editEvent.emit(content);\n }\n\n // Resume Entries event handler\n onReapplyClick(data: { entry: ResumeEntry; index: number }) {\n this.reapplyClick.emit(data);\n }\n\n onUndoClick(data: { entry: ResumeEntry; index: number }) {\n this.undoClick.emit(data);\n }\n}\n\n\n","<al-responsive-columns [gap]=\"gap\"[padding]=\"padding\"[leftWidth]=\"leftWidth\"[rightWidth]=\"rightWidth\"\n[stackAt]=\"stackAt\"><div left><app-toolbar [variant]=\"variant\"[content]=\"content\"[isExtractionAnalysisActive]=\"isExtractionAnalysisActive\"\n[showSearch]=\"showSearch\"[overrideConfig]=\"overrideConfig\"(editEvent)=\"onEditEvent($event)\"></app-toolbar></div><div center><al-resume-entries [entries]=\"entries\"[showHeader]=\"showHeader\"[showDescriptionLabel]=\"showDescriptionLabel\"\n[showCompany]=\"showCompany\"[showJobTitle]=\"showJobTitle\"[showDates]=\"showDates\"[showLocation]=\"showLocation\"\n[showTimeline]=\"showTimeline\"[showReapplyButton]=\"showReapplyButton\"[showLoader]=\"showLoader\"\n[loaderForAllEntries]=\"loaderForAllEntries\"[loaderStatus]=\"loaderStatus\"[loaderSize]=\"loaderSize\"\n[skills]=\"skills\"[companyTooltip]=\"companyTooltip\"[jobTitleTooltip]=\"jobTitleTooltip\"\n[dateTooltip]=\"dateTooltip\"[locationTooltip]=\"locationTooltip\"[descriptionTooltip]=\"descriptionTooltip\"\n[tooltipPosition]=\"tooltipPosition\"(reapplyClick)=\"onReapplyClick($event)\"(undoClick)=\"onUndoClick($event)\"></al-resume-entries></div><div right><app-toolbar-right [checked]=\"checked\"[alwaysShowIcons]=\"alwaysShowIcons\"[overrideConfig]=\"overrideConfigRight\"\n[currentObj]=\"currentObj\"(checkboxChange)=\"onCheckboxChange($event)\"\n(visibilityToggle)=\"onVisibilityToggle($event)\"(hideShowEvent)=\"onHideShowEvent($event)\"\n(checkboxEvent)=\"onCheckboxEvent($event)\"(setSubroleEvent)=\"onSetSubroleEvent($event)\"></app-toolbar-right></div></al-responsive-columns>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ExperienceSectionComponent } from './experience-section.component';\n\n@NgModule({\n imports: [CommonModule, ExperienceSectionComponent],\n exports: [ExperienceSectionComponent]\n})\nexport class ExperienceSectionModule { }\n\n\n","/**\n * Color constants matching colors.scss\n * These values should be kept in sync with src/lib/styles/colors.scss\n */\n\nexport const COLORS = {\n // Blue scale\n blue: {\n '50': '#E5E9FC',\n '100': '#BBC7F6',\n '200': '#98ABF1',\n '300': '#768FED',\n '400': '#6581EA',\n '500': '#5473E8', // Base-Blue\n '600': '#1E46DF',\n '700': '#0F236F',\n '800': '#071238',\n '900': '#04091C',\n },\n // Green scale\n green: {\n '50': '#D7F3F5',\n '100': '#AFE6EB',\n '200': '#87DAE2',\n '300': '#5FCDD8',\n '400': '#4BC7D3',\n '500': '#37C1CE', // Base-Green\n '600': '#299DA8',\n '700': '#1F767E',\n '800': '#154E54',\n '900': '#0A272A',\n },\n // Grey scale\n grey: {\n '50': '#FAFBFB',\n '100': '#ECEDF1',\n '200': '#DEE0E6',\n '300': '#D1D3DB',\n '400': '#C3C5D1',\n '500': '#A2A6B8', // Base-Grey\n '600': '#717793',\n '700': '#4B4F62',\n '800': '#383B4A',\n '900': '#252831',\n },\n} as const;\n\n// Border color options for general-container component\nexport const BORDER_COLORS = [\n COLORS.green['200'], // #87DAE2\n COLORS.blue['200'], // #98ABF1\n COLORS.grey['500'], // #A2A6B8\n COLORS.grey['700'], // #4B4F62\n COLORS.blue['500'], // #5473E8\n COLORS.green['500'], // #37C1CE\n] as const;\n\nexport type BorderColorValue = typeof BORDER_COLORS[number];\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BORDER_COLORS, BorderColorValue } from './colors.constants';\n\nexport type BorderPosition = 'none' | 'top' | 'bottom' | 'both';\n\nexport type BorderColor = BorderColorValue;\n\n@Component({\n selector: 'al-general-container',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './general-container.component.html',\n styleUrls: ['./general-container.component.scss']\n})\nexport class GeneralContainerComponent {\n /** Background color of the container */\n @Input() backgroundColor: string = '#FFFFFF';\n\n /** Padding for the container */\n @Input() padding: string = '16px';\n\n /** Width of the container */\n @Input() width?: string;\n\n /** Height of the container */\n @Input() height?: string;\n\n /** Border position: 'none', 'top', 'bottom', or 'both' */\n @Input() borderPosition: BorderPosition = 'none';\n\n /** Border color - one of the predefined colors */\n @Input() borderColor: BorderColor = BORDER_COLORS[0];\n\n /** Border radius */\n @Input() borderRadius: string = '8px';\n\n /** Enable box shadow */\n @Input() boxShadow: boolean = true;\n\n /** Custom box shadow (overrides default if provided) */\n @Input() customBoxShadow?: string;\n\n /** Available border colors for dropdown */\n readonly borderColors: readonly BorderColor[] = BORDER_COLORS;\n\n get containerStyles(): { [key: string]: string } {\n const styles: { [key: string]: string } = {\n 'background-color': this.backgroundColor,\n 'padding': this.padding,\n 'border-radius': this.borderRadius,\n };\n\n // Width and height\n if (this.width) {\n styles['width'] = this.width;\n }\n if (this.height) {\n styles['height'] = this.height;\n }\n\n // Box shadow\n if (this.boxShadow) {\n styles['box-shadow'] = this.customBoxShadow || '0 2px 4px 0 rgba(24, 43, 125, 0.15)';\n }\n\n // Auto-detect border position from border radius\n let effectiveBorderPosition = this.borderPosition;\n if (this.borderRadius === '0 0 16px 16px') {\n // Rounded bottom corners - apply bottom border\n effectiveBorderPosition = 'bottom';\n } else if (this.borderRadius === '16px 16px 0 0') {\n // Rounded top corners - apply top border\n effectiveBorderPosition = 'top';\n }\n\n // Border styles\n if (effectiveBorderPosition === 'top') {\n styles['border-top'] = `2px solid ${this.borderColor}`;\n styles['border-bottom'] = 'none';\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else if (effectiveBorderPosition === 'bottom') {\n styles['border-bottom'] = `2px solid ${this.borderColor}`;\n styles['border-top'] = 'none';\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else if (effectiveBorderPosition === 'both') {\n styles['border-top'] = `2px solid ${this.borderColor}`;\n styles['border-bottom'] = `2px solid ${this.borderColor}`;\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else {\n styles['border'] = 'none';\n }\n\n return styles;\n }\n}\n\n","<div class=\"general-container\" [ngStyle]=\"containerStyles\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { GeneralContainerComponent } from './general-container.component';\n\n@NgModule({\n imports: [GeneralContainerComponent],\n exports: [GeneralContainerComponent],\n})\nexport class GeneralContainerModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppToolbarComponent } from './app-toolbar.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, AppToolbarComponent],\n exports: [AppToolbarComponent],\n})\nexport class AppToolbarModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n const basePath = this.getBasePath();\n\n this.iconRegistry.addSvgIcon(\n 'move',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Move.svg`)\n );\n this.iconRegistry.addSvgIcon(\n 'edit',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/edit.svg`)\n );\n this.iconRegistry.addSvgIcon(\n 'search',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/search.svg`)\n );\n }\n\n private getBasePath(): string {\n if (typeof document === 'undefined') {\n return '';\n }\n\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n return baseHref.replace(/\\/$/, '');\n }\n\n const pathname = window.location.pathname;\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n return '';\n }\n}\n\n","/*\n * Public API Surface of allsorter-lib\n */\n\nexport * from './lib/allsorter-lib.service';\nexport * from './lib/allsorter-lib.component';\nexport * from './lib/button/button.component';\nexport * from './lib/button/button.module';\nexport * from './lib/input/input.component';\nexport * from './lib/input/input.module';\nexport * from './lib/resume-header/resume-header.component';\nexport * from './lib/resume-header/resume-header.module';\nexport * from './lib/loader/loader.component';\nexport * from './lib/loader/loader.module';\nexport * from './lib/candidate-section/candidate-section.component';\nexport * from './lib/candidate-section/candidate-section.module';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/checkbox/checkbox.module';\nexport * from './lib/radio/radio.component';\nexport * from './lib/radio/radio.module';\nexport * from './lib/toggle-buttons/toggle-buttons.component';\nexport * from './lib/toggle-buttons/toggle-buttons.module';\nexport * from './lib/slide-toggle/slide-toggle.component';\nexport * from './lib/slide-toggle/slide-toggle.module';\nexport * from './lib/ai-apply-bar/ai-apply-bar.component';\nexport * from './lib/action-bar-wrapper/action-bar-wrapper.component';\nexport * from './lib/responsive-layout/responsive-layout.component';\nexport * from './lib/responsive-layout/responsive-layout.module';\nexport * from './lib/custom-editor/custom-editor.component';\nexport * from './lib/custom-editor/custom-editor.module';\nexport * from './lib/custom-editor/custom-editor-demo.component';\n\nexport * from './lib/icon-button/icon-button.component';\n\nexport * from './lib/date-range/date-range.component';\nexport * from './lib/date-range/date-range.module';\n\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs.module';\nexport * from './lib/shared-popup-modal/shared-popup-modal.component';\nexport * from './lib/shared-popup-modal/shared-popup-modal.module';\n\nexport * from './lib/tooltip/tooltip.component';\nexport * from './lib/tooltip/tooltip.module';\nexport * from './lib/new-typography/new-typography.component';\n\nexport * from './lib/field-placeholder/field-placeholder.component';\nexport * from './lib/field-placeholder/field-placeholder.module';\nexport * from './lib/responsive-columns/responsive-columns.component';\nexport * from './lib/responsive-columns/responsive-columns.module';\nexport * from './lib/resume-entries/resume-entries.component';\nexport * from './lib/resume-entries/resume-entries.module';\nexport * from './lib/experience-section/experience-section.component';\nexport * from './lib/experience-section/experience-section.module';\nexport * from './lib/general-container/general-container.component';\nexport * from './lib/general-container/general-container.module';\nexport * from './lib/app-toolbar/app-toolbar.component';\nexport * from './lib/app-toolbar/app-toolbar.module';\nexport * from './lib/app-toolbar-right/app-toolbar-right.component';\nexport * from './lib/app-toolbar-right/app-toolbar-right.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i4","i9","i2.FieldPlaceholderComponent","i4.CheckboxComponent","i5.IconButtonComponent","i1.AppToolbarRightComponent"],"mappings":"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"}
1
+ {"version":3,"file":"allsorter-ui-components.mjs","sources":["../../../projects/allsorter-lib/src/lib/allsorter-lib.service.ts","../../../projects/allsorter-lib/src/lib/allsorter-lib.component.ts","../../../projects/allsorter-lib/src/lib/button/button.component.ts","../../../projects/allsorter-lib/src/lib/button/button.component.html","../../../projects/allsorter-lib/src/lib/button/button.module.ts","../../../projects/allsorter-lib/src/lib/input/input.component.ts","../../../projects/allsorter-lib/src/lib/input/input.component.html","../../../projects/allsorter-lib/src/lib/input/input.module.ts","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.component.ts","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.component.html","../../../projects/allsorter-lib/src/lib/checkbox/checkbox.module.ts","../../../projects/allsorter-lib/src/lib/resume-header/resume-header.component.ts","../../../projects/allsorter-lib/src/lib/resume-header/resume-header.component.html","../../../projects/allsorter-lib/src/lib/resume-header/resume-header.module.ts","../../../projects/allsorter-lib/src/lib/general-container/colors.constants.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.component.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.component.html","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.component.ts","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.component.html","../../../projects/allsorter-lib/src/lib/newresumeheader/newresumeheader.component.ts","../../../projects/allsorter-lib/src/lib/newresumeheader/newresumeheader.component.html","../../../projects/allsorter-lib/src/lib/newresumeheader/newresumeheader.module.ts","../../../projects/allsorter-lib/src/lib/loader/loader.component.ts","../../../projects/allsorter-lib/src/lib/loader/loader.component.html","../../../projects/allsorter-lib/src/lib/loader/loader.module.ts","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.component.ts","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.component.html","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.component.ts","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.component.html","../../../projects/allsorter-lib/src/lib/candidate-section/candidate-section.module.ts","../../../projects/allsorter-lib/src/lib/radio/radio.component.ts","../../../projects/allsorter-lib/src/lib/radio/radio.component.html","../../../projects/allsorter-lib/src/lib/radio/radio.module.ts","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.component.ts","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.component.html","../../../projects/allsorter-lib/src/lib/toggle-buttons/toggle-buttons.module.ts","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.component.ts","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.component.html","../../../projects/allsorter-lib/src/lib/slide-toggle/slide-toggle.module.ts","../../../projects/allsorter-lib/src/lib/icon-button/icon-button.component.ts","../../../projects/allsorter-lib/src/lib/icon-button/icon-button.component.html","../../../projects/allsorter-lib/src/lib/ai-apply-bar/ai-apply-bar.component.ts","../../../projects/allsorter-lib/src/lib/ai-apply-bar/ai-apply-bar.component.html","../../../projects/allsorter-lib/src/lib/action-bar-wrapper/action-bar-wrapper.component.ts","../../../projects/allsorter-lib/src/lib/action-bar-wrapper/action-bar-wrapper.component.html","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.component.ts","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.component.html","../../../projects/allsorter-lib/src/lib/responsive-layout/responsive-layout.module.ts","../../../projects/allsorter-lib/src/lib/custom-editor/table/table.component.ts","../../../projects/allsorter-lib/src/lib/custom-editor/table/table.component.html","../../../projects/allsorter-lib/src/lib/custom-editor/bullet-utils.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.component.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.component.html","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor.module.ts","../../../projects/allsorter-lib/src/lib/custom-editor/custom-editor-demo.component.ts","../../../projects/allsorter-lib/src/lib/date-range/date-range.component.ts","../../../projects/allsorter-lib/src/lib/date-range/date-range.component.html","../../../projects/allsorter-lib/src/lib/date-range/date-range.module.ts","../../../projects/allsorter-lib/src/lib/tabs/tabs.component.ts","../../../projects/allsorter-lib/src/lib/tabs/tabs.component.html","../../../projects/allsorter-lib/src/lib/tabs/tabs.module.ts","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.component.ts","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.component.html","../../../projects/allsorter-lib/src/lib/shared-popup-modal/shared-popup-modal.module.ts","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.component.ts","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.component.html","../../../projects/allsorter-lib/src/lib/tooltip/tooltip.module.ts","../../../projects/allsorter-lib/src/lib/new-typography/new-typography.component.ts","../../../projects/allsorter-lib/src/lib/new-typography/new-typography.component.html","../../../projects/allsorter-lib/src/lib/field-placeholder/field-placeholder.module.ts","../../../projects/allsorter-lib/src/lib/responsive-columns/responsive-columns.module.ts","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.component.ts","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.component.html","../../../projects/allsorter-lib/src/lib/resume-entries/resume-entries.module.ts","../../../projects/allsorter-lib/src/lib/app-toolbar/app-toolbar.component.ts","../../../projects/allsorter-lib/src/lib/app-toolbar/app-toolbar.component.html","../../../projects/allsorter-lib/src/lib/app-toolbar-right/app-toolbar-right.component.ts","../../../projects/allsorter-lib/src/lib/app-toolbar-right/app-toolbar-right.component.html","../../../projects/allsorter-lib/src/lib/app-toolbar-right/app-toolbar-right.module.ts","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.component.ts","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.component.html","../../../projects/allsorter-lib/src/lib/experience-section/experience-section.module.ts","../../../projects/allsorter-lib/src/lib/general-container/general-container.module.ts","../../../projects/allsorter-lib/src/lib/app-toolbar/app-toolbar.module.ts","../../../projects/allsorter-lib/src/public-api.ts","../../../projects/allsorter-lib/src/allsorter-ui-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AllsorterLibService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lib-allsorter-lib',\n template: `\n <p>\n allsorter-lib works!\n </p>\n `,\n styles: ``\n})\nexport class AllsorterLibComponent {\n\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewChild, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatMenuTrigger } from '@angular/material/menu';\n\n@Component({\n selector: 'al-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule],\n standalone: true,\n})\nexport class ButtonComponent implements OnDestroy, OnChanges {\n /**\n * Returns the typography class to apply. If the consumer passes `fontClass`,\n * that value wins. Otherwise we derive a sensible default based on `size`.\n */\n get effectiveFontClass(): string {\n if (this.fontClass) {\n return this.fontClass;\n }\n switch (this.size) {\n case 'xs':\n return 'font-body-small';\n case 'sm':\n case 'base':\n return 'font-body-medium';\n case 'l':\n case 'xl':\n case 'header':\n return 'font-body-large';\n default:\n return '';\n }\n }\n @Input() state: 'default' | 'hover' | 'pressed' | 'disabled' = 'default';\n /** Button color (blue, green, grey, error, gradient, white, success) */\n @Input() color: 'blue' | 'green' | 'grey' | 'error' | 'gradient' | 'white' | 'success' = 'blue';\n /** DEPRECATED: category -> color */\n @Input() set category(val: string) {\n if (val !== undefined) {\n console.warn('[al-button] \"category\" is deprecated. Use \"color\" instead.');\n this.color = val as any;\n }\n }\n /** Button outline style (true = outlined, false = filled) */\n @Input() outline: boolean = false;\n\n @Input() labelText: string | undefined = ' '; // Default label\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string | undefined) {\n if (val !== undefined) {\n console.warn('[al-button] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() arialabel: string | undefined = ' '; // Default label\n @Input() iconOnly: boolean = false; // Toggle for icon-only button\n @Input() leftIcon: string | null | undefined = null;\n @Input() rightIcon: string | null | undefined = null;\n /** Alias input: `icon` maps to `leftIcon` for convenience across types. */\n private _icon: string | null | undefined = null;\n @Input() set icon(value: string | null | undefined) {\n this._icon = value;\n // If provided, mirror into leftIcon so all templates and types pick it up.\n if (value !== undefined) {\n this.leftIcon = value;\n }\n }\n get icon(): string | null | undefined {\n return this._icon;\n }\n /** If true, use outlined style for icons (new name). */\n @Input() iconOutlined: boolean = false;\n /** DEPRECATED: outlined -> iconOutlined (remove next major) */\n @Input() set outlined(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"outlined\" is deprecated. Use \"iconOutlined\" instead.');\n this.iconOutlined = val;\n }\n }\n /** Text size option for label and icons */\n @Input() size: 'header' | 'xs' | 'sm' | 'base' | 'l' | 'xl' = 'base';\n\n /** Visual type of button: icon only circle, icon+label, two icons + label */\n @Input() buttonType: 'icon-circle' | 'icon-label' | 'two-icon-label' | 'dropdown' = 'icon-label';\n\n /** Optional typography class, e.g. 'font-display-large' */\n @Input() fontClass: string = '';\n /** Optional data-test-id for e2e or integration tests */\n @Input() dataTestId: string | undefined;\n\n @Output() onClick = new EventEmitter<Event>(); // Initialize\n @Output() onHover = new EventEmitter<Event>(); // Initialize\n @Output() onMouseLeave = new EventEmitter<Event>(); // Initialize\n\n /** Dropdown items (new). */\n @Input() dropdownItems: Array<{ label: string; value?: any } | string> = [];\n /** DEPRECATED: dropdownOptions -> dropdownItems */\n @Input() set dropdownOptions(opts: Array<{ label: string; value?: any } | string>) {\n if (opts !== undefined) {\n console.warn('[al-button] \"dropdownOptions\" is deprecated. Use \"dropdownItems\" instead.');\n this.dropdownItems = opts;\n }\n }\n /** Enable dropdown behavior. */\n @Input() hasDropDown: boolean = false;\n /** DEPRECATED: dropdown -> hasDropDown */\n @Input() set dropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"dropdown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n /** DEPRECATED: hasDropdown -> hasDropDown */\n @Input() set hasDropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"hasDropdown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n /** DEPRECATED: isDropdown -> hasDropDown */\n @Input() set isDropdown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-button] \"isDropdown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n\n /** Emits the selected dropdown option's value */\n @Output() optionSelect = new EventEmitter<any>();\n\n selectOption(option: any) {\n this.optionSelect.emit(option?.value ?? option);\n }\n\n computeGap(): number {\n // Header size uses a tighter 4px gap across all combinations\n if (this.size === 'header') {\n return 4;\n }\n const hasLabel = !!(this.label && this.label.trim()) && !this.iconOnly;\n const leftIconPresent = !!(this.leftIcon && this.leftIcon.toString().trim());\n const rightIconPresent = !!(this.rightIcon && this.rightIcon.toString().trim());\n const iconCount = (leftIconPresent ? 1 : 0) + (rightIconPresent ? 1 : 0);\n\n // 0 gap for purely icon-only buttons (≤1 icon and no label)\n if (!hasLabel && iconCount <= 1) {\n return 0;\n }\n\n // Tighter gap when we have two icons and a label (e.g., two-icon buttons)\n if (iconCount === 2 && !hasLabel) {\n return 4;\n }\n\n // Default gap\n return 8;\n }\n\n stateClasses: { [key: string]: string } = {\n default: 'btn-default',\n hover: 'btn-hover',\n pressed: 'btn-pressed',\n disabled: 'btn-disabled',\n };\n\n // Reference to the MatMenu trigger; used to proactively close overlays on state changes\n @ViewChild(MatMenuTrigger, { static: false }) private menuTrigger?: MatMenuTrigger;\n\n constructor(private iconRegistry: MatIconRegistry) {\n this.iconRegistry.registerFontClassAlias('material-icons-outlined', 'material-icons-outlined');\n this.iconRegistry.registerFontClassAlias('material-icons', 'material-icons');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // If dropdown gets disabled due to control changes, ensure any open menu is closed\n if (changes['hasDropDown'] || changes['buttonType']) {\n const dropdownEnabled = this.hasDropDown || this.buttonType === 'dropdown';\n if (!dropdownEnabled) {\n this.menuTrigger?.closeMenu();\n }\n }\n }\n\n ngOnDestroy(): void {\n // Ensure overlay is cleaned up when component is destroyed\n this.menuTrigger?.closeMenu();\n }\n}\n","<!-- Regular button types -->\n<ng-container *ngIf=\"!(hasDropDown || buttonType === 'dropdown'); else dropdownTpl\">\n <button mat-flat-button class=\"btn custom-button\" [class]=\"effectiveFontClass\" [attr.data-test-id]=\"dataTestId\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n\n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-circle': buttonType === 'icon-circle',\n 'blue': color === 'blue',\n 'green': color === 'green',\n 'grey': color === 'grey',\n 'error': color === 'error',\n 'success': color === 'success',\n 'gradient': color === 'gradient',\n 'white': color === 'white',\n 'btn-outlined': outline,\n 'btn-default': state === 'default',\n 'btn-hover': state === 'hover',\n 'btn-pressed': state === 'pressed',\n 'btn-disabled': state === 'disabled'\n }\" [disabled]=\"state === 'disabled'\" (click)=\"onClick.emit($event)\" (mouseenter)=\"onHover.emit($event)\"\n (mouseleave)=\"onMouseLeave.emit($event)\" [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap()\">\n <!-- Left Icon (Only shown if leftIcon is set and not empty). If icon-circle, prefer 'icon' prop. -->\n <mat-icon *ngIf=\"(buttonType === 'icon-circle' ? (icon || leftIcon) : leftIcon)?.trim() as leftIconText\"\n [fontSet]=\"iconOutlined ? 'material-icons-outlined' : 'material-icons'\" class=\"left-icon\">{{ leftIconText\n }}</mat-icon>\n <!-- Label (Only shown if iconOnly is false) -->\n <span *ngIf=\"!iconOnly\" class=\"button-label\">{{ labelText || '' }}</span>\n\n <!-- Right Icon (Only shown if rightIcon is set and not empty) -->\n <mat-icon *ngIf=\"rightIcon?.trim() as rightIconText\"\n [fontSet]=\"iconOutlined ? 'material-icons-outlined' : 'material-icons'\" class=\"right-icon\">{{ rightIconText\n }}</mat-icon>\n </button>\n</ng-container>\n\n<!-- Dropdown button template -->\n<ng-template #dropdownTpl>\n <button mat-flat-button class=\"btn custom-button\" [class]=\"effectiveFontClass\" [attr.data-test-id]=\"dataTestId\"\n [ngClass]=\"{\n 'size-header': size === 'header' && !fontClass,\n 'size-xs': size === 'xs' && !fontClass,\n 'size-sm': size === 'sm' && !fontClass,\n 'size-base': size === 'base' && !fontClass,\n 'size-l': size === 'l' && !fontClass,\n 'size-xl': size === 'xl' && !fontClass,\n 'mat-raised-button': variant === 'raised',\n 'mat-flat-button': variant === 'flat',\n 'mat-stroked-button': variant === 'stroked',\n 'mat-fab': variant === 'fab',\n 'mat-icon-button': variant === 'icon',\n 'icon-label': true,\n 'blue': color === 'blue',\n 'green': color === 'green',\n 'grey': color === 'grey',\n 'error': color === 'error',\n 'success': color === 'success',\n 'gradient': color === 'gradient',\n 'white': color === 'white',\n 'btn-outlined': outline,\n 'btn-default': state === 'default',\n 'btn-hover': state === 'hover',\n 'btn-pressed': state === 'pressed',\n 'btn-disabled': state === 'disabled',\n\n }\" [disabled]=\"state === 'disabled'\" (mouseenter)=\"onHover.emit($event)\" (mouseleave)=\"onMouseLeave.emit($event)\"\n [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\" [style.gap.px]=\"computeGap()\"\n [matMenuTriggerFor]=\"menu\">\n <!-- Left Icon (optional) -->\n <mat-icon *ngIf=\"leftIcon?.trim() as leftIconText\"\n [fontSet]=\"iconOutlined ? 'material-icons-outlined' : 'material-icons'\" class=\"left-icon\">{{ leftIconText\n }}</mat-icon>\n <!-- Label -->\n <span *ngIf=\"!iconOnly\" class=\"button-label\">{{ labelText || '' }}</span>\n <!-- Dropdown Arrow Icon -->\n <mat-icon class=\"right-icon\">arrow_drop_down</mat-icon>\n </button>\n</ng-template>\n\n<!-- Mat Menu kept outside conditional to avoid portal reattachment across toggles -->\n<mat-menu #menu=\"matMenu\" panelClass=\"custom-dropdown-menu\">\n <button mat-menu-item *ngFor=\"let opt of dropdownItems\" (click)=\"selectOption(opt)\" [ngClass]=\"effectiveFontClass\">\n {{ opt.label || opt }}\n </button>\n</mat-menu>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonComponent } from './button.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, ButtonComponent],\n exports: [ButtonComponent],\n})\nexport class ButtonModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // register the CSS class alias so <mat-icon> knows about it…\n this.iconRegistry.registerFontClassAlias(\n 'material-symbols-outlined',\n 'material-symbols-outlined'\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'al-input',\n templateUrl: './input.component.html',\n styleUrl: './input.component.scss',\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatSelectModule,\n MatOptionModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatButtonModule,\n MatTooltipModule\n ],\n standalone: true,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ]\n})\nexport class InputComponent implements ControlValueAccessor {\n @Input() labelText: string = '';\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string) {\n if (val !== undefined) {\n console.warn('[al-input] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() placeholder: string = '';\n @Input() value: string = '';\n @Input() formControlName: string = '';\n @Input() dataTestId: string = '';\n\n @Input() type: 'text' | 'email' | 'number' | 'password' | 'tel' | 'url' | 'date' | 'color' = 'text';\n @Input() disabled: boolean = false;\n @Input() helperText: string = '';\n @Input() error: boolean = false;\n @Input() errorMessage: string = '';\n @Input() leftIcon: string = '';\n @Input() rightIcon: string = '';\n @Input() hasDropDown: boolean = false;\n /** DEPRECATED: dropDown -> hasDropDown */\n @Input() set dropDown(val: boolean) {\n if (val !== undefined) {\n console.warn('[al-input] \"dropDown\" is deprecated. Use \"hasDropDown\" instead.');\n this.hasDropDown = val;\n }\n }\n @Input() options: string[] = [];\n @Input() size: 'xs' | 'small' | 'base' | 'large' | 'header' = 'base';\n @Input() types: 'simple' | 'primary' | 'success' | 'error' | 'disabled' | 'plain' = 'plain';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n noBorder: boolean = false;\n outlined: boolean = false;\n\n // Date picker specific properties - matching Calendar component\n selectedDate: Date | null = null;\n\n @Output() change = new EventEmitter<string>();\n /** DEPRECATED: valueChange -> change */\n @Output() valueChange = new EventEmitter<string>();\n @Output() onColorChange = new EventEmitter<string>();\n @Output() monthSelected = new EventEmitter<Date>();\n @Output() yearSelected = new EventEmitter<Date>();\n\n private onChange = (value: string) => { };\n onTouched = () => { };\n\n get isDisabled(): boolean {\n return this.disabled || this.types === 'disabled';\n }\n\n // Check if date picker should be shown\n get isDatePicker(): boolean {\n return this.type === 'date' || this.shouldShowDatePicker(this.value);\n }\n\n // Check if color picker should be shown\n get isColorPicker(): boolean {\n return this.type === 'color';\n }\n\n writeValue(value: string | null | undefined): void {\n this.value = value || '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInputChange(value: string): void {\n this.value = value;\n this.onChange(value);\n this.change.emit(value);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(value);\n }\n\n onSelectionChange(value: string): void {\n this.value = value;\n this.onChange(value);\n this.change.emit(value);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(value);\n }\n\n // Handle color picker change\n handleColorChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.onChange(target.value);\n this.change.emit(target.value);\n // Deprecated: emit to valueChange for backward compatibility\n this.valueChange.emit(target.value);\n this.onColorChange.emit(target.value);\n }\n\n // Handle month selection - matching Calendar component exactly\n onMonthSelected(event: Date, dp: any) {\n this.selectedDate = event;\n this.onChange(event.toISOString().split(\"T\")[0]);\n this.onTouched();\n this.monthSelected.emit(event);\n }\n\n // Handle year selection\n onYearSelected(event: Date, dp: any) {\n this.selectedDate = event;\n this.onChange(event.toISOString().split(\"T\")[0]);\n this.onTouched();\n this.yearSelected.emit(event);\n }\n private shouldShowDatePicker(value: string): boolean {\n // Check if the selected value indicates a date picker should be shown\n const dateKeywords = ['date', 'birth', 'start', 'end', 'due', 'deadline', 'calendar'];\n return dateKeywords.some(keyword => value.toLowerCase().includes(keyword));\n }\n\n getSizeClass(): string {\n return 'al-input-size-' + this.size;\n }\n\n getCategoryClass(): string {\n if (this.disabled) {\n return 'al-input-category-disabled';\n }\n if (this.types === 'plain') {\n return 'al-input-category-plain';\n }\n return 'al-input-category-' + this.types;\n }\n}\n","<!-- Standard floating label layout for all inputs including date picker -->\n<mat-form-field appearance=\"outline\" class=\"al-input-field\" [ngClass]=\"[\n helperText ? 'has-helper-text' : '',\n getSizeClass(),\n getCategoryClass(),\n noBorder ? 'al-input-no-border' : '',\n leftIcon ? 'has-left-icon' : ''\n ]\" [attr.data-test-id]=\"dataTestId\" [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!tooltip\">\n <mat-label *ngIf=\"labelText && !noBorder\">{{ labelText }}</mat-label>\n\n <mat-icon *ngIf=\"leftIcon?.trim() as leftIconText\" [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\"\n matPrefix class=\"left-icon\">{{ leftIconText }}</mat-icon>\n\n <ng-container *ngIf=\"hasDropDown; else regularInput\">\n <mat-select [disabled]=\"isDisabled\" [(ngModel)]=\"value\" (selectionChange)=\"onSelectionChange($event.value)\">\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">{{ option }}</mat-option>\n </mat-select>\n </ng-container>\n <ng-template #regularInput>\n <!-- Color Picker Input -->\n <ng-container *ngIf=\"isColorPicker; else datePickerInput\">\n <div class=\"color-picker-container\">\n <input matInput [placeholder]=\"labelText ? '' : placeholder\" [disabled]=\"isDisabled\" [(ngModel)]=\"value\"\n (input)=\"onInputChange($any($event.target).value)\" (blur)=\"onTouched()\" />\n <input type=\"color\" class=\"color-picker-input\" [value]=\"value || '#000000'\" [disabled]=\"isDisabled\"\n (input)=\"handleColorChange($event)\" (blur)=\"onTouched()\" />\n <mat-icon class=\"color-picker-icon\" matSuffix>palette</mat-icon>\n </div>\n </ng-container>\n\n <!-- Date Picker Input - with floating label animation -->\n <ng-template #datePickerInput>\n <ng-container *ngIf=\"isDatePicker; else standardInput\">\n <input matInput [matDatepicker]=\"dp\" [placeholder]=\"labelText ? '' : placeholder\" [disabled]=\"isDisabled\"\n [(ngModel)]=\"selectedDate\" (blur)=\"onTouched()\" />\n <mat-datepicker-toggle matSuffix [for]=\"dp\"></mat-datepicker-toggle>\n <mat-datepicker #dp startView=\"multi-year\" (monthSelected)=\"onMonthSelected($event, dp)\"\n (yearSelected)=\"onYearSelected($event, dp)\" panelClass=\"example-month-picker\">\n </mat-datepicker>\n </ng-container>\n\n <!-- Standard Input -->\n <ng-template #standardInput>\n <input matInput [placeholder]=\"labelText ? '' : placeholder\" [type]=\"type\" [disabled]=\"isDisabled\"\n [(ngModel)]=\"value\" (input)=\"onInputChange($any($event.target).value)\" (blur)=\"onTouched()\" />\n </ng-template>\n </ng-template>\n </ng-template>\n\n <!-- Right icon - only show when not date picker and not color picker -->\n <mat-icon *ngIf=\"!isDatePicker && !isColorPicker && rightIcon?.trim() as rightIconText\"\n [fontSet]=\"outlined ? 'material-icons-outlined' : 'material-icons'\" matSuffix class=\"right-icon\">{{ rightIconText\n }}</mat-icon>\n\n <mat-error *ngIf=\"false && helperText\">{{ helperText }}</mat-error>\n <mat-hint *ngIf=\"helperText\">{{ helperText }}</mat-hint>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputComponent } from './input.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatSelectModule,\n MatOptionModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatButtonModule,\n InputComponent\n ],\n exports: [InputComponent],\n})\nexport class InputModule { }\n","// Wrapper for Angular Material mat-checkbox\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n forwardRef,\n HostBinding\n}\n\n from '@angular/core';\n\nimport {\n ControlValueAccessor,\n NG_VALUE_ACCESSOR\n}\n\n from '@angular/forms';\n\n@Component({\n\n selector: 'al-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n\n ]\n}\n\n) export class CheckboxComponent implements ControlValueAccessor {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() labelPosition: 'before' | 'after' = 'after';\n @Input() name: string = '';\n @Input() required: boolean = false;\n @Input() value: any;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelText: string = '';\n @Input() helperText: string = '';\n @Input() showLabels: boolean = true;\n @Input() showHelperIcon: boolean = false;\n @Input() helperIconTooltip: string = '';\n @HostBinding('class.has-labels') get hasLabelsClass(): boolean {\n return !!this.labelText && this.labelText.trim().length > 0;\n }\n\n @Input() dataTestId: string = \"\";\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<boolean> = new EventEmitter();\n @Output() indeterminateChange: EventEmitter<boolean> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() helperIconClick: EventEmitter<void> = new EventEmitter();\n\n onChange = (_: any) => { }\n\n ;\n\n onTouched = () => { }\n\n ;\n\n writeValue(value: any): void {\n this.checked = ! !value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = event.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n handleIndeterminateChange(value: boolean) {\n this.indeterminateChange.emit(value);\n }\n\n onHelperIconClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.helperIconClick.emit();\n }\n}\n","<mat-checkbox [checked]=\"checked\" [disabled]=\"disabled\" [labelPosition]=\"labelPosition\" [name]=\"name\"\n touchTargetSize=\"none\" [attr.data-testid]=\"dataTestId\" [required]=\"required\" [value]=\"value\" [color]=\"color\"\n [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\"\n (indeterminateChange)=\"handleIndeterminateChange($event)\">\n <div class=\"checkbox-label-wrapper\" *ngIf=\"showLabels\">\n <div class=\"checkbox-label-main-row\" *ngIf=\"labelText\">\n <div class=\"checkbox-label-main\">\n {{ labelText }}\n </div>\n <button *ngIf=\"showHelperIcon\" type=\"button\" class=\"checkbox-helper-icon\"\n [matTooltip]=\"helperIconTooltip || helperText\" [matTooltipPosition]=\"tooltipPosition\" [disabled]=\"disabled\"\n (click)=\"onHelperIconClick($event)\">\n ?\n </button>\n </div>\n\n <div *ngIf=\"helperText\" class=\"checkbox-label-helper\">\n {{ helperText }}\n </div>\n </div>\n\n <ng-content></ng-content>\n</mat-checkbox>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n declarations: [CheckboxComponent],\n imports: [CommonModule, MatCheckboxModule, MatTooltipModule],\n exports: [CheckboxComponent]\n})\nexport class CheckboxModule { }\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, OnInit, OnDestroy, AfterViewInit, ViewChild, ElementRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { ButtonComponent } from '../button/button.component';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { EyeIconConfig, HeaderButton, InputHandlersConfig, SectionCheckboxConfig } from './resume-header.model';\n\n@Component({\n selector: 'al-resume-header',\n templateUrl: './resume-header.component.html',\n styleUrl: './resume-header.component.css',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n MatCheckboxModule,\n MatTooltipModule,\n MatMenuModule,\n MatIconModule,\n CdkAccordionModule,\n ButtonComponent,\n CheckboxModule\n ]\n})\nexport class ResumeHeaderComponent implements OnInit, OnDestroy, AfterViewInit {\n hideTimeout: any;\n isMenuVisible = false;\n isEducationHidden = false;\n private resizeListener?: () => void;\n private clickOutsideListener?: (event: Event) => void;\n @Input() hiddenSection: { headerSectionHidden: boolean } = { headerSectionHidden: false };\n @Input() isLargeScreen = true;\n @Input() inputHandlers!: InputHandlersConfig;\n @Output() focusField = new EventEmitter<string>();\n @Output() blurField = new EventEmitter<void>();\n @Output() enterKeyPressed = new EventEmitter<KeyboardEvent>();\n @Input() checked = false;\n @Input() checkboxConfig!: SectionCheckboxConfig;\n @Output() checkedCheckBoxChange = new EventEmitter<boolean>();\n @Input() disabled = false;\n @Input() buttonConfig: HeaderButton[] = [];\n @Output() buttonClicked = new EventEmitter<HeaderButton>();\n @Input() configEyeToggle!: EyeIconConfig[];\n @Input() accordionItem: any;\n @Output() showHideToggleSection = new EventEmitter<{ isHidden: boolean; accordionItem?: any; config: EyeIconConfig }>();\n @Input() toggleEditIcon?: (field: string) => void;\n @Input() showSection = true;\n @Output() sectionToggled = new EventEmitter<boolean>();\n @Input() borderColor = '#37c1ce';\n @Input() dataTestId?: string;\n @Input() showPopOutPanel: boolean = false;\n @Input() popOutMessage: string = 'Takes a little longer, but deals with tricky resumes much better than fast extraction.'; // Click here to run automatically every time.\n @Input() popOutButtonLabel: string = 'Run Deep Extraction';\n @Input() popOutButtonIcon: string = 'auto_fix_high';\n @Input() popOutButtonTooltip: string = ' Deep Extraction';\n @Input() popOutButtonTooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n @Output() popOutButtonClick = new EventEmitter<void>();\n\n showPopOut: boolean = false;\n inputWidth: number = 100;\n maxContainerWidth: number = 0;\n @ViewChild('textInputSection') textInputSection?: ElementRef<HTMLInputElement>;\n\n constructor(private sanitizer: DomSanitizer) { }\n\n toggleAccordion(accordionItem: any) {\n accordionItem.toggle();\n this.showSection = accordionItem.expanded;\n this.sectionToggled.emit(this.showSection);\n }\n\n ngOnInit() {\n this.checkScreenSize();\n // Add resize listener\n this.resizeListener = () => this.checkScreenSize();\n window.addEventListener('resize', this.resizeListener);\n\n // Check if pop-out should be shown\n this.checkPopOutVisibility();\n\n // Add click outside listener to close menu on small screens\n this.clickOutsideListener = (event: Event) => this.handleClickOutside(event);\n document.addEventListener('click', this.clickOutsideListener);\n }\n\n ngAfterViewInit() {\n // Calculate max container width\n this.calculateMaxContainerWidth();\n // Initialize input width based on current value\n if (this.textInputSection?.nativeElement) {\n this.adjustInputWidth({ target: this.textInputSection.nativeElement } as any);\n }\n }\n\n private checkPopOutVisibility() {\n if (!this.showPopOutPanel) {\n this.showPopOut = false;\n return;\n }\n\n // Generate storage key based on dataTestId\n const storageKey = `resume-header-popout-${this.dataTestId || 'default'}`;\n\n // Check if user has dismissed it before\n const dismissed = localStorage.getItem(storageKey);\n if (dismissed === 'true') {\n this.showPopOut = false;\n } else {\n this.showPopOut = true;\n }\n }\n\n dismissPopOut() {\n this.showPopOut = false;\n\n // Store dismissal preference\n const storageKey = `resume-header-popout-${this.dataTestId || 'default'}`;\n localStorage.setItem(storageKey, 'true');\n }\n\n get sanitizedMessage(): SafeHtml {\n const message = this.popOutMessage || 'Takes a little longer, but deals with tricky resumes much better than fast extraction.'; // Click here to run automatically every time.\n // Replace \"Click here\" with a styled link and add line break before it\n const processedMessage = message.replace(\n /Click here/g,\n '<br><a href=\"#\" class=\"pop-out-link\">Click here</a>'\n );\n return this.sanitizer.bypassSecurityTrustHtml(processedMessage);\n }\n\n calculateMaxContainerWidth(): void {\n const leftSideHeader = document.querySelector('.left_side_header');\n const rightSideHeader = document.querySelector('.right_side_header');\n\n if (leftSideHeader && rightSideHeader) {\n const leftHeaderRect = leftSideHeader.getBoundingClientRect();\n const rightHeaderRect = rightSideHeader.getBoundingClientRect();\n const toggleButtonWidth = leftSideHeader.querySelector('.toggle-button')?.getBoundingClientRect().width || 0;\n const editIconWidth = 24; // Approximate width of edit icon\n\n // Adjust gaps based on screen size\n const isSmallScreen = window.innerWidth <= 768;\n const gaps = isSmallScreen ? 8 + 4 : 16 + 4; // Gap between toggle and input group + gap inside input group\n const padding = isSmallScreen ? 10 : 20; // Padding adjustment for small screens\n\n // Calculate available width from left header start to right header start\n this.maxContainerWidth = rightHeaderRect.left - leftHeaderRect.left - toggleButtonWidth - editIconWidth - gaps - padding;\n } else {\n this.maxContainerWidth = window.innerWidth * 0.5;\n }\n }\n\n adjustInputWidth(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input) {\n // Recalculate max container width on resize\n this.calculateMaxContainerWidth();\n\n // Create a temporary span to measure text width\n const tempSpan = document.createElement('span');\n tempSpan.style.visibility = 'hidden';\n tempSpan.style.position = 'absolute';\n tempSpan.style.whiteSpace = 'nowrap';\n tempSpan.style.font = window.getComputedStyle(input).font;\n tempSpan.textContent = input.value || input.placeholder || 'M';\n document.body.appendChild(tempSpan);\n\n const textWidth = tempSpan.offsetWidth;\n document.body.removeChild(tempSpan);\n\n // Set width to text width + padding, with min 100px\n const minWidth = 100;\n const padding = 16; // 8px on each side\n const calculatedWidth = textWidth + padding;\n\n // If content is large, allow it to expand to full available width\n if (calculatedWidth > this.maxContainerWidth) {\n this.inputWidth = Math.max(minWidth, this.maxContainerWidth);\n } else {\n this.inputWidth = Math.max(minWidth, calculatedWidth);\n }\n }\n }\n\n ngOnDestroy() {\n // Remove resize listener\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n }\n // Remove click outside listener\n if (this.clickOutsideListener) {\n document.removeEventListener('click', this.clickOutsideListener);\n }\n // Clear any pending timeouts\n this.clearHideTimeout();\n }\n\n checkScreenSize() {\n this.isLargeScreen = window.innerWidth >= 1400;\n }\n\n showMenu() {\n this.isMenuVisible = true;\n this.clearHideTimeout();\n }\n\n toggleMenu() {\n this.isMenuVisible = !this.isMenuVisible;\n this.clearHideTimeout();\n }\n\n handleClickOutside(event: Event) {\n if (this.isLargeScreen) {\n return; // Only handle on small screens\n }\n\n const target = event.target as HTMLElement;\n const menuContainer = document.querySelector('.hover-menu-container');\n\n if (menuContainer && !menuContainer.contains(target) && this.isMenuVisible) {\n this.isMenuVisible = false;\n }\n }\n\n startHideTimeout() {\n this.clearHideTimeout();\n this.hideTimeout = setTimeout(() => {\n this.isMenuVisible = false;\n }, 200);\n }\n\n clearHideTimeout() {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n\n onButtonClick(btn: any) {\n if (btn.buttonType !== 'dropdown') {\n this.buttonClicked.emit(btn);\n }\n }\n\n onDropdownSelect(btn: any, value: any) {\n if (btn.buttonType === 'dropdown') {\n // Find the selected option\n const selectedOption = btn.dropdownOptions?.find((option: any) => option.value === value);\n\n // If the option has a custom function, call it\n if (selectedOption?.function) {\n selectedOption.function();\n }\n\n // Always emit the buttonClicked event for tracking\n this.buttonClicked.emit({ ...btn, dropdownValue: value });\n }\n }\n}\n","<cdk-accordion class=\"example-accordion\">\n <cdk-accordion-item #accordionItem=\"cdkAccordionItem\" [expanded]=\"true\" class=\"example-accordion-item\">\n\n <div class=\"example-accordion-item-header\" [ngStyle]=\"{ 'border-color': borderColor }\">\n <div class=\"left_side_header\" *ngIf=\"!hiddenSection?.headerSectionHidden; else hiddenHeaderLayout\">\n <div [matTooltip]=\"accordionItem.expanded ? 'Collapse' : 'Expand'\" matTooltipPosition=\"above\">\n <button (click)=\"toggleAccordion(accordionItem)\" tabindex=\"0\" class=\"toggle-button align-center \"\n [attr.aria-expanded]=\"accordionItem.expanded\">\n <span class=\"material-icons-outlined\" *ngIf=\"!accordionItem.expanded\">\n expand_less\n </span>\n <span class=\"material-icons-outlined\" *ngIf=\"accordionItem.expanded\">\n expand_more\n </span>\n </button>\n </div>\n\n <div class=\"edit-input-group\" [style.max-width.px]=\"maxContainerWidth\">\n <div class=\"content_width\" data-test-id=\"edu-section-title-input\">\n <div class=\"content_width\" data-test-id=\"edu-section-title-input\" *ngIf=\"!inputHandlers.headersLoading\">\n <input #textInputSection type=\"text\" [ngClass]=\"{\n 'focusout-input-text': !inputHandlers?.isFocused,\n 'onfocus-input-text': inputHandlers?.isFocused\n }\" [(ngModel)]=\"inputHandlers.shownTitle\" [attr.aria-label]=\"inputHandlers.shownTitle\"\n (focus)=\"focusField.emit('educationHeader')\" (focusout)=\"blurField.emit()\"\n (keypress)=\"enterKeyPressed.emit($event)\" (input)=\"adjustInputWidth($event)\"\n [style.width.px]=\"inputWidth\" [style.max-width.%]=\"100\"\n [disabled]=\"inputHandlers?.isDisabled?.() ?? false\" />\n </div>\n </div>\n <span *ngIf=\"!inputHandlers.headersLoading\" class=\"align-center\">\n <span class=\"material-symbols-outlined\" [attr.alt]=\"inputHandlers.iconAltText || 'edit-icon'\"\n (click)=\"toggleEditIcon?.('educationHeader')\"\n [matTooltip]=\"inputHandlers.tooltipText || 'This header can be edited'\"\n [matTooltipPosition]=\"inputHandlers.tooltipPosition || 'above'\"\n *ngIf=\"inputHandlers.getFieldNotHidden('')\">\n edit\n </span>\n </span>\n </div>\n </div>\n\n <!-- ✅ FIXED: Right side header (shows when section is NOT hidden) -->\n <div class=\"right_side_header\" *ngIf=\"!hiddenSection?.headerSectionHidden\">\n <ng-container *ngIf=\"isLargeScreen\">\n <al-button [labelText]=\"popOutButtonLabel || 'Run Deep Extraction'\" [leftIcon]=\"popOutButtonIcon\"\n [rightIcon]=\"'arrow_forward'\" [buttonType]=\"'icon-label'\" [category]=\"'gradient'\" [size]=\"'header'\"\n [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\" [dataTestId]=\"'header-run-deep-extraction'\"\n [title]=\"popOutButtonLabel || 'Run Deep Extraction'\" [matTooltip]=\"popOutButtonTooltip\"\n [matTooltipPosition]=\"popOutButtonTooltipPosition\">\n </al-button>\n <ng-container class=\"button-margin\"\n *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\">\n </ng-container>\n </ng-container>\n\n <div class=\"hover-menu-container\" *ngIf=\"!isLargeScreen\">\n <div class=\"menu-trigger\" (click)=\"toggleMenu()\">\n <al-button buttonType=\"icon-label\" iconOnly size=\"header\" category=\"grey\" leftIcon=\"more_vert\"\n aria-label=\"More options\" [dataTestId]=\"'resume-header-more-menu'\">\n </al-button>\n </div>\n <div class=\"slide-out-panel\" [class.visible]=\"isMenuVisible\">\n <div class=\"fit-panel\">\n <al-button [labelText]=\"popOutButtonLabel || 'Run Deep Extraction'\" [leftIcon]=\"popOutButtonIcon\"\n [rightIcon]=\"'arrow_forward'\" [buttonType]=\"'icon-label'\" [category]=\"'gradient'\" [size]=\"'header'\"\n [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\" [dataTestId]=\"'header-run-deep-extraction'\"\n [title]=\"popOutButtonLabel || ' Deep Extraction'\" [matTooltip]=\"popOutButtonTooltip\"\n [matTooltipPosition]=\"popOutButtonTooltipPosition\">\n </al-button>\n <ng-container *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\">\n </ng-container>\n </div>\n </div>\n </div>\n\n <!-- ✅ FIXED: Eye icon for hiding section -->\n <ng-container *ngIf=\"!hiddenSection?.headerSectionHidden\">\n <ng-container *ngFor=\"let eyeConfig of configEyeToggle\">\n <ng-container\n *ngTemplateOutlet=\"eyeIconTemplate; context: { isHidden: false, accordionItem: accordionItem, configEyeToggle: eyeConfig }\"></ng-container>\n </ng-container>\n </ng-container>\n\n <div *ngIf=\"checkboxConfig?.sectionItems?.length\" class=\"mat-checkbox-margin\">\n <al-checkbox [checked]=\"checked\" [disabled]=\"disabled || checkboxConfig?.disabled ?? false\"\n [tooltip]=\"checkboxConfig?.tooltipText || 'Select All'\"\n [tooltipPosition]=\"checkboxConfig.tooltipPosition || 'above'\"\n [dataTestId]=\"'edu-section-select-all-checkbox'\" [showLabels]=\"false\"\n (change)=\"checkedCheckBoxChange.emit($event)\">\n </al-checkbox>\n </div>\n </div>\n\n <!-- ✅ FIXED: Hidden header layout (shows when section IS hidden) -->\n <ng-template #hiddenHeaderLayout>\n <div class=\"hide-header\">\n <span class=\"header-text-turncate\">{{ inputHandlers?.shownTitle }}</span>\n <div class=\"hidden-write\">Section hidden</div>\n\n <!-- ✅ FIXED: Eye icon for showing section -->\n <ng-container *ngIf=\"hiddenSection?.headerSectionHidden\">\n <ng-container *ngFor=\"let eyeConfig of configEyeToggle\">\n <ng-container *ngIf=\"!eyeConfig['onClick']\">\n <ng-container\n *ngTemplateOutlet=\"eyeIconTemplate; context: { isHidden: true, accordionItem: accordionItem, configEyeToggle: eyeConfig }\"></ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-template>\n </div>\n\n <!-- Pop-out Panel -->\n <div *ngIf=\"showPopOut\" class=\"pop-out-panel\">\n <div class=\"pop-out-content\">\n <al-button [labelText]=\"popOutButtonLabel || 'Run Deep Extraction'\" [leftIcon]=\"popOutButtonIcon\"\n [rightIcon]=\"'arrow_forward'\" [buttonType]=\"'icon-label'\" [category]=\"'gradient'\" [size]=\"'xs'\"\n [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\" [dataTestId]=\"'pop-out-run-deep-extraction'\"\n [title]=\"popOutButtonLabel || 'Run Deep Extraction'\">\n </al-button>\n <p class=\"pop-out-message\" [innerHTML]=\"sanitizedMessage\"></p>\n <button type=\"button\" class=\"pop-out-close\" (click)=\"dismissPopOut()\" aria-label=\"Close pop-out panel\">\n <span class=\"material-icons-outlined\">close</span>\n </button>\n </div>\n </div>\n\n <!-- ✅ FIXED: Accordion body (only shows when expanded AND not hidden) -->\n <div *ngIf=\"accordionItem.expanded && !hiddenSection?.headerSectionHidden\" class=\"example-accordion-item-body\"\n role=\"region\">\n Lorem ipsum dolor, sit amet, consectetur adipisicing elit. Perferendis excepturi incidunt ipsum\n deleniti labore, tempore non nam doloribus blanditiis veritatis illo autem iure aliquid ullam\n rem tenetur deserunt velit culpa?\n </div>\n\n </cdk-accordion-item>\n</cdk-accordion>\n\n<!-- Header Buttons Template -->\n<ng-template #headerButtonsTemplate let-buttons=\"buttons\" let-handleClick=\"handleClick\">\n <ng-container *ngFor=\"let btn of buttonConfig\">\n <al-button *ngIf=\"!btn.hidden && (!btn.displayCondition || btn.displayCondition())\" [category]=\"btn.category\"\n [buttonType]=\"btn.buttonType\" [labelText]=\"btn.label\" [leftIcon]=\"btn.leftIcon\" [rightIcon]=\"btn.rightIcon\"\n [state]=\"btn.state\" [size]=\"btn.size\" [outlined]=\"btn.outlined\" [iconOnly]=\"btn.iconOnly\"\n [dropdownOptions]=\"btn.buttonType === 'dropdown' ? btn.dropdownOptions : null\"\n (optionSelect)=\"onDropdownSelect(btn, $event)\" (onClick)=\"onButtonClick(btn)\" [attr.alt]=\"btn.alt\"\n [dataTestId]=\"btn.testId\" [matTooltip]=\"btn.tooltipText\" [matTooltipPosition]=\"btn.tooltipPosition || 'above'\">\n </al-button>\n </ng-container>\n</ng-template>\n\n<!-- ✅ FIXED: Eye Icon Template with proper click handler -->\n<ng-template #eyeIconTemplate let-isHidden=\"isHidden\" let-accordionItem=\"accordionItem\"\n let-configEyeToggle=\"configEyeToggle\">\n <div *ngIf=\"configEyeToggle\" class=\"mat-checkbox-margin align-center\"\n [attr.data-test-id]=\"isHidden ? 'edu-section-show-eye-div' : 'edu-section-hide-eye-div'\">\n <span class=\"material-symbols-outlined delete-multiple mat-fab.mat-accent\"\n [matTooltip]=\"configEyeToggle.tooltips[isHidden ? 'collapse' : 'expand']\"\n [matTooltipPosition]=\"configEyeToggle.tooltips.position\"\n [attr.aria-label]=\"configEyeToggle.ariaLabels[isHidden ? 'collapsed' : 'expanded']\"\n (click)=\"showHideToggleSection.emit({ isHidden: isHidden, accordionItem: accordionItem, config: configEyeToggle })\"\n [attr.data-test-id]=\"isHidden ? 'edu-section-show-eye-icon' : 'edu-section-show-hide-eye-icon'\">\n {{ isHidden ? 'visibility' : 'visibility_off' }}\n </span>\n </div>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResumeHeaderComponent } from './resume-header.component';\n\n@NgModule({\n imports: [CommonModule, ResumeHeaderComponent],\n exports: [ResumeHeaderComponent],\n})\nexport class ResumeHeaderModule { }\n","/**\n * Color constants matching colors.scss\n * These values should be kept in sync with src/lib/styles/colors.scss\n */\n\nexport const COLORS = {\n // Blue scale\n blue: {\n '50': '#E5E9FC',\n '100': '#BBC7F6',\n '200': '#98ABF1',\n '300': '#768FED',\n '400': '#6581EA',\n '500': '#5473E8', // Base-Blue\n '600': '#1E46DF',\n '700': '#0F236F',\n '800': '#071238',\n '900': '#04091C',\n },\n // Green scale\n green: {\n '50': '#D7F3F5',\n '100': '#AFE6EB',\n '200': '#87DAE2',\n '300': '#5FCDD8',\n '400': '#4BC7D3',\n '500': '#37C1CE', // Base-Green\n '600': '#299DA8',\n '700': '#1F767E',\n '800': '#154E54',\n '900': '#0A272A',\n },\n // Grey scale\n grey: {\n '50': '#FAFBFB',\n '100': '#ECEDF1',\n '200': '#DEE0E6',\n '300': '#D1D3DB',\n '400': '#C3C5D1',\n '500': '#A2A6B8', // Base-Grey\n '600': '#717793',\n '700': '#4B4F62',\n '800': '#383B4A',\n '900': '#252831',\n },\n} as const;\n\n// Border color options for general-container component\nexport const BORDER_COLORS = [\n COLORS.green['200'], // #87DAE2\n COLORS.blue['200'], // #98ABF1\n COLORS.grey['500'], // #A2A6B8\n COLORS.grey['700'], // #4B4F62\n COLORS.blue['500'], // #5473E8\n COLORS.green['500'], // #37C1CE\n] as const;\n\nexport type BorderColorValue = typeof BORDER_COLORS[number];\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BORDER_COLORS, BorderColorValue } from './colors.constants';\n\nexport type BorderPosition = 'none' | 'top' | 'bottom' | 'both';\n\nexport type BorderColor = BorderColorValue;\n\n@Component({\n selector: 'al-general-container',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './general-container.component.html',\n styleUrls: ['./general-container.component.scss']\n})\nexport class GeneralContainerComponent {\n /** Background color of the container */\n @Input() backgroundColor: string = '#FFFFFF';\n\n /** Padding for the container */\n @Input() padding: string = '16px';\n\n /** Width of the container */\n @Input() width?: string;\n\n /** Height of the container */\n @Input() height?: string;\n\n /** Border position: 'none', 'top', 'bottom', or 'both' */\n @Input() borderPosition: BorderPosition = 'none';\n\n /** Border color - one of the predefined colors */\n @Input() borderColor: BorderColor = BORDER_COLORS[0];\n\n /** Border radius */\n @Input() borderRadius: string = '8px';\n\n /** Enable box shadow */\n @Input() boxShadow: boolean = true;\n\n /** Custom box shadow (overrides default if provided) */\n @Input() customBoxShadow?: string;\n\n /** Available border colors for dropdown */\n readonly borderColors: readonly BorderColor[] = BORDER_COLORS;\n\n get containerStyles(): { [key: string]: string } {\n const styles: { [key: string]: string } = {\n 'background-color': this.backgroundColor,\n 'padding': this.padding,\n 'border-radius': this.borderRadius,\n };\n\n // Width and height\n if (this.width) {\n styles['width'] = this.width;\n }\n if (this.height) {\n styles['height'] = this.height;\n }\n\n // Box shadow\n if (this.boxShadow) {\n styles['box-shadow'] = this.customBoxShadow || '0 2px 4px 0 rgba(24, 43, 125, 0.15)';\n }\n\n // Auto-detect border position from border radius\n let effectiveBorderPosition = this.borderPosition;\n if (this.borderRadius === '0 0 16px 16px') {\n // Rounded bottom corners - apply bottom border\n effectiveBorderPosition = 'bottom';\n } else if (this.borderRadius === '16px 16px 0 0') {\n // Rounded top corners - apply top border\n effectiveBorderPosition = 'top';\n }\n\n // Border styles\n if (effectiveBorderPosition === 'top') {\n styles['border-top'] = `2px solid ${this.borderColor}`;\n styles['border-bottom'] = 'none';\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else if (effectiveBorderPosition === 'bottom') {\n styles['border-bottom'] = `2px solid ${this.borderColor}`;\n styles['border-top'] = 'none';\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else if (effectiveBorderPosition === 'both') {\n styles['border-top'] = `2px solid ${this.borderColor}`;\n styles['border-bottom'] = `2px solid ${this.borderColor}`;\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n } else {\n styles['border'] = 'none';\n }\n\n return styles;\n }\n}\n\n","<div class=\"general-container\" [ngStyle]=\"containerStyles\">\n <ng-content></ng-content>\n</div>\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n AfterViewInit,\n Component,\n HostBinding,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChanges\n}\n\n from '@angular/core';\n\nimport {\n ElementRef\n}\n\n from '@angular/core';\n\n@Component({\n selector: 'al-responsive-columns',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './responsive-columns.component.html',\n styleUrls: ['./responsive-columns.component.scss'],\n}\n\n) export class ResponsiveColumnsComponent implements AfterViewInit,\n OnChanges,\n OnDestroy {\n /** Optional data-testid for test selectors */\n @Input() dataTestId?: string;\n\n /** Gap between the three columns */\n @Input() gap: string | number = '16px';\n\n /** Padding applied to the container (e.g. '12px 16px') */\n @Input() padding: string | number = 0;\n\n /** Optional explicit widths for side columns; default to compact 32px side rails */\n @Input() leftWidth: string = '32px';\n @Input() rightWidth: string = '32px';\n\n /** Breakpoint (px) below which columns stack vertically */\n @Input() stackAt: number = 480;\n\n @HostBinding('class.stack') isStacked = false;\n\n @HostBinding('attr.data-testid') get dataTestIdAttr() {\n return this.dataTestId || null;\n }\n\n @HostBinding('style.--gap') get cssGap() {\n return typeof this.gap === 'number' ? `$ {\n this.gap\n }\n\n px` : this.gap;\n }\n\n @HostBinding('style.--padding') get cssPadding() {\n return typeof this.padding === 'number' ? `$ {\n this.padding\n }\n\n px` : this.padding as string;\n }\n\n @HostBinding('style.--left-width') get cssLeftWidth() { return this.leftWidth || 'auto'; }\n\n @HostBinding('style.--right-width') get cssRightWidth() { return this.rightWidth || 'auto'; }\n\n @HostBinding('style.--stack-at') get cssStackAt() {\n return `$ {\n this.stackAt\n }\n\n px`;\n }\n\n // no dynamic template columns; side visibility controlled by widths only\n\n private resizeObserver?: ResizeObserver;\n\n constructor(private hostRef: ElementRef<HTMLElement>, private zone: NgZone) { }\n\n ngAfterViewInit(): void {\n this.zone.runOutsideAngular(() => {\n this.resizeObserver = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry?.contentRect?.width ?? this.hostRef.nativeElement.clientWidth;\n const shouldStack = width < this.stackAt;\n\n if (shouldStack !== this.isStacked) {\n this.zone.run(() => (this.isStacked = shouldStack));\n }\n }\n\n );\n this.resizeObserver.observe(this.hostRef.nativeElement);\n }\n\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['stackAt']) {\n const width = this.hostRef?.nativeElement?.clientWidth || 0;\n this.isStacked = width < this.stackAt;\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n}\n","<div class=\"container\">\n <div class=\"column left\"><ng-content select=\"[left],[slot=left],[data-slot=left]\"></ng-content></div>\n <div class=\"column center\"><ng-content></ng-content><ng-content\n select=\"[center],[slot=center],[data-slot=center]\"></ng-content></div>\n <div class=\"column right\"><ng-content select=\"[right],[slot=right],[data-slot=right]\"></ng-content></div>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, OnInit, OnDestroy, AfterViewInit, OnChanges, SimpleChanges, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { GeneralContainerComponent } from '../general-container/general-container.component';\nimport { ResponsiveColumnsComponent } from '../responsive-columns/responsive-columns.component';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { ButtonComponent } from '../button/button.component';\nimport { EyeIconConfig, HeaderButton } from '../resume-header/resume-header.model';\n\n@Component({\n selector: 'al-newresumeheader',\n templateUrl: './newresumeheader.component.html',\n styleUrl: './newresumeheader.component.css',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n CdkAccordionModule,\n MatIconModule,\n MatTooltipModule,\n GeneralContainerComponent,\n ResponsiveColumnsComponent,\n CheckboxModule,\n ButtonComponent\n ]\n})\nexport class NewResumeHeaderComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n // Add your component properties here\n @Input() title: string = '';\n @Input() showHeaderCheckbox: boolean = true;\n @Input() headerCheckboxChecked: boolean = false;\n @Input() configEyeToggle: EyeIconConfig[] = [];\n @Input() hiddenSection: { headerSectionHidden: boolean } = { headerSectionHidden: false };\n @Input() buttonConfig: HeaderButton[] = [];\n @Input() isLargeScreen: boolean = true;\n private resizeListener?: () => void;\n @Input() popOutButtonLabel: string = 'Run Deep Extraction';\n @Input() popOutButtonIcon: string = 'auto_fix_high';\n @Input() popOutButtonTooltip: string = 'Deep Extraction';\n @Input() popOutButtonTooltipPosition: 'above' | 'below' | 'left' | 'right' = 'above';\n @Input() showPopOutPanel: boolean = false;\n @Input() popOutMessage: string = 'Takes a little longer, but deals with tricky resumes much better than fast extraction.';\n @Input() dataTestId?: string;\n\n // Computed property for pop-out visibility\n get shouldShowPopOut(): boolean {\n return this.showPopOutPanel && !this.isPopOutDismissed;\n }\n @Output() titleChange = new EventEmitter<string>();\n @Output() sectionToggled = new EventEmitter<boolean>();\n @Output() headerCheckboxChange = new EventEmitter<boolean>();\n @Output() showHideToggleSection = new EventEmitter<{ isHidden: boolean; accordionItem?: any; config: EyeIconConfig }>();\n @Output() buttonClicked = new EventEmitter<HeaderButton>();\n @Output() popOutButtonClick = new EventEmitter<void>();\n\n isTitleEditing: boolean = false;\n editedTitle: string = '';\n isInputFocused: boolean = false;\n isMenuVisible: boolean = false;\n isPopOutDismissed: boolean = false;\n private clickOutsideListener?: (event: Event) => void;\n @ViewChild('titleInput') titleInput?: ElementRef<HTMLInputElement>;\n\n constructor(private sanitizer: DomSanitizer, private cdr: ChangeDetectorRef) { }\n\n toggleAccordion(accordionItem: any) {\n accordionItem.toggle();\n this.sectionToggled.emit(accordionItem.expanded);\n }\n\n onHeaderCheckboxChange(checked: boolean) {\n this.headerCheckboxChecked = checked;\n this.headerCheckboxChange.emit(checked);\n }\n\n onButtonClick(btn: any) {\n if (btn.buttonType !== 'dropdown') {\n this.buttonClicked.emit(btn);\n }\n }\n\n onDropdownSelect(btn: any, value: any) {\n if (btn.buttonType === 'dropdown') {\n // Find the selected option\n const selectedOption = btn.dropdownOptions?.find((option: any) => option.value === value);\n\n // If the option has a custom function, call it\n if (selectedOption?.function) {\n selectedOption.function();\n }\n\n // Always emit the buttonClicked event for tracking\n this.buttonClicked.emit({ ...btn, dropdownValue: value });\n }\n }\n\n onTitleClick() {\n if (!this.isTitleEditing) {\n this.isTitleEditing = true;\n this.editedTitle = this.title;\n // Focus the input after view update\n setTimeout(() => {\n this.titleInput?.nativeElement?.focus();\n this.titleInput?.nativeElement?.select();\n }, 0);\n }\n }\n\n onTitleFocus() {\n this.isInputFocused = true;\n }\n\n onTitleBlur() {\n this.isInputFocused = false;\n this.saveTitle();\n }\n\n onTitleKeyPress(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.saveTitle();\n } else if (event.key === 'Escape') {\n this.cancelTitleEdit();\n }\n }\n\n saveTitle() {\n if (this.isTitleEditing) {\n this.title = this.editedTitle;\n this.titleChange.emit(this.title);\n this.isTitleEditing = false;\n }\n }\n\n cancelTitleEdit() {\n this.editedTitle = this.title;\n this.isTitleEditing = false;\n }\n\n toggleMenu() {\n this.isMenuVisible = !this.isMenuVisible;\n }\n\n handleClickOutside(event: Event) {\n const target = event.target as HTMLElement;\n if (!target.closest('.hover-menu-container') && !target.closest('.slide-out-panel')) {\n this.isMenuVisible = false;\n }\n }\n\n ngOnInit(): void {\n // Initialize component\n this.editedTitle = this.title;\n // Check screen size and set up resize listener\n this.checkScreenSize();\n this.resizeListener = () => this.checkScreenSize();\n window.addEventListener('resize', this.resizeListener);\n // Add click outside listener to close menu on small screens\n this.clickOutsideListener = (event: Event) => this.handleClickOutside(event);\n document.addEventListener('click', this.clickOutsideListener);\n }\n\n private checkScreenSize() {\n this.isLargeScreen = window.innerWidth >= 1400;\n // Close menu when screen becomes large\n if (this.isLargeScreen) {\n this.isMenuVisible = false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Reset dismissed flag when showPopOutPanel changes to true\n if (changes['showPopOutPanel'] && this.showPopOutPanel) {\n this.isPopOutDismissed = false;\n }\n // Close menu when isLargeScreen becomes true (large screen)\n if (changes['isLargeScreen'] && this.isLargeScreen) {\n this.isMenuVisible = false;\n }\n }\n\n dismissPopOut() {\n // Hide the panel by setting dismissed flag\n this.isPopOutDismissed = true;\n }\n\n get sanitizedMessage(): SafeHtml {\n const message = this.popOutMessage || 'Takes a little longer, but deals with tricky resumes much better than fast extraction.';\n // Replace \"Click here\" with a styled link and add line break before it\n const processedMessage = message.replace(\n /Click here/g,\n '<br><a href=\"#\" class=\"pop-out-link\">Click here</a>'\n );\n return this.sanitizer.bypassSecurityTrustHtml(processedMessage);\n }\n\n ngAfterViewInit(): void {\n // View initialization\n }\n\n ngOnDestroy(): void {\n // Cleanup\n if (this.resizeListener) {\n window.removeEventListener('resize', this.resizeListener);\n }\n if (this.clickOutsideListener) {\n document.removeEventListener('click', this.clickOutsideListener);\n }\n }\n}\n\n","<al-general-container [borderRadius]=\"'0'\" [borderPosition]=\"'none'\" [boxShadow]=\"false\" [padding]=\"'0'\"\n [width]=\"'100%'\">\n <cdk-accordion class=\"example-accordion\">\n <cdk-accordion-item #accordionItem=\"cdkAccordionItem\" [expanded]=\"true\" class=\"example-accordion-item\">\n <div class=\"example-accordion-item-header\">\n <al-responsive-columns [stackAt]=\"0\" [gap]=\"'8px'\" [padding]=\"'8px 12px'\">\n <div left>\n <button (click)=\"toggleAccordion(accordionItem)\" tabindex=\"0\" class=\"toggle-button align-center\"\n [attr.aria-expanded]=\"accordionItem.expanded\"\n [matTooltip]=\"accordionItem.expanded ? 'Collapse' : 'Expand'\" matTooltipPosition=\"above\">\n <span class=\"material-icons-outlined\" *ngIf=\"!accordionItem.expanded\">\n expand_less\n </span>\n <span class=\"material-icons-outlined\" *ngIf=\"accordionItem.expanded\">\n expand_more\n </span>\n </button>\n <ng-content select=\"[header-left]\"></ng-content>\n </div>\n <div center>\n <al-responsive-columns [stackAt]=\"0\" [gap]=\"'8px'\" [padding]=\"'0'\" [leftWidth]=\"'auto'\"\n [rightWidth]=\"'32px'\" [ngClass]=\"{'input-focused': isInputFocused}\">\n <div left>\n <div class=\"edit-input-group\" [ngClass]=\"{'input-focused': isInputFocused}\">\n <div class=\"content_width\">\n <span *ngIf=\"!isTitleEditing\" class=\"title-text\" (click)=\"onTitleClick()\">\n {{ title || 'Click to edit' }}\n </span>\n <input *ngIf=\"isTitleEditing\" #titleInput type=\"text\" [(ngModel)]=\"editedTitle\"\n (focus)=\"onTitleFocus()\" (blur)=\"onTitleBlur()\" (keydown)=\"onTitleKeyPress($event)\"\n class=\"title-input onfocus-input-text\" />\n <ng-content select=\"[header-center-left]\"></ng-content>\n </div>\n <span class=\"material-symbols-outlined edit-icon\" matTooltip=\"Edit title\" matTooltipPosition=\"above\"\n (click)=\"onTitleClick()\">\n edit\n </span>\n </div>\n </div>\n <div center>\n <ng-content select=\"[header-center-center]\"></ng-content>\n <!-- Pop-out button and header buttons for large screens -->\n <ng-container *ngIf=\"isLargeScreen\">\n <al-button [labelText]=\"popOutButtonLabel\" [leftIcon]=\"popOutButtonIcon\" [buttonType]=\"'icon-label'\"\n [category]=\"'gradient'\" [size]=\"'header'\" [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\"\n [dataTestId]=\"'header-run-deep-extraction'\" [title]=\"popOutButtonLabel\"\n [matTooltip]=\"popOutButtonTooltip\" [matTooltipPosition]=\"popOutButtonTooltipPosition\">\n </al-button>\n <ng-container *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\">\n </ng-container>\n </ng-container>\n <!-- Menu trigger and slide-out panel for small screens only -->\n <!-- More Options button (3-dots) is only visible when isLargeScreen is false -->\n <div class=\"hover-menu-container\" *ngIf=\"!isLargeScreen\">\n <div class=\"menu-trigger\" (click)=\"toggleMenu()\">\n <al-button buttonType=\"icon-label\" iconOnly size=\"header\" category=\"grey\" leftIcon=\"more_vert\"\n aria-label=\"More options\" [dataTestId]=\"'resume-header-more-menu'\">\n </al-button>\n </div>\n <div class=\"slide-out-panel\" [class.visible]=\"isMenuVisible\">\n <div class=\"fit-panel\">\n <al-button [labelText]=\"popOutButtonLabel\" [leftIcon]=\"popOutButtonIcon\"\n [buttonType]=\"'icon-label'\" [category]=\"'gradient'\" [size]=\"'header'\" [iconOnly]=\"false\"\n (onClick)=\"popOutButtonClick.emit()\" [dataTestId]=\"'header-run-deep-extraction'\"\n [title]=\"popOutButtonLabel\" [matTooltip]=\"popOutButtonTooltip\"\n [matTooltipPosition]=\"popOutButtonTooltipPosition\">\n </al-button>\n <ng-container *ngTemplateOutlet=\"headerButtonsTemplate; context: { buttons: buttonConfig }\">\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n <div right>\n <ng-content select=\"[header-center-right]\"></ng-content>\n <ng-container *ngIf=\"!hiddenSection?.headerSectionHidden\">\n <ng-container *ngFor=\"let eyeConfig of configEyeToggle\">\n <ng-container\n *ngTemplateOutlet=\"eyeIconTemplate; context: { isHidden: false, accordionItem: accordionItem, configEyeToggle: eyeConfig }\">\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </al-responsive-columns>\n </div>\n <div right>\n <al-checkbox *ngIf=\"showHeaderCheckbox\" [checked]=\"headerCheckboxChecked\" [showLabels]=\"false\"\n (change)=\"onHeaderCheckboxChange($event)\">\n </al-checkbox>\n <ng-content select=\"[header-right]\"></ng-content>\n </div>\n </al-responsive-columns>\n </div>\n <div class=\"example-accordion-item-body\" *ngIf=\"accordionItem.expanded\">\n <!-- Pop-out Panel -->\n <div *ngIf=\"shouldShowPopOut\" class=\"pop-out-panel\">\n <div class=\"pop-out-content\">\n <al-button [labelText]=\"popOutButtonLabel\" [rightIcon]=\"popOutButtonIcon\" [buttonType]=\"'icon-label'\"\n [category]=\"'gradient'\" [size]=\"'xs'\" [iconOnly]=\"false\" (onClick)=\"popOutButtonClick.emit()\"\n [dataTestId]=\"'pop-out-run-deep-extraction'\" [title]=\"popOutButtonLabel\">\n </al-button>\n <p class=\"pop-out-message\" [innerHTML]=\"sanitizedMessage\"></p>\n <button type=\"button\" class=\"pop-out-close\" (click)=\"dismissPopOut()\" aria-label=\"Close pop-out panel\">\n <span class=\"material-icons-outlined\">close</span>\n </button>\n </div>\n </div>\n <al-responsive-columns [stackAt]=\"0\" [gap]=\"'8px'\" [padding]=\"'8px 12px'\">\n <div left>\n <ng-content select=\"[body-left]\"></ng-content>\n </div>\n <div center>\n <ng-content select=\"[body-center]\"></ng-content>\n </div>\n <div right>\n <ng-content select=\"[body-right]\"></ng-content>\n </div>\n </al-responsive-columns>\n </div>\n </cdk-accordion-item>\n </cdk-accordion>\n</al-general-container>\n\n<ng-template #headerButtonsTemplate let-buttons=\"buttons\" let-handleClick=\"handleClick\">\n <ng-container *ngFor=\"let btn of buttonConfig\">\n <al-button *ngIf=\"!btn.hidden && (!btn.displayCondition || btn.displayCondition())\" [category]=\"btn.category\"\n [buttonType]=\"btn.buttonType\" [labelText]=\"btn.label\" [leftIcon]=\"btn.leftIcon\" [rightIcon]=\"btn.rightIcon\"\n [state]=\"btn.state\" [size]=\"btn.size\" [outlined]=\"btn.outlined\" [iconOnly]=\"btn.iconOnly\"\n [dropdownOptions]=\"btn.buttonType === 'dropdown' ? btn.dropdownOptions : null\"\n (optionSelect)=\"onDropdownSelect(btn, $event)\" (onClick)=\"onButtonClick(btn)\" [attr.alt]=\"btn.alt\"\n [dataTestId]=\"btn.testId\" [matTooltip]=\"btn.tooltipText\" [matTooltipPosition]=\"btn.tooltipPosition || 'above'\">\n </al-button>\n </ng-container>\n</ng-template>\n\n<ng-template #eyeIconTemplate let-isHidden=\"isHidden\" let-accordionItem=\"accordionItem\"\n let-configEyeToggle=\"configEyeToggle\">\n <div *ngIf=\"configEyeToggle\" class=\"mat-checkbox-margin align-center\"\n [attr.data-test-id]=\"isHidden ? 'section-show-eye-div' : 'section-hide-eye-div'\">\n <span class=\"material-symbols-outlined delete-multiple mat-fab.mat-accent\"\n [matTooltip]=\"configEyeToggle.tooltips[isHidden ? 'collapse' : 'expand']\"\n [matTooltipPosition]=\"configEyeToggle.tooltips.position\"\n [attr.aria-label]=\"configEyeToggle.ariaLabels[isHidden ? 'collapsed' : 'expanded']\"\n (click)=\"showHideToggleSection.emit({ isHidden: isHidden, accordionItem: accordionItem, config: configEyeToggle })\"\n [attr.data-test-id]=\"isHidden ? 'section-show-eye-icon' : 'section-hide-eye-icon'\">\n {{ isHidden ? 'visibility' : 'visibility_off' }}\n </span>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NewResumeHeaderComponent } from './newresumeheader.component';\n\n@NgModule({\n imports: [CommonModule, NewResumeHeaderComponent],\n exports: [NewResumeHeaderComponent],\n})\nexport class NewResumeHeaderModule { }\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, HostBinding, OnInit, OnDestroy } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n// Define a type for the possible status values for better type safety.\nexport type LoaderStatus = 'analyzing' | 'gathering' | 'processing' | 'applying' | 'done';\n\n@Component({\n selector: 'al-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n imports: [CommonModule, MatIconModule],\n standalone: true,\n})\nexport class LoaderComponent implements OnInit, OnDestroy {\n /**\n * Optional data-testid for QA/testing. If not provided, will auto-generate with 'loader_' prefix.\n */\n @Input() dataTestId?: string;\n public effectiveDataTestId!: string;\n\n private genLoaderId(): string {\n return 'loader_' + Math.random().toString(36).slice(2, 10);\n }\n\n \n @Input() status: LoaderStatus = 'analyzing';\n\n /**\n * Optional custom text to display instead of the default status text.\n */\n @Input() customText?: string;\n\n /**\n * Whether to show the text below the loader icon.\n * @default true\n */\n @Input() showText = true;\n\n /**\n * Size of the loader component.\n * @default 'medium'\n */\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n\n /**\n * Whether to automatically loop through all statuses.\n * @default false\n */\n @Input() autoLoop: boolean = false;\n\n /**\n * Duration in milliseconds for each status when auto-looping.\n * @default 3000\n */\n @Input() loopDuration: number = 3000;\n\n /**\n * Custom text array for each status. If provided, overrides default status text.\n * Array should have 5 elements corresponding to: analyzing, gathering, processing, applying, done\n */\n @Input() customTexts?: string[];\n\n /**\n * Whether to show completion state and stop looping when reaching 'done' status.\n * @default false\n */\n @Input() completeOnDone: boolean = false;\n\n // Private properties for looping functionality\n private loopInterval?: number;\n private currentLoopIndex = 0;\n private readonly statusOrder: LoaderStatus[] = ['analyzing', 'gathering', 'processing', 'applying', 'done'];\n\n /**\n * This @HostBinding adds a class to the component's host element (<al-loader>)\n * that matches the current status. For example, if status is 'processing',\n * it adds `class=\"status-processing\"`. This is what our CSS uses to show the right icon.\n */\n @HostBinding('class')\n get statusClass() {\n const classes = [`status-${this.status}`, `size-${this.size}`];\n if (this.autoLoop) {\n classes.push('auto-loop');\n }\n return classes.join(' ');\n }\n\n /**\n * Get the display text for the current status\n */\n get displayText(): string {\n if (this.customText) {\n return this.customText;\n }\n \n // Use custom texts array if provided\n if (this.customTexts && this.customTexts.length >= 5) {\n const statusIndex = this.statusOrder.indexOf(this.status);\n if (statusIndex >= 0) {\n return this.customTexts[statusIndex];\n }\n }\n \n switch (this.status) {\n case 'analyzing':\n return 'Analyzing...';\n case 'gathering':\n return 'Gathering...';\n case 'processing':\n return 'Processing...';\n case 'applying':\n return 'Applying...';\n case 'done':\n return 'Done!';\n default:\n return '';\n }\n }\n\n constructor() { }\n\n ngOnInit() {\n // Generate or use provided dataTestId\n this.updateEffectiveDataTestId();\n if (this.autoLoop) {\n this.startLoop();\n }\n }\n\n ngOnChanges() {\n this.updateEffectiveDataTestId();\n }\n\n private updateEffectiveDataTestId() {\n this.effectiveDataTestId = this.dataTestId && this.dataTestId.trim() ? this.dataTestId : this.genLoaderId();\n }\n\n ngOnDestroy() {\n this.stopLoop();\n }\n\n /**\n * Start the auto-loop functionality\n */\n startLoop() {\n if (this.loopInterval) {\n this.stopLoop();\n }\n \n // Set initial status\n this.status = this.statusOrder[this.currentLoopIndex];\n \n this.loopInterval = window.setInterval(() => {\n this.currentLoopIndex = (this.currentLoopIndex + 1) % this.statusOrder.length;\n this.status = this.statusOrder[this.currentLoopIndex];\n \n // If completeOnDone is true and we reach 'done', stop looping\n if (this.completeOnDone && this.status === 'done') {\n this.stopLoop();\n }\n }, this.loopDuration);\n }\n\n /**\n * Stop the auto-loop functionality\n */\n stopLoop() {\n if (this.loopInterval) {\n clearInterval(this.loopInterval);\n this.loopInterval = undefined;\n }\n }\n\n /**\n * Manually trigger completion (sets status to 'done' and stops loop)\n */\n triggerCompletion() {\n this.stopLoop();\n this.status = 'done';\n }\n\n /**\n * Reset the loader to the beginning\n */\n reset() {\n this.stopLoop();\n this.currentLoopIndex = 0;\n this.status = this.statusOrder[0];\n if (this.autoLoop) {\n this.startLoop();\n }\n }\n}\n","<div class=\"loader-container\" [attr.data-testid]=\"effectiveDataTestId\">\n <!-- Brain Icon -->\n <mat-icon class=\"loader-icon font-icon icon-brain\" fontSet=\"material-icons\">psychology</mat-icon>\n <!-- Cog Icon -->\n <mat-icon class=\"loader-icon font-icon icon-cog\" fontSet=\"material-icons\">sync</mat-icon>\n <!-- Document Icon -->\n <mat-icon class=\"loader-icon font-icon icon-document\" fontSet=\"material-icons\">article</mat-icon>\n <!-- Wand Icon -->\n <mat-icon class=\"loader-icon font-icon icon-wand\" fontSet=\"material-icons\">auto_awesome</mat-icon>\n <!-- Tick Icon -->\n <mat-icon class=\"loader-icon font-icon icon-tick\" fontSet=\"material-icons\">task_alt</mat-icon>\n</div>\n<div class=\"text-container\" *ngIf=\"showText\">\n <span class=\"loader-text\">{{ displayText }}</span>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoaderComponent } from './loader.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, LoaderComponent],\n exports: [LoaderComponent],\n})\nexport class LoaderModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // register the CSS class alias so <mat-icon> knows about it…\n this.iconRegistry.registerFontClassAlias(\n 'material-symbols-outlined',\n 'material-symbols-outlined'\n );\n }\n}\n","\nimport { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'lib-field-placeholder',\n standalone: true,\n imports: [CommonModule, MatTooltipModule, MatIconModule],\n templateUrl: './field-placeholder.component.html',\n styleUrls: ['./field-placeholder.component.scss'],\n})\nexport class FieldPlaceholderComponent {\n @Input() value: string | null | undefined = '';\n @Input() placeholder: string = '';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n @Input() testId: string = '';\n /** Optional CSS class(es) applied when showing the value text */\n @Input() valueClass: string | string[] | Set<string> | { [klass: string]: any } = '';\n /** Optional CSS class(es) applied when showing the placeholder text */\n @Input() placeholderClass: string | string[] | Set<string> | { [klass: string]: any } = '';\n /**\n * The image path or icon to display in the field row (left column).\n */\n @Input() icon: string = '';\n /**\n * The alt text for the icon image (for accessibility).\n */\n @Input() iconAlt: string = '';\n /**\n * The font set for Material icons (e.g., 'material-icons', 'material-icons-outlined').\n */\n @Input() iconFont: string = 'material-icons';\n /**\n * When true, applies the 'field-row-compact' class for 28px height.\n * Only applies when explicitly set to true from a parent component.\n */\n @Input() compact?: boolean;\n /**\n * When true, applies the 'field-row-padded' class for 8px top and bottom padding.\n * Only applies when explicitly set to true from a parent component.\n */\n @Input() padded?: boolean;\n\n isMaterialIcon(icon: string): boolean {\n return !!icon && !icon.includes('/') && !icon.includes('.');\n }\n}\n","<div class=\"field-row\" [class.field-row-compact]=\"compact === true\" [class.field-row-padded]=\"padded === true\">\n <ng-container *ngIf=\"icon\">\n <span class=\"field-icon\">\n <ng-container *ngIf=\"isMaterialIcon(icon); else imageIcon\">\n <mat-icon [fontSet]=\"iconFont\">{{ icon }}</mat-icon>\n </ng-container>\n <ng-template #imageIcon>\n <img [src]=\"icon\" [alt]=\"iconAlt || 'icon'\" />\n </ng-template>\n </span>\n </ng-container>\n <span [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\"\n [ngClass]=\"value ? ['value-text', valueClass] : ['placeholder-text', placeholderClass]\"\n [attr.data-test-id]=\"testId\">\n <span [innerHTML]=\"value ? value : placeholder\"></span>\n </span>\n</div>","// Wrapper for Angular Material mat-checkbox (template for candidate section)\nimport { Component, Input } from '@angular/core';\n\n\n@Component({\n selector: 'al-candidate-section',\n templateUrl: './candidate-section.component.html',\n styleUrls: ['./candidate-section.component.scss'],\n\n})\nexport class CandidateSectionComponent {\n @Input() useCustomHeader: boolean = false;\n @Input() candidateDetails: any;\n @Input() getFieldNotHidden?: (field: string) => boolean;\n @Input() getForceShowAllFields?: () => boolean;\n @Input() resumeService?: any;\n @Input() fieldVisibilityKeys?: Record<string, string | string[]>;\n\n shouldShow(...keys: string[]): boolean {\n if (keys.length === 0) {\n // If no specific keys are provided, default to visible unless force-show is explicitly false\n return this.getForceShowAllFields?.() ?? true;\n }\n if (this.getForceShowAllFields?.()) return true;\n if (!this.getFieldNotHidden) return true; // default visible if no checker\n return keys.some(k => this.getFieldNotHidden!(k));\n }\n\n private resolveKeys(fieldId: string): string[] {\n const configured = this.fieldVisibilityKeys?.[fieldId];\n if (!configured) return [];\n return Array.isArray(configured) ? configured : [configured];\n }\n\n shouldShowFor(fieldId: string, fallbackKeys: string[]): boolean {\n const externalKeys = this.resolveKeys(fieldId);\n const effectiveKeys = externalKeys.length ? externalKeys : fallbackKeys;\n return this.shouldShow(...effectiveKeys);\n }\n\n getCurrentJob(): string {\n return this.candidateDetails?.currentJobTitle || '';\n }\n getCurrentEmployer(): string {\n return this.candidateDetails?.currentEmployer || '';\n }\n getTotalExpYears(): string {\n return this.candidateDetails?.totalExpYears || '';\n }\n\n hasValue(): boolean {\n return !!(this.candidateDetails?.firstName || this.candidateDetails?.lastName ||\n this.candidateDetails?.phone || this.candidateDetails?.email ||\n this.candidateDetails?.linkedin || this.candidateDetails?.gender);\n }\n\n hasAddressValue(): boolean {\n return !!(this.candidateDetails?.street || this.candidateDetails?.city ||\n this.candidateDetails?.region || this.candidateDetails?.regionCode ||\n this.candidateDetails?.country || this.candidateDetails?.postCode);\n }\n\n hasExperienceValue(): boolean {\n return !!(this.candidateDetails?.totalExpYears || this.candidateDetails?.currentJobTitle ||\n this.candidateDetails?.currentEmployer);\n }\n}\n","<div class=\"candidate-container\">\n <div class=\"columns-wrapper\">\n <div class=\"column\">\n <div class=\"container\" data-test-id=\"candidate-section-name-container\"\n [ngClass]=\"shouldShowFor('name', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"person\"\n iconFont=\"material-icons\"\n [value]=\"candidateDetails?.firstName && candidateDetails?.lastName ? candidateDetails?.firstName + ' ' + candidateDetails?.lastName : candidateDetails?.firstName || candidateDetails?.lastName\"\n [placeholder]=\"'Name'\" [tooltip]=\"candidateDetails?.firstName + ' ' + candidateDetails?.lastName\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-name'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-phone-container\"\n [ngClass]=\"shouldShowFor('phone', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"phone\"\n iconFont=\"material-icons\" [value]=\"candidateDetails?.phoneNumber\" [placeholder]=\"'Phone Number'\"\n [tooltip]=\"candidateDetails?.phoneNumber\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-phone'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-email-container\"\n [ngClass]=\"shouldShowFor('email', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"email\"\n iconFont=\"material-icons\" [value]=\"candidateDetails?.emailAddress\" [placeholder]=\"'Email Address'\"\n [tooltip]=\"candidateDetails?.emailAddress\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-email'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-linkedin-container\"\n [ngClass]=\"shouldShowFor('linkedin', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"link\"\n iconAlt=\"LinkedIn\" [value]=\"candidateDetails?.linkedin\" [placeholder]=\"'LinkedIn'\"\n [tooltip]=\"candidateDetails?.linkedin\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-linkedin'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-gender-container\"\n [ngClass]=\"shouldShowFor('gender', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"transgender\"\n iconFont=\"material-icons\" [value]=\"candidateDetails?.userAssignedGender\" [placeholder]=\"'Gender'\"\n [tooltip]=\"candidateDetails?.userAssignedGender\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-gender'\"></lib-field-placeholder></div>\n <div class=\"total-exp-parent container mobile-only\" data-test-id=\"candidate-section-total-exp-parent\"\n [ngClass]=\"shouldShowFor('experience', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"schedule\"\n iconFont=\"material-icons\"\n [value]=\"getTotalExpYears() ? 'Total Exp - <span class=\\'total-exp-value\\'>' + getTotalExpYears() + '</span> yrs' : ''\"\n [placeholder]=\"'Total Exp'\"\n [tooltip]=\"getTotalExpYears() ? 'Total Exp - ' + getTotalExpYears() + ' yrs' : 'Total Exp'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-total-exp-value'\"></lib-field-placeholder></div>\n </div>\n <div class=\"column\">\n <div class=\"container\" data-test-id=\"candidate-section-address-container\"\n [ngClass]=\"shouldShowFor('address', []) ? '' : 'not-in-template'\">\n <div [ngClass]=\"shouldShowFor('addressStreet', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"location_on\" iconFont=\"material-icons\" [value]=\"candidateDetails?.street\" [placeholder]=\"'Street'\"\n [tooltip]=\"candidateDetails?.street\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-street'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressCity', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.city\" [placeholder]=\"'City'\"\n [tooltip]=\"candidateDetails?.city\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-city'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressRegion', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.region\" [placeholder]=\"'Region'\"\n [tooltip]=\"candidateDetails?.region\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-region'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressRegionCode', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.regionCode\"\n [placeholder]=\"'Region Code'\" [tooltip]=\"candidateDetails?.regionCode\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-region-code'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressCountry', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.country\" [placeholder]=\"'Country'\"\n [tooltip]=\"candidateDetails?.country\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-country'\"></lib-field-placeholder></div>\n <div [ngClass]=\"shouldShowFor('addressPostCode', []) ? '' : 'not-in-template'\"><lib-field-placeholder\n icon=\"linkedin\" iconFont=\"material-icons\" [value]=\"candidateDetails?.postCode\" [placeholder]=\"'Post Code'\"\n [tooltip]=\"candidateDetails?.postCode\" tooltipPosition=\"right\"\n [testId]=\"'candidate-section-address-post-code'\"></lib-field-placeholder></div>\n </div>\n </div>\n </div>\n\n <div class=\"column experience-column\">\n <div class=\"total-exp-parent container \" data-test-id=\"candidate-section-total-exp-parent\"\n [ngClass]=\"shouldShowFor('experience', []) ? '' : 'not-in-template'\"><lib-field-placeholder icon=\"schedule\"\n iconFont=\"material-icons\"\n [value]=\"getTotalExpYears() ? 'Total Exp - <span class=\\'total-exp-value\\'>' + getTotalExpYears() + '</span> yrs' : ''\"\n [placeholder]=\"'Total Exp'\"\n [tooltip]=\"getTotalExpYears() ? 'Total Exp - ' + getTotalExpYears() + ' yrs' : 'Total Exp'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-total-exp-value'\"></lib-field-placeholder></div>\n <div class=\"container\" data-test-id=\"candidate-section-current-employer-container\">\n <div [ngClass]=\"shouldShowFor('currentJob', []) || shouldShowFor('currentEmployer', []) ? '' : 'not-in-template'\">\n <lib-field-placeholder icon=\"work\" iconFont=\"material-icons\"\n [value]=\"(getCurrentJob() || getCurrentEmployer()) ? 'Most Recently : <span class=\\'total-exp-value\\'>' + getCurrentJob() + '</span>' + (getCurrentEmployer() ? ' at <span class=\\'total-exp-value\\'>' + getCurrentEmployer() + '</span>' : '') : ''\"\n [placeholder]=\"'Current Job'\"\n [tooltip]=\"(getCurrentJob() || getCurrentEmployer()) ? 'Most Recently : ' + getCurrentJob() + (getCurrentEmployer() ? ' at ' + getCurrentEmployer() : '') : 'Current Job'\"\n tooltipPosition=\"right\" [testId]=\"'candidate-section-current-job'\"></lib-field-placeholder>\n </div>\n </div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CandidateSectionComponent } from './candidate-section.component';\nimport { FieldPlaceholderComponent } from '../field-placeholder/field-placeholder.component';\n\n@NgModule({\n declarations: [CandidateSectionComponent],\n imports: [CommonModule, FieldPlaceholderComponent],\n exports: [CandidateSectionComponent]\n})\nexport class CandidateSectionModule { }\n","// Wrapper for Angular Material mat-radio-button\nimport { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatRadioModule } from '@angular/material/radio';\n\n@Component({\n selector: 'al-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioComponent),\n multi: true\n }\n ]\n})\nexport class RadioComponent implements ControlValueAccessor {\n @Input() value: any;\n @Input() name: string = '';\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelPosition: 'before' | 'after' = 'after';\n @Input() required: boolean = false;\n @Input() labelText: string = '';\n @Input() helperText: string = '';\n @Input() showLabels: boolean = true;\n @Input() showHelperIcon: boolean = false;\n @Input() helperIconTooltip: string = '';\n @Input() dataTestId: string = \"\";\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<any> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() helperIconClick: EventEmitter<void> = new EventEmitter();\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n writeValue(value: any): void {\n this.checked = value === this.value;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = true;\n this.onChange(this.value);\n this.change.emit(this.value);\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n onHelperIconClick(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.helperIconClick.emit();\n }\n\n getColorClass(): string {\n if (this.color === 'green') {\n return 'mat-green';\n } else if (this.color === 'error') {\n return 'mat-error';\n }\n return '';\n }\n}\n","<mat-radio-button [value]=\"value\" [name]=\"name\" [checked]=\"checked\" [disabled]=\"disabled\" [color]=\"color\"\n [labelPosition]=\"labelPosition\" [required]=\"required\" [attr.data-testid]=\"dataTestId\" [ngClass]=\"getColorClass()\"\n [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!tooltip\"\n (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\">\n <div class=\"radio-label-wrapper\" *ngIf=\"showLabels\">\n <div class=\"radio-label-main-row\" *ngIf=\"labelText\">\n <div class=\"radio-label-main\">\n {{ labelText }}\n </div>\n <button *ngIf=\"showHelperIcon\" type=\"button\" class=\"radio-helper-icon\"\n [matTooltip]=\"helperIconTooltip || helperText\" [matTooltipPosition]=\"tooltipPosition\" [disabled]=\"disabled\"\n (click)=\"onHelperIconClick($event)\">\n ?\n </button>\n </div>\n\n <div *ngIf=\"helperText\" class=\"radio-label-helper\">\n {{ helperText }}\n </div>\n </div>\n\n <ng-content></ng-content>\n</mat-radio-button>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { RadioComponent } from './radio.component';\n\n@NgModule({\n declarations: [RadioComponent],\n imports: [CommonModule, MatRadioModule, MatTooltipModule],\n exports: [RadioComponent]\n})\nexport class RadioModule { }\n","import {\n Component,\n Input,\n Output,\n EventEmitter\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n MatButtonToggleModule\n}\n\n from '@angular/material/button-toggle';\n\nimport {\n MatIconModule\n}\n\n from '@angular/material/icon';\n\nimport {\n FormsModule\n}\n\n from '@angular/forms';\n\nexport interface ToggleButton {\n id: string;\n label?: string;\n icon?: string;\n disabled?: boolean;\n dataTestId?: string;\n}\n\n@Component({\n selector: 'al-toggle-buttons',\n templateUrl: './toggle-buttons.component.html',\n styleUrls: ['./toggle-buttons.component.scss'],\n standalone: true,\n imports: [CommonModule, MatButtonToggleModule, MatIconModule, FormsModule]\n}\n\n) export class ToggleButtonsComponent {\n @Input() buttons: ToggleButton[] = [];\n @Input() selectedId: string = '';\n @Input() disabled: boolean = false;\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() type: 'default' | 'text-only' | 'icon-only' = 'default';\n @Input() multiple: boolean = false;\n @Input() vertical: boolean = false;\n @Input() dataTestId: string = '';\n\n @Output() selectionChange: EventEmitter<string> = new EventEmitter<string>();\n @Output() buttonClick: EventEmitter<ToggleButton> = new EventEmitter<ToggleButton>();\n\n onSelectionChange(value: string): void {\n this.selectedId = value;\n this.selectionChange.emit(value);\n\n const selectedButton = this.buttons.find(btn => btn.id === value);\n\n if (selectedButton) {\n this.buttonClick.emit(selectedButton);\n }\n }\n\n getSelectedValue(): string {\n return this.selectedId;\n }\n\n getSizeClass(): string {\n return 'al-toggle-buttons-size-' + this.size;\n }\n\n computeGap(button: ToggleButton): number {\n const hasLabel = ! !(button.label && button.label.trim());\n const hasIcon = ! !(button.icon && button.icon.trim());\n\n // 0 gap for icon-only buttons\n if (this.type === 'icon-only' || (!hasLabel && hasIcon)) {\n return 0;\n }\n\n // 4px gap for default type (icon + text)\n if (this.type === 'default' && hasIcon && hasLabel) {\n return 4;\n }\n\n // 8px gap for text-only buttons\n return 8;\n }\n}\n","<mat-button-toggle-group [value]=\"getSelectedValue()\" [disabled]=\"disabled\" [multiple]=\"multiple\" [vertical]=\"vertical\"\n (change)=\"onSelectionChange($event.value)\" [ngClass]=\"[getSizeClass()]\">\n\n <mat-button-toggle *ngFor=\"let button of buttons\" [value]=\"button.id\" [disabled]=\"button.disabled\"\n [attr.aria-label]=\"button.label\" [style.display]=\"'inline-flex'\" [style.align-items]=\"'center'\"\n [style.gap.px]=\"computeGap(button)\" [attr.data-testid]=\"button.dataTestId || dataTestId\">\n\n <!-- Icon (shown based on type) -->\n <mat-icon *ngIf=\"(type === 'default' || type === 'icon-only') && button.icon?.trim()\" class=\"button-icon\">{{\n button.icon }}</mat-icon>\n\n <!-- Label (shown based on type) -->\n <span *ngIf=\"(type === 'default' || type === 'text-only') && button.label?.trim()\" class=\"button-label\">{{\n button.label }}</span>\n </mat-button-toggle>\n\n</mat-button-toggle-group>\n","import { NgModule } from '@angular/core';\nimport { ToggleButtonsComponent } from './toggle-buttons.component';\n\n@NgModule({\n imports: [ToggleButtonsComponent],\n exports: [ToggleButtonsComponent]\n})\nexport class ToggleButtonsModule { }\n","// Wrapper for Angular Material mat-slide-toggle with custom icons\nimport { Component, Input, Output, EventEmitter, forwardRef, AfterViewInit, ElementRef, Renderer2, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'al-slide-toggle',\n templateUrl: './slide-toggle.component.html',\n styleUrls: ['./slide-toggle.component.scss'],\n standalone: true,\n imports: [CommonModule, MatSlideToggleModule, MatIconModule, MatTooltipModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SlideToggleComponent),\n multi: true\n }\n ]\n})\nexport class SlideToggleComponent implements ControlValueAccessor, AfterViewInit {\n @Input() checked: boolean = false;\n @Input() disabled: boolean = false;\n @Input() name: string = '';\n @Input() required: boolean = false;\n @Input() color: 'primary' | 'green' | 'error' = 'primary';\n @Input() labelText: string = '';\n @Input() helperText: string = '';\n @Input() showLabels: boolean = true;\n @Input() onIcon: string = 'dark_mode'; // Material Icon for ON state\n @Input() offIcon: string = 'light_mode'; // Material Icon for OFF state\n @Input() showIcons: boolean = true; // Toggle to show/hide custom icons\n @Input() size: 'small' | 'medium' | 'large' = 'medium'; // Size variant\n @Input() dataTestId: string = '';\n @Input() tooltip: string = '';\n @Input() tooltipPosition: 'right' | 'left' | 'above' | 'below' | 'before' | 'after' = 'right';\n\n @Output() change: EventEmitter<boolean> = new EventEmitter();\n @Output() focus: EventEmitter<FocusEvent> = new EventEmitter();\n @Output() blur: EventEmitter<FocusEvent> = new EventEmitter();\n\n @ViewChild('slideToggle', { read: ElementRef }) element: ElementRef | undefined;\n\n onChange = (_: any) => { };\n onTouched = () => { };\n\n constructor(private renderer: Renderer2) { }\n\n writeValue(value: any): void {\n this.checked = !!value;\n this.updateIcon();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleChange(event: any) {\n this.checked = event.checked;\n this.onChange(this.checked);\n this.change.emit(this.checked);\n this.updateIcon();\n }\n\n handleFocus(event: FocusEvent) {\n this.focus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onTouched();\n this.blur.emit(event);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.setIcon();\n }, 100);\n }\n\n setIcon() {\n if (this.element && this.showIcons) {\n try {\n // Try multiple selectors to find the handle\n let targetSpan: HTMLElement | null = this.element.nativeElement.querySelector('.mdc-switch__handle');\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mat-slide-toggle-thumb');\n }\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mdc-switch__thumb');\n }\n\n if (!targetSpan) {\n targetSpan = this.element.nativeElement.querySelector('.mdc-switch__icon');\n }\n\n if (targetSpan) {\n // Clear existing content\n while (targetSpan.firstChild) {\n targetSpan.firstChild.remove();\n }\n\n // Create new icon element\n const elem = this.renderer.createElement('span');\n const icon = this.checked ? this.onIcon : this.offIcon;\n elem.setAttribute('class', 'material-icons slide-toggle-custom-icon');\n elem.textContent = icon;\n targetSpan.appendChild(elem);\n }\n } catch (error) {\n console.error('Error updating Material icons:', error);\n }\n }\n }\n\n private updateIcon() {\n setTimeout(() => {\n this.setIcon();\n }, 200);\n }\n\n\n}\n","<div class=\"slide-toggle-container\" [matTooltip]=\"tooltip\" [matTooltipPosition]=\"tooltipPosition\">\n <mat-slide-toggle #slideToggle [checked]=\"checked\" [disabled]=\"disabled\" [name]=\"name\" [required]=\"required\"\n [color]=\"color\" (change)=\"handleChange($event)\" (focus)=\"handleFocus($event)\" (blur)=\"handleBlur($event)\"\n class=\"custom-slide-toggle\" [class.slide-toggle-small]=\"size === 'small'\"\n [class.slide-toggle-medium]=\"size === 'medium'\" [class.slide-toggle-large]=\"size === 'large'\"\n [attr.data-testid]=\"dataTestId\">\n <div *ngIf=\"showLabels\" class=\"slide-toggle-labels\">\n <div *ngIf=\"labelText\" class=\"slide-toggle-label-main\">\n {{ labelText }}\n </div>\n <div *ngIf=\"helperText\" class=\"slide-toggle-label-helper\">\n {{ helperText }}\n </div>\n </div>\n <ng-content></ng-content>\n </mat-slide-toggle>\n</div>\n","import { NgModule } from '@angular/core';\nimport { SlideToggleComponent } from './slide-toggle.component';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, SlideToggleComponent, MatTooltipModule],\n exports: [SlideToggleComponent]\n})\nexport class SlideToggleModule { }\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule, MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'al-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule],\n})\nexport class IconButtonComponent {\n /** Icon name (Material icon name) */\n @Input() icon!: string;\n\n /** Custom color (CSS color value) */\n @Input() customColor: string = '#a62121';\n\n /** Use outlined icon font */\n @Input() iconOutlined: boolean = false;\n\n /** Button size (xs, sm, base, l, xl, header) */\n @Input() size: 'xs' | 'sm' | 'base' | 'l' | 'xl' | 'header' = 'base';\n\n /** Button color (blue, green, grey, error, gradient, etc.) */\n @Input() color: string = 'blue';\n\n /** Disabled state */\n @Input() disabled: boolean = false;\n\n /** Optional custom data-testid for QA/testing */\n @Input() dataTestId?: string;\n public effectiveDataTestId!: string;\n\n /** Click event */\n @Output() onClick = new EventEmitter<Event>();\n\n constructor(private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) {\n this.iconRegistry.registerFontClassAlias('material-icons-outlined', 'material-icons-outlined');\n this.iconRegistry.registerFontClassAlias('material-icons', 'material-icons');\n }\n\n ngOnInit() {\n this.effectiveDataTestId = this.dataTestId && this.dataTestId.trim() ? this.dataTestId : this.genIconBtnId();\n }\n\n public genId(): string {\n return 'icon-btn_' + Math.random().toString(36).slice(2, 10);\n }\n\n private genIconBtnId(): string {\n return this.genId();\n }\n\n handleClick(event: Event) {\n if (!this.disabled) {\n this.onClick.emit(event);\n }\n }\n}\n","<button\n type=\"button\"\n class=\"icon-btn\"\n [ngClass]=\"[\n 'icon-btn',\n 'size-' + size,\n 'color-' + color,\n iconOutlined ? 'icon-outlined' : '',\n disabled ? 'icon-btn-disabled' : ''\n ]\"\n [ngStyle]=\"{ color: customColor }\"\n [disabled]=\"disabled\"\n (click)=\"handleClick($event)\"\n [attr.aria-label]=\"icon\"\n [attr.data-test-id]=\"effectiveDataTestId\"\n>\n <mat-icon\n [fontSet]=\"iconOutlined ? 'material-icons-outlined' : 'material-icons'\"\n class=\"icon-btn-icon\"\n >{{ icon }}</mat-icon>\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { InputComponent } from '../input/input.component';\nimport { ButtonComponent } from '../button/button.component';\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'al-ai-apply-bar',\n standalone: true,\n imports: [CommonModule, InputComponent, ButtonComponent, IconButtonComponent],\n templateUrl: './ai-apply-bar.component.html',\n styleUrls: ['./ai-apply-bar.component.scss']\n})\nexport class AiApplyBarComponent {\n /** Optional data-test-id for QA/testing */\n @Input() dataTestId?: string;\n /**\n * If true, show chevron icon on Apply AI button (second variation).\n */\n @Input() showChevron: boolean = false;\n /**\n * If true, show a separate chevron button after the Apply AI button.\n */\n @Input() showChevronButton = true;\n\n\n // Input field (dropdown) API\n @Input() placeholder: string = 'Typing';\n @Input() options: string[] = ['Typing', 'Gathering', 'Processing'];\n @Input() value: string = '';\n @Input() disabled: boolean = false;\n\n // Apply button\n @Input() applyLabel: string = 'Apply AI';\n @Input() applyDisabled: boolean = false;\n\n // Close button\n @Input() showClose: boolean = true;\n\n // Helper text (second row)\n @Input() showHelperText: boolean = false;\n @Input() helperText: string = 'Action will be applied globally to all sections';\n\n // Outputs\n @Output() valueChange = new EventEmitter<string>();\n @Output() applyClick = new EventEmitter<void>();\n @Output() closeClick = new EventEmitter<void>();\n /** Emitted when the chevron icon button is clicked */\n @Output() chevronClick = new EventEmitter<void>();\n\n onValueChange(v: string) {\n this.value = v;\n this.valueChange.emit(v);\n }\n}\n","<div class=\"ai-apply-wrap\" [attr.data-test-id]=\"dataTestId\">\n <div class=\"ai-apply-rail\">\n <div class=\"ai-apply-row\">\n <div class=\"ai-apply-input\">\n <al-input\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n [type]=\"'text'\"\n [disabled]=\"disabled\"\n [helperText]=\"false\"\n [leftIcon]=\"''\"\n [rightIcon]=\"'expand_more'\"\n [hasDropDown]=\"true\"\n [options]=\"options\"\n [size]=\"'base'\"\n [types]=\"'primary'\"\n (change)=\"onValueChange($event)\">\n </al-input>\n </div>\n\n <div class=\"ai-apply-button\">\n <al-button\n [label]=\"applyLabel\"\n [buttonType]=\"'icon-label'\"\n [category]=\"'gradient'\"\n [size]=\"'base'\"\n [state]=\"applyDisabled ? 'disabled' : 'default'\"\n (onClick)=\"applyClick.emit()\">\n </al-button>\n <al-icon-button\n *ngIf=\"showChevronButton\"\n icon=\"chevron_right\"\n [iconOutlined]=\"false\"\n [color]=\"'#ffffff'\"\n [category]=\"'gradient'\"\n [size]=\"'xl'\"\n [disabled]=\"applyDisabled\"\n (onClick)=\"chevronClick.emit()\"\n [dataTestId]=\"'icon-btn_Uwofs4q_3kWU'\"\n ></al-icon-button>\n </div>\n </div>\n\n <div class=\"ai-apply-helper\" *ngIf=\"showHelperText\">\n {{ helperText }}\n </div>\n </div>\n <div class=\"ai-apply-close\" *ngIf=\"showClose\">\n <al-button\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"'close'\"\n [category]=\"'grey'\"\n [size]=\"'base'\"\n (onClick)=\"closeClick.emit()\">\n </al-button>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { AfterContentInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'al-action-bar',\n standalone: true,\n imports: [CommonModule, ButtonComponent],\n templateUrl: './action-bar-wrapper.component.html',\n styleUrls: ['./action-bar-wrapper.component.scss']\n})\nexport class ActionBarWrapperComponent implements AfterContentInit {\n @ContentChildren(ButtonComponent) actionButtons!: QueryList<ButtonComponent>;\n\n @Input() showClose: boolean = true;\n // Visibility flag: if false, wrapper does not render\n @Input() visible: boolean = true;\n // Wrapper mode: legacy icon buttons rail or AI Apply variant\n @Input() mode: 'buttons' | 'ai-apply' = 'buttons';\n\n // AI Apply variant inputs\n @Input() showHelperText: boolean = false;\n @Input() helperText: string = 'Action will be applied globally to all sections';\n @Input() showChevronOnApply: boolean = false;\n @Input() showExtraButton: boolean = false;\n @Input() extraButtonIcon: string = 'chevron_right';\n @Input() extraButtonAriaLabel: string = 'More actions';\n // Sticky button that remains when the bar is hidden (e.g., after Apply)\n @Input() showStickyButton: boolean = true;\n @Input() stickyButtonIcon: string = 'chevron_right';\n @Input() stickyButtonAriaLabel: string = 'Open AI Apply Bar';\n @Output() closeClick = new EventEmitter<void>();\n @Output() applyClick = new EventEmitter<void>();\n @Output() extraButtonClick = new EventEmitter<void>();\n @Output() stickyButtonClick = new EventEmitter<void>();\n\n /** If true, clicking Apply hides the bar (sets visible = false) after emitting applyClick */\n @Input() autoHideOnApply: boolean = false;\n\n buttons: ButtonComponent[] = [];\n\n ngAfterContentInit(): void {\n this.buttons = this.actionButtons?.toArray() ?? [];\n this.applyDefaultsToButtons();\n this.actionButtons.changes.subscribe(() => {\n this.buttons = this.actionButtons.toArray();\n this.applyDefaultsToButtons();\n });\n }\n\n /**\n * Enforce wrapper defaults on projected buttons:\n * - size = 'base'\n * - outline style for non-gradient categories\n * - preserve any button explicitly set to gradient (e.g., AI)\n */\n private applyDefaultsToButtons(): void {\n this.buttons.forEach((btn) => {\n try {\n // Ensure base size\n if (btn.size !== 'base') {\n btn.size = 'base';\n }\n\n // Respect gradient/colored buttons (e.g., AI)\n if (btn['category'] === 'gradient') {\n // Do not force outline on gradient\n return;\n }\n\n // Default to colour-outline variant and outlined icons\n if (!btn['category'] || btn['category'] === 'grey' || btn['category'] === 'grey-no-outline') {\n btn['category'] = 'grey-colour-outline' as any;\n }\n btn.iconOutlined = true;\n } catch {\n // no-op; defensive to avoid breaking if API changes\n }\n });\n }\n\n onApply(): void {\n this.applyClick.emit();\n if (this.autoHideOnApply) {\n this.visible = false;\n }\n }\n}\n","<div class=\"al-action-bar-wrap\">\n <!-- Visible bar -->\n <ng-container *ngIf=\"visible; else stickyTpl\">\n <div class=\"al-action-bar\" [ngClass]=\"{ 'mode-ai': mode === 'ai-apply' }\">\n <div class=\"al-action-bar__close\" *ngIf=\"showClose\">\n <al-button\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"'close'\"\n [category]=\"'grey'\"\n [size]=\"'base'\"\n (onClick)=\"closeClick.emit()\"\n ></al-button>\n </div>\n\n <!-- Buttons rail mode -->\n <ng-container *ngIf=\"mode === 'buttons'; else aiApplyTpl\">\n <div class=\"al-action-bar__rail\">\n <div class=\"al-action\" *ngFor=\"let b of buttons; let i = index\">\n <div class=\"al-action__label\" *ngIf=\"b.label && b.label.trim()\">{{ b.label }}</div>\n <al-button\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"b.leftIcon || ''\"\n [outlined]=\"b.outlined\"\n [category]=\"b.category || 'grey-no-outline'\"\n [size]=\"b.size || 'base'\"\n (onClick)=\"b.onClick.emit()\"\n (onHover)=\"b.onHover.emit()\"\n (onMouseLeave)=\"b.onMouseLeave.emit()\"\n ></al-button>\n </div>\n </div>\n </ng-container>\n\n <!-- AI Apply variant -->\n <ng-template #aiApplyTpl>\n <div class=\"al-action-bar__rail\">\n <div class=\"al-ai-row\">\n <div class=\"al-ai-left\">\n <ng-content></ng-content>\n </div>\n <div class=\"al-ai-actions\">\n <al-button\n *ngIf=\"showExtraButton\"\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"extraButtonIcon\"\n [category]=\"'grey-colour-outline'\"\n [size]=\"'base'\"\n [aria-label]=\"extraButtonAriaLabel\"\n (onClick)=\"extraButtonClick.emit()\"\n ></al-button>\n <al-button\n [label]=\"'Apply AI'\"\n [category]=\"'gradient'\"\n [size]=\"'base'\"\n [rightIcon]=\"showChevronOnApply ? 'chevron_right' : ''\"\n (onClick)=\"onApply()\"\n ></al-button>\n \n </div>\n </div>\n <div class=\"al-ai-helper\" *ngIf=\"showHelperText\">{{ helperText }}</div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n\n <!-- Sticky opener when hidden -->\n <ng-template #stickyTpl>\n <div class=\"al-action-bar__sticky\" *ngIf=\"showStickyButton\">\n <al-button\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"stickyButtonIcon\"\n [category]=\"'grey'\"\n [size]=\"'base'\"\n [aria-label]=\"stickyButtonAriaLabel\"\n (onClick)=\"stickyButtonClick.emit()\"\n ></al-button>\n <al-button\n *ngIf=\"showClose\"\n [iconOnly]=\"true\"\n [buttonType]=\"'icon-circle'\"\n [leftIcon]=\"'close'\"\n [category]=\"'grey'\"\n [size]=\"'base'\"\n aria-label=\"Close\"\n (onClick)=\"closeClick.emit()\"\n ></al-button>\n </div>\n </ng-template>\n</div>\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n Component,\n HostBinding,\n Input\n}\n\n from '@angular/core';\n\n/**\n * Responsive layout container that can behave as a row (columns) or a column (rows)\n * with breakpoint-specific item counts.\n *\n * Breakpoints (px):\n * - mobile: 0 - 500\n * - mobile-sm: 500 - 767\n * - tablet: 767 - 1024\n * - desktop: 1024+\n */\n@Component({\n selector: 'app-flex-grid',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './responsive-layout.component.html',\n styleUrls: ['./responsive-layout.component.scss'],\n}\n\n) export class ResponsiveLayoutComponent {\n /** Optional data-testid for test selectors */\n @Input() dataTestId?: string;\n /** Layout mode: 'row' has bottom margin, 'column' has no bottom margin. Both use responsive column counts. */\n @Input() type: 'row' | 'column' = 'row';\n\n /** Gap between items (in px) */\n @Input() gap: number | string = 8;\n\n /** Optional bottom margin for row mode. Set to false to remove. */\n @Input() marginBottom: number | string | boolean = 16;\n\n // Per-breakpoint counts. Defines number of columns at each breakpoint.\n @Input() countMobile: number = 1;\n @Input() countMobileSm: number = 2;\n @Input() countTablet: number = 3;\n @Input() countDesktop: number = 4;\n\n // Aliases for convenience (e.g., mobRow=\"3\" as requested). They map to countMobile.\n @Input() set mobRow(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countMobile = Number(v);\n }\n }\n\n @Input() set mobCols(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countMobile = Number(v);\n }\n }\n\n /** Alias: rows sets a base count used for all breakpoints unless overridden */\n @Input() set rows(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n const n = Number(v);\n this.countMobile = n;\n this.countMobileSm = n;\n this.countTablet = n;\n this.countDesktop = n;\n }\n }\n\n /** Alias for tablet breakpoint */\n @Input() set tabRow(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countTablet = Number(v);\n }\n }\n\n /** Alias for desktop breakpoint */\n @Input() set desktop(v: number | string | null | undefined) {\n if (v !== undefined && v !== null && v !== '') {\n this.countDesktop = Number(v);\n }\n }\n\n // Expose CSS variables on host for SCSS to pick up.\n @HostBinding('style.--gap') get cssGap() {\n return typeof this.gap === 'string' ? this.gap : `$ {\n this.gap\n }\n\n px`;\n }\n\n @HostBinding('style.--count-mobile') get cssCountMobile() {\n return this.countMobile;\n }\n\n @HostBinding('style.--count-mobile-sm') get cssCountMobileSm() {\n return this.countMobileSm;\n }\n\n @HostBinding('style.--count-tablet') get cssCountTablet() {\n return this.countTablet;\n }\n\n @HostBinding('style.--count-desktop') get cssCountDesktop() {\n return this.countDesktop;\n }\n\n // Expose bottom margin as CSS var. If explicitly false => 0px\n @HostBinding('style.--mb') get cssMarginBottom() {\n const v = this.marginBottom;\n if (v === false || v === 0 || v === '0') return '0px';\n if (typeof v === 'string') return v; // allow '1rem', '12px'\n\n return `$ {\n v\n }\n\n px`;\n }\n\n @HostBinding('class.row') get isRow() {\n return this.type === 'row';\n }\n\n @HostBinding('class.col') get isCol() {\n return this.type === 'column';\n }\n\n @HostBinding('attr.data-testid') get dataTestIdAttr() {\n return this.dataTestId || null;\n }\n}\n","<ng-content></ng-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResponsiveLayoutComponent } from './responsive-layout.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResponsiveLayoutComponent],\n exports: [ResponsiveLayoutComponent],\n})\nexport class ResponsiveLayoutModule {}\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ElementRef,\n ViewChild,\n OnInit,\n AfterViewInit\n} from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'app-table',\n standalone: true,\n imports: [CommonModule, MatTooltipModule],\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.css']\n})\nexport class TableComponent implements OnInit, AfterViewInit {\n @Input() getEditorElement!: () => HTMLElement | undefined;\n @Input() saveHistoryMethod!: () => void;\n @Input() textChangeMethod!: () => void;\n\n\n\n showTableDropdown = false;\n\n ngOnInit(): void {\n\n }\n\n ngAfterViewInit(): void {\n\n }\n\n toggleTableDropdown(): void {\n this.showTableDropdown = !this.showTableDropdown;\n }\n\n addTable(event: MouseEvent): void {\n const editorElement = this.getEditorElement();\n if (!editorElement) {\n // Wait a bit and try again\n setTimeout(() => {\n const retryEditorElement = this.getEditorElement();\n if (retryEditorElement) {\n this.addTable(event);\n }\n }, 100);\n return;\n }\n\n const tableHTML = `\n <table style=\"border-collapse: collapse; width: 100%;\">\n <tbody>\n <tr height=34>\n <td></td>\n <td></td>\n </tr>\n <tr height=34>\n <td></td>\n <td></td>\n </tr>\n </tbody>\n </table>\n <br>\n `;\n\n // Focus the editor first\n editorElement.focus();\n\n // Execute the command in the context of the editor\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n // Ensure the range is within the editor\n if (editorElement.contains(range.startContainer)) {\n document.execCommand(\"insertHTML\", false, tableHTML);\n }\n } else {\n // If no selection, append to the end\n editorElement.innerHTML += tableHTML;\n }\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n\n // Close dropdown after creating table\n this.showTableDropdown = false;\n }\n\n deleteTable(event: MouseEvent): void {\n const editorElement = this.getEditorElement();\n if (editorElement) {\n const table = editorElement.querySelector(\"table\");\n\n if (table) {\n table.remove();\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n }\n }\n this.showTableDropdown = false;\n }\n\n addRowBelow(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = (cell as HTMLElement).parentNode as HTMLElement;\n const table = row.parentNode as HTMLElement;\n\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const newRow = row.cloneNode(true) as HTMLElement;\n Array.from(newRow.children).forEach(cell => (cell.textContent = \"\"));\n newRow.setAttribute(\"height\", \"34\");\n row.insertAdjacentElement(\"afterend\", newRow);\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n\n addRowAbove(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = (cell as HTMLElement).parentNode as HTMLElement;\n const table = row.parentNode as HTMLElement;\n\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n const newRow = row.cloneNode(true) as HTMLElement;\n Array.from(newRow.children).forEach(cell => (cell.textContent = \"\"));\n newRow.setAttribute(\"height\", \"34\");\n row.insertAdjacentElement(\"beforebegin\", newRow);\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n\n addColumnLeft(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = (cell as HTMLElement).closest(\"table\");\n\n if (table) {\n const rowIndex = Array.from((cell as HTMLElement).parentNode!.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row) => {\n const newCell = row.cells[rowIndex].cloneNode(false) as HTMLElement;\n newCell.textContent = \"\";\n row.cells[rowIndex].insertAdjacentElement(\"beforebegin\", newCell);\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n\n addColumnRight(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = (cell as HTMLElement).closest(\"table\");\n\n if (table) {\n const cellIndex = Array.from((cell as HTMLElement).parentNode!.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row) => {\n const newCell = row.cells[cellIndex].cloneNode(false) as HTMLElement;\n newCell.textContent = \"\";\n row.cells[cellIndex].insertAdjacentElement(\"afterend\", newCell);\n }\n\n );\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n\n deleteCurrentColumn(event: MouseEvent): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const table = (cell as HTMLElement).closest(\"table\");\n if (!table) return;\n const cellIndex = Array.from((cell as HTMLElement).parentNode!.children).indexOf(cell as HTMLElement);\n\n Array.from(table.rows).forEach((row) => {\n if (row.cells.length > cellIndex) {\n row.deleteCell(cellIndex);\n }\n }\n\n );\n\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n if (this.textChangeMethod) {\n this.textChangeMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n\n deleteCurrentRow(event: MouseEvent): void {\n event.preventDefault();\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let cell = range.startContainer;\n\n // Find the nearest cell element\n while (cell && cell.nodeName !== \"TD\" && cell.nodeName !== \"TH\") {\n cell = cell.parentNode as Node;\n }\n\n if (cell && (cell.nodeName === \"TD\" || cell.nodeName === \"TH\")) {\n const row = (cell as HTMLElement).parentNode as HTMLElement;\n const table = row.parentNode as HTMLElement;\n\n if (row.nodeName === \"TR\" && table.nodeName === \"TBODY\") {\n row.remove();\n if (this.saveHistoryMethod) {\n this.saveHistoryMethod();\n }\n this.showTableDropdown = false;\n }\n }\n }\n }\n}\n","<div class=\"table-controls\"><button class=\"format-button table-button\" (click)=\"toggleTableDropdown()\"\n title=\"Table Operations\" type=\"button\"><span class=\"material-icons\">table_chart</span></button>\n <div *ngIf=\"showTableDropdown\" class=\"table-dropdown\">\n <div class=\"table-row\"><button type=\"button\" class=\"table-btn\" (click)=\"addTable($event)\" title=\"Add table\"\n matTooltip=\"Add Table\" matTooltipPosition=\"above\"><span class=\"material-icons\">add</span></button><button\n type=\"button\" class=\"table-btn\" (click)=\"deleteTable($event)\" title=\"Delete table\" matTooltip=\"Delete Table\"\n matTooltipPosition=\"above\"><span class=\"material-icons\">delete</span></button><button type=\"button\"\n class=\"table-btn\" (click)=\"addColumnLeft($event)\" title=\"Column left\" matTooltip=\"Add Column Left\"\n matTooltipPosition=\"above\"><span class=\"material-icons\">add_circle_outline</span></button><button type=\"button\"\n class=\"table-btn\" (click)=\"addColumnRight($event)\" title=\"Column right\" matTooltip=\"Add Column Right\"\n matTooltipPosition=\"above\"><span class=\"material-icons\">add_circle</span></button></div>\n <div class=\"table-row\"><button type=\"button\" class=\"table-btn\" (click)=\"addRowAbove($event)\" title=\"Row top\"\n matTooltip=\"Add Row Above\" matTooltipPosition=\"above\"><span\n class=\"material-icons\">expand_less</span></button><button type=\"button\" class=\"table-btn\"\n (click)=\"addRowBelow($event)\" title=\"Row bottom\" matTooltip=\"Add Row Below\" matTooltipPosition=\"above\"><span\n class=\"material-icons\">expand_more</span></button><button type=\"button\" class=\"table-btn\"\n (click)=\"deleteCurrentRow($event)\" title=\"Delete row\" matTooltip=\"Delete Current Row\"\n matTooltipPosition=\"above\"><span class=\"material-icons\">remove_circle_outline</span></button><button\n type=\"button\" class=\"table-btn\" (click)=\"deleteCurrentColumn($event)\" title=\"Delete column\"\n matTooltip=\"Delete Current Column\" matTooltipPosition=\"above\"><span\n class=\"material-icons\">remove_circle</span></button></div>\n </div>\n</div>","\nexport default class BulletUtils {\n static sampleBullets = ['•', '●', '◎', '◍', '◌', '○', '◉', '▪'];\n static autoBullet(text: string) {\n var array = text.split('.');\n let final = \"<ul>\";\n const regexForStripHTML = /(<([^>]+)>)/ig;\n for (let i = 0; i < array.length; i++) {\n const stripContent = array[i].replace(regexForStripHTML, '');\n if (stripContent.trim().length) {\n final = final + \"<li>\" + stripContent + \"</li>\";\n }\n }\n return final + \"</ul>\";\n }\n\n static skillBullet(text: string) {\n text = text.replace(/<p[^>]*>/g, \"\");\n var array = text.split(',');\n let final = \"<ul>\"\n for (let i = 0; i < array.length; i++) {\n final = final + \"<li>\" + array[i] + \"</li>\";\n }\n return final + \"</ul>\";\n }\n\n static legacyOnPasteHandler(text: string) {\n let containsBullets = BulletUtils.sampleBullets.some(bullets => text.includes(bullets));\n let result = '';\n if (containsBullets) {\n const actualBullet = BulletUtils.sampleBullets.filter(bullets => text.includes(bullets));\n const charCodeOfBullet = Number(actualBullet[0].charCodeAt(0));\n const bulletTags = BulletUtils.getTagOfBullets(text, actualBullet[0]);\n const splittedText = text.split(bulletTags.beforeBulletTag + String.fromCharCode(charCodeOfBullet) + bulletTags.afterBullterTag);\n result = splittedText[0].length > 0 ? splittedText[0] : '';\n result = result + '<ul>';\n let bulletedText = '';\n for (let i = 1; i < splittedText.length; i++) {\n let splittedLine = splittedText[i].split('</p>');\n if (splittedLine[1] && splittedLine[1].length > 0)\n bulletedText = bulletedText + '<li>' + splittedLine[0].replace('<p>', '') + '</li>' + BulletUtils.otherBullets(splittedLine);\n else\n bulletedText = bulletedText + '<li>' + splittedLine[0].replace('<p>', '') + '</li>';\n }\n result = result + bulletedText + '</ul>';\n return result;\n }\n else\n return result = text;\n }\n\n\n static getFirstLineOnPaste(text: string, actualBullet: string[]) {\n return text.length > 0 && text.includes(actualBullet[0]) ?\n '<ul>' + '<li>' + text.replace(actualBullet[0], '') + '</li>' : '<p>' + text + '</p>';\n }\n\n static onPasteBulletHandler(text: string) {\n let result = '';\n let map = BulletUtils.extractExistedBullets(text);\n text = map.get('text');\n\n let containsBullets = BulletUtils.sampleBullets.some(bullets => text.includes(bullets));\n if (containsBullets) {\n let actualBullet = BulletUtils.sampleBullets.filter(bullets => text.includes(bullets));\n const parser = new DOMParser();\n const htmlDoc = parser.parseFromString(text, 'text/html');\n let bodyTag = htmlDoc.getElementsByTagName('body')[0].children;\n result = BulletUtils.getFirstLineOnPaste(bodyTag[0].innerHTML, actualBullet);\n let bulletedText = !result.includes('<ul>') ? '<ul>' : '';\n for (let i = 1; i < bodyTag.length; i++) {\n if (bodyTag[i].innerHTML.includes(actualBullet[0])) {\n if ((i < bodyTag.length - 1) && !bodyTag[i + 1].innerHTML.includes(actualBullet[0]) && bodyTag[i + 1].innerHTML.length > 5) {\n if (bodyTag[i].innerHTML === actualBullet[0]) {\n bulletedText = bulletedText + '<li>' + bodyTag[i + 1].innerHTML.replace(actualBullet[0], '') + '</li>';\n i = i + 1;\n }\n else if (bodyTag[i].innerHTML !== actualBullet[0] && !bulletedText.includes(bodyTag[i].innerHTML))\n bulletedText = bulletedText + '<li>' + bodyTag[i].innerHTML.replace(actualBullet[0], '') + '</li>';\n }\n else {\n let insideText = bodyTag[i].innerHTML.replace(actualBullet[0], '');\n bulletedText = bulletedText + '<li>' + insideText + '</li>';\n }\n }\n else if (bulletedText.length > 10 && !bodyTag[i].innerHTML.includes(actualBullet[0]) && i < bodyTag.length - 1 && bodyTag[i + 1].innerHTML.includes(actualBullet[0])) {\n bulletedText = bulletedText.substring(0, bulletedText.lastIndexOf('</li>'));\n bulletedText = bulletedText + bodyTag[i].innerHTML.replace(actualBullet[0], '') + '</li>';\n }\n else {\n if (bulletedText.length > 10) {\n result = result + bulletedText + '</ul>';\n if (!bodyTag[i].innerHTML.includes(actualBullet[0])) {\n if (bodyTag[i].innerHTML.startsWith('<span>') && bodyTag[i].innerHTML.endsWith('</span>'))\n result = result + bodyTag[i].innerHTML.replace('span', 'p');\n else if (bodyTag[i].innerHTML.startsWith('<p>') && !bodyTag[i].innerHTML.endsWith('</p>'))\n result = result + bodyTag[i].innerHTML.replace('span', 'p') + '</p>';\n else if (!bodyTag[i].innerHTML.startsWith('<p>') && bodyTag[i].innerHTML.endsWith('</p>'))\n result = result + '<p>' + bodyTag[i].innerHTML.replace('span', 'p');\n else\n result = result + '<p>' + bodyTag[i].innerHTML.replace('<p>', '').replace('</p>', '') + '</p>';\n }\n bulletedText = '<ul>';\n }\n else\n result = result + BulletUtils.transform(bodyTag[i] as HTMLElement);\n }\n\n }\n result = result + bulletedText + '</ul>';\n result = map.has('existedBullets') ? (map.get('existedBullets') + result) : result;\n return result;\n }\n else\n return map.has('existedBullets') ? (map.get('existedBullets') + result) + BulletUtils.sanitizeHtml(text) : result + BulletUtils.sanitizeHtml(text);\n\n }\n\n\n private static otherBullets(tag: any) {\n let otherTag = '</ul><p>'\n for (let i = 1; i < tag.length; i++)\n otherTag = otherTag + tag[i];\n return otherTag + '</p><ul>';\n }\n\n\n private static getTagOfBullets(text: string, actualBullet: string) {\n let beforeBulletTag = text.substring(0, text.indexOf(actualBullet));\n let afterBullterTag = text.substring(text.indexOf(actualBullet), text.length);\n beforeBulletTag = beforeBulletTag.substring(beforeBulletTag.lastIndexOf('<'), beforeBulletTag.length);\n afterBullterTag = afterBullterTag.substring(1, afterBullterTag.indexOf('>')) + '>';\n return {\n beforeBulletTag: beforeBulletTag,\n afterBullterTag: afterBullterTag\n };\n }\n private static transformSimpleText(text: string) {\n return text.startsWith('<p') || text.startsWith('<div') ?\n '<p>' + text.replaceAll('</p>', '&nbsp;').replaceAll('<p>', '') + '</p>' : '<span>' + text.replaceAll('</span>', '&nbsp;').replaceAll('<span>', '') + '</span>';\n\n }\n private static transform(node: HTMLElement) {\n if (node.tagName.startsWith('P')) {\n return '<p>' + node.innerHTML + '</p>';\n }\n else if (node.tagName.startsWith('S')) {\n return '<span>' + node.innerHTML + '</span>';\n }\n else\n return '<p>' + node.innerHTML + '</p>';\n }\n\n private static sanitizeHtml(text: string) {\n return new DOMParser().parseFromString(text, \"text/html\").body.innerHTML;\n }\n\n\n static onPasteBulletHandlerOriginalResume(text: string) {\n let result = '';\n text = text.replace(/style=\"[^\"]*color:\\s*transparent[^\"]*\"/g, 'style=\"color: black;\"');\n // let map = BulletUtils.extractExistedBullets(text);\n // text = BulletUtils.removeTags(map.get('text'), ['p'])\n // text = text.split('<p></p>').join('').split('<p> </p>').join('');\n result = BulletUtils.onPasteBulletHandler(text);\n // result = map.has('existedBullets') ? (map.get('existedBullets') + result) : result;\n return result;\n }\n\n // this function take html and tags we want to keep in the provided html and remove all other tags from html\n static removeTags(string: string, array: string[]) {\n return array ? string.split(\"<\").filter(function (val) { return f(array, val); }).map(function (val) { return f(array, val); }).join(\"\") : string.split(\"<\").map(function (d) { return d.split(\">\").pop(); }).join(\"\");\n function f(array: string[], value: string) {\n return array.map(function (d) { return value.includes(d + \">\"); }).indexOf(true) != -1 ? \"<\" + value : value.split(\">\")[1];\n }\n }\n\n /**\n * this funcation take the whole text we have in editor and\n * extract already exicted bullets in it.\n * @param text\n * @returns map -> with the following values\n * 1: 'existedBullets' if we have any in the text.\n * 2: 'text' newly pasted text in the editor\n */\n static extractExistedBullets(text: string) {\n let map = new Map();\n let existedBullets = text.substring(0, text.lastIndexOf('</ul>'));\n if (existedBullets) {\n existedBullets = existedBullets + '</ul>';\n map.set('existedBullets', existedBullets);\n let x = text.split(existedBullets);\n text = x[1] ? x[1] : '';\n }\n map.set('text', text);\n return map;\n }\n static cleanSpans(htmlString: string) {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n // Select all <li> elements\n const listItems = doc.querySelectorAll('li');\n listItems.forEach(li => {\n if (li?.childNodes?.length > 1) {\n let combinedText = '';\n // Iterate through all child nodes of the <li>\n li?.childNodes?.forEach(child => {\n // Only process element nodes (skip text nodes and other types)\n if (child.nodeType === Node.ELEMENT_NODE) {\n combinedText += (child.textContent || '').trim() + ' ';\n }\n });\n // Remove any trailing whitespace\n combinedText = combinedText.trim();\n // Clear the existing content of the <li> and set its text content\n li.innerHTML = combinedText;\n }\n });\n\n // Serialize the updated DOM back to an HTML string\n return doc.body.innerHTML;\n }\n\n static cleanDiv(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Select all <div> and <span> elements\n const divAndSpanItems = doc.querySelectorAll('div');\n divAndSpanItems.forEach(item => {\n // Create a new <p> element\n const p = document.createElement('p');\n\n let combinedText = '';\n // Iterate through all child nodes of the <div> or <span>\n item.childNodes.forEach(child => {\n // Only process element nodes (skip text nodes and other types)\n if (child.nodeType === Node.ELEMENT_NODE || child.nodeType === Node.TEXT_NODE) {\n combinedText += child.textContent?.replace(/\\u00A0/g, ' ') + ' ';\n }\n });\n combinedText = combinedText.trim();\n p.textContent = combinedText;\n\n // Replace the original <div> or <span> with the new <p>\n item.parentNode?.replaceChild(p, item);\n\n this.removeEmptyChildren(p);\n });\n\n return doc.body.innerHTML;\n }\n\n\n\n static removeEmptyChildren(element: HTMLElement): void {\n const children = Array.from(element.childNodes);\n\n children.forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE && (child as HTMLElement).innerHTML.trim() === '') {\n element.removeChild(child);\n }\n });\n }\n\n static cleanEmptyTags(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively remove empty tags\n function removeEmptyTags(element: HTMLElement): boolean {\n let hasData = false;\n\n const children = Array.from(element.childNodes);\n for (const child of children) {\n if (child.nodeType === Node.ELEMENT_NODE) {\n const el = child as HTMLElement;\n\n // Recursively clean children and check if they have data\n if (removeEmptyTags(el)) {\n hasData = true;\n }\n } else if (child.nodeType === Node.TEXT_NODE && child.textContent?.trim() !== '') {\n // If the text node has non-whitespace content, mark as having data\n hasData = true;\n }\n }\n\n // Remove the element if it has no data and no children with data\n if (!hasData) {\n element.parentNode?.removeChild(element);\n }\n\n return hasData;\n }\n removeEmptyTags(doc.body);\n return doc.body.innerHTML;\n }\n\n static refineAllTags(htmlString: string): string {\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to process b u and i contents\n function cleanBoldItalicUnderline(el: HTMLElement): string {\n let combinedContent = '';\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it is just a text\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n // clean child elements recursiverly\n combinedContent += cleanBoldItalicUnderline(elementChild);\n }\n });\n el.innerHTML = combinedContent;\n //remove empty child\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE && child.textContent === '') {\n el.removeChild(child);\n }\n });\n // cobine content wrap up in the b or u or i\n return `<${el.tagName.toLowerCase()}>${combinedContent}</${el.tagName.toLowerCase()}>`;\n }\n\n\n // Function to combine p\n function combinedivContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'div') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'div') {\n // If it's a nested <p> tag, combine its content recursively\n combinedContent += combinedivContents(elementChild);\n } else if (elementChild.tagName.toLowerCase() === 'p') {\n // Combine content of nested <span> elements\n combinedContent += combinedivContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <p> content\n el.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Function to combine span contents recursively\n function combineSpanContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'span') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'span') {\n // If it's a <span> element, process its content recursively\n combinedContent += combineSpanContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n // For other element nodes, add their outer HTML\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <span> content\n el.innerHTML = combinedContent;\n const ptag = document.createElement('p');\n ptag.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Function to combine p contents recursively\n function combinePContents(el: HTMLElement): string {\n if (el.tagName.toLowerCase() === 'p') {\n let combinedContent = '';\n\n // Process all child nodes\n Array.from(el.childNodes).forEach(child => {\n if (child.nodeType === Node.TEXT_NODE) {\n // If it's a text node, add its content\n combinedContent += (child as Text).nodeValue;\n } else if (child.nodeType === Node.ELEMENT_NODE) {\n const elementChild = child as HTMLElement;\n if (elementChild.tagName.toLowerCase() === 'p') {\n // If it's a nested <p> tag, combine its content recursively\n combinedContent += combinePContents(elementChild);\n } else if (elementChild.tagName.toLowerCase() === 'span') {\n // Combine content of nested <span> elements\n combinedContent += combineSpanContents(elementChild);\n } else if (['b', 'i', 'u'].includes(elementChild.tagName.toLowerCase())) {\n combinedContent += cleanBoldItalicUnderline(elementChild);\n } else {\n // For other element nodes, add their outer HTML\n combinedContent += elementChild.outerHTML;\n }\n }\n });\n\n // Update the parent <p> content\n el.innerHTML = combinedContent;\n\n // Return the combined content\n return combinedContent;\n }\n return '';\n }\n\n // Helper function to wrap adjacent <span> tags in a <p> tag if there are no ancestor tags\n function wrapSpansInP(element: HTMLElement): void {\n // Get all top-level child elements inside the body\n const children = Array.from(element.childNodes);\n const spanElements = children.filter(node => node.nodeType === Node.ELEMENT_NODE && (node as HTMLElement).tagName.toLowerCase() === 'span');\n\n // If all top-level elements are <span> tags, wrap them in a <p> tag\n if (spanElements.length === children.length && children.length > 0) {\n const pElement = document.createElement('p');\n spanElements.forEach(span => {\n pElement.appendChild(span); // Move the <span> elements inside the <p>\n });\n element.appendChild(pElement); // Replace with new <p>\n }\n }\n\n // Function to process all elements\n function processAllElements(element: HTMLElement): void {\n // Select all elements within the current element\n const allElements = Array.from(element.querySelectorAll('*'));\n\n allElements.forEach(el => {\n if (el instanceof HTMLElement) {\n if (el.tagName.toLowerCase() === 'p') {\n combinePContents(el);\n } else if (el.tagName.toLowerCase() === 'span') {\n combineSpanContents(el);\n }\n else if (el.tagName.toLowerCase() === 'div') {\n combinedivContents(el);\n }\n\n // Clean empty tags\n if (el.childNodes.length === 0 || el.textContent?.trim() === '') {\n el.parentNode?.removeChild(el);\n }\n }\n });\n\n // Recursively apply to all child elements\n Array.from(element.children).forEach(child => {\n if (child instanceof HTMLElement) {\n processAllElements(child);\n }\n });\n }\n // check whether the span within the p tags or not\n wrapSpansInP(doc.body);\n\n // Start processing from the body of the document\n processAllElements(doc.body);\n return doc.body.innerHTML;\n }\n\n\n static processParagraphs(htmlString: string): string {\n // Create a temporary DOM element to parse the HTML string\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively combine child elements and text into a single <p> tag\n function flattenParagraphs(element: HTMLElement) {\n // Process each <p> element within the current element\n element.querySelectorAll('p').forEach(p => {\n let combinedText = '';\n\n // Iterate through child nodes and elements\n p.childNodes.forEach(child => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n const el = child as HTMLElement;\n // Combine text from child elements\n combinedText += (el.textContent || '').trim() + ' ';\n // Recursively process child elements if they contain further <p> tags\n if (el.querySelector('p')) {\n flattenParagraphs(el);\n }\n } else if (child.nodeType === Node.TEXT_NODE) {\n combinedText += (child.textContent || '').trim() + ' ';\n }\n });\n\n // Remove any trailing whitespace\n combinedText = combinedText.trim();\n // Update the <p> tag with the combined text\n p.textContent = combinedText;\n\n // Remove all child <p> elements to avoid nested <p> tags\n p.querySelectorAll('p').forEach(childP => childP.remove());\n });\n\n // Recursively process any nested elements within the current element\n element.querySelectorAll('*').forEach(childElement => {\n if (childElement.tagName !== 'P') {\n flattenParagraphs(childElement as HTMLElement);\n }\n });\n }\n\n // Start the flattening process from the root of the document body\n flattenParagraphs(doc.body);\n\n // Serialize the updated DOM back to an HTML string\n return doc.body?.innerHTML;\n }\n\n\n static removeInlineStyles(htmlString: string) {\n // Create a new DOM parser\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Function to recursively remove styles from all elements\n function removeStylesFromElement(element: HTMLElement) {\n // Remove the 'style' attribute from the current element\n element.removeAttribute('style');\n\n // Recursively remove styles from child nodes\n element.childNodes.forEach((child: Node) => {\n if (child.nodeType === Node.ELEMENT_NODE) {\n removeStylesFromElement(child as HTMLElement);\n }\n });\n }\n\n // Start from the document body\n removeStylesFromElement(doc.body);\n\n // Serialize the document back to an HTML string\n return doc.body.innerHTML;\n }\n\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n OnInit,\n OnDestroy,\n AfterViewInit,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter\n}\n from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TableComponent } from './table/table.component';\nimport BulletUtils from './bullet-utils';\n\ninterface ToolbarItem {\n type: string;\n icon: string;\n title: string;\n command: string;\n}\n\n@Component({\n selector: 'app-custom-editor',\n standalone: true,\n imports: [CommonModule, TableComponent, MatTooltipModule],\n templateUrl: './custom-editor.component.html',\n styleUrls: ['./custom-editor.component.scss'],\n encapsulation: ViewEncapsulation.None\n}\n\n) export class CustomEditorComponent implements OnInit,\n OnDestroy,\n AfterViewInit {\n constructor(private router: Router) { }\n\n @ViewChild('editorReference', {\n static: true\n }\n\n ) editorReference !: ElementRef<HTMLElement>;\n\n @Input() bold: boolean = true;\n @Input() italic: boolean = true;\n @Input() underline: boolean = true;\n @Input() list: boolean = true;\n @Input() isVisible: boolean = true;\n @Input() dataTestId: string = '';\n\n // Editor labels inputs\n @Input() showLabels: boolean = false;\n @Input() leftLabelText: string = 'Left Text';\n @Input() rightLabelText: string = 'Right Text';\n\n // New input properties\n @Input() initialValue: string = '';\n @Input() contentFromParent: string = '';\n @Input() editScreenSection: string = '';\n @Input() actionType: string = '';\n @Input() historyControls: boolean = true; // Single flag for undo/redo buttons\n @Input() autobullet: boolean = true;\n\n // Table visibility control\n @Input() showTable: boolean = true;\n\n @Output() contentChangeFromQuill = new EventEmitter<string>();\n @Output() ApplyAIinQuill = new EventEmitter<any>();\n\n // Generic configuration approach\n @Input() toolbarConfig: ToolbarItem[] = [{\n type: 'bold', icon: 'format_bold', title: 'Bold', command: 'bold'\n },\n {\n type: 'italic', icon: 'format_italic', title: 'Italic', command: 'italic'\n },\n {\n type: 'underline', icon: 'format_underline', title: 'Underline ', command: 'underline'\n }\n\n ];\n\n // Text formatting configuration\n @Input() textFormattingConfig: ToolbarItem[] = [{\n type: 'list', icon: 'format_list_bulleted', title: 'Bullet List', command: 'insertUnorderedList'\n }];\n\n boldedText = false;\n italicTexted = false;\n underlineTexted = false;\n listTexted = false;\n\n // Auto bullet and skills bullet properties\n hideAutoBulletOption: boolean = false;\n skillsBullet: boolean = true;\n autoBulletDisable: boolean = false;\n isLoadingAI: boolean = false;\n isDisabled: boolean = false;\n AutoBulletButton: string = \"Auto Bullet\";\n skillsButton: string = \"Bullet Skills\";\n isSkillBullet: boolean = false;\n previousContent: string = '';\n\n // History management for undo/redo\n private history: string[] = [];\n private redoStack: string[] = [];\n private content: string = '';\n\n // Responsive styling dropdown\n isSmallScreen: boolean = false;\n showStylingDropdown: boolean = false;\n showTextFormattingDropdown: boolean = false;\n\n // Timeout handlers for dropdown hiding\n private stylingDropdownTimeout: any;\n private textFormattingDropdownTimeout: any;\n\n ngOnInit(): void {\n\n // Initialize editor with initial value or default content\n if (this.editorReference?.nativeElement) {\n const content = this.initialValue || this.contentFromParent || '<p>Start typing here...</p>';\n this.editorReference.nativeElement.innerHTML = content;\n }\n\n // Check initial screen size\n this.checkScreenSize();\n\n // Add resize listener\n window.addEventListener('resize', () => this.checkScreenSize());\n\n // Add click outside listener to close dropdowns\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n }\n\n ngAfterViewInit(): void {\n\n // Ensure editor reference is available for child components\n if (this.editorReference?.nativeElement) {\n const content = this.initialValue || this.contentFromParent || '<p>Start typing here...</p>';\n this.editorReference.nativeElement.innerHTML = content;\n }\n\n this.saveHistory();\n }\n\n getEditorElement(): HTMLElement | undefined {\n return this.editorReference?.nativeElement;\n }\n\n // Bound methods for table component\n getBoundGetEditorElement(): () => HTMLElement | undefined {\n return () => this.getEditorElement();\n }\n\n getBoundSaveHistory(): () => void {\n return () => this.saveHistory();\n }\n\n getBoundTextChange(): () => void {\n return () => this.textChange();\n }\n\n ngOnDestroy(): void {\n // Cleanup if needed\n window.removeEventListener('resize', () => this.checkScreenSize());\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n\n // Clear any pending timeouts\n if (this.stylingDropdownTimeout) {\n clearTimeout(this.stylingDropdownTimeout);\n }\n if (this.textFormattingDropdownTimeout) {\n clearTimeout(this.textFormattingDropdownTimeout);\n }\n }\n\n // Responsive methods\n private checkScreenSize(): void {\n this.isSmallScreen = window.innerWidth < 1500;\n }\n\n // Handle text formatting button clicks\n handleTextFormattingClick(event: MouseEvent, item: ToolbarItem): void {\n event.preventDefault();\n\n switch (item.command) {\n case 'table':\n // Table functionality is handled by the app-table component\n break;\n case 'autobullet':\n this.transformToBullets(event);\n break;\n case 'skillsbullet':\n this.transformToSkillsBullets(event);\n break;\n default:\n // For list and other commands, use the standard execCmd\n this.execCmd(event, item.command);\n break;\n }\n }\n\n // Toggle styling dropdown\n toggleStylingDropdown(): void {\n this.showStylingDropdown = !this.showStylingDropdown;\n if (this.showStylingDropdown) {\n this.showTextFormattingDropdown = false;\n }\n }\n\n // Toggle text formatting dropdown\n toggleTextFormattingDropdown(): void {\n this.showTextFormattingDropdown = !this.showTextFormattingDropdown;\n if (this.showTextFormattingDropdown) {\n this.showStylingDropdown = false;\n }\n }\n\n // Show styling dropdown on hover\n showStylingDropdownOnHover(): void {\n this.showStylingDropdown = true;\n this.showTextFormattingDropdown = false;\n }\n\n // Show text formatting dropdown on hover\n showTextFormattingDropdownOnHover(): void {\n this.showTextFormattingDropdown = true;\n this.showStylingDropdown = false;\n }\n\n // Hide styling dropdown with delay\n hideStylingDropdown(): void {\n this.stylingDropdownTimeout = setTimeout(() => {\n this.showStylingDropdown = false;\n }, 200);\n }\n\n // Hide text formatting dropdown with delay\n hideTextFormattingDropdown(): void {\n this.textFormattingDropdownTimeout = setTimeout(() => {\n this.showTextFormattingDropdown = false;\n }, 200);\n }\n\n // Clear timeout when re-entering dropdown\n clearStylingDropdownTimeout(): void {\n if (this.stylingDropdownTimeout) {\n clearTimeout(this.stylingDropdownTimeout);\n }\n }\n\n clearTextFormattingDropdownTimeout(): void {\n if (this.textFormattingDropdownTimeout) {\n clearTimeout(this.textFormattingDropdownTimeout);\n }\n }\n\n // Handle click outside to close dropdowns\n handleClickOutside(event: Event): void {\n const target = event.target as HTMLElement;\n if (!target.closest('.styling-dropdown') && !target.closest('.text-formatting-dropdown')) {\n this.showStylingDropdown = false;\n this.showTextFormattingDropdown = false;\n }\n }\n\n\n\n\n\n execCmd(event: MouseEvent, command: string): void {\n event.preventDefault();\n\n\n\n // Execute the command\n if (command === 'undo') {\n this.undo(event);\n return;\n }\n\n else if (command === 'redo') {\n this.redo(event);\n return;\n }\n\n\n else {\n document.execCommand(command, false, undefined);\n }\n\n this.updateTagHierarchy();\n }\n\n updateTagHierarchy(): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n let element = range.startContainer as Node;\n\n // Reset flags at the beginning\n this.boldedText = false;\n this.underlineTexted = false;\n this.italicTexted = false;\n this.listTexted = false;\n const tags: string[] = [];\n\n // Traverse up the DOM tree to set flags\n while (element && element.nodeName !== \"DIV\") {\n if (element.nodeType === Node.ELEMENT_NODE) {\n const tagName = (element.nodeName || \"\").toLowerCase();\n tags.unshift(tagName);\n\n // Set flags based on tag names\n if (tagName === \"b\" || tagName === \"strong\") {\n this.boldedText = true;\n }\n\n else if (tagName === \"u\" || tagName === \"ins\") {\n this.underlineTexted = true;\n }\n\n else if (tagName === \"i\" || tagName === \"em\") {\n this.italicTexted = true;\n }\n\n else if (tagName === \"ul\" || tagName === \"ol\" || tagName === \"li\") {\n this.listTexted = true;\n }\n\n else if (tagName === \"h1\" || tagName === \"h2\" || tagName === \"h3\" || tagName === \"h4\" || tagName === \"h5\" || tagName === \"h6\") {\n // this.headerTexted = true; // Removed headerTexted\n }\n }\n\n element = element.parentNode!;\n }\n\n const tagHierarchyDiv = document.getElementById(\"tag-hierarchy\");\n\n if (tagHierarchyDiv) {\n tagHierarchyDiv.textContent = tags.join(\" > \");\n }\n }\n }\n\n onEditorInput(): void {\n // Save history on input changes\n this.saveHistory();\n // Emit content changes\n this.textChange();\n }\n\n getActiveState(type: string): boolean {\n switch (type) {\n case 'bold': return this.boldedText;\n case 'italic': return this.italicTexted;\n case 'underline': return this.underlineTexted;\n case 'header': return false; // Removed headerTexted\n case 'list': return this.listTexted;\n case 'table': return false; // Table button is never active\n case 'autobullet': return false; // Auto bullet button is never active\n case 'skillsbullet': return this.isSkillBullet; // Skills bullet button shows active state\n default: return false;\n }\n }\n\n undo(event: MouseEvent): void {\n\n event.preventDefault();\n const editor = document.getElementById(\"editor\");\n\n if (editor) {\n const lastState = this.history.pop();\n\n if (lastState !== undefined) {\n this.redoStack.push(editor.innerHTML);\n editor.innerHTML = lastState;\n }\n }\n\n this.textChange();\n }\n\n redo(event: MouseEvent): void {\n event.preventDefault();\n const editor = document.getElementById(\"editor\");\n\n if (editor) {\n const nextState = this.redoStack.pop();\n\n if (nextState !== undefined) {\n this.history.push(editor.innerHTML);\n editor.innerHTML = nextState;\n }\n }\n\n this.textChange();\n }\n\n textChange() {\n if (this.editorReference.nativeElement.innerHTML !== \"<p>Awaiting response from AI...</p>\"\n\n ) {\n this.content = this.editorReference.nativeElement.innerHTML;\n this.contentChangeFromQuill.emit(this.content);\n }\n }\n\n saveHistory(): void {\n\n const editor = document.getElementById(\"editor\");\n if (editor && this.editorReference.nativeElement.innerHTML !== \"<p>Awaiting response from AI...</p>\"\n\n ) {\n this.history.push(editor.innerHTML);\n this.redoStack = [];\n }\n\n this.textChange();\n }\n\n\n toggleDiv(event: Event, visible: boolean): void {\n event.preventDefault();\n\n if (visible) {\n this.isVisible = false;\n }\n\n else {\n this.isVisible = true;\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const selection = window.getSelection();\n const range = selection?.getRangeAt(0);\n const selectedLiTags = this.getSelectedLiTags();\n\n if (event.key === \"Enter\" && selection && range) {\n const parentElement = range.startContainer.parentElement;\n const parentNode = range.startContainer; // Get the current node\n\n // Check if the cursor is within an empty <p> tag\n if (parentElement && parentElement.tagName === \"P\" && parentElement.textContent?.trim() === \"\"\n\n ) {\n event.preventDefault(); // Prevent the default Enter behavior\n\n // Create the new <p><br></p> structure\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n // Insert the new element at the current cursor position\n range.deleteContents(); // Optional: clear any selected text\n range.insertNode(newParagraph);\n\n // Optionally, place the cursor at the end of the new paragraph\n const newRange = document.createRange();\n newRange.setStartAfter(newParagraph);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n\n else if ((parentElement?.tagName === \"B\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"U\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"I\" && !parentElement.closest(\"p\") && range.startOffset === 0) || (parentElement?.tagName === \"SPAN\" && (parentElement.closest(\"b\") || parentElement.closest(\"u\") || parentElement.closest(\"i\")) && range.startOffset === 0) || (parentElement?.tagName === \"SPAN\" && (range.startOffset === 0 || range.endOffset === 0))) {\n event.preventDefault();\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n if (parentElement?.parentElement) {\n parentElement.parentElement.insertBefore(newParagraph, parentElement);\n }\n\n const newRange = document.createRange();\n const selection = window.getSelection();\n newRange.setStart(newParagraph, 0);\n newRange.collapse(true);\n selection?.removeAllRanges();\n selection?.addRange(newRange);\n }\n\n else if (parentNode.nodeType === Node.TEXT_NODE && parentElement?.tagName === \"DIV\" && range.startOffset === (parentElement.textContent?.length || 0)) {\n event.preventDefault();\n const newParagraph = document.createElement(\"p\");\n const br = document.createElement(\"br\");\n newParagraph.appendChild(br);\n\n if (parentElement?.parentElement) {\n parentElement.insertBefore(newParagraph, parentNode.nextSibling);\n }\n\n const newRange = document.createRange();\n newRange.setStart(newParagraph, 0);\n newRange.collapse(true);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n }\n\n else if (event.key === \"Tab\") {\n event.preventDefault();\n\n if (event.shiftKey) {\n // Outdent if Shift + Tab is pressed\n document.execCommand(\"outdent\");\n }\n\n else {\n // Indent if Tab is pressed\n document.execCommand(\"indent\");\n }\n }\n\n else if (event.key === \"Backspace\") {\n if (selectedLiTags.length === 1) {\n if (range?.startOffset === 0) {\n if (!this.isTextHighlighted()) {\n event.preventDefault();\n this.handleBackspace(range, selectedLiTags[0]);\n return;\n }\n\n else {\n document.execCommand(\"insertUnorderedList\", false);\n }\n }\n }\n }\n\n this.saveHistory();\n }\n\n handleBackspace(range: Range, liElement: HTMLElement): void {\n if (range.startContainer.nodeType === Node.TEXT_NODE) {\n const pElement = document.createElement(\"p\");\n pElement.innerHTML = liElement.innerHTML;\n liElement.parentNode?.replaceChild(pElement, liElement);\n }\n\n document.execCommand(\"insertUnorderedList\", false);\n this.saveHistory();\n }\n\n\n isTextHighlighted(): boolean {\n const selection = window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return false;\n }\n\n const range = selection.getRangeAt(0);\n return !range.collapsed && range.toString().trim().length > 0;\n }\n\n\n handlePaste(event: ClipboardEvent): void {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n if (!clipboardData) return;\n const selectedLiTags = this.getSelectedLiTags();\n let pastedData = this.getPastedData(clipboardData);\n\n if (selectedLiTags?.length >= 1) {\n pastedData = pastedData.replace(/<\\/?ul[^>]*>/gi, \"\");\n }\n\n pastedData = this.removeSpacesFromHtml(pastedData);\n pastedData = this.applyRegexTransformations(pastedData);\n pastedData = BulletUtils.refineAllTags(pastedData);\n pastedData = BulletUtils.removeInlineStyles(pastedData);\n pastedData = BulletUtils.cleanDiv(pastedData);\n\n let tempDiv = this.createTemporaryDiv(pastedData);\n this.removeStylesFromElements(tempDiv);\n\n const tables = tempDiv.getElementsByTagName(\"table\");\n\n if (tables.length > 0) {\n this.transformTableData(tables);\n }\n\n else {\n pastedData = this.applyBulletUtilsTransformations(pastedData);\n tempDiv.innerHTML = pastedData;\n }\n\n this.insertTransformedContent(tempDiv);\n this.saveHistory();\n this.updateTagHierarchy();\n }\n\n transformData(data: string): string {\n if (this.router.url.endsWith(\"extractionAnalysis=false\")) {\n data = BulletUtils.onPasteBulletHandlerOriginalResume(data);\n }\n\n else {\n data = BulletUtils.onPasteBulletHandler(data);\n }\n\n data = BulletUtils.cleanSpans(data);\n // data = BulletUtils.processParagraphs(data);\n return data;\n }\n\n applyBulletUtilsTransformations(data: string): string {\n if (this.router.url.endsWith(\"extractionAnalysis=false\")) {\n data = BulletUtils.onPasteBulletHandlerOriginalResume(data);\n }\n\n else {\n data = BulletUtils.onPasteBulletHandler(data);\n }\n\n // data = BulletUtils.cleanSpans(data);\n // data = BulletUtils.processParagraphs(data);\n return data;\n }\n\n\n getSelectedLiTags(): HTMLElement[] {\n\n const selection = window.getSelection();\n const selectedLiTags: HTMLElement[] = [];\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n const startContainer = range.startContainer;\n const endContainer = range.endContainer;\n\n // Check up to 8 levels of ancestors for start and end containers\n const startLi = this.getAncestorLi(startContainer);\n const endLi = this.getAncestorLi(endContainer);\n\n if (startLi && startLi === endLi) {\n selectedLiTags.push(startLi);\n }\n }\n\n return selectedLiTags;\n }\n\n getAncestorLi(node: Node): HTMLElement | null {\n let currentNode: Node | null = node;\n\n for (let i = 0; i < 8 && currentNode; i++) {\n if (currentNode.nodeType === Node.ELEMENT_NODE && (currentNode as HTMLElement).nodeName === \"LI\"\n\n ) {\n return currentNode as HTMLElement;\n }\n\n currentNode = currentNode.parentNode;\n }\n\n return null;\n }\n\n getPastedData(clipboardData: DataTransfer): string {\n return (clipboardData.getData(\"text/html\") || clipboardData.getData(\"text/plain\"));\n }\n\n removeSpacesFromHtml(htmlString: string) {\n return htmlString?.replace(/\\n/g, \"\");\n }\n\n removeStylesFromHtml(htmlString: string): string {\n // Remove inline styles but preserve HTML structure\n return htmlString.replace(/style=\"[^\"]*\"/g, '');\n\n }\n\n applyRegexTransformations(data: string): string {\n const regexPattern = /<p>(.*?)<span.*?>(.*?)<\\/span>(.*?)<\\/p>/g;\n return data.replace(regexPattern, \"<p>$1$2$3</p>\");\n }\n\n createTemporaryDiv(data: string): HTMLDivElement {\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = data;\n return tempDiv;\n }\n\n removeStylesFromElements(tempDiv: HTMLDivElement): void {\n // Remove styles from <p> tags\n const pTags = tempDiv.getElementsByTagName(\"p\");\n\n Array.from(pTags).forEach((p) => {\n p.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <span> tags\n const spanTags = tempDiv.getElementsByTagName(\"span\");\n\n Array.from(spanTags).forEach((span) => {\n span.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <div> tags\n const divTags = tempDiv.getElementsByTagName(\"div\");\n\n Array.from(divTags).forEach((div) => {\n div.removeAttribute(\"style\");\n }\n\n );\n\n // Remove styles from <table> and its children\n const tables = tempDiv.getElementsByTagName(\"table\");\n\n Array.from(tables).forEach((table) => {\n table.removeAttribute(\"style\");\n\n Array.from(table.getElementsByTagName(\"tr\")).forEach((tr) => {\n tr.removeAttribute(\"style\");\n }\n\n );\n\n Array.from(table.getElementsByTagName(\"td\")).forEach((td) => {\n td.removeAttribute(\"style\");\n }\n\n );\n }\n\n );\n }\n\n insertTransformedContent(tempDiv: HTMLDivElement): void {\n const selection = window.getSelection();\n\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n const fragment = document.createDocumentFragment();\n let node;\n while ((node = tempDiv.firstChild)) {\n fragment.appendChild(node);\n }\n range.insertNode(fragment);\n selection.removeAllRanges();\n selection.addRange(range);\n } else {\n // Fallback: insert at cursor position or append to editor\n if (this.editorReference?.nativeElement) {\n const editor = this.editorReference.nativeElement;\n\n // Try to place cursor at the end and insert there\n const range = document.createRange();\n range.selectNodeContents(editor);\n range.collapse(false); // collapse to end\n\n const fragment = document.createDocumentFragment();\n let node;\n while ((node = tempDiv.firstChild)) {\n fragment.appendChild(node);\n }\n\n range.insertNode(fragment);\n range.collapse(false);\n\n // Set cursor position\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n }\n\n transformTableData(tables: HTMLCollectionOf<HTMLTableElement>): void {\n Array.from(tables).forEach((table) => {\n const rows = table.getElementsByTagName(\"tr\");\n\n Array.from(rows).forEach((row) => {\n const cells = row.getElementsByTagName(\"td\");\n\n Array.from(cells).forEach((cell) => {\n cell.innerHTML = this.transformData(cell.innerHTML);\n }\n\n );\n }\n\n );\n }\n\n );\n }\n\n // Auto bullet and skills bullet methods\n transformToBullets(event: MouseEvent): void {\n event.preventDefault();\n\n if (this.editorReference?.nativeElement) {\n const text = this.editorReference.nativeElement.innerText;\n const transformedText = BulletUtils.autoBullet(text);\n this.editorReference.nativeElement.innerHTML = transformedText;\n this.saveHistory();\n this.textChange();\n }\n }\n\n transformToSkillsBullets(event: MouseEvent): void {\n event.preventDefault();\n\n if (!this.isSkillBullet) {\n this.previousContent = this.editorReference.nativeElement.innerHTML;\n this.isSkillBullet = true;\n this.editorReference.nativeElement.innerHTML = BulletUtils.skillBullet(this.previousContent);\n this.skillsButton = \"Undo\";\n }\n\n else {\n this.isSkillBullet = false;\n this.editorReference.nativeElement.innerHTML = this.previousContent;\n this.skillsButton = \"Bullet Skills\";\n }\n\n this.saveHistory();\n this.textChange();\n }\n\n checkHtmlContent(content: string): boolean {\n\n // Check current editor content if no content is passed\n if (!content) {\n return this.editorReference?.nativeElement?.innerHTML !== '<p>Start typing here...</p>' && this.editorReference?.nativeElement?.innerHTML.trim().length > 0;\n }\n\n return Boolean(content && content.trim().length > 0);\n }\n}\n","<!-- Editor Labels Section -->\n<div class=\"editor-labels\" *ngIf=\"showLabels\">\n <div class=\"left-label\">{{ leftLabelText }}</div>\n <div class=\"right-label\">{{ rightLabelText }}</div>\n</div>\n<div class=\"editor-container\">\n <!-- Toolbar Section -->\n <div class=\"toolbar\">\n <!-- Styling Dropdown (Small Screens Only) -->\n <div class=\"styling-dropdown\" *ngIf=\"isSmallScreen\">\n <span class=\"styling-text\" (mouseenter)=\"showStylingDropdownOnHover()\" (mouseleave)=\"hideStylingDropdown()\">\n Styling\n </span>\n\n <div class=\"styling-dropdown-content\" *ngIf=\"showStylingDropdown\" (mouseenter)=\"clearStylingDropdownTimeout()\"\n (mouseleave)=\"hideStylingDropdown()\">\n <button *ngFor=\"let item of toolbarConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n (click)=\"execCmd($event, item.command)\" [title]=\"item.title\" type=\"button\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n </div>\n </div>\n\n <!-- Individual Styling Buttons (Large Screens Only) -->\n <button *ngFor=\"let item of toolbarConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n [class.hide-on-small]=\"true\" (click)=\"execCmd($event, item.command)\" [title]=\"item.title\" type=\"button\"\n [matTooltip]=\"item.title\" matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n\n <!-- Text Formatting Dropdown (Small Screens Only) -->\n <div class=\"text-formatting-dropdown\" *ngIf=\"isSmallScreen\">\n <span class=\"text-formatting-text\" (mouseenter)=\"showTextFormattingDropdownOnHover()\"\n (mouseleave)=\"hideTextFormattingDropdown()\">\n Text Formatting\n </span>\n\n <div class=\"text-formatting-dropdown-content\" *ngIf=\"showTextFormattingDropdown\"\n (mouseenter)=\"clearTextFormattingDropdownTimeout()\" (mouseleave)=\"hideTextFormattingDropdown()\">\n\n <!-- Text Formatting Buttons -->\n <button *ngFor=\"let item of textFormattingConfig\" class=\"format-button\"\n [class.active]=\"getActiveState(item.type)\" (click)=\"handleTextFormattingClick($event, item)\"\n [title]=\"item.title\" type=\"button\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n\n <!-- Auto Bullet Button -->\n <button *ngIf=\"autobullet\" class=\"ms-3 auto-bullet\" mat-flat-button (click)=\"transformToBullets($event)\"\n [disabled]=\"autoBulletDisable || isLoadingAI || !checkHtmlContent('')\">\n {{ AutoBulletButton }}\n </button>\n\n <!-- Bullet Skill Button -->\n <button *ngIf=\"skillsBullet\" class=\"ms-3 bullet-skill\" mat-flat-button\n (click)=\"transformToSkillsBullets($event)\" [disabled]=\"isDisabled || isLoadingAI\">\n {{ skillsButton }}\n </button>\n </div>\n </div>\n\n <!-- Individual Text Formatting Buttons (Large Screens Only) -->\n <button *ngFor=\"let item of textFormattingConfig\" class=\"format-button\" [class.active]=\"getActiveState(item.type)\"\n [class.hide-on-small]=\"true\" (click)=\"handleTextFormattingClick($event, item)\" [title]=\"item.title\" type=\"button\"\n [matTooltip]=\"item.title\" matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState(item.type)\">\n {{ item.icon }}\n </span>\n </button>\n\n <!-- Table Component -->\n <app-table *ngIf=\"showTable\" [getEditorElement]=\"getBoundGetEditorElement()\"\n [saveHistoryMethod]=\"getBoundSaveHistory()\" [textChangeMethod]=\"getBoundTextChange()\" matTooltip=\"Table\"\n matTooltipPosition=\"above\">\n </app-table>\n\n <!-- Auto Bullet Button (Large Screens Only) -->\n <button *ngIf=\"autobullet && !isSmallScreen\" class=\"ms-3 auto-bullet\" mat-flat-button\n (click)=\"transformToBullets($event)\" [disabled]=\"autoBulletDisable || isLoadingAI || !checkHtmlContent('')\">\n {{ AutoBulletButton }}\n </button>\n\n <!-- Bullet Skill Button (Large Screens Only) -->\n <button *ngIf=\"skillsBullet && !isSmallScreen\" class=\"ms-3 bullet-skill\" mat-flat-button\n (click)=\"transformToSkillsBullets($event)\" [disabled]=\"isDisabled || isLoadingAI\">\n {{ skillsButton }}\n </button>\n\n <!-- History Controls (Undo/Redo) -->\n <div *ngIf=\"historyControls\" class=\"history-controls\">\n <!-- Undo Button -->\n <button class=\"ms-3 format-button\" (click)=\"execCmd($event, 'undo')\" title=\"Undo\" type=\"button\" matTooltip=\"Undo\"\n matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState('undo')\">\n undo\n </span>\n </button>\n\n <!-- Redo Button -->\n <button class=\"ms-3 format-button\" (click)=\"execCmd($event, 'redo')\" title=\"Redo\" type=\"button\" matTooltip=\"Redo\"\n matTooltipPosition=\"above\">\n <span class=\"material-icons\" [class.active-icon]=\"getActiveState('redo')\">\n redo\n </span>\n </button>\n </div>\n </div>\n\n <!-- Editor Content Area -->\n <div class=\"editor-content\" #editorReference contenteditable=\"true\" id=\"editor\" (click)=\"updateTagHierarchy()\"\n (input)=\"onEditorInput()\" (paste)=\"handlePaste($event)\" (keydown)=\"handleKeydown($event)\"\n (click)=\"toggleDiv($event, true)\" spellcheck=\"false\" role=\"textbox\" aria-label=\"Rich text editor\"\n aria-multiline=\"true\" [attr.data-testid]=\"dataTestId\">\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CustomEditorComponent } from './custom-editor.component';\n\n@NgModule({\n imports: [CustomEditorComponent],\n exports: [CustomEditorComponent]\n})\nexport class CustomEditorModule { }\n","import { Component } from '@angular/core';\nimport { CustomEditorComponent } from './custom-editor.component';\n\n@Component({\n selector: 'app-custom-editor-demo',\n standalone: true,\n imports: [CustomEditorComponent],\n template: `\n <div class=\"demo-container\">\n <h2>Custom Editor Demo</h2>\n <p class=\"demo-description\">\n This is a simple text editor with basic formatting options.\n Select text and use the toolbar buttons to apply Bold, Italic, or Underline formatting.\n </p>\n\n <app-custom-editor></app-custom-editor>\n\n <div class=\"demo-instructions\">\n <h3>Instructions:</h3>\n <ul>\n <li>Click in the editor area to start typing</li>\n <li>Select text to apply formatting</li>\n <li>Use the toolbar buttons for Bold (B), Italic (I), and Underline (U)</li>\n <li>The buttons will change color to show active formatting</li>\n </ul>\n </div>\n </div>\n `,\n styles: [`\n .demo-container {\n max-width: 800px;\n margin: 0 auto;\n padding: 20px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n h2 {\n color: #333;\n margin-bottom: 16px;\n }\n\n .demo-description {\n color: #666;\n margin-bottom: 24px;\n line-height: 1.5;\n }\n\n .demo-instructions {\n margin-top: 24px;\n padding: 16px;\n background-color: #f8f9fa;\n border-radius: 4px;\n border-left: 4px solid #37c1ce;\n }\n\n .demo-instructions h3 {\n margin-top: 0;\n color: #333;\n }\n\n .demo-instructions ul {\n margin-bottom: 0;\n padding-left: 20px;\n }\n\n .demo-instructions li {\n margin-bottom: 8px;\n color: #555;\n }\n `]\n})\nexport class CustomEditorDemoComponent { }\n","import { Component, forwardRef, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule, ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateRange } from '@angular/material/datepicker';\n\nexport interface DateRangeValue {\n start: Date | null;\n end: Date | null;\n}\n\n@Component({\n selector: 'al-date-range',\n templateUrl: './date-range.component.html',\n styleUrls: ['./date-range.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n }\n ]\n})\nexport class DateRangeComponent implements ControlValueAccessor {\n @Input() dataTestId?: string;\n @Input() formControlName?: string;\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n @Input() labelText: string = 'Date Range';\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string) {\n if (val !== undefined) {\n console.warn('[al-date-range] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() startPlaceholder: string = 'Start date';\n @Input() endPlaceholder: string = 'End date';\n @Input() hint: string = 'MM/DD/YYYY – MM/DD/YYYY';\n @Input() disabled: boolean = false;\n @Input() required: boolean = false;\n @Input() minDate?: Date;\n @Input() maxDate?: Date\n @Input() startAt?: Date;\n @Input() opened: boolean = false;\n @Input() touchUi: boolean = false;\n\n @Output() dateRangeChange = new EventEmitter<DateRangeValue>();\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() startDateChange = new EventEmitter<Date | null>();\n @Output() endDateChange = new EventEmitter<Date | null>();\n\n startDate: Date | null = null;\n endDate: Date | null = null;\n isDatePickerOpen = false;\n\n private onChange = (value: any) => { };\n private onTouched = () => { };\n\n // Getter for size class\n get sizeClass(): string {\n return `al-date-range-size-${this.size}`;\n }\n\n // Get size class method (matching input component)\n getSizeClass(): string {\n return 'al-date-range-size-' + this.size;\n }\n\n // Get category class method (matching input component)\n getCategoryClass(): string {\n if (this.disabled) {\n return 'al-date-range-category-disabled';\n }\n return 'al-date-range-category-default';\n }\n\n // Get all classes method (combines size and category)\n getAllClasses(): string[] {\n return [this.getSizeClass(), this.getCategoryClass()];\n }\n\n // Getter for date range value\n get dateRangeValue(): DateRangeValue {\n return {\n start: this.startDate,\n end: this.endDate\n };\n }\n\n // Getter for display value in the input\n get displayValue(): string {\n if (this.startDate && this.endDate) {\n return `${this.formatDate(this.startDate)} – ${this.formatDate(this.endDate)}`;\n } else if (this.startDate) {\n return `${this.formatDate(this.startDate)} – `;\n } else if (this.endDate) {\n return ` – ${this.formatDate(this.endDate)}`;\n }\n return '';\n }\n\n // Getter for validation state\n get isRangeValid(): boolean {\n if (!this.startDate || !this.endDate) return true;\n return this.startDate <= this.endDate;\n }\n\n // Getter for display text\n get displayText(): string {\n return this.displayValue;\n }\n\n // ControlValueAccessor implementation\n writeValue(value: DateRangeValue | null): void {\n if (value) {\n this.startDate = value.start;\n this.endDate = value.end;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n // Handle start date change\n onStartDateChange(event: any) {\n this.startDate = event.value;\n this.emitChanges();\n }\n\n // Handle end date change\n onEndDateChange(event: any) {\n this.endDate = event.value;\n this.emitChanges();\n }\n\n // Handle date range selection from the picker\n onDateRangeChange(event: DateRange<Date> | null) {\n if (event) {\n this.startDate = event.start;\n this.endDate = event.end;\n } else {\n this.startDate = null;\n this.endDate = null;\n }\n this.emitChanges();\n }\n\n // Handle date picker open/close\n onOpenedChange(opened: boolean) {\n this.isDatePickerOpen = opened;\n this.openedChange.emit(opened);\n }\n\n // Open date picker\n openDatePicker() {\n if (!this.disabled) {\n this.isDatePickerOpen = true;\n }\n }\n\n // Clear date range\n clearDateRange() {\n this.startDate = null;\n this.endDate = null;\n this.emitChanges();\n }\n\n // Format date for display\n formatDate(date: Date | null): string {\n if (!date) return '';\n return date.toLocaleDateString();\n }\n\n // Emit all changes\n private emitChanges() {\n this.onChange(this.dateRangeValue);\n this.onTouched();\n this.startDateChange.emit(this.startDate);\n this.endDateChange.emit(this.endDate);\n this.dateRangeChange.emit(this.dateRangeValue);\n }\n}\n","<mat-form-field class=\"mat_form\" [ngClass]=\"[getSizeClass(), getCategoryClass()]\" appearance=\"outline\"\n [attr.data-test-id]=\"dataTestId\">\n\n <mat-label>{{ labelText }}</mat-label>\n\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate [placeholder]=\"startPlaceholder\" [value]=\"startDate\" [disabled]=\"disabled\" [required]=\"required\"\n [min]=\"minDate\" [max]=\"endDate || maxDate\" (dateInput)=\"onStartDateChange($event)\"\n (dateChange)=\"onStartDateChange($event)\" [attr.data-testid]=\"dataTestId ? dataTestId + '-start' : null\">\n <input matEndDate [placeholder]=\"endPlaceholder\" [value]=\"endDate\" [disabled]=\"disabled\" [required]=\"required\"\n [min]=\"startDate || minDate\" [max]=\"maxDate\" (dateInput)=\"onEndDateChange($event)\"\n (dateChange)=\"onEndDateChange($event)\" [attr.data-testid]=\"dataTestId ? dataTestId + '-end' : null\">\n </mat-date-range-input>\n\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\" [disabled]=\"disabled\">\n </mat-datepicker-toggle>\n\n <mat-date-range-picker #picker [startAt]=\"startAt\" [opened]=\"opened\" [touchUi]=\"touchUi\"\n (openedChange)=\"onOpenedChange($event)\" (selectedChange)=\"onDateRangeChange($event)\">\n </mat-date-range-picker>\n\n\n</mat-form-field>\n\n<!-- Range display and validation -->\n<div *ngIf=\"startDate || endDate\" class=\"range-display\" [ngClass]=\"getSizeClass()\">\n <span class=\"range-text\" [class.invalid]=\"!isRangeValid\">\n {{ displayText }}\n </span>\n <span *ngIf=\"!isRangeValid\" class=\"error-message\">\n End date must be after start date\n </span>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DateRangeComponent } from './date-range.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatIconModule,\n MatButtonModule,\n DateRangeComponent\n ],\n exports: [DateRangeComponent]\n})\nexport class DateRangeModule { }\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, TemplateRef, ViewChild, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTabsModule } from '@angular/material/tabs';\n\n@Component({\n selector: 'al-tab',\n standalone: true,\n template: '<ng-template><ng-content></ng-content></ng-template>'\n})\nexport class AlTabComponent implements AfterViewInit {\n @Input() labelText: string = '';\n /** DEPRECATED: label -> labelText */\n @Input() set label(val: string) {\n if (val !== undefined) {\n console.warn('[al-tab] \"label\" is deprecated. Use \"labelText\" instead.');\n this.labelText = val;\n }\n }\n @Input() selected: boolean = false;\n @ViewChild(TemplateRef) templateRef!: TemplateRef<any>;\n\n ngAfterViewInit() {\n // Template ref will be available after view init\n }\n}\n\n@Component({\n selector: 'al-tabs',\n standalone: true,\n imports: [CommonModule, MatTabsModule, AlTabComponent],\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss']\n})\nexport class TabsComponent implements AfterContentInit, AfterViewInit {\n @ContentChildren(AlTabComponent, { descendants: true }) tabComponents!: QueryList<AlTabComponent>;\n @Input() selectedIndex: number = 0;\n @Input() size: 'small' | 'medium' | 'large' = 'medium';\n\n constructor(private cdr: ChangeDetectorRef) { }\n\n ngAfterContentInit() {\n console.log('Tab components found:', this.tabComponents?.length || 0);\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit() {\n // Set the selected tab based on selectedIndex or selected property\n if (this.tabComponents && this.tabComponents.length > 0) {\n this.tabComponents.forEach((tab, index) => {\n if (tab.selected || index === this.selectedIndex) {\n this.selectedIndex = index;\n }\n });\n this.cdr.detectChanges();\n }\n }\n}\n","<mat-tab-group [selectedIndex]=\"selectedIndex\" [class]=\"'tabs-' + size\" mat-align-tabs=\"start\" headerPosition=\"above\">\n <mat-tab *ngFor=\"let tab of tabComponents; let i = index\" [label]=\"tab.labelText\">\n <ng-container [ngTemplateOutlet]=\"tab.templateRef\"></ng-container>\n </mat-tab>\n <!-- Debug info -->\n <div *ngIf=\"!tabComponents || tabComponents.length === 0\" style=\"padding: 20px; color: red;\">\n No tabs found. Tab components: {{ tabComponents?.length || 0 }}\n </div>\n</mat-tab-group>\n","import { NgModule } from '@angular/core';\nimport { TabsComponent } from './tabs.component';\n\n@NgModule({\n imports: [TabsComponent],\n exports: [TabsComponent]\n})\nexport class TabsModule { }\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n Optional,\n ContentChild,\n AfterContentInit,\n ElementRef\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n MatDialogModule,\n MatDialogRef\n}\n\n from '@angular/material/dialog';\n\nimport {\n MatButtonModule\n}\n\n from '@angular/material/button';\n\nimport {\n MatIconModule\n}\n\n from '@angular/material/icon';\n\nimport {\n ButtonComponent\n}\n\n from '../button/button.component';\n\nimport {\n IconButtonComponent\n}\n\n from '../icon-button/icon-button.component';\n\n@Component({\n selector: 'al-modal',\n standalone: true,\n imports: [CommonModule, MatDialogModule, MatButtonModule, MatIconModule, ButtonComponent, IconButtonComponent],\n templateUrl: './shared-popup-modal.component.html',\n styleUrls: ['./shared-popup-modal.component.scss']\n}\n\n) export class ModalComponent implements AfterContentInit {\n @Input() titleText: string = '';\n @Input() userMessage: string = '';\n @Input() leftIcon: string = '';\n @Input() rightIcon: string = '';\n @Input() closeIcon: boolean = true;\n @Input() showHeader: boolean = true;\n @Input() cancelLabel: string = 'Cancel';\n @Input() submitLabel: string = 'Submit';\n @Input() cancelCategory: string = 'error';\n @Input() submitCategory: string = 'green';\n @Input() buttonSize: string = 'base';\n @Input() cancelIcon: string = '';\n @Input() submitIcon: string = '';\n @Input() showCancelButton: boolean = true;\n @Input() showSubmitButton: boolean = true;\n @Input() showFooter: boolean = true;\n @Input() buttonAlignment: 'left' | 'center' | 'right' = 'center';\n @Input() messageAlignment: 'left' | 'center' | 'right' = 'left';\n @Input() useCustomHeader: boolean = false;\n @Input() customHeaderTitle: string = '';\n @Input() customHeaderDescription: string = '';\n @Input() customHeaderIcon: string = '';\n @Input() customActionLabel: string = '';\n @Input() customActionIcon: string = '';\n @Input() customActionRightIcon: string = '';\n // Templating guide text and link can be passed from the main project\n @Input() templatingGuidePrefix: string = 'Click here to see our ';\n @Input() templatingGuideLabel: string = 'Templating guide';\n @Input() templatingGuideHref: string = '#';\n @Input() modalType: 'generic' | 'feedback' = 'generic';\n @Input() feedbackVariant: 'success' | 'warning' | 'error' = 'success';\n // Optional single icon override for feedback modal (Material icon name)\n @Input() feedbackIcon: string = '';\n\n @Output() cancel = new EventEmitter<void>();\n @Output() submit = new EventEmitter<void>();\n @Output() close = new EventEmitter<void>();\n // Emitted when the custom action button in the Mega Header is clicked\n @Output() requestTemplate = new EventEmitter<void>();\n @Output() onHover = new EventEmitter<Event>();\n @Output() onMouseLeave = new EventEmitter<Event>();\n @Output() optionSelect = new EventEmitter<any>();\n\n hasProjectedContent: boolean = false;\n\n constructor(@Optional() public dialogRef: MatDialogRef<ModalComponent>, private elementRef: ElementRef) { }\n\n // Getter to determine if this should display as a generic modal\n get isGenericModal(): boolean {\n return this.modalType === 'generic' || this.modalType === 'feedback';\n }\n\n // Visibility helpers for footer actions\n get showCancelAction(): boolean {\n const hasLabel = (this.cancelLabel ?? '').toString().trim().length > 0;\n return this.showFooter && this.showCancelButton && hasLabel;\n }\n\n get showSubmitAction(): boolean {\n const hasLabel = (this.submitLabel ?? '').toString().trim().length > 0;\n return this.showFooter && this.showSubmitButton && hasLabel;\n }\n\n // Getter to determine if this should display as success no header modal\n get isSuccessNoHeaderModal(): boolean {\n return this.modalType === 'feedback';\n }\n\n // Get default message based on feedback variant\n getDefaultMessage(): string {\n switch (this.feedbackVariant) {\n case 'success':\n return 'Operation completed successfully.';\n case 'warning':\n return 'Please review the information before proceeding.';\n case 'error':\n return 'Something went wrong. Please try again.';\n default:\n return 'Operation completed successfully.';\n }\n }\n\n ngAfterContentInit() {\n // Check if there's any projected content\n const contentElement = this.elementRef.nativeElement.querySelector('ng-content');\n this.hasProjectedContent = contentElement && contentElement.children.length > 0;\n }\n\n onCancel() {\n this.cancel.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('cancel');\n }\n }\n\n onSubmit() {\n this.submit.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('submit');\n }\n }\n\n onRequestTemplate() {\n this.requestTemplate.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('requestTemplate');\n }\n }\n\n onClose() {\n this.close.emit();\n\n if (this.dialogRef) {\n this.dialogRef.close('close');\n }\n }\n}\n","<div class=\"modal-container\">\n <!-- Feedback Modal Type - Success, Warning, or Error -->\n <div *ngIf=\"modalType === 'feedback'\" class=\"modal-body\">\n <div mat-dialog-content>\n <div style=\"display:flex;flex-direction:column;align-items:center;gap:16px;padding-top:8px;\">\n <!-- Feedback Icon (hardcoded by variant, optional single override via feedbackIcon) -->\n <mat-icon *ngIf=\"feedbackIcon\" class=\"feedback-icon\" [ngClass]=\"{\n 'success': feedbackVariant === 'success',\n 'warning': feedbackVariant === 'warning',\n 'error': feedbackVariant === 'error'\n }\">{{ feedbackIcon }}</mat-icon>\n <mat-icon *ngIf=\"!feedbackIcon && feedbackVariant === 'success'\"\n class=\"feedback-icon success\">check_circle</mat-icon>\n <mat-icon *ngIf=\"!feedbackIcon && feedbackVariant === 'warning'\"\n class=\"feedback-icon warning\">warning</mat-icon>\n <mat-icon *ngIf=\"!feedbackIcon && feedbackVariant === 'error'\" class=\"feedback-icon error\">error</mat-icon>\n\n <div style=\"color:#3c4553;font-weight:600;\">{{ userMessage || getDefaultMessage() }}</div>\n </div>\n </div>\n\n <div *ngIf=\"showFooter\" mat-dialog-actions class=\"modal-actions\"\n [style.justify-content]=\"buttonAlignment === 'left' ? 'flex-start' : buttonAlignment === 'right' ? 'flex-end' : 'center'\">\n <al-button *ngIf=\"showSubmitAction\" [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"submitLabel || 'Ok'\" [leftIcon]=\"submitIcon\" [rightIcon]=\"''\" [dataTestId]=\"'submit-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onSubmit()\"></al-button>\n </div>\n </div>\n\n <!-- Regular Modal for Generic Type -->\n <div *ngIf=\"modalType !== 'feedback'\">\n <!-- Default Header -->\n <h2 *ngIf=\"!useCustomHeader && showHeader\" mat-dialog-title class=\"modal-title\">\n <span class=\"title-content\">\n <mat-icon *ngIf=\"leftIcon\" class=\"title-icon\">{{ leftIcon }}</mat-icon>\n {{ titleText }}\n <mat-icon *ngIf=\"rightIcon\" class=\"title-icon\">{{ rightIcon }}</mat-icon>\n </span>\n <al-icon-button *ngIf=\"closeIcon\" [icon]=\"'close'\" [iconOutlined]=\"false\" [color]=\"'#ffffff'\" [category]=\"'blue'\"\n [size]=\"'base'\" [disabled]=\"false\" (onClick)=\"onClose()\" [dataTestId]=\"'close-btn'\"></al-icon-button>\n </h2>\n\n <!-- Custom Header -->\n <div *ngIf=\"useCustomHeader && showHeader\" class=\"custom-header\">\n <!-- Left side content -->\n <div class=\"custom-header-left\">\n <!-- Icon and Title -->\n <div class=\"custom-header-title-section\">\n <div *ngIf=\"customHeaderIcon\" class=\"custom-header-icon\">\n <span>{{ customHeaderIcon }}</span>\n </div>\n <h2 class=\"custom-header-title\">{{ customHeaderTitle }}</h2>\n </div>\n\n <!-- Description paragraph -->\n <p class=\"custom-header-description\">{{ customHeaderDescription }}</p>\n\n <!-- Templating guide link/text -->\n <span class=\"templating-guide-prefix\">{{ templatingGuidePrefix }}</span>\n <a class=\"templating-guide-link\" [href]=\"templatingGuideHref\">{{ templatingGuideLabel }}</a>\n <span class=\"templating-guide-suffix\">.</span>\n </div>\n\n <!-- Right side content -->\n <div class=\"custom-header-right\">\n <!-- Close button -->\n <al-icon-button *ngIf=\"closeIcon\" class=\"custom-close\" [icon]=\"'close'\" [iconOutlined]=\"false\"\n [color]=\"'#ffffff'\" [category]=\"'blue'\" [size]=\"'base'\" [disabled]=\"false\" (onClick)=\"onClose()\"\n [dataTestId]=\"'close-btn'\"></al-icon-button>\n\n <!-- Action button -->\n <al-button [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"customActionLabel\" [leftIcon]=\"customActionIcon\" [rightIcon]=\"customActionRightIcon\"\n [dataTestId]=\"'custom-action-btn'\" [hasDropDown]=\"false\" [dropdownItems]=\"[]\"\n (onClick)=\"onRequestTemplate()\"></al-button>\n </div>\n </div>\n\n <div class=\"modal-body\">\n <div mat-dialog-content>\n <p *ngIf=\"userMessage && !hasProjectedContent\" class=\"modal-message\" [style.text-align]=\"messageAlignment\">{{\n userMessage }}</p>\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"showFooter\" mat-dialog-actions class=\"modal-actions\"\n [style.justify-content]=\"buttonAlignment === 'left' ? 'flex-start' : buttonAlignment === 'right' ? 'flex-end' : 'center'\">\n <al-button *ngIf=\"showCancelAction\" [category]=\"cancelCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"cancelLabel\" [leftIcon]=\"cancelIcon\" [rightIcon]=\"''\" [dataTestId]=\"'cancel-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onCancel()\"></al-button>\n\n <al-button *ngIf=\"showSubmitAction\" [category]=\"submitCategory\" [size]=\"buttonSize\" [iconOutlined]=\"false\"\n [labelText]=\"submitLabel\" [leftIcon]=\"submitIcon\" [rightIcon]=\"''\" [dataTestId]=\"'submit-btn'\"\n [hasDropDown]=\"false\" [dropdownItems]=\"[]\" (onClick)=\"onSubmit()\"></al-button>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalComponent } from './shared-popup-modal.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n ModalComponent\n ],\n exports: [ModalComponent],\n})\nexport class SharedPopupModalModule { }\n","import {\n CommonModule\n}\n\nfrom '@angular/common';\n\nimport {\n Component,\n Input,\n TemplateRef,\n ContentChild\n}\n\nfrom '@angular/core';\n\nimport {\n MatTooltipModule\n}\n\nfrom '@angular/material/tooltip';\n\n@Component( {\n selector: 'al-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n imports: [CommonModule, MatTooltipModule],\n standalone: true,\n }\n\n) export class TooltipComponent {\n @Input() message: string='';\n @Input() header: string='';\n @Input() body: string='';\n @Input() position: 'left'| 'right'| 'above'| 'below'| 'before'| 'after'='below';\n @Input() disabled: boolean=false;\n @Input() dataTestId: string='';\n\n @ContentChild('tooltipContent') tooltipContent?: TemplateRef<any>;\n\n getTooltipContent(): string {\n if (this.header && this.body) {\n return `$ {\n this.header\n }\n\n \\n$ {\n this.body\n }\n\n `;\n }\n\n return this.message || '';\n }\n}","<ng-container>\n <div [matTooltip]=\"getTooltipContent()\" [matTooltipPosition]=\"position\" [matTooltipDisabled]=\"disabled\"\n [attr.data-test-id]=\"dataTestId\" class=\"al-tooltip-wrapper\">\n <ng-content></ng-content>\n </div>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TooltipComponent } from './tooltip.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, TooltipComponent],\n exports: [TooltipComponent],\n})\nexport class TooltipModule { }\n","import {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n Component,\n Input,\n ViewEncapsulation\n}\n\n from '@angular/core';\n\ntype TypographyVariant = | 'font-text-5xl' | 'font-text-5xl-medium' | 'font-text-5xl-bold'\n | 'font-text-4xl' | 'font-text-4xl-medium' | 'font-text-4xl-bold'\n | 'font-text-3xl' | 'font-text-3xl-medium' | 'font-text-3xl-bold'\n | 'font-text-2xl' | 'font-text-2xl-medium' | 'font-text-2xl-bold'\n | 'font-text-xl' | 'font-text-xl-medium' | 'font-text-xl-bold'\n | 'font-text-lg' | 'font-text-lg-medium' | 'font-text-lg-bold'\n | 'font-text-base' | 'font-text-base-medium' | 'font-text-base-bold'\n | 'font-text-sm' | 'font-text-sm-medium' | 'font-text-sm-bold'\n | 'font-text-xs' | 'font-text-xs-medium' | 'font-text-xs-bold';\n\ntype TypographyWeight = 'light' | 'regular' | 'medium' | 'semibold' | 'bold';\n\ntype LineHeight = 'none' | 'tight' | 'normal';\n\ntype LetterSpacing = 'normal' | 'wide' | 'wider';\n\ntype TextDecoration = 'none' | 'underline' | 'italic' | 'strike';\n\n@Component({\n selector: 'al-new-typography',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './new-typography.component.html',\n styleUrls: ['./new-typography.component.scss'],\n // Expose the typography utility classes globally when this component is used\n encapsulation: ViewEncapsulation.None,\n}\n\n) export class NewTypographyComponent {\n /** The textual content to render. */\n @Input() text: string = 'The quick brown fox';\n /** Which semantic tag to render as. */\n @Input() tag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' = 'p';\n /** Typography variant selecting size/line-height/letter-spacing. */\n @Input() variant: TypographyVariant = 'font-text-base';\n /** Font weight to apply on top of the variant. */\n @Input() weight: TypographyWeight = 'regular';\n\n /** Line height variant to apply. */\n @Input() lineHeight: LineHeight = 'normal';\n\n /** Letter spacing variant to apply. */\n @Input() letterSpacing: LetterSpacing = 'normal';\n\n /** Text decoration to apply. */\n @Input() textDecoration: TextDecoration = 'none';\n\n /** Whether to apply font-size (default: true) */\n @Input() enableFontSize: boolean = true;\n\n /** Whether to apply font-weight (default: true) */\n @Input() enableFontWeight: boolean = true;\n\n /** Whether to apply line-height (default: true) */\n @Input() enableLineHeight: boolean = true;\n\n /** Whether to apply letter-spacing (default: true) */\n @Input() enableLetterSpacing: boolean = true;\n\n /** Optional data-test-id for QA/testing */\n @Input() dataTestId?: string;\n\n get classList(): string {\n // All variants are now combined classes (start with 'font-text-')\n // But we still need to add additional classes for weight, line-height, letter-spacing, and text-decoration\n const baseClass = this.variant;\n const weightClass = this.enableFontWeight ? `weight-${this.weight}` : '';\n const lineHeightClass = this.enableLineHeight ? `line-height-${this.lineHeight}` : '';\n const letterSpacingClass = this.enableLetterSpacing ? `letter-spacing-${this.letterSpacing}` : '';\n const textDecorationClass = `text-decoration-${this.textDecoration}`;\n return `${baseClass} ${weightClass} ${lineHeightClass} ${letterSpacingClass} ${textDecorationClass}`.trim();\n }\n}\n","<ng-container [ngSwitch]=\"tag\">\n <h1 *ngSwitchCase=\"'h1'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h1>\n <h2 *ngSwitchCase=\"'h2'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h2>\n <h3 *ngSwitchCase=\"'h3'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h3>\n <h4 *ngSwitchCase=\"'h4'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h4>\n <h5 *ngSwitchCase=\"'h5'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h5>\n <h6 *ngSwitchCase=\"'h6'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</h6>\n <p *ngSwitchCase=\"'p'\" [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</p>\n <span *ngSwitchDefault [attr.data-test-id]=\"dataTestId\" [class]=\"classList\">{{ text }}</span>\n</ng-container>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FieldPlaceholderComponent } from './field-placeholder.component';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule, FieldPlaceholderComponent],\n exports: [FieldPlaceholderComponent],\n})\nexport class FieldPlaceholderModule { }\n","import {\n NgModule\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n ResponsiveColumnsComponent\n}\n\n from './responsive-columns.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResponsiveColumnsComponent],\n exports: [ResponsiveColumnsComponent],\n}\n\n) export class ResponsiveColumnsModule { }\n","import {\n Component,\n Input,\n Output,\n EventEmitter\n}\n\n from '@angular/core';\n\nimport {\n CommonModule\n}\n\n from '@angular/common';\n\nimport {\n FieldPlaceholderComponent\n}\n\n from '../field-placeholder/field-placeholder.component';\n\nimport {\n ButtonComponent\n}\n\n from '../button/button.component';\n\nimport {\n LoaderComponent,\n LoaderStatus\n}\n\n from '../loader/loader.component';\n\nimport {\n MatTooltipModule\n}\n\n from '@angular/material/tooltip';\n\nexport interface ResumeEntry {\n companyName?: string;\n institution?: string;\n jobTitle?: string;\n courseName?: string;\n startDate?: string;\n endDate?: string;\n isPresent?: boolean;\n city?: string;\n region?: string;\n country?: string;\n descriptions?: string[];\n rightSideItems?: string[];\n}\n\n@Component({\n selector: 'al-resume-entries',\n standalone: true,\n imports: [CommonModule, FieldPlaceholderComponent, ButtonComponent, LoaderComponent, MatTooltipModule],\n templateUrl: './resume-entries.component.html',\n styleUrls: ['./resume-entries.component.scss'],\n}\n\n) export class ResumeEntriesComponent {\n @Input() entries: ResumeEntry[] = [];\n @Input() showHeader: boolean = true;\n @Input() showDescriptionLabel: boolean = true;\n /** When false, hides Company/Institution field entirely */\n @Input() showCompany: boolean = true;\n /** When false, hides Job Title/Course Name field entirely */\n @Input() showJobTitle: boolean = true;\n /** When false, hides the date column (start/end/present) entirely */\n @Input() showDates: boolean = true;\n /** When false, hides location fields (City, Region, Country) entirely */\n @Input() showLocation: boolean = true;\n /** When true, displays a timeline line with dot on the left side of each entry */\n @Input() showTimeline: boolean = false;\n /** When true, displays the Re-apply/Undo button at the end of each entry */\n @Input() showReapplyButton: boolean = true;\n /** When true, displays a loader in place of the description section */\n @Input() showLoader: boolean = false;\n /** When true, loader replaces the entire entry; when false, loader only replaces the description section */\n @Input() loaderForAllEntries: boolean = false;\n /** Loader status - can be 'analyzing', 'gathering', 'processing', 'applying', or 'done' */\n @Input() loaderStatus: LoaderStatus = 'processing';\n /** Loader size - can be 'small', 'medium', or 'large' */\n @Input() loaderSize: 'small' | 'medium' | 'large' = 'medium';\n /** Array of skills to display in the skill section */\n @Input() skills?: string[];\n /** Tooltip message for Company/Institution field */\n @Input() companyTooltip?: string;\n /** Tooltip message for Job Title/Course Name field */\n @Input() jobTitleTooltip?: string;\n /** Tooltip message for Date fields */\n @Input() dateTooltip?: string;\n /** Tooltip message for Location fields */\n @Input() locationTooltip?: string;\n /** Tooltip message for Description fields */\n @Input() descriptionTooltip?: string;\n /** Tooltip position - can be 'left', 'right', 'above', 'below', 'before', or 'after' */\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n\n /** Event emitted when the reapply button is clicked for a specific entry */\n @Output() reapplyClick = new EventEmitter<{\n entry: ResumeEntry;\n index: number\n }\n\n >();\n\n /** Event emitted when the undo button is clicked for a specific entry */\n @Output() undoClick = new EventEmitter<{\n entry: ResumeEntry;\n index: number\n }\n\n >();\n\n // Track which entries have been reapplied (show undo button)\n reappliedEntries = new Set<number>();\n\n onReapplyClick(entry: ResumeEntry, index: number) {\n this.reappliedEntries.add(index);\n\n this.reapplyClick.emit({\n entry, index\n }\n\n );\n }\n\n onUndoClick(entry: ResumeEntry, index: number) {\n this.reappliedEntries.delete(index);\n\n this.undoClick.emit({\n entry, index\n }\n\n );\n }\n\n isReapplied(index: number): boolean {\n return this.reappliedEntries.has(index);\n }\n}\n","<div class=\"resume-entries-container\">\n <div *ngFor=\"let entry of entries; let i = index\" class=\"resume-entry\" [class.with-timeline]=\"showTimeline\">\n <div *ngIf=\"showLoader && loaderForAllEntries\" class=\"entry-loader-container\"><al-loader [status]=\"loaderStatus\"\n [size]=\"loaderSize\" [showText]=\"true\" [dataTestId]=\"'entry-' + i + '-loader'\"></al-loader></div><ng-container\n *ngIf=\"!showLoader || !loaderForAllEntries\">\n <div *ngIf=\"showTimeline\" class=\"timeline-indicator\">\n <div class=\"timeline-dot\"></div>\n <div class=\"timeline-line\"></div>\n </div>\n <div class=\"resume-entry-content\">\n <div *ngIf=\"showHeader\" class=\"entry-header\">\n <div class=\"header-left\"><ng-container\n *ngIf=\"(entry.companyName || entry.institution) && showCompany; else titleTop\">\n <div *ngIf=\"showCompany\" class=\"mobile-order-2\" [matTooltip]=\"companyTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!companyTooltip\"><lib-field-placeholder\n [value]=\"entry.companyName || entry.institution\" [placeholder]=\"'Company Name / Institution'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-company'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div *ngIf=\"showJobTitle\" class=\"mobile-order-3\" [matTooltip]=\"jobTitleTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!jobTitleTooltip\"><lib-field-placeholder\n [value]=\"entry.jobTitle || entry.courseName\" [placeholder]=\"'Job title / Course name'\"\n valueClass=\"font-title-text\" [testId]=\"'entry-' + i + '-title'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n </ng-container><ng-template #titleTop>\n <div *ngIf=\"showJobTitle\" class=\"mobile-order-3\" [matTooltip]=\"jobTitleTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!jobTitleTooltip\"><lib-field-placeholder\n [value]=\"entry.jobTitle || entry.courseName\" [placeholder]=\"'Job title / Course name'\"\n valueClass=\"font-title-text\" [testId]=\"'entry-' + i + '-title'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n <div *ngIf=\"showCompany\" class=\"mobile-order-2\" [matTooltip]=\"companyTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!companyTooltip\"><lib-field-placeholder\n [value]=\"entry.companyName || entry.institution\" [placeholder]=\"'Company Name / Institution'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-company'\"\n [compact]=\"true\"></lib-field-placeholder></div>\n </ng-template></div>\n <div class=\"header-right\">\n <div class=\"date-range mobile-order-1\" *ngIf=\"showDates\" [matTooltip]=\"dateTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!dateTooltip\"><ng-container\n *ngIf=\"entry.startDate; else endOnly\"><lib-field-placeholder [value]=\"entry.startDate\"\n [placeholder]=\"'Start Date'\" valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-start-date'\"\n [compact]=\"true\"></lib-field-placeholder><span class=\"date-separator\">-</span><lib-field-placeholder\n [value]=\"entry.isPresent ? 'Present' : entry.endDate\" [placeholder]=\"'End Date'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-end-date'\"\n [compact]=\"true\"></lib-field-placeholder></ng-container><ng-template #endOnly><lib-field-placeholder\n [value]=\"entry.isPresent ? 'Present' : entry.endDate\" [placeholder]=\"'End Date'\"\n valueClass=\"font-text-lg-bold\" [testId]=\"'entry-' + i + '-end-date'\"\n [compact]=\"true\"></lib-field-placeholder></ng-template></div>\n <div class=\"location-row mobile-order-4\" *ngIf=\"showLocation\" [matTooltip]=\"locationTooltip\"\n [matTooltipPosition]=\"tooltipPosition\" [matTooltipDisabled]=\"!locationTooltip\"><lib-field-placeholder\n [value]=\"entry.city\" [placeholder]=\"'City'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-city'\" [compact]=\"true\"></lib-field-placeholder><lib-field-placeholder\n [value]=\"entry.region\" [placeholder]=\"'Region'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-region'\" [compact]=\"true\"></lib-field-placeholder><lib-field-placeholder\n [value]=\"entry.country\" [placeholder]=\"'Country'\" valueClass=\"font-location-text\"\n [testId]=\"'entry-' + i + '-country'\" [compact]=\"true\"></lib-field-placeholder></div>\n </div>\n </div>\n <div class=\"descriptions-container\">\n <div *ngIf=\"showLoader && !loaderForAllEntries\" class=\"loader-container\"><al-loader [status]=\"loaderStatus\"\n [size]=\"loaderSize\" [showText]=\"true\" [dataTestId]=\"'entry-' + i + '-loader'\"></al-loader></div>\n <div *ngIf=\"!showLoader || loaderForAllEntries\">\n <div *ngFor=\"let desc of entry.descriptions; let descIndex = index\" class=\"description-item\"\n [matTooltip]=\"descriptionTooltip\" [matTooltipPosition]=\"tooltipPosition\"\n [matTooltipDisabled]=\"!descriptionTooltip\"><label *ngIf=\"showDescriptionLabel\"\n class=\"description-label\">Description </label><lib-field-placeholder [value]=\"desc\"\n [placeholder]=\"'Missing item'\" [padded]=\"true\" valueClass=\"font-text-base\"\n [testId]=\"'entry-' + i + '-desc-' + descIndex\"></lib-field-placeholder></div>\n </div>\n <div class=\"reapply-button-container\" *ngIf=\"showReapplyButton\"><al-button *ngIf=\"!isReapplied(i)\"\n [label]=\"'Re-apply'\" [buttonType]=\"'icon-label'\" [leftIcon]=\"'refresh'\" [category]=\"'gradient'\"\n [size]=\"'xs'\" [dataTestId]=\"'entry-' + i + '-reapply'\"\n (onClick)=\"onReapplyClick(entry, i)\"></al-button><al-button *ngIf=\"isReapplied(i)\" [label]=\"'Undo'\"\n [buttonType]=\"'icon-label'\" [leftIcon]=\"'undo'\" [category]=\"'grey'\" [size]=\"'xs'\"\n [dataTestId]=\"'entry-' + i + '-undo'\" (onClick)=\"onUndoClick(entry, i)\"></al-button></div>\n <hr *ngIf=\"i < entries.length - 1\" class=\"entry-separator\" [class.with-timeline-separator]=\"showTimeline\" />\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"resume-entry-projection\"><ng-content></ng-content></div>\n <div *ngIf=\"skills && skills.length > 0\" class=\"skill-section-common\">\n <div class=\"skill-list-items\">\n <ul>\n <li *ngFor=\"let skill of skills\" class=\"list-items\">{{ skill }}</li>\n </ul>\n </div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ResumeEntriesComponent } from './resume-entries.component';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, ResumeEntriesComponent],\n exports: [ResumeEntriesComponent],\n})\nexport class ResumeEntriesModule { }\n\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output\n}\n\n from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\nimport {\n MatIconModule,\n MatIconRegistry\n} from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport interface IconConfig {\n display: boolean;\n title: string;\n}\n\nexport interface RequiredIconConfig {\n handle: IconConfig;\n edit: IconConfig;\n search: IconConfig;\n}\n\n@Component({\n selector: 'app-toolbar',\n standalone: true,\n imports: [CommonModule, MatIconModule],\n templateUrl: './app-toolbar.component.html',\n styleUrls: ['./app-toolbar.component.scss']\n}\n\n) export class AppToolbarComponent implements OnInit {\n @Input() variant: string = 'default';\n\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // Get base path dynamically\n const basePath = this.getBasePath();\n\n // Register the Move.svg icon\n this.iconRegistry.addSvgIcon(\n 'move',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Move.svg`)\n );\n // Register the Edit.svg icon\n this.iconRegistry.addSvgIcon(\n 'edit',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/edit.svg`)\n );\n // Register the Search.svg icon\n this.iconRegistry.addSvgIcon(\n 'search',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/search.svg`)\n );\n }\n\n /**\n * Dynamically determines the base path for assets\n * Handles both root deployment and subdirectory deployment (e.g., /allsorter-lib/)\n */\n private getBasePath(): string {\n // Check if we're in a browser environment\n if (typeof document === 'undefined') {\n return '';\n }\n\n // Get base href from document\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n // Remove trailing slash and return\n return baseHref.replace(/\\/$/, '');\n }\n\n // Fallback: extract base path from current location\n const pathname = window.location.pathname;\n // Check if pathname contains a known subdirectory pattern\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n // Default to root\n return '';\n }\n\n ngOnInit() {\n // Component initialization if needed\n }\n\n private _overrideConfig: Partial<RequiredIconConfig> = {}\n\n ;\n\n @Input() set overrideConfig(val: Partial<RequiredIconConfig>) {\n this._overrideConfig = val;\n\n this.requiredIcon = {\n ...this._defaultRequiredIcon,\n ...val\n }\n\n ;\n }\n\n get overrideConfig() {\n return this._overrideConfig;\n }\n\n private _defaultRequiredIcon: RequiredIconConfig = {\n handle: {\n display: false, title: 'Drag'\n }\n\n ,\n edit: {\n display: true, title: 'Edit'\n }\n\n ,\n search: {\n display: true, title: 'Search'\n }\n }\n\n ;\n\n requiredIcon: RequiredIconConfig = {\n ...this._defaultRequiredIcon\n }\n\n ;\n @Input() content: string = \"\";\n @Output() editEvent = new EventEmitter<string>();\n @Input() isExtractionAnalysisActive: boolean = false;\n @Input() showSearch: boolean = true;\n\n\n editSelectedSection() {\n this.editEvent.emit(this.content);\n }\n\n sendMessage() {\n // Simulate sending a message or updating query param\n // Implement as needed\n }\n}\n","<div class=\"toolbar-container\">\n <div class=\"icon-wrapper\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--drag\"\n [attr.aria-label]=\"requiredIcon.handle.title\" [attr.title]=\"requiredIcon.handle.title\"\n (click)=\"$event.stopPropagation()\"><mat-icon svgIcon=\"move\" class=\"move-icon\"></mat-icon></button></div>\n <div class=\"toolbar-icons\">\n <div class=\"icon-wrapper\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--edit\"\n [attr.aria-label]=\"requiredIcon.edit.title\" [attr.title]=\"requiredIcon.edit.title\"\n (click)=\"editSelectedSection()\"><mat-icon svgIcon=\"edit\" class=\"edit-icon\"></mat-icon></button></div>\n <div class=\"icon-wrapper\"><button type=\"button\" class=\"toolbar-icon toolbar-icon--search\"\n [attr.aria-label]=\"requiredIcon.search.title\" [attr.title]=\"requiredIcon.search.title\"\n (click)=\"$event.stopPropagation(); sendMessage()\"><mat-icon svgIcon=\"search\"\n class=\"search-icon\"></mat-icon></button></div>\n </div>\n</div>","import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nexport interface AppToolbarRightIconConfig {\n display: boolean;\n title: string;\n isHidden?: boolean;\n}\n\nexport interface AppToolbarRightRequiredIconConfig {\n eye: AppToolbarRightIconConfig;\n sr: AppToolbarRightIconConfig;\n checkbox: AppToolbarRightIconConfig;\n}\n\n@Component({\n selector: 'app-toolbar-right',\n templateUrl: './app-toolbar-right.component.html',\n styleUrls: ['./app-toolbar-right.component.scss']\n})\n\nexport class AppToolbarRightComponent implements OnInit, OnChanges {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n // Get base path dynamically\n const basePath = this.getBasePath();\n\n // Register the Subrole.svg icon (using Vector.svg as placeholder - update path if you have a specific subrole icon)\n this.iconRegistry.addSvgIcon(\n 'subrole',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Vector.svg`)\n );\n }\n\n /**\n * Dynamically determines the base path for assets\n * Handles both root deployment and subdirectory deployment (e.g., /allsorter-lib/)\n */\n private getBasePath(): string {\n // Check if we're in a browser environment\n if (typeof document === 'undefined') {\n return '';\n }\n\n // Get base href from document\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n // Remove trailing slash and return\n return baseHref.replace(/\\/$/, '');\n }\n\n // Fallback: extract base path from current location\n const pathname = window.location.pathname;\n // Check if pathname contains a known subdirectory pattern\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n // Default to root\n return '';\n }\n @Input() alwaysShowIcons = false;\n @Input() checked: boolean = false;\n @Input() overrideConfig: Partial<AppToolbarRightRequiredIconConfig> = {};\n @Input() currentObj: Partial<any> = {};\n\n private _showIcons = false;\n isVisible = true;\n\n requiredIcon: AppToolbarRightRequiredIconConfig = {\n eye: {\n display: false,\n title: 'Hide Section',\n isHidden: false\n },\n sr: {\n display: false,\n title: 'Set as Subrole'\n },\n checkbox: {\n display: false,\n title: 'Select'\n }\n };\n\n @Output() checkboxChange = new EventEmitter<boolean>();\n @Output() visibilityToggle = new EventEmitter<boolean>();\n @Output() hideShowEvent = new EventEmitter<any>();\n @Output() checkboxEvent = new EventEmitter<object>();\n @Output() setSubroleEvent = new EventEmitter<any>();\n\n ngOnInit(): void {\n console.log(\"this.overrideConfig\", JSON.stringify(this.overrideConfig));\n this.requiredIcon = {\n ...this.requiredIcon,\n ...this.overrideConfig\n };\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['overrideConfig']) {\n this.requiredIcon = {\n ...this.requiredIcon,\n ...this.overrideConfig\n };\n }\n }\n\n get showIcons(): boolean {\n return this.alwaysShowIcons || this._showIcons;\n }\n\n get eyeIcon(): string {\n return this.isVisible ? 'visibility' : 'visibility_off';\n }\n get eyeLabel(): string {\n return this.isVisible ? 'Show' : 'Hide';\n }\n get eyeTitle(): string {\n return this.isVisible ? 'Show content' : 'Hide content';\n }\n\n onCheckboxHover(state: boolean) {\n this._showIcons = state;\n }\n\n onCheckboxChange(checked: boolean) {\n this.checked = checked;\n this.checkboxChange.emit(checked);\n this.checkboxactiveInactiveStatus();\n }\n\n onToggleVisibility() {\n this.isVisible = !this.isVisible;\n this.visibilityToggle.emit(this.isVisible);\n this.showHideSection();\n }\n\n showHideSection() {\n this.currentObj['hidden'] = !this.currentObj['hidden'];\n this.requiredIcon.eye.isHidden = !this.currentObj['hidden'];\n this.hideShowEvent.emit(this.currentObj);\n }\n\n checkboxactiveInactiveStatus() {\n this.checkboxEvent.emit(this.currentObj);\n }\n\n setSubrole() {\n this.setSubroleEvent.emit(!this.currentObj['subrole']);\n }\n}\n\n","<div class=\"toolbar-right-container\">\n <div class=\"icon-wrapper\"><al-checkbox *ngIf=\"requiredIcon.checkbox.display\" [checked]=\"checked\" [showLabels]=\"false\"\n (change)=\"onCheckboxChange($event)\" (mouseenter)=\"onCheckboxHover(true)\"\n (mouseleave)=\"onCheckboxHover(false)\"></al-checkbox></div>\n <div class=\"toolbar-right-icons\" [ngClass]=\"{'always-visible': showIcons}\">\n <div class=\"icon-wrapper\"><button *ngIf=\"requiredIcon.sr.display\" type=\"button\"\n class=\"toolbar-icon toolbar-icon--subrole\" [attr.aria-label]=\"requiredIcon.sr.title\"\n [attr.title]=\"requiredIcon.sr.title\" (click)=\"setSubrole()\"><mat-icon svgIcon=\"subrole\"\n class=\"subrole-icon\"></mat-icon></button></div>\n <div class=\"icon-wrapper\"><al-icon-button *ngIf=\"requiredIcon.eye.display\" [icon]=\"eyeIcon\" size=\"xxl\"\n category=\"grey\" [color]=\"'#6B7280'\" class=\"eye-icon\" [attr.aria-label]=\"eyeLabel\" [attr.title]=\"eyeTitle\"\n (click)=\"onToggleVisibility()\"></al-icon-button></div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppToolbarRightComponent } from './app-toolbar-right.component';\nimport { CheckboxModule } from '../checkbox/checkbox.module';\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [AppToolbarRightComponent],\n imports: [\n CommonModule,\n CheckboxModule,\n IconButtonComponent, // Standalone component\n MatIconModule\n ],\n exports: [AppToolbarRightComponent]\n})\nexport class AppToolbarRightModule { }\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ResponsiveColumnsComponent } from '../responsive-columns/responsive-columns.component';\nimport { ResumeEntriesComponent, ResumeEntry } from '../resume-entries/resume-entries.component';\nimport { AppToolbarComponent, RequiredIconConfig } from '../app-toolbar/app-toolbar.component';\nimport { AppToolbarRightModule } from '../app-toolbar-right/app-toolbar-right.module';\nimport { AppToolbarRightRequiredIconConfig } from '../app-toolbar-right/app-toolbar-right.component';\n\n@Component({\n selector: 'al-experience-section',\n standalone: true,\n imports: [CommonModule, ResponsiveColumnsComponent, ResumeEntriesComponent, AppToolbarComponent, AppToolbarRightModule],\n templateUrl: './experience-section.component.html',\n styleUrls: ['./experience-section.component.scss'],\n})\nexport class ExperienceSectionComponent {\n @Input() entries: ResumeEntry[] = [];\n @Input() showHeader: boolean = true;\n @Input() showDescriptionLabel: boolean = true;\n @Input() showCompany: boolean = true;\n @Input() showJobTitle: boolean = true;\n @Input() showDates: boolean = true;\n @Input() showLocation: boolean = true;\n @Input() showTimeline: boolean = false;\n @Input() showReapplyButton: boolean = true;\n @Input() showLoader: boolean = false;\n @Input() loaderForAllEntries: boolean = false;\n @Input() loaderStatus: 'analyzing' | 'gathering' | 'processing' | 'applying' | 'done' = 'processing';\n @Input() loaderSize: 'small' | 'medium' | 'large' = 'medium';\n @Input() skills?: string[];\n @Input() companyTooltip?: string;\n @Input() jobTitleTooltip?: string;\n @Input() dateTooltip?: string;\n @Input() locationTooltip?: string;\n @Input() descriptionTooltip?: string;\n @Input() tooltipPosition: 'left' | 'right' | 'above' | 'below' | 'before' | 'after' = 'below';\n\n // ResponsiveColumns inputs (optional overrides)\n @Input() gap: string | number = '8px';\n @Input() padding: string | number = 0;\n @Input() leftWidth: string = 'auto';\n @Input() rightWidth: string = 'auto';\n @Input() stackAt: number = 0;\n\n // AppToolbar inputs\n @Input() variant: string = 'default';\n @Input() content: string = '';\n @Input() isExtractionAnalysisActive: boolean = false;\n @Input() showSearch: boolean = true;\n @Input() overrideConfig: Partial<RequiredIconConfig> = {};\n\n // AppToolbar outputs\n @Output() editEvent = new EventEmitter<string>();\n\n // Resume Entries outputs\n @Output() reapplyClick = new EventEmitter<{ entry: ResumeEntry; index: number }>();\n @Output() undoClick = new EventEmitter<{ entry: ResumeEntry; index: number }>();\n\n // AppToolbarRight inputs\n @Input() checked: boolean = false;\n @Input() alwaysShowIcons: boolean = false;\n @Input() overrideConfigRight: Partial<AppToolbarRightRequiredIconConfig> = {};\n @Input() currentObj: Partial<any> = {};\n\n // AppToolbarRight outputs\n @Output() checkboxChange = new EventEmitter<boolean>();\n @Output() visibilityToggle = new EventEmitter<boolean>();\n @Output() hideShowEvent = new EventEmitter<any>();\n @Output() checkboxEvent = new EventEmitter<object>();\n @Output() setSubroleEvent = new EventEmitter<any>();\n\n // AppToolbarRight event handlers\n onCheckboxChange(checked: boolean) {\n this.checkboxChange.emit(checked);\n }\n\n onVisibilityToggle(isVisible: boolean) {\n this.visibilityToggle.emit(isVisible);\n }\n\n onHideShowEvent(obj: any) {\n this.hideShowEvent.emit(obj);\n }\n\n onCheckboxEvent(obj: object) {\n this.checkboxEvent.emit(obj);\n }\n\n onSetSubroleEvent(subrole: any) {\n this.setSubroleEvent.emit(subrole);\n }\n\n // AppToolbar event handler\n onEditEvent(content: string) {\n this.editEvent.emit(content);\n }\n\n // Resume Entries event handler\n onReapplyClick(data: { entry: ResumeEntry; index: number }) {\n this.reapplyClick.emit(data);\n }\n\n onUndoClick(data: { entry: ResumeEntry; index: number }) {\n this.undoClick.emit(data);\n }\n}\n\n\n","<al-responsive-columns [gap]=\"gap\"[padding]=\"padding\"[leftWidth]=\"leftWidth\"[rightWidth]=\"rightWidth\"\n[stackAt]=\"stackAt\"><div left><app-toolbar [variant]=\"variant\"[content]=\"content\"[isExtractionAnalysisActive]=\"isExtractionAnalysisActive\"\n[showSearch]=\"showSearch\"[overrideConfig]=\"overrideConfig\"(editEvent)=\"onEditEvent($event)\"></app-toolbar></div><div center><al-resume-entries [entries]=\"entries\"[showHeader]=\"showHeader\"[showDescriptionLabel]=\"showDescriptionLabel\"\n[showCompany]=\"showCompany\"[showJobTitle]=\"showJobTitle\"[showDates]=\"showDates\"[showLocation]=\"showLocation\"\n[showTimeline]=\"showTimeline\"[showReapplyButton]=\"showReapplyButton\"[showLoader]=\"showLoader\"\n[loaderForAllEntries]=\"loaderForAllEntries\"[loaderStatus]=\"loaderStatus\"[loaderSize]=\"loaderSize\"\n[skills]=\"skills\"[companyTooltip]=\"companyTooltip\"[jobTitleTooltip]=\"jobTitleTooltip\"\n[dateTooltip]=\"dateTooltip\"[locationTooltip]=\"locationTooltip\"[descriptionTooltip]=\"descriptionTooltip\"\n[tooltipPosition]=\"tooltipPosition\"(reapplyClick)=\"onReapplyClick($event)\"(undoClick)=\"onUndoClick($event)\"></al-resume-entries></div><div right><app-toolbar-right [checked]=\"checked\"[alwaysShowIcons]=\"alwaysShowIcons\"[overrideConfig]=\"overrideConfigRight\"\n[currentObj]=\"currentObj\"(checkboxChange)=\"onCheckboxChange($event)\"\n(visibilityToggle)=\"onVisibilityToggle($event)\"(hideShowEvent)=\"onHideShowEvent($event)\"\n(checkboxEvent)=\"onCheckboxEvent($event)\"(setSubroleEvent)=\"onSetSubroleEvent($event)\"></app-toolbar-right></div></al-responsive-columns>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ExperienceSectionComponent } from './experience-section.component';\n\n@NgModule({\n imports: [CommonModule, ExperienceSectionComponent],\n exports: [ExperienceSectionComponent]\n})\nexport class ExperienceSectionModule { }\n\n\n","import { NgModule } from '@angular/core';\nimport { GeneralContainerComponent } from './general-container.component';\n\n@NgModule({\n imports: [GeneralContainerComponent],\n exports: [GeneralContainerComponent],\n})\nexport class GeneralContainerModule { }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AppToolbarComponent } from './app-toolbar.component';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@NgModule({\n imports: [CommonModule, AppToolbarComponent],\n exports: [AppToolbarComponent],\n})\nexport class AppToolbarModule {\n constructor(\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer\n ) {\n const basePath = this.getBasePath();\n\n this.iconRegistry.addSvgIcon(\n 'move',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/Move.svg`)\n );\n this.iconRegistry.addSvgIcon(\n 'edit',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/edit.svg`)\n );\n this.iconRegistry.addSvgIcon(\n 'search',\n this.sanitizer.bypassSecurityTrustResourceUrl(`${basePath}/images/search.svg`)\n );\n }\n\n private getBasePath(): string {\n if (typeof document === 'undefined') {\n return '';\n }\n\n const baseTag = document.querySelector('base');\n if (baseTag && baseTag.getAttribute('href')) {\n const baseHref = baseTag.getAttribute('href') || '/';\n return baseHref.replace(/\\/$/, '');\n }\n\n const pathname = window.location.pathname;\n if (pathname.includes('/allsorter-lib/')) {\n return '/allsorter-lib';\n }\n\n return '';\n }\n}\n\n","/*\n * Public API Surface of allsorter-lib\n */\n\nexport * from './lib/allsorter-lib.service';\nexport * from './lib/allsorter-lib.component';\nexport * from './lib/button/button.component';\nexport * from './lib/button/button.module';\nexport * from './lib/input/input.component';\nexport * from './lib/input/input.module';\nexport * from './lib/resume-header/resume-header.component';\nexport * from './lib/resume-header/resume-header.module';\nexport * from './lib/newresumeheader/newresumeheader.component';\nexport * from './lib/newresumeheader/newresumeheader.module';\nexport * from './lib/loader/loader.component';\nexport * from './lib/loader/loader.module';\nexport * from './lib/candidate-section/candidate-section.component';\nexport * from './lib/candidate-section/candidate-section.module';\nexport * from './lib/checkbox/checkbox.component';\nexport * from './lib/checkbox/checkbox.module';\nexport * from './lib/radio/radio.component';\nexport * from './lib/radio/radio.module';\nexport * from './lib/toggle-buttons/toggle-buttons.component';\nexport * from './lib/toggle-buttons/toggle-buttons.module';\nexport * from './lib/slide-toggle/slide-toggle.component';\nexport * from './lib/slide-toggle/slide-toggle.module';\nexport * from './lib/ai-apply-bar/ai-apply-bar.component';\nexport * from './lib/action-bar-wrapper/action-bar-wrapper.component';\nexport * from './lib/responsive-layout/responsive-layout.component';\nexport * from './lib/responsive-layout/responsive-layout.module';\nexport * from './lib/custom-editor/custom-editor.component';\nexport * from './lib/custom-editor/custom-editor.module';\nexport * from './lib/custom-editor/custom-editor-demo.component';\n\nexport * from './lib/icon-button/icon-button.component';\n\nexport * from './lib/date-range/date-range.component';\nexport * from './lib/date-range/date-range.module';\n\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs.module';\nexport * from './lib/shared-popup-modal/shared-popup-modal.component';\nexport * from './lib/shared-popup-modal/shared-popup-modal.module';\n\nexport * from './lib/tooltip/tooltip.component';\nexport * from './lib/tooltip/tooltip.module';\nexport * from './lib/new-typography/new-typography.component';\n\nexport * from './lib/field-placeholder/field-placeholder.component';\nexport * from './lib/field-placeholder/field-placeholder.module';\nexport * from './lib/responsive-columns/responsive-columns.component';\nexport * from './lib/responsive-columns/responsive-columns.module';\nexport * from './lib/resume-entries/resume-entries.component';\nexport * from './lib/resume-entries/resume-entries.module';\nexport * from './lib/experience-section/experience-section.component';\nexport * from './lib/experience-section/experience-section.module';\nexport * from './lib/general-container/general-container.component';\nexport * from './lib/general-container/general-container.module';\nexport * from './lib/app-toolbar/app-toolbar.component';\nexport * from './lib/app-toolbar/app-toolbar.module';\nexport * from './lib/app-toolbar-right/app-toolbar-right.component';\nexport * from './lib/app-toolbar-right/app-toolbar-right.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i4","i9","i6.CheckboxComponent","i2.FieldPlaceholderComponent","i4.CheckboxComponent","i5.IconButtonComponent","i1.AppToolbarRightComponent"],"mappings":"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"}