@goat-bravos/intern-hub-layout 1.0.5 → 1.2.1

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":"goat-bravos-intern-hub-layout.mjs","sources":["../../../src/libs/layouts/header/header.component.ts","../../../src/libs/layouts/header/header.component.html","../../../src/libs/shared/components/functional-label/functional-label.component.ts","../../../src/libs/shared/components/functional-label/functional-label.component.html","../../../src/libs/layouts/sidebar/sidebar.component.ts","../../../src/libs/layouts/sidebar/sidebar.component.html","../../../src/libs/layouts/main-layout/main-layout.component.ts","../../../src/libs/layouts/main-layout/main-layout.component.html","../../../src/libs/shared/components/button/button-container/button-container.model.ts","../../../src/libs/shared/components/button/button-container/button-container.component.ts","../../../src/libs/shared/components/button/button-container/button-container.component.html","../../../src/libs/shared/components/button/label-button/label-button.component.ts","../../../src/libs/shared/components/button/label-button/label-button.component.html","../../../src/libs/shared/components/input/input-text/input-text.component.ts","../../../src/libs/shared/components/input/input-text/input-text.component.html","../../../src/libs/shared/components/input/input-stepper/input-stepper.component.ts","../../../src/libs/shared/components/input/input-stepper/input-stepper.component.html","../../../src/libs/shared/components/input/input-calendar/input-calendar.component.ts","../../../src/libs/shared/components/input/input-calendar/input-calendar.component.html","../../../src/libs/shared/components/table/table-header/table-header.component.ts","../../../src/libs/shared/components/table/table-header/table-header.component.html","../../../src/libs/shared/components/table/table-body/table-body.component.ts","../../../src/libs/shared/components/table/table-body/table-body.component.html","../../../src/libs/shared/components/approval/approval-list-item/approval-list-item.component.ts","../../../src/libs/shared/components/approval/approval-list-item/approval-list-item.component.html","../../../src/libs/shared/components/approval/approval-list/approval-list.component.ts","../../../src/libs/shared/components/approval/approval-list/approval-list.component.html","../../../src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.ts","../../../src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.html","../../../src/public-api.ts","../../../src/goat-bravos-intern-hub-layout.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'app-header-component',\r\n standalone: true,\r\n\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class HeaderComponent {\r\n \r\n\r\n}","<header class=\"app-header\">\r\n <div class=\"header-left\">\r\n <img class=\"logo\" src=\"FPT-IS-Logo.png\" alt=\"FPT IS Logo\" />\r\n </div>\r\n\r\n <div class=\"header-right\">\r\n <button class=\"header-btn\" aria-label=\"Help\">\r\n <span class=\"icon\">?</span>\r\n </button>\r\n\r\n <button class=\"header-btn notify-btn\" aria-label=\"Notifications\">\r\n <span class=\"icon\">🔔</span>\r\n </button>\r\n\r\n <button class=\"header-btn\" aria-label=\"Settings\">\r\n <span class=\"icon\">⚙️</span>\r\n </button>\r\n\r\n <div class=\"header-user\">\r\n <button class=\"user-btn\">\r\n <img class=\"avatar\" src=\"FPT-IS-Logo.png\" alt=\"User avatar\" />\r\n <span class=\"user-name\">User Name</span>\r\n <span class=\"caret\">▾</span>\r\n </button>\r\n </div>\r\n </div>\r\n</header>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-functional-label',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './functional-label.component.html',\r\n styleUrls: ['./functional-label.component.scss']\r\n})\r\nexport class FunctionalLabelComponent {\r\n @Input() icon?: string;\r\n @Input() content: string = '';\r\n\r\n}\r\n","<div class=\"functional-label\">\r\n <i class=\"{{ icon }}\"></i>\r\n <a href=\"/*\" class=\"color-text-neutral-700\">{{ content }}</a>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FunctionalLabelComponent } from '../../shared/components/functional-label/functional-label.component';\r\n\r\nexport interface SidebarItem {\r\n icon: string;\r\n content: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n standalone: true,\r\n imports: [CommonModule, FunctionalLabelComponent],\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss'],\r\n})\r\nexport class SidebarComponent {\r\n @Input() menuItems: SidebarItem[] = [];\r\n}\r\n","<div class=\"sidebar-wrapper\">\r\n <aside class=\"sidebar\">\r\n @for (item of menuItems; track $index) {\r\n <app-functional-label [icon]=\"item.icon\" [content]=\"item.content\"></app-functional-label>\r\n }\r\n </aside>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\nimport { HeaderComponent } from '../header/header.component';\r\nimport { SidebarComponent, SidebarItem } from '../sidebar/sidebar.component';\r\n\r\n@Component({\r\n selector: 'app-main-layout',\r\n standalone: true,\r\n imports: [CommonModule, RouterOutlet, HeaderComponent, SidebarComponent],\r\n templateUrl: './main-layout.component.html',\r\n styleUrls: ['./main-layout.component.scss'],\r\n})\r\nexport class MainLayoutComponent {\r\n @Input() sidebarItems: SidebarItem[] = [];\r\n}\r\n","<div class=\"web-container\">\r\n <div class=\"main-layout\">\r\n <app-header-component></app-header-component>\r\n\r\n <div class=\"layout-body\">\r\n <div class=\"layout-body-sidebar\">\r\n <app-sidebar [menuItems]=\"sidebarItems\"></app-sidebar>\r\n </div>\r\n\r\n <div class=\"layout-body-content\">\r\n <router-outlet />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","export interface ButtonContainerInterface {\r\n size: ButtonSize;\r\n leftIcon?: string;\r\n rightIcon?: string;\r\n content: string;\r\n event?: string;\r\n fontSize?: string;\r\n color?: string;\r\n backgroundColor?: string;\r\n borderColor?: string;\r\n}\r\n\r\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\r\n\r\nexport interface ButtonSizeConfig {\r\n minWidth: string;\r\n minHeight: string;\r\n fontSize: string;\r\n iconSize: string;\r\n contentWidth: string;\r\n contentHeight: string;\r\n}\r\n\r\nexport const BUTTON_SIZE_MAP: Record<ButtonSize, ButtonSizeConfig> = {\r\n xs: {\r\n minWidth: '47px',\r\n minHeight: '24px',\r\n fontSize: 'var(--font-xs)',\r\n iconSize: '14px',\r\n contentWidth: '32px',\r\n contentHeight: '16px',\r\n },\r\n sm: {\r\n minWidth: '96px',\r\n minHeight: '28px',\r\n fontSize: 'var(--font-sm)',\r\n iconSize: '16px',\r\n contentWidth: '44px',\r\n contentHeight: '20px',\r\n },\r\n md: {\r\n minWidth: '116px',\r\n minHeight: '36px',\r\n fontSize: 'var(--font-sm)',\r\n iconSize: '20px',\r\n contentWidth: '52px',\r\n contentHeight: '20px',\r\n },\r\n lg: {\r\n minWidth: '120px',\r\n minHeight: '44px',\r\n fontSize: 'var(--font-sm)',\r\n iconSize: '20px',\r\n contentWidth: '52px',\r\n contentHeight: '20px',\r\n },\r\n};\r\n\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n ButtonSize,\r\n BUTTON_SIZE_MAP\r\n} from './button-container.model';\r\n\r\n@Component({\r\n selector: 'app-button-container',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './button-container.component.html',\r\n styleUrls: ['./button-container.component.scss']\r\n})\r\nexport class ButtonContainerComponent {\r\n\r\n @Input() size: ButtonSize = 'md';\r\n @Input() content = '';\r\n\r\n @Input() fontSize?: string;\r\n\r\n @Input() leftIcon?: string;\r\n @Input() rightIcon?: string;\r\n\r\n @Input() color = 'var(--brand-100)';\r\n @Input() backgroundColor = 'var(--utility-900)';\r\n @Input() borderColor = 'var(--brand-100)';\r\n\r\n @Output() buttonClick = new EventEmitter<any>();\r\n\r\n get sizeStyle() {\r\n return BUTTON_SIZE_MAP[this.size];\r\n }\r\n\r\n handleClick(): void {\r\n this.buttonClick.emit();\r\n }\r\n}\r\n","<button class=\"button-container\" [style.minWidth]=\"sizeStyle.minWidth\" [style.minHeight]=\"sizeStyle.minHeight\" [style.color]=\"color\"\r\n [style.backgroundColor]=\"backgroundColor\" [style.borderColor]=\"borderColor\" (click)=\"handleClick()\">\r\n \r\n @if(leftIcon){\r\n <i class=\"button-icon\" [style.width]=\"sizeStyle.iconSize\" [style.height]=\"sizeStyle.iconSize\" [style.fontSize]=\"sizeStyle.iconSize\">\r\n {{leftIcon}}\r\n </i>\r\n }\r\n\r\n <span class=\"button-content\" [style.minWidth]=\"sizeStyle.contentWidth\" [style.minHeight]=\"sizeStyle.contentHeight\" \r\n [style.fontSize]=\"fontSize || sizeStyle.fontSize\" [style.color]=\"color\">\r\n {{ content }}\r\n </span>\r\n\r\n @if(rightIcon){\r\n <i class=\"button-icon\" [style.width]=\"sizeStyle.iconSize\" [style.height]=\"sizeStyle.iconSize\" [style.fontSize]=\"sizeStyle.iconSize\" [style.color]=\"color\">\r\n {{rightIcon}}\r\n </i>\r\n }\r\n</button>","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-label-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './label-button.component.html',\n styleUrls: ['./label-button.component.scss'],\n})\nexport class LabelButtonComponent {\n @Input() label: string = '';\n @Input() bgColor: string = '';\n @Input() borderColor: string = '';\n @Input() width: string = '100%';\n @Input() height: string = '28px';\n @Input() textColor: string = 'var(--neutral-100)';\n}\n","<button\n [style.background-color]=\"bgColor\"\n [style.border-color]=\"borderColor\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n class=\"label-button\"\n type=\"button\"\n>\n {{ label }}\n</button>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'app-input-text',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './input-text.component.html',\r\n styleUrls: ['./input-text.component.scss'],\r\n})\r\nexport class InputTextComponent {\r\n @Input() headerInput: string = '';\r\n @Input() placeholder: string = '';\r\n @Input() readonly: boolean = false;\r\n @Input() required: boolean = false;\r\n @Input() width: string = '100%';\r\n @Input() maxLength: number = 0; // 0 = no limit\r\n @Input() showLimit: boolean = false;\r\n @Input() icon: string = '';\r\n @Input() typeInput: string = 'text';\r\n \r\n @Output() valueChange = new EventEmitter<string>();\r\n @Output() iconClick = new EventEmitter<void>();\r\n \r\n private _value: string = '';\r\n\r\n onIconClick(): void {\r\n this.iconClick.emit();\r\n }\r\n \r\n @Input()\r\n set value(val: string) {\r\n this._value = val || '';\r\n }\r\n \r\n get value(): string {\r\n return this._value;\r\n }\r\n \r\n get currentLength(): number {\r\n return this._value?.length || 0;\r\n }\r\n \r\n get limit(): string {\r\n if (!this.showLimit || this.maxLength <= 0) return '';\r\n return `${this.currentLength}/${this.maxLength}`;\r\n }\r\n \r\n onInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n let newValue = input.value;\r\n \r\n // Enforce maxLength if set\r\n if (this.maxLength > 0 && newValue.length > this.maxLength) {\r\n newValue = newValue.substring(0, this.maxLength);\r\n input.value = newValue;\r\n }\r\n \r\n this._value = newValue;\r\n this.valueChange.emit(this._value);\r\n }\r\n}","<div class=\"input-form\">\r\n <div class=\"input-form-content\">\r\n <label class=\"input-form-label\">\r\n <span class=\"label-text\" [class.hidden]=\"!headerInput\">\r\n {{ headerInput }}\r\n @if (required) {\r\n <span class=\"required-mark\">*</span>\r\n }\r\n </span>\r\n <div class=\"input-field-wrapper\">\r\n <input\r\n [type]=\"typeInput\"\r\n class=\"input-form-field\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n [style.width]=\"width\"\r\n [value]=\"value\"\r\n (input)=\"onInput($event)\"\r\n [attr.maxlength]=\"maxLength > 0 ? maxLength : null\"\r\n />\r\n @if (icon) {\r\n <button\r\n type=\"button\"\r\n class=\"input-icon-button\"\r\n [class.clickable]=\"iconClick.observed\"\r\n (click)=\"onIconClick()\"\r\n [attr.aria-label]=\"icon\"\r\n [disabled]=\"!iconClick.observed\"\r\n >\r\n <i [class]=\"icon\" class=\"input-icon\"></i>\r\n </button>\r\n }\r\n </div>\r\n </label>\r\n </div>\r\n <div class=\"limit\" [class.hidden]=\"!(maxLength > 0 && showLimit)\">\r\n <span>{{ limit }}</span>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'app-input-stepper',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './input-stepper.component.html',\r\n styleUrls: ['./input-stepper.component.scss'],\r\n})\r\nexport class InputStepperComponent {\r\n protected readonly componentId = `input-stepper-${Math.random().toString(36).substring(2, 9)}`;\r\n @Input() headerInput: string = '';\r\n @Input() placeholder: string = '';\r\n @Input() readonly: boolean = false;\r\n @Input() required: boolean = false;\r\n @Input() disabled: boolean = false;\r\n @Input() width: string = '100%';\r\n @Input() min: number = 0;\r\n @Input() max: number = 100;\r\n @Input() error: string = '';\r\n @Input() helperText: string = '';\r\n @Input() step: number = 1;\r\n @Input() state: 'default' | 'negative' | 'positive' = 'default';\r\n\r\n @Output() valueChange = new EventEmitter<number>();\r\n\r\n private _value: number = 0;\r\n\r\n @Input()\r\n set value(val: number) {\r\n this._value = val || 0;\r\n }\r\n\r\n get value(): number {\r\n return this._value;\r\n }\r\n\r\n increment(): void {\r\n if (this.readonly) return;\r\n const newValue = this._value + this.step;\r\n if (newValue <= this.max) {\r\n this._value = newValue;\r\n this.valueChange.emit(this._value);\r\n }\r\n }\r\n\r\n decrement(): void {\r\n if (this.readonly) return;\r\n const newValue = this._value - this.step;\r\n if (newValue >= this.min) {\r\n this._value = newValue;\r\n this.valueChange.emit(this._value);\r\n }\r\n }\r\n\r\n onInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n let newValue = Number.parseInt(input.value, 10);\r\n\r\n if (Number.isNaN(newValue)) {\r\n newValue = this.min;\r\n }\r\n\r\n if (newValue < this.min) newValue = this.min;\r\n if (newValue > this.max) newValue = this.max;\r\n\r\n input.value = newValue.toString();\r\n this._value = newValue;\r\n this.valueChange.emit(this._value);\r\n }\r\n}","<div\r\n class=\"input-form\"\r\n [style.width]=\"width\"\r\n [class.disabled]=\"disabled\"\r\n [class.state-negative]=\"state === 'negative'\"\r\n [class.state-positive]=\"state === 'positive'\"\r\n>\r\n <div class=\"input-form-content\">\r\n <label class=\"input-form-label\" [for]=\"componentId\">\r\n <span class=\"label-text\">\r\n {{ headerInput }}\r\n @if (required) {\r\n <span class=\"required-mark\">*</span>\r\n }\r\n </span>\r\n </label>\r\n </div>\r\n\r\n <div class=\"input-stepper-content\">\r\n <button\r\n type=\"button\"\r\n class=\"input-stepper-button\"\r\n (click)=\"decrement()\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Giảm giá trị\"\r\n >\r\n <span class=\"stepper-icon\">−</span>\r\n </button>\r\n <input\r\n [id]=\"componentId\"\r\n type=\"text\"\r\n class=\"input-stepper-input\"\r\n placeholder=\"0\"\r\n [placeholder]=\"placeholder || '0'\"\r\n title=\"Giá trị\"\r\n [title]=\"headerInput || 'Giá trị'\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [value]=\"value\"\r\n (input)=\"onInput($event)\"\r\n [attr.aria-label]=\"headerInput || 'Giá trị'\"\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"input-stepper-button\"\r\n (click)=\"increment()\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Tăng giá trị\"\r\n >\r\n <span class=\"stepper-icon\">+</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"input-stepper-footer\">\r\n @if (error) {\r\n <span class=\"input-stepper-error\">{{ error }}</span>\r\n } @else if (helperText) {\r\n <span class=\"input-stepper-helper\">{{ helperText }}</span>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-input-calendar',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './input-calendar.component.html',\r\n styleUrls: ['./input-calendar.component.scss'],\r\n})\r\nexport class InputCalendarComponent {\r\n @Input() headerInput: string = '';\r\n @Input() placeholder: string = 'dd/mm/yyyy';\r\n @Input() readonly: boolean = false;\r\n @Input() required: boolean = false;\r\n @Input() width: string = '100%';\r\n \r\n @Output() valueChange = new EventEmitter<string>();\r\n \r\n @ViewChild('hiddenDateInput') hiddenDateInput!: ElementRef<HTMLInputElement>;\r\n \r\n displayValue: string = '';\r\n private _value: string = '';\r\n \r\n @Input()\r\n set value(val: string) {\r\n this._value = val;\r\n this.displayValue = this.formatToDisplay(val);\r\n }\r\n \r\n get value(): string {\r\n return this._value;\r\n }\r\n \r\n // Convert ISO format (yyyy-mm-dd) to display format (dd/mm/yyyy)\r\n formatToDisplay(isoDate: string): string {\r\n if (!isoDate) return '';\r\n const parts = isoDate.split('-');\r\n if (parts.length === 3) {\r\n return `${parts[2]}/${parts[1]}/${parts[0]}`;\r\n }\r\n return isoDate;\r\n }\r\n \r\n // Convert display format (dd/mm/yyyy) to ISO format (yyyy-mm-dd)\r\n formatToISO(displayDate: string): string {\r\n if (!displayDate) return '';\r\n const parts = displayDate.split('/');\r\n if (parts.length === 3) {\r\n return `${parts[2]}-${parts[1]}-${parts[0]}`;\r\n }\r\n return displayDate;\r\n }\r\n \r\n // Handle text input with auto-formatting\r\n onDisplayInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n let value = input.value.replaceAll(/[^\\d/]/g, '');\r\n \r\n // Auto-insert slashes at positions 2 and 5\r\n const parts = value.split('/');\r\n if (parts[0] && parts[0].length >= 2 && parts.length === 1) {\r\n value = parts[0].substring(0, 2) + '/' + parts[0].substring(2);\r\n }\r\n if (value.length >= 5 && value.split('/').length === 2 && !value.endsWith('/')) {\r\n const newParts = value.split('/');\r\n if (newParts[1] && newParts[1].length >= 2) {\r\n value = newParts[0] + '/' + newParts[1].substring(0, 2) + '/' + newParts[1].substring(2);\r\n }\r\n }\r\n \r\n // Limit to dd/mm/yyyy format\r\n if (value.length > 10) {\r\n value = value.substring(0, 10);\r\n }\r\n \r\n this.displayValue = value;\r\n \r\n // Only emit if complete date\r\n if (value.length === 10) {\r\n const isoValue = this.formatToISO(value);\r\n this._value = isoValue;\r\n this.valueChange.emit(isoValue);\r\n }\r\n }\r\n \r\n // Open native date picker\r\n openDatePicker(): void {\r\n if (!this.readonly && this.hiddenDateInput) {\r\n this.hiddenDateInput.nativeElement.showPicker();\r\n }\r\n }\r\n \r\n // Handle date picker selection\r\n onDatePickerChange(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n this._value = input.value;\r\n this.displayValue = this.formatToDisplay(input.value);\r\n this.valueChange.emit(this._value);\r\n }\r\n}","<div class=\"input-form\" [style.width]=\"width\">\r\n <label class=\"input-form-label\">\r\n <div class=\"input-form-label-header\">\r\n <span>{{ headerInput }}</span>\r\n @if (required) {\r\n <span class=\"required-mark\">*</span>\r\n }\r\n </div>\r\n <div class=\"calendar-input-wrapper\">\r\n <input\r\n type=\"text\"\r\n class=\"input-form-field\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n [value]=\"displayValue\"\r\n (input)=\"onDisplayInput($event)\"\r\n maxlength=\"10\"\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"calendar-icon-btn\"\r\n (click)=\"openDatePicker()\"\r\n [disabled]=\"readonly\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\r\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line>\r\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line>\r\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\r\n </svg>\r\n </button>\r\n <input\r\n #hiddenDateInput\r\n type=\"date\"\r\n class=\"hidden-date-input\"\r\n [value]=\"value\"\r\n (change)=\"onDatePickerChange($event)\"\r\n />\r\n </div>\r\n </label>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface ColumnConfig {\r\n header: string;\r\n key: string;\r\n width: string;\r\n}\r\n\r\n@Component({\r\n selector: 'tr[app-table-header]', // ✅ Attribute selector on tr\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './table-header.component.html',\r\n styleUrl: './table-header.component.scss',\r\n})\r\nexport class TableHeaderComponent {\r\n @Input() columns: ColumnConfig[] = [];\r\n @Input() backgroundColor?: string;\r\n @Input({ transform: (value: string | undefined) => value || '#ffffff' })\r\n textColor: string = '#ffffff';\r\n @Input() headerIconLeft?: string;\r\n @Input() headerIconRight?: string;\r\n @Input() fontSize: string = 'var(--font-xs)';\r\n}\r\n","@for (col of columns; track col.key) {\r\n <th\r\n scope=\"col\"\r\n [style.width]=\"col.width\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n [style.color]=\"textColor\"\r\n >\r\n <div class=\"header-container\">\r\n <div class=\"header-content\">\r\n @if (headerIconLeft) {\r\n <div class=\"icon-left\">\r\n <i [class]=\"headerIconLeft\"></i>\r\n </div>\r\n }\r\n <div class=\"header-text\" [style.font-size]=\"fontSize\">\r\n {{ col.header }}\r\n </div>\r\n @if (headerIconRight) {\r\n <div class=\"icon-right\">\r\n <i [class]=\"headerIconRight\"></i>\r\n </div>\r\n }\r\n </div>\r\n <p class=\"divider\">|</p>\r\n </div>\r\n </th>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, TemplateRef } from '@angular/core';\r\nimport { ColumnConfig } from '../table-header/table-header.component';\r\n\r\n@Component({\r\n selector: '[app-table-body]', // ✅ Attribute selector\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './table-body.component.html',\r\n styleUrl: './table-body.component.scss',\r\n})\r\nexport class TableBodyComponent {\r\n @Input() rows: any[] = [];\r\n @Input() columns: ColumnConfig[] = [];\r\n @Input() columnTemplates: { [key: string]: TemplateRef<any> } = {};\r\n @Input() fontSize: string = 'var(--font-sm)';\r\n}\r\n","@for (row of rows; track $index) {\r\n <tr>\r\n @for (col of columns; track col.key) {\r\n <td [style.width]=\"col.width\" [style.font-size]=\"fontSize\">\r\n @if (columnTemplates[col.key]) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplates[col.key];\r\n context: { $implicit: row[col.key], row: row }\r\n \"\r\n ></ng-container>\r\n } @else {\r\n {{ row[col.key] }}\r\n }\r\n </td>\r\n }\r\n </tr>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-approval-list-item',\r\n templateUrl: './approval-list-item.component.html',\r\n styleUrls: ['./approval-list-item.component.scss'],\r\n imports: [CommonModule],\r\n standalone: true\r\n})\r\nexport class ApprovalListItemComponent {\r\n @Input() name!: string;\r\n @Input() date!: Date;\r\n @Input() rightTemplate?: TemplateRef<any>;\r\n @Input() rightContext: any = {};\r\n\r\n get parsedDate(): Date {\r\n return new Date(this.date);\r\n }\r\n}\r\n","<div class=\"approval-item\">\r\n <!-- LEFT -->\r\n <div class=\"approval-item-left\">\r\n <span class=\"approval-item-left-name\">{{ name }}</span>\r\n <span class=\"approval-item-left-date\">\r\n <span class=\"approval-item-left-date-title\">Ngày tạo đơn:</span>\r\n {{ date | date: 'dd/MM/yyyy' }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"approval-item-right\">\r\n <ng-container *ngIf=\"rightTemplate; else defaultRight\">\r\n <ng-container *ngTemplateOutlet=\"rightTemplate; context: rightContext\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultRight>\r\n <span class=\"text-gray-400\">—</span>\r\n </ng-template>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ApprovalListItemInterface } from '../approval-list-item/approval-list-item.model';\r\nimport { ApprovalListItemComponent } from '../approval-list-item/approval-list-item.component';\r\n\r\n@Component({\r\n selector: 'app-approval-list',\r\n standalone: true,\r\n imports: [CommonModule, ApprovalListItemComponent],\r\n templateUrl: './approval-list.component.html',\r\n styleUrls: ['./approval-list.component.scss'],\r\n})\r\nexport class ApprovalListComponent {\r\n @Input() rows: ApprovalListItemInterface[] = [];\r\n\r\n @Input() headerContentRight!: string;\r\n @Input() headerContentLeft!: string;\r\n @Input() width!: string;\r\n}\r\n","<div class=\"approval-list\" [style.width]=\"width\">\r\n <div class=\"approval-list-header\">\r\n <span class=\"approval-list-header-left\">{{ headerContentRight }}</span>\r\n <div>\r\n <p>{{ headerContentLeft }}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"approval-list-content\" [style.width]=\"width\">\r\n <app-approval-list-item\r\n *ngFor=\"let row of rows\"\r\n [name]=\"row.name\"\r\n [date]=\"row.date\"\r\n [rightTemplate]=\"row.rightTemplate\"\r\n [rightContext]=\"row.rightContext\"\r\n >\r\n </app-approval-list-item>\r\n </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonContainerComponent } from \"../../button/button-container/button-container.component\";\r\n\r\n@Component({\r\n selector: 'app-pop-up-confirm',\r\n standalone: true,\r\n imports: [CommonModule, ButtonContainerComponent],\r\n templateUrl: './pop-up-confirm.component.html',\r\n styleUrls: ['./pop-up-confirm.component.scss'],\r\n})\r\nexport class PopUpConfirmComponent {\r\n\r\n @Input() imgUrl: string = '';\r\n @Input() title: string = '';\r\n @Input() content: string = '';\r\n @Input() colorButton: string = 'var(--brand-600)';\r\n\r\n @Output() confirmClick = new EventEmitter<void>();\r\n @Output() cancelClick = new EventEmitter<void>();\r\n\r\n onConfirm(): void {\r\n this.confirmClick.emit();\r\n }\r\n\r\n onCancel(): void {\r\n this.cancelClick.emit();\r\n }\r\n}","<div class=\"pop-up-confirm-overlay\">\r\n <div class=\"pop-up-confirm\">\r\n <div class=\"pop-up-confirm-content\">\r\n <img *ngIf=\"imgUrl\" [src]=\"imgUrl\" alt=\"\">\r\n <div class=\"pop-up-confirm-text\">\r\n <p class=\"pop-up-title\">{{title}}</p>\r\n <p class=\"pop-up-content\">{{content}}</p>\r\n </div>\r\n </div>\r\n <div class=\"pop-up-confirm-actions\">\r\n <app-button-container size=\"md\" content=\"Quay Lại\" backgroundColor=\"var(--neutral-100)\" color=\"var(--neutral-800)\" (buttonClick)=\"onCancel()\"></app-button-container>\r\n <app-button-container size=\"md\" content=\"Đồng Ý\" [backgroundColor]=\"colorButton\" color=\"#fff\" (buttonClick)=\"onConfirm()\"></app-button-container>\r\n </div>\r\n </div>\r\n</div>","/*\r\n * Public API Surface of intern-hub-layout\r\n */\r\n\r\nexport * from './libs/layouts/main-layout/main-layout.component';\r\nexport * from './libs/layouts/header/header.component';\r\nexport * from './libs/layouts/sidebar/sidebar.component';\r\n\r\nexport * from './libs/shared/components/button/button-container/button-container.component';\r\nexport * from './libs/shared/components/button/label-button/label-button.component';\r\n\r\nexport * from './libs/shared/components/input/input-text/input-text.component';\r\nexport * from './libs/shared/components/input/input-stepper/input-stepper.component';\r\nexport * from './libs/shared/components/input/input-calendar/input-calendar.component';\r\n\r\nexport * from './libs/shared/components/table/table-header/table-header.component';\r\nexport * from './libs/shared/components/table/table-body/table-body.component';\r\n\r\nexport * from './libs/shared/components/approval/approval-list/approval-list.component';\r\nexport * from './libs/shared/components/approval/approval-list-item/approval-list-item.model';\r\n\r\nexport * from './libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"goat-bravos-intern-hub-layout.mjs","sources":["../../../src/libs/shared/components/icon/icon.component.ts","../../../src/libs/shared/components/icon/icon.component.html","../../../src/libs/layouts/header/header.component.ts","../../../src/libs/layouts/header/header.component.html","../../../src/libs/shared/components/functional-label/functional-label.component.ts","../../../src/libs/shared/components/functional-label/functional-label.component.html","../../../src/libs/layouts/sidebar/sidebar.component.ts","../../../src/libs/layouts/sidebar/sidebar.component.html","../../../src/libs/shared/components/button/button-container/button-container.model.ts","../../../src/libs/shared/components/button/button-container/button-container.component.ts","../../../src/libs/shared/components/button/button-container/button-container.component.html","../../../src/libs/shared/components/button/label-button/label-button.component.ts","../../../src/libs/shared/components/button/label-button/label-button.component.html","../../../src/libs/shared/components/input/input-text/input-text.component.ts","../../../src/libs/shared/components/input/input-text/input-text.component.html","../../../src/libs/shared/components/input/input-stepper/input-stepper.component.ts","../../../src/libs/shared/components/input/input-stepper/input-stepper.component.html","../../../src/libs/shared/components/input/input-calendar/input-calendar.component.ts","../../../src/libs/shared/components/input/input-calendar/input-calendar.component.html","../../../src/libs/shared/components/table/table-header/table-header.component.ts","../../../src/libs/shared/components/table/table-header/table-header.component.html","../../../src/libs/shared/components/table/table-body/table-body.component.ts","../../../src/libs/shared/components/table/table-body/table-body.component.html","../../../src/libs/shared/components/approval/approval-list-item/approval-list-item.component.ts","../../../src/libs/shared/components/approval/approval-list-item/approval-list-item.component.html","../../../src/libs/shared/components/approval/approval-list/approval-list.component.ts","../../../src/libs/shared/components/approval/approval-list/approval-list.component.html","../../../src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.ts","../../../src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.html","../../../src/public-api.ts","../../../src/goat-bravos-intern-hub-layout.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nexport interface IconData {\r\n icon: string;\r\n colorIcon?: string;\r\n routerLink?: string;\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-icon',\r\n standalone: true,\r\n imports: [CommonModule, RouterModule],\r\n templateUrl: './icon.component.html',\r\n styleUrls: ['./icon.component.scss'],\r\n})\r\nexport class IconComponent {\r\n @Input() iconData?: IconData;\r\n @Input() icon?: string;\r\n @Input() colorIcon?: string;\r\n @Input() routerLink?: string;\r\n @Input() width?: string = '20px';\r\n @Input() height?: string = '20px';\r\n @Input() colorIconHover?: string;\r\n @Input() backgroundColorHover?: string;\r\n\r\n @Output() clicked = new EventEmitter<Event>();\r\n\r\n get iconClass(): string {\r\n if (this.iconData?.icon) {\r\n return this.iconData.icon;\r\n }\r\n return this.icon || '';\r\n }\r\n\r\n get iconColor(): string | undefined {\r\n return this.iconData?.colorIcon || this.colorIcon;\r\n }\r\n\r\n get iconWidth(): string {\r\n return this.iconData?.width || this.width || '20px';\r\n }\r\n\r\n get iconHeight(): string {\r\n return this.iconData?.height || this.height || '20px';\r\n }\r\n\r\n get iconRouterLink(): string | undefined {\r\n return this.iconData?.routerLink || this.routerLink;\r\n }\r\n\r\n handleClick(event: Event): void {\r\n if (!this.iconRouterLink) {\r\n event.preventDefault();\r\n this.clicked.emit(event);\r\n }\r\n }\r\n}\r\n","<i\r\n class=\"icon\"\r\n [ngClass]=\"iconClass\"\r\n [style.color]=\"iconColor\"\r\n [style.width]=\"iconWidth\"\r\n [style.height]=\"iconHeight\"\r\n [attr.tabindex]=\"iconRouterLink ? null : 0\"\r\n [attr.role]=\"iconRouterLink ? null : 'button'\"\r\n (click)=\"handleClick($event)\"\r\n (keydown.enter)=\"handleClick($event)\"\r\n (keydown.space)=\"handleClick($event)\"\r\n></i>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n IconComponent,\r\n IconData,\r\n} from '../../shared/components/icon/icon.component';\r\n\r\nexport interface HeaderAction {\r\n icon: IconData | string;\r\n content: string;\r\n method?: () => void;\r\n badge?: string;\r\n colorIcon?: string;\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nexport interface HeaderData {\r\n headerItems: HeaderAction[];\r\n userName: string;\r\n userIcon?: IconData | string;\r\n userIconColor?: string;\r\n dropdownIcon?: IconData | string;\r\n dropdownIconColor?: string;\r\n logo?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-header-component',\r\n standalone: true,\r\n imports: [CommonModule, IconComponent],\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent {\r\n @Input() data: HeaderData = {\r\n headerItems: [],\r\n userName: 'Guest',\r\n userIcon: 'dsi-user-01-line',\r\n dropdownIcon: 'dsi-arrow-down-solid',\r\n logo: 'assets/FPT-IS-Logo.png',\r\n };\r\n\r\n handleActionClick(item: HeaderAction, event: Event): void {\r\n if (item.method) {\r\n event.preventDefault();\r\n item.method();\r\n }\r\n }\r\n\r\n getIconData(\r\n icon: IconData | string | undefined,\r\n colorIcon?: string,\r\n width?: string,\r\n height?: string,\r\n ): IconData | undefined {\r\n if (!icon) return undefined;\r\n\r\n if (typeof icon === 'string') {\r\n return {\r\n icon,\r\n colorIcon,\r\n width,\r\n height,\r\n };\r\n }\r\n\r\n return icon;\r\n }\r\n}\r\n","<header class=\"app-header\">\r\n <div class=\"header-left\">\r\n <img\r\n class=\"logo\"\r\n [src]=\"data.logo || 'assets/FPT-IS-Logo.png'\"\r\n alt=\"Logo\"\r\n />\r\n </div>\r\n\r\n <div class=\"header-right\">\r\n @for (item of data.headerItems; track $index) {\r\n <button\r\n class=\"header-btn\"\r\n [attr.aria-label]=\"item.content\"\r\n (click)=\"handleActionClick(item, $event)\"\r\n >\r\n <app-icon\r\n [iconData]=\"\r\n getIconData(\r\n item.icon,\r\n item.colorIcon,\r\n item.width || '16px',\r\n item.height || '16px'\r\n )\r\n \"\r\n ></app-icon>\r\n @if (item.badge) {\r\n <span class=\"badge\">{{ item.badge }}</span>\r\n }\r\n </button>\r\n }\r\n\r\n <div class=\"header-user\">\r\n <button class=\"user-btn\">\r\n @if (data.userIcon) {\r\n <app-icon\r\n [iconData]=\"\r\n getIconData(data.userIcon, data.userIconColor, '16px', '16px')\r\n \"\r\n ></app-icon>\r\n }\r\n <span class=\"user-name\">{{ data.userName }}</span>\r\n @if (data.dropdownIcon) {\r\n <app-icon\r\n [iconData]=\"\r\n getIconData(\r\n data.dropdownIcon,\r\n data.dropdownIconColor,\r\n '16px',\r\n '16px'\r\n )\r\n \"\r\n ></app-icon>\r\n }\r\n </button>\r\n </div>\r\n </div>\r\n</header>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { IconComponent, IconData } from '../icon/icon.component';\r\n\r\n@Component({\r\n selector: 'app-functional-label',\r\n standalone: true,\r\n imports: [CommonModule, RouterModule, IconComponent],\r\n templateUrl: './functional-label.component.html',\r\n styleUrls: ['./functional-label.component.scss'],\r\n})\r\nexport class FunctionalLabelComponent {\r\n @Input() iconLeft?: IconData | string;\r\n @Input() iconRight?: IconData | string;\r\n\r\n @Input() colorIconLeft?: string;\r\n @Input() colorIconRight?: string;\r\n @Input() widthIconLeft?: string = '20px';\r\n @Input() heightIconLeft?: string = '20px';\r\n @Input() widthIconRight?: string = '20px';\r\n @Input() heightIconRight?: string = '20px';\r\n\r\n @Input() colorIconLeftHover?: string;\r\n @Input() colorIconRightHover?: string;\r\n @Input() colorContentHover?: string;\r\n @Input() backgroundColorHover?: string;\r\n @Input() borderRadiusHover?: string;\r\n\r\n @Input() content: string = '';\r\n @Input() colorContent?: string;\r\n @Input() widthContent?: string = '100%';\r\n @Input() heightContent?: string = '100%';\r\n\r\n @Input() backgroundColor?: string;\r\n @Input() borderRadius?: string;\r\n @Input() width?: string;\r\n @Input() height?: string;\r\n\r\n @Input() routerLink?: string;\r\n @Input() isSidebarExpanded: boolean = false;\r\n\r\n @Output() clicked = new EventEmitter<Event>();\r\n\r\n isHovered: boolean = false;\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter() {\r\n this.isHovered = true;\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave() {\r\n this.isHovered = false;\r\n }\r\n\r\n get currentBackgroundColor(): string | undefined {\r\n return this.isHovered\r\n ? this.backgroundColorHover || this.backgroundColor\r\n : this.backgroundColor;\r\n }\r\n\r\n get currentBorderRadius(): string | undefined {\r\n return this.isHovered\r\n ? this.borderRadiusHover || this.borderRadius\r\n : this.borderRadius;\r\n }\r\n\r\n get currentColorContent(): string | undefined {\r\n return this.isHovered\r\n ? this.colorContentHover || this.colorContent\r\n : this.colorContent;\r\n }\r\n\r\n get hasIconLeft(): boolean {\r\n return !!this.iconLeft;\r\n }\r\n\r\n get hasIconRight(): boolean {\r\n return !!this.iconRight;\r\n }\r\n\r\n // ✅ Chỉ giữ 1 iconLeftData\r\n get iconLeftData(): IconData | undefined {\r\n if (!this.iconLeft) return undefined;\r\n\r\n const color =\r\n this.isHovered || this.isSidebarExpanded\r\n ? this.colorIconLeftHover || this.colorIconLeft\r\n : this.colorIconLeft;\r\n\r\n if (typeof this.iconLeft === 'string') {\r\n return {\r\n icon: this.iconLeft,\r\n colorIcon: color,\r\n width: this.widthIconLeft,\r\n height: this.heightIconLeft,\r\n };\r\n }\r\n return {\r\n ...this.iconLeft,\r\n colorIcon: color || this.iconLeft.colorIcon,\r\n };\r\n }\r\n\r\n // ✅ Chỉ giữ 1 iconRightData\r\n get iconRightData(): IconData | undefined {\r\n if (!this.iconRight) return undefined;\r\n\r\n const color =\r\n this.isHovered || this.isSidebarExpanded\r\n ? this.colorIconRightHover || this.colorIconRight\r\n : this.colorIconRight;\r\n\r\n if (typeof this.iconRight === 'string') {\r\n return {\r\n icon: this.iconRight,\r\n colorIcon: color,\r\n width: this.widthIconRight,\r\n height: this.heightIconRight,\r\n };\r\n }\r\n return {\r\n ...this.iconRight,\r\n colorIcon: color || this.iconRight.colorIcon,\r\n };\r\n }\r\n\r\n handleClick(event: Event): void {\r\n if (!this.routerLink) {\r\n event.preventDefault();\r\n this.clicked.emit(event);\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"functional-label\"\r\n (click)=\"handleClick($event)\"\r\n (keydown.enter)=\"handleClick($event)\"\r\n (keydown.space)=\"handleClick($event)\"\r\n [attr.tabindex]=\"routerLink ? null : 0\"\r\n [attr.role]=\"routerLink ? null : 'button'\"\r\n [style.background-color]=\"currentBackgroundColor\"\r\n [style.border-radius]=\"currentBorderRadius\"\r\n [style.width]=\"width\"\r\n [style.height]=\"height\"\r\n>\r\n @if (hasIconLeft && iconLeftData) {\r\n <app-icon\r\n [iconData]=\"iconLeftData\"\r\n [width]=\"widthIconLeft\"\r\n [height]=\"heightIconLeft\"\r\n [colorIconHover]=\"colorIconLeftHover\"\r\n [backgroundColorHover]=\"backgroundColorHover\"\r\n ></app-icon>\r\n }\r\n <a\r\n [routerLink]=\"routerLink\"\r\n [style.color]=\"currentColorContent\"\r\n [style.width]=\"widthContent\"\r\n [style.height]=\"heightContent\"\r\n >{{ content }}</a\r\n >\r\n @if (hasIconRight && iconRightData) {\r\n <app-icon\r\n [iconData]=\"iconRightData\"\r\n [colorIconHover]=\"colorIconRightHover\"\r\n [backgroundColorHover]=\"backgroundColorHover\"\r\n ></app-icon>\r\n }\r\n</div>\r\n","import { Component, HostListener, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FunctionalLabelComponent } from '../../shared/components/functional-label/functional-label.component';\r\nimport { IconData } from '../../shared/components/icon/icon.component';\r\n\r\nexport interface SidebarItem {\r\n iconLeft?: IconData | string;\r\n iconRight?: IconData | string;\r\n content: string;\r\n url?: string;\r\n colorIconLeft?: string;\r\n colorIconLeftHover?: string;\r\n colorIconRight?: string;\r\n colorIconRightHover?: string;\r\n colorContent?: string;\r\n colorContentHover?: string;\r\n backgroundColor?: string;\r\n backgroundColorHover?: string;\r\n borderRadius?: string;\r\n borderRadiusHover?: string;\r\n width?: string;\r\n height?: string;\r\n}\r\n\r\nexport interface SidebarData {\r\n menuItems: SidebarItem[];\r\n backgroundColor?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n standalone: true,\r\n imports: [CommonModule, FunctionalLabelComponent],\r\n templateUrl: './sidebar.component.html',\r\n styleUrls: ['./sidebar.component.scss'],\r\n})\r\nexport class SidebarComponent {\r\n @Input() data: SidebarData = { menuItems: [] };\r\n\r\n isSidebarExpanded = false;\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter() {\r\n this.isSidebarExpanded = true;\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave() {\r\n this.isSidebarExpanded = false;\r\n }\r\n\r\n onMenuItemClick(item: SidebarItem, event: Event): void {\r\n console.log('Menu item clicked:', item, event);\r\n }\r\n}\r\n","<div class=\"sidebar-wrapper\">\r\n <aside\r\n class=\"sidebar\"\r\n [style.background-color]=\"!isSidebarExpanded ? data.backgroundColor : null\"\r\n >\r\n @for (item of data.menuItems; track $index) {\r\n <app-functional-label\r\n class=\"sidebar-item\"\r\n [isSidebarExpanded]=\"isSidebarExpanded\"\r\n [iconLeft]=\"item.iconLeft\"\r\n [iconRight]=\"item.iconRight\"\r\n [content]=\"item.content\"\r\n [routerLink]=\"item.url\"\r\n [colorIconLeft]=\"item.colorIconLeft\"\r\n [colorIconRight]=\"item.colorIconRight\"\r\n [colorContent]=\"item.colorContent\"\r\n [backgroundColor]=\"item.backgroundColor\"\r\n [borderRadius]=\"item.borderRadius\"\r\n (clicked)=\"onMenuItemClick(item, $event)\"\r\n [colorIconLeftHover]=\"item.colorIconLeftHover\"\r\n [colorIconRightHover]=\"item.colorIconRightHover\"\r\n [backgroundColorHover]=\"item.backgroundColorHover\"\r\n [width]=\"item.width\"\r\n [height]=\"item.height\"\r\n ></app-functional-label>\r\n }\r\n </aside>\r\n</div>\r\n","export interface ButtonContainerInterface {\r\n size: ButtonSize;\r\n leftIcon?: string;\r\n rightIcon?: string;\r\n content: string;\r\n event?: string;\r\n fontSize?: string;\r\n color?: string;\r\n backgroundColor?: string;\r\n borderColor?: string;\r\n}\r\n\r\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';\r\n\r\nexport interface ButtonSizeConfig {\r\n minWidth: string;\r\n minHeight: string;\r\n fontSize: string;\r\n iconSize: string;\r\n contentWidth: string;\r\n contentHeight: string;\r\n}\r\n\r\nexport const BUTTON_SIZE_MAP: Record<ButtonSize, ButtonSizeConfig> = {\r\n xs: {\r\n minWidth: '47px',\r\n minHeight: '24px',\r\n fontSize: 'var(--font-xs)',\r\n iconSize: '14px',\r\n contentWidth: '32px',\r\n contentHeight: '16px',\r\n },\r\n sm: {\r\n minWidth: '96px',\r\n minHeight: '28px',\r\n fontSize: 'var(--font-sm)',\r\n iconSize: '16px',\r\n contentWidth: '44px',\r\n contentHeight: '20px',\r\n },\r\n md: {\r\n minWidth: '116px',\r\n minHeight: '36px',\r\n fontSize: 'var(--font-sm)',\r\n iconSize: '20px',\r\n contentWidth: '52px',\r\n contentHeight: '20px',\r\n },\r\n lg: {\r\n minWidth: '120px',\r\n minHeight: '44px',\r\n fontSize: 'var(--font-sm)',\r\n iconSize: '20px',\r\n contentWidth: '52px',\r\n contentHeight: '20px',\r\n },\r\n};\r\n\r\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonSize, BUTTON_SIZE_MAP } from './button-container.model';\r\n\r\n@Component({\r\n selector: 'app-button-container',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './button-container.component.html',\r\n styleUrls: ['./button-container.component.scss'],\r\n})\r\nexport class ButtonContainerComponent {\r\n @Input() size: ButtonSize = 'md';\r\n @Input() content = '';\r\n\r\n @Input() fontSize?: string;\r\n\r\n @Input() leftIcon?: string;\r\n @Input() rightIcon?: string;\r\n\r\n @Input() color = 'var(--brand-100)';\r\n @Input() backgroundColor = 'var(--utility-900)';\r\n @Input() borderColor = 'var(--brand-100)';\r\n\r\n @Output() buttonClick = new EventEmitter<any>();\r\n\r\n get sizeStyle() {\r\n return BUTTON_SIZE_MAP[this.size];\r\n }\r\n\r\n handleClick(): any {\r\n this.buttonClick.emit();\r\n }\r\n}\r\n","<button class=\"button-container\" [style.minWidth]=\"sizeStyle.minWidth\" [style.minHeight]=\"sizeStyle.minHeight\" [style.color]=\"color\"\r\n [style.backgroundColor]=\"backgroundColor\" [style.borderColor]=\"borderColor\" (click)=\"handleClick()\">\r\n \r\n @if(leftIcon){\r\n <i class=\"button-icon\" [style.width]=\"sizeStyle.iconSize\" [style.height]=\"sizeStyle.iconSize\" [style.fontSize]=\"sizeStyle.iconSize\">\r\n {{leftIcon}}\r\n </i>\r\n }\r\n\r\n <span class=\"button-content\" [style.minWidth]=\"sizeStyle.contentWidth\" [style.minHeight]=\"sizeStyle.contentHeight\" \r\n [style.fontSize]=\"fontSize || sizeStyle.fontSize\" [style.color]=\"color\">\r\n {{ content }}\r\n </span>\r\n\r\n @if(rightIcon){\r\n <i class=\"button-icon\" [style.width]=\"sizeStyle.iconSize\" [style.height]=\"sizeStyle.iconSize\" [style.fontSize]=\"sizeStyle.iconSize\" [style.color]=\"color\">\r\n {{rightIcon}}\r\n </i>\r\n }\r\n</button>","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'app-label-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './label-button.component.html',\n styleUrls: ['./label-button.component.scss'],\n})\nexport class LabelButtonComponent {\n @Input() label: string = '';\n @Input() bgColor: string = '';\n @Input() borderColor: string = '';\n @Input() width: string = '100%';\n @Input() height: string = '28px';\n @Input() textColor: string = 'var(--neutral-100)';\n}\n","<button\n [style.background-color]=\"bgColor\"\n [style.border-color]=\"borderColor\"\n [style.color]=\"textColor\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n class=\"label-button\"\n type=\"button\"\n>\n {{ label }}\n</button>\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'app-input-text',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './input-text.component.html',\r\n styleUrls: ['./input-text.component.scss'],\r\n})\r\nexport class InputTextComponent {\r\n @Input() headerInput: string = '';\r\n @Input() placeholder: string = '';\r\n @Input() readonly: boolean = false;\r\n @Input() required: boolean = false;\r\n @Input() width: string = '100%';\r\n @Input() maxLength: number = 0; // 0 = no limit\r\n @Input() showLimit: boolean = false;\r\n @Input() icon: string = '';\r\n @Input() typeInput: string = 'text';\r\n \r\n @Output() valueChange = new EventEmitter<string>();\r\n @Output() iconClick = new EventEmitter<void>();\r\n \r\n private _value: string = '';\r\n\r\n onIconClick(): void {\r\n this.iconClick.emit();\r\n }\r\n \r\n @Input()\r\n set value(val: string) {\r\n this._value = val || '';\r\n }\r\n \r\n get value(): string {\r\n return this._value;\r\n }\r\n \r\n get currentLength(): number {\r\n return this._value?.length || 0;\r\n }\r\n \r\n get limit(): string {\r\n if (!this.showLimit || this.maxLength <= 0) return '';\r\n return `${this.currentLength}/${this.maxLength}`;\r\n }\r\n \r\n onInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n let newValue = input.value;\r\n \r\n // Enforce maxLength if set\r\n if (this.maxLength > 0 && newValue.length > this.maxLength) {\r\n newValue = newValue.substring(0, this.maxLength);\r\n input.value = newValue;\r\n }\r\n \r\n this._value = newValue;\r\n this.valueChange.emit(this._value);\r\n }\r\n}","<div class=\"input-form\">\r\n <div class=\"input-form-content\">\r\n <label class=\"input-form-label\">\r\n <span class=\"label-text\" [class.hidden]=\"!headerInput\">\r\n {{ headerInput }}\r\n @if (required) {\r\n <span class=\"required-mark\">*</span>\r\n }\r\n </span>\r\n <div class=\"input-field-wrapper\">\r\n <input\r\n [type]=\"typeInput\"\r\n class=\"input-form-field\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n [style.width]=\"width\"\r\n [value]=\"value\"\r\n (input)=\"onInput($event)\"\r\n [attr.maxlength]=\"maxLength > 0 ? maxLength : null\"\r\n />\r\n @if (icon) {\r\n <button\r\n type=\"button\"\r\n class=\"input-icon-button\"\r\n [class.clickable]=\"iconClick.observed\"\r\n (click)=\"onIconClick()\"\r\n [attr.aria-label]=\"icon\"\r\n [disabled]=\"!iconClick.observed\"\r\n >\r\n <i [class]=\"icon\" class=\"input-icon\"></i>\r\n </button>\r\n }\r\n </div>\r\n </label>\r\n </div>\r\n <div class=\"limit\" [class.hidden]=\"!(maxLength > 0 && showLimit)\">\r\n <span>{{ limit }}</span>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: 'app-input-stepper',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './input-stepper.component.html',\r\n styleUrls: ['./input-stepper.component.scss'],\r\n})\r\nexport class InputStepperComponent {\r\n protected readonly componentId = `input-stepper-${Math.random().toString(36).substring(2, 9)}`;\r\n @Input() headerInput: string = '';\r\n @Input() placeholder: string = '';\r\n @Input() readonly: boolean = false;\r\n @Input() required: boolean = false;\r\n @Input() disabled: boolean = false;\r\n @Input() width: string = '100%';\r\n @Input() min: number = 0;\r\n @Input() max: number = 100;\r\n @Input() error: string = '';\r\n @Input() helperText: string = '';\r\n @Input() step: number = 1;\r\n @Input() state: 'default' | 'negative' | 'positive' = 'default';\r\n\r\n @Output() valueChange = new EventEmitter<number>();\r\n\r\n private _value: number = 0;\r\n\r\n @Input()\r\n set value(val: number) {\r\n this._value = val || 0;\r\n }\r\n\r\n get value(): number {\r\n return this._value;\r\n }\r\n\r\n increment(): void {\r\n if (this.readonly || this.disabled) return;\r\n const newValue = this._value + this.step;\r\n if (newValue <= this.max) {\r\n this._value = newValue;\r\n this.valueChange.emit(this._value);\r\n }\r\n }\r\n\r\n decrement(): void {\r\n if (this.readonly || this.disabled) return;\r\n const newValue = this._value - this.step;\r\n if (newValue >= this.min) {\r\n this._value = newValue;\r\n this.valueChange.emit(this._value);\r\n }\r\n }\r\n\r\n onInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n let newValue = Number.parseInt(input.value, 10);\r\n\r\n if (Number.isNaN(newValue)) {\r\n newValue = this.min;\r\n }\r\n\r\n if (newValue < this.min) newValue = this.min;\r\n if (newValue > this.max) newValue = this.max;\r\n\r\n input.value = newValue.toString();\r\n this._value = newValue;\r\n this.valueChange.emit(this._value);\r\n }\r\n}","<div\r\n class=\"input-form\"\r\n [style.width]=\"width\"\r\n [class.disabled]=\"disabled\"\r\n [class.state-negative]=\"state === 'negative'\"\r\n [class.state-positive]=\"state === 'positive'\"\r\n>\r\n <div class=\"input-form-content\">\r\n <label class=\"input-form-label\" [for]=\"componentId\">\r\n <span class=\"label-text\">\r\n {{ headerInput }}\r\n @if (required) {\r\n <span class=\"required-mark\">*</span>\r\n }\r\n </span>\r\n </label>\r\n </div>\r\n\r\n <div class=\"input-stepper-content\">\r\n <button\r\n type=\"button\"\r\n class=\"input-stepper-button\"\r\n (click)=\"decrement()\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Giảm giá trị\"\r\n >\r\n <span class=\"stepper-icon\">−</span>\r\n </button>\r\n <input\r\n [id]=\"componentId\"\r\n type=\"text\"\r\n class=\"input-stepper-input\"\r\n placeholder=\"0\"\r\n [placeholder]=\"placeholder || '0'\"\r\n title=\"Giá trị\"\r\n [title]=\"headerInput || 'Giá trị'\"\r\n [readonly]=\"readonly\"\r\n [disabled]=\"disabled\"\r\n [required]=\"required\"\r\n [value]=\"value\"\r\n (input)=\"onInput($event)\"\r\n [attr.aria-label]=\"headerInput || 'Giá trị'\"\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"input-stepper-button\"\r\n (click)=\"increment()\"\r\n [disabled]=\"disabled\"\r\n aria-label=\"Tăng giá trị\"\r\n >\r\n <span class=\"stepper-icon\">+</span>\r\n </button>\r\n </div>\r\n\r\n <div class=\"input-stepper-footer\">\r\n @if (error) {\r\n <span class=\"input-stepper-error\">{{ error }}</span>\r\n } @else if (helperText) {\r\n <span class=\"input-stepper-helper\">{{ helperText }}</span>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, ElementRef, ViewChild } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'app-input-calendar',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './input-calendar.component.html',\r\n styleUrls: ['./input-calendar.component.scss'],\r\n})\r\nexport class InputCalendarComponent {\r\n @Input() headerInput: string = '';\r\n @Input() placeholder: string = 'dd/mm/yyyy';\r\n @Input() readonly: boolean = false;\r\n @Input() required: boolean = false;\r\n @Input() width: string = '100%';\r\n \r\n @Output() valueChange = new EventEmitter<string>();\r\n \r\n @ViewChild('hiddenDateInput') hiddenDateInput!: ElementRef<HTMLInputElement>;\r\n \r\n displayValue: string = '';\r\n private _value: string = '';\r\n \r\n @Input()\r\n set value(val: string) {\r\n this._value = val;\r\n this.displayValue = this.formatToDisplay(val);\r\n }\r\n \r\n get value(): string {\r\n return this._value;\r\n }\r\n \r\n // Convert ISO format (yyyy-mm-dd) to display format (dd/mm/yyyy)\r\n formatToDisplay(isoDate: string): string {\r\n if (!isoDate) return '';\r\n const parts = isoDate.split('-');\r\n if (parts.length === 3) {\r\n return `${parts[2]}/${parts[1]}/${parts[0]}`;\r\n }\r\n return isoDate;\r\n }\r\n \r\n // Validate if a date string (dd/mm/yyyy) represents a valid date\r\n isValidDate(displayDate: string): boolean {\r\n if (!displayDate || displayDate.length !== 10) return false;\r\n \r\n const parts = displayDate.split('/');\r\n if (parts.length !== 3) return false;\r\n \r\n const day = parseInt(parts[0], 10);\r\n const month = parseInt(parts[1], 10);\r\n const year = parseInt(parts[2], 10);\r\n \r\n // Basic range validation\r\n if (isNaN(day) || isNaN(month) || isNaN(year)) return false;\r\n if (month < 1 || month > 12) return false;\r\n if (day < 1 || day > 31) return false;\r\n if (year < 1900 || year > 2100) return false;\r\n \r\n // Create date and verify it matches input (handles invalid dates like 31/02)\r\n const date = new Date(year, month - 1, day);\r\n return date.getFullYear() === year && \r\n date.getMonth() === month - 1 && \r\n date.getDate() === day;\r\n }\r\n\r\n // Convert display format (dd/mm/yyyy) to ISO format (yyyy-mm-dd)\r\n formatToISO(displayDate: string): string {\r\n if (!displayDate) return '';\r\n const parts = displayDate.split('/');\r\n if (parts.length === 3) {\r\n return `${parts[2]}-${parts[1]}-${parts[0]}`;\r\n }\r\n return displayDate;\r\n }\r\n \r\n // Handle text input with auto-formatting\r\n onDisplayInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n let value = input.value.replaceAll(/[^\\d/]/g, '');\r\n \r\n // Auto-insert slashes at positions 2 and 5\r\n const parts = value.split('/');\r\n if (parts[0] && parts[0].length >= 2 && parts.length === 1) {\r\n value = parts[0].substring(0, 2) + '/' + parts[0].substring(2);\r\n }\r\n if (value.length >= 5 && value.split('/').length === 2 && !value.endsWith('/')) {\r\n const newParts = value.split('/');\r\n if (newParts[1] && newParts[1].length >= 2) {\r\n value = newParts[0] + '/' + newParts[1].substring(0, 2) + '/' + newParts[1].substring(2);\r\n }\r\n }\r\n \r\n // Limit to dd/mm/yyyy format\r\n if (value.length > 10) {\r\n value = value.substring(0, 10);\r\n }\r\n \r\n this.displayValue = value;\r\n \r\n // Only emit if complete and valid date\r\n if (value.length === 10 && this.isValidDate(value)) {\r\n const isoValue = this.formatToISO(value);\r\n this._value = isoValue;\r\n this.valueChange.emit(isoValue);\r\n }\r\n }\r\n \r\n // Open native date picker\r\n openDatePicker(): void {\r\n if (!this.readonly && this.hiddenDateInput) {\r\n this.hiddenDateInput.nativeElement.showPicker();\r\n }\r\n }\r\n \r\n // Handle date picker selection\r\n onDatePickerChange(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n this._value = input.value;\r\n this.displayValue = this.formatToDisplay(input.value);\r\n this.valueChange.emit(this._value);\r\n }\r\n}","<div class=\"input-form\" [style.width]=\"width\">\r\n <label class=\"input-form-label\">\r\n <div class=\"input-form-label-header\">\r\n <span>{{ headerInput }}</span>\r\n @if (required) {\r\n <span class=\"required-mark\">*</span>\r\n }\r\n </div>\r\n <div class=\"calendar-input-wrapper\">\r\n <input\r\n type=\"text\"\r\n class=\"input-form-field\"\r\n [placeholder]=\"placeholder\"\r\n [readonly]=\"readonly\"\r\n [required]=\"required\"\r\n [value]=\"displayValue\"\r\n (input)=\"onDisplayInput($event)\"\r\n maxlength=\"10\"\r\n />\r\n <button\r\n type=\"button\"\r\n class=\"calendar-icon-btn\"\r\n (click)=\"openDatePicker()\"\r\n [disabled]=\"readonly\"\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\r\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line>\r\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line>\r\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\r\n </svg>\r\n </button>\r\n <input\r\n #hiddenDateInput\r\n type=\"date\"\r\n class=\"hidden-date-input\"\r\n [value]=\"value\"\r\n (change)=\"onDatePickerChange($event)\"\r\n />\r\n </div>\r\n </label>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface ColumnConfig {\r\n header: string;\r\n key: string;\r\n width: string;\r\n}\r\n\r\n@Component({\r\n selector: 'tr[app-table-header]',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './table-header.component.html',\r\n styleUrl: './table-header.component.scss',\r\n})\r\nexport class TableHeaderComponent {\r\n @Input() columns: ColumnConfig[] = [];\r\n @Input() backgroundColor?: string;\r\n @Input({ transform: (value: string | undefined) => value || '#ffffff' })\r\n textColor: string = '#ffffff';\r\n @Input() headerIconLeft?: string;\r\n @Input() headerIconRight?: string;\r\n @Input() fontSize: string = 'var(--font-xs)';\r\n}\r\n","@for (col of columns; track col.key) {\r\n <th\r\n scope=\"col\"\r\n [style.width]=\"col.width\"\r\n [style.backgroundColor]=\"backgroundColor\"\r\n [style.color]=\"textColor\"\r\n >\r\n <div class=\"header-container\">\r\n <div class=\"header-content\">\r\n @if (headerIconLeft) {\r\n <div class=\"icon-left\">\r\n <i [class]=\"headerIconLeft\"></i>\r\n </div>\r\n }\r\n <div class=\"header-text\" [style.font-size]=\"fontSize\">\r\n {{ col.header }}\r\n </div>\r\n @if (headerIconRight) {\r\n <div class=\"icon-right\">\r\n <i [class]=\"headerIconRight\"></i>\r\n </div>\r\n }\r\n </div>\r\n <p class=\"divider\">|</p>\r\n </div>\r\n </th>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, TemplateRef } from '@angular/core';\r\nimport { ColumnConfig } from '../table-header/table-header.component';\r\n\r\n@Component({\r\n selector: '[app-table-body]', // ✅ Attribute selector\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './table-body.component.html',\r\n styleUrl: './table-body.component.scss',\r\n})\r\nexport class TableBodyComponent {\r\n @Input() rows: any[] = [];\r\n @Input() columns: ColumnConfig[] = [];\r\n @Input() columnTemplates: { [key: string]: TemplateRef<any> } = {};\r\n @Input() fontSize: string = 'var(--font-sm)';\r\n}\r\n","@for (row of rows; track $index) {\r\n <tr>\r\n @for (col of columns; track col.key) {\r\n <td [style.width]=\"col.width\" [style.font-size]=\"fontSize\">\r\n @if (columnTemplates[col.key]) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n columnTemplates[col.key];\r\n context: { $implicit: row[col.key], row: row }\r\n \"\r\n ></ng-container>\r\n } @else {\r\n {{ row[col.key] }}\r\n }\r\n </td>\r\n }\r\n </tr>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-approval-list-item',\r\n templateUrl: './approval-list-item.component.html',\r\n styleUrls: ['./approval-list-item.component.scss'],\r\n imports: [CommonModule],\r\n standalone: true\r\n})\r\nexport class ApprovalListItemComponent {\r\n @Input() name!: string;\r\n @Input() date!: Date;\r\n @Input() rightTemplate?: TemplateRef<any>;\r\n @Input() rightContext: any = {};\r\n\r\n get parsedDate(): Date {\r\n return new Date(this.date);\r\n }\r\n}\r\n","<div class=\"approval-item\">\r\n <!-- LEFT -->\r\n <div class=\"approval-item-left\">\r\n <span class=\"approval-item-left-name\">{{ name }}</span>\r\n <span class=\"approval-item-left-date\">\r\n <span class=\"approval-item-left-date-title\">Ngày tạo đơn:</span>\r\n {{ date | date: 'dd/MM/yyyy' }}\r\n </span>\r\n </div>\r\n\r\n <div class=\"approval-item-right\">\r\n <ng-container *ngIf=\"rightTemplate; else defaultRight\">\r\n <ng-container *ngTemplateOutlet=\"rightTemplate; context: rightContext\">\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultRight>\r\n <span class=\"text-gray-400\">—</span>\r\n </ng-template>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ApprovalListItemInterface } from '../approval-list-item/approval-list-item.model';\r\nimport { ApprovalListItemComponent } from '../approval-list-item/approval-list-item.component';\r\n\r\n@Component({\r\n selector: 'app-approval-list',\r\n standalone: true,\r\n imports: [CommonModule, ApprovalListItemComponent],\r\n templateUrl: './approval-list.component.html',\r\n styleUrls: ['./approval-list.component.scss'],\r\n})\r\nexport class ApprovalListComponent {\r\n @Input() rows: ApprovalListItemInterface[] = [];\r\n\r\n @Input() headerContentRight!: string;\r\n @Input() headerContentLeft!: string;\r\n @Input() width!: string;\r\n}\r\n","<div class=\"approval-list\" [style.width]=\"width\">\r\n <div class=\"approval-list-header\">\r\n <span class=\"approval-list-header-left\">{{ headerContentLeft }}</span>\r\n <div>\r\n <p>{{ headerContentRight }}</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"approval-list-content\" [style.width]=\"width\">\r\n <app-approval-list-item\r\n *ngFor=\"let row of rows\"\r\n [name]=\"row.name\"\r\n [date]=\"row.date\"\r\n [rightTemplate]=\"row.rightTemplate\"\r\n [rightContext]=\"row.rightContext\"\r\n >\r\n </app-approval-list-item>\r\n </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ButtonContainerComponent } from \"../../button/button-container/button-container.component\";\r\n\r\n@Component({\r\n selector: 'app-pop-up-confirm',\r\n standalone: true,\r\n imports: [CommonModule, ButtonContainerComponent],\r\n templateUrl: './pop-up-confirm.component.html',\r\n styleUrls: ['./pop-up-confirm.component.scss'],\r\n})\r\nexport class PopUpConfirmComponent {\r\n\r\n @Input() imgUrl: string = '';\r\n @Input() title: string = '';\r\n @Input() content: string = '';\r\n @Input() colorButton: string = 'var(--brand-600)';\r\n\r\n @Output() confirmClick = new EventEmitter<void>();\r\n @Output() cancelClick = new EventEmitter<void>();\r\n\r\n onConfirm(): void {\r\n this.confirmClick.emit();\r\n }\r\n\r\n onCancel(): void {\r\n this.cancelClick.emit();\r\n }\r\n}","<div class=\"pop-up-confirm-overlay\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"popup-title\">\r\n <div class=\"pop-up-confirm\">\r\n <div class=\"pop-up-confirm-content\">\r\n <img *ngIf=\"imgUrl\" [src]=\"imgUrl\" alt=\"\">\r\n <div class=\"pop-up-confirm-text\">\r\n <p class=\"pop-up-title\" id=\"popup-title\">{{title}}</p>\r\n <p class=\"pop-up-content\">{{content}}</p>\r\n </div>\r\n </div>\r\n <div class=\"pop-up-confirm-actions\">\r\n <app-button-container size=\"md\" content=\"Quay Lại\" backgroundColor=\"var(--neutral-100)\" color=\"var(--neutral-800)\" (buttonClick)=\"onCancel()\"></app-button-container>\r\n <app-button-container size=\"md\" content=\"Đồng Ý\" [backgroundColor]=\"colorButton\" color=\"#fff\" (buttonClick)=\"onConfirm()\"></app-button-container>\r\n </div>\r\n </div>\r\n</div>","/*\r\n * Public API Surface of intern-hub-layout\r\n */\r\n\r\n// Layout components\r\nexport * from './libs/layouts/header/header.component';\r\nexport * from './libs/layouts/sidebar/sidebar.component';\r\n\r\n// Shared components - Icons\r\nexport * from './libs/shared/components/icon/icon.component';\r\nexport * from './libs/shared/components/functional-label/functional-label.component';\r\n\r\n// Shared components - Buttons\r\nexport * from './libs/shared/components/button/button-container/button-container.component';\r\nexport * from './libs/shared/components/button/button-container/button-container.model';\r\nexport * from './libs/shared/components/button/label-button/label-button.component';\r\n\r\n// Shared components - Inputs\r\nexport * from './libs/shared/components/input/input-text/input-text.component';\r\nexport * from './libs/shared/components/input/input-stepper/input-stepper.component';\r\nexport * from './libs/shared/components/input/input-calendar/input-calendar.component';\r\n\r\n// Shared components - Table\r\nexport * from './libs/shared/components/table/table-header/table-header.component';\r\nexport * from './libs/shared/components/table/table-body/table-body.component';\r\n\r\n// Shared components - Approval\r\nexport * from './libs/shared/components/approval/approval-list/approval-list.component';\r\nexport * from './libs/shared/components/approval/approval-list-item/approval-list-item.component';\r\nexport * from './libs/shared/components/approval/approval-list-item/approval-list-item.model';\r\n\r\n// Shared components - Pop-ups\r\nexport * from './libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@goat-bravos/intern-hub-layout",
3
- "version": "1.0.5",
3
+ "version": "1.2.1",
4
4
  "description": "Angular library for intern hub layout components",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
+ "@angular/forms": "^21.0.0",
8
9
  "@angular/router": "^21.0.0",
9
10
  "dynamic-ds": "^1.0.0"
10
11
  },
@@ -25,6 +26,9 @@
25
26
  "type": "git",
26
27
  "url": "https://github.com/FPT-IS-Intern/Intern-Hub-FE-Layout"
27
28
  },
29
+ "dependencies": {
30
+ "tslib": "^2.3.0"
31
+ },
28
32
  "module": "fesm2022/goat-bravos-intern-hub-layout.mjs",
29
33
  "typings": "types/goat-bravos-intern-hub-layout.d.ts",
30
34
  "exports": {
@@ -36,8 +40,5 @@
36
40
  "default": "./fesm2022/goat-bravos-intern-hub-layout.mjs"
37
41
  }
38
42
  },
39
- "sideEffects": false,
40
- "dependencies": {
41
- "tslib": "^2.3.0"
42
- }
43
+ "sideEffects": false
43
44
  }
@@ -1,27 +1,143 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { EventEmitter, ElementRef, TemplateRef } from '@angular/core';
3
+ import * as _goat_bravos_intern_hub_layout from '@goat-bravos/intern-hub-layout';
3
4
 
4
- interface SidebarItem {
5
+ interface IconData {
5
6
  icon: string;
7
+ colorIcon?: string;
8
+ routerLink?: string;
9
+ width?: string;
10
+ height?: string;
11
+ }
12
+ declare class IconComponent {
13
+ iconData?: IconData;
14
+ icon?: string;
15
+ colorIcon?: string;
16
+ routerLink?: string;
17
+ width?: string;
18
+ height?: string;
19
+ colorIconHover?: string;
20
+ backgroundColorHover?: string;
21
+ clicked: EventEmitter<Event>;
22
+ get iconClass(): string;
23
+ get iconColor(): string | undefined;
24
+ get iconWidth(): string;
25
+ get iconHeight(): string;
26
+ get iconRouterLink(): string | undefined;
27
+ handleClick(event: Event): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "app-icon", never, { "iconData": { "alias": "iconData"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "colorIcon": { "alias": "colorIcon"; "required": false; }; "routerLink": { "alias": "routerLink"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "colorIconHover": { "alias": "colorIconHover"; "required": false; }; "backgroundColorHover": { "alias": "backgroundColorHover"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
30
+ }
31
+
32
+ interface HeaderAction {
33
+ icon: IconData | string;
6
34
  content: string;
35
+ method?: () => void;
36
+ badge?: string;
37
+ colorIcon?: string;
38
+ width?: string;
39
+ height?: string;
7
40
  }
8
- declare class SidebarComponent {
41
+ interface HeaderData {
42
+ headerItems: HeaderAction[];
43
+ userName: string;
44
+ userIcon?: IconData | string;
45
+ userIconColor?: string;
46
+ dropdownIcon?: IconData | string;
47
+ dropdownIconColor?: string;
48
+ logo?: string;
49
+ }
50
+ declare class HeaderComponent {
51
+ data: HeaderData;
52
+ handleActionClick(item: HeaderAction, event: Event): void;
53
+ getIconData(icon: IconData | string | undefined, colorIcon?: string, width?: string, height?: string): IconData | undefined;
54
+ static ɵfac: i0.ɵɵFactoryDeclaration<HeaderComponent, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<HeaderComponent, "app-header-component", never, { "data": { "alias": "data"; "required": false; }; }, {}, never, never, true, never>;
56
+ }
57
+
58
+ interface SidebarItem {
59
+ iconLeft?: IconData | string;
60
+ iconRight?: IconData | string;
61
+ content: string;
62
+ url?: string;
63
+ colorIconLeft?: string;
64
+ colorIconLeftHover?: string;
65
+ colorIconRight?: string;
66
+ colorIconRightHover?: string;
67
+ colorContent?: string;
68
+ colorContentHover?: string;
69
+ backgroundColor?: string;
70
+ backgroundColorHover?: string;
71
+ borderRadius?: string;
72
+ borderRadiusHover?: string;
73
+ width?: string;
74
+ height?: string;
75
+ }
76
+ interface SidebarData {
9
77
  menuItems: SidebarItem[];
78
+ backgroundColor?: string;
79
+ }
80
+ declare class SidebarComponent {
81
+ data: SidebarData;
82
+ isSidebarExpanded: boolean;
83
+ onMouseEnter(): void;
84
+ onMouseLeave(): void;
85
+ onMenuItemClick(item: SidebarItem, event: Event): void;
10
86
  static ɵfac: i0.ɵɵFactoryDeclaration<SidebarComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<SidebarComponent, "app-sidebar", never, { "menuItems": { "alias": "menuItems"; "required": false; }; }, {}, never, never, true, never>;
87
+ static ɵcmp: i0.ɵɵComponentDeclaration<SidebarComponent, "app-sidebar", never, { "data": { "alias": "data"; "required": false; }; }, {}, never, never, true, never>;
12
88
  }
13
89
 
14
- declare class MainLayoutComponent {
15
- sidebarItems: SidebarItem[];
16
- static ɵfac: i0.ɵɵFactoryDeclaration<MainLayoutComponent, never>;
17
- static ɵcmp: i0.ɵɵComponentDeclaration<MainLayoutComponent, "app-main-layout", never, { "sidebarItems": { "alias": "sidebarItems"; "required": false; }; }, {}, never, never, true, never>;
90
+ declare class FunctionalLabelComponent {
91
+ iconLeft?: IconData | string;
92
+ iconRight?: IconData | string;
93
+ colorIconLeft?: string;
94
+ colorIconRight?: string;
95
+ widthIconLeft?: string;
96
+ heightIconLeft?: string;
97
+ widthIconRight?: string;
98
+ heightIconRight?: string;
99
+ colorIconLeftHover?: string;
100
+ colorIconRightHover?: string;
101
+ colorContentHover?: string;
102
+ backgroundColorHover?: string;
103
+ borderRadiusHover?: string;
104
+ content: string;
105
+ colorContent?: string;
106
+ widthContent?: string;
107
+ heightContent?: string;
108
+ backgroundColor?: string;
109
+ borderRadius?: string;
110
+ width?: string;
111
+ height?: string;
112
+ routerLink?: string;
113
+ isSidebarExpanded: boolean;
114
+ clicked: EventEmitter<Event>;
115
+ isHovered: boolean;
116
+ onMouseEnter(): void;
117
+ onMouseLeave(): void;
118
+ get currentBackgroundColor(): string | undefined;
119
+ get currentBorderRadius(): string | undefined;
120
+ get currentColorContent(): string | undefined;
121
+ get hasIconLeft(): boolean;
122
+ get hasIconRight(): boolean;
123
+ get iconLeftData(): IconData | undefined;
124
+ get iconRightData(): IconData | undefined;
125
+ handleClick(event: Event): void;
126
+ static ɵfac: i0.ɵɵFactoryDeclaration<FunctionalLabelComponent, never>;
127
+ static ɵcmp: i0.ɵɵComponentDeclaration<FunctionalLabelComponent, "app-functional-label", never, { "iconLeft": { "alias": "iconLeft"; "required": false; }; "iconRight": { "alias": "iconRight"; "required": false; }; "colorIconLeft": { "alias": "colorIconLeft"; "required": false; }; "colorIconRight": { "alias": "colorIconRight"; "required": false; }; "widthIconLeft": { "alias": "widthIconLeft"; "required": false; }; "heightIconLeft": { "alias": "heightIconLeft"; "required": false; }; "widthIconRight": { "alias": "widthIconRight"; "required": false; }; "heightIconRight": { "alias": "heightIconRight"; "required": false; }; "colorIconLeftHover": { "alias": "colorIconLeftHover"; "required": false; }; "colorIconRightHover": { "alias": "colorIconRightHover"; "required": false; }; "colorContentHover": { "alias": "colorContentHover"; "required": false; }; "backgroundColorHover": { "alias": "backgroundColorHover"; "required": false; }; "borderRadiusHover": { "alias": "borderRadiusHover"; "required": false; }; "content": { "alias": "content"; "required": false; }; "colorContent": { "alias": "colorContent"; "required": false; }; "widthContent": { "alias": "widthContent"; "required": false; }; "heightContent": { "alias": "heightContent"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "routerLink": { "alias": "routerLink"; "required": false; }; "isSidebarExpanded": { "alias": "isSidebarExpanded"; "required": false; }; }, { "clicked": "clicked"; }, never, never, true, never>;
18
128
  }
19
129
 
20
- declare class HeaderComponent {
21
- static ɵfac: i0.ɵɵFactoryDeclaration<HeaderComponent, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<HeaderComponent, "app-header-component", never, {}, {}, never, never, true, never>;
130
+ interface ButtonContainerInterface {
131
+ size: ButtonSize;
132
+ leftIcon?: string;
133
+ rightIcon?: string;
134
+ content: string;
135
+ event?: string;
136
+ fontSize?: string;
137
+ color?: string;
138
+ backgroundColor?: string;
139
+ borderColor?: string;
23
140
  }
24
-
25
141
  type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
26
142
  interface ButtonSizeConfig {
27
143
  minWidth: string;
@@ -31,6 +147,7 @@ interface ButtonSizeConfig {
31
147
  contentWidth: string;
32
148
  contentHeight: string;
33
149
  }
150
+ declare const BUTTON_SIZE_MAP: Record<ButtonSize, ButtonSizeConfig>;
34
151
 
35
152
  declare class ButtonContainerComponent {
36
153
  size: ButtonSize;
@@ -42,8 +159,8 @@ declare class ButtonContainerComponent {
42
159
  backgroundColor: string;
43
160
  borderColor: string;
44
161
  buttonClick: EventEmitter<any>;
45
- get sizeStyle(): ButtonSizeConfig;
46
- handleClick(): void;
162
+ get sizeStyle(): _goat_bravos_intern_hub_layout.ButtonSizeConfig;
163
+ handleClick(): any;
47
164
  static ɵfac: i0.ɵɵFactoryDeclaration<ButtonContainerComponent, never>;
48
165
  static ɵcmp: i0.ɵɵComponentDeclaration<ButtonContainerComponent, "app-button-container", never, { "size": { "alias": "size"; "required": false; }; "content": { "alias": "content"; "required": false; }; "fontSize": { "alias": "fontSize"; "required": false; }; "leftIcon": { "alias": "leftIcon"; "required": false; }; "rightIcon": { "alias": "rightIcon"; "required": false; }; "color": { "alias": "color"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "borderColor": { "alias": "borderColor"; "required": false; }; }, { "buttonClick": "buttonClick"; }, never, never, true, never>;
49
166
  }
@@ -120,6 +237,7 @@ declare class InputCalendarComponent {
120
237
  set value(val: string);
121
238
  get value(): string;
122
239
  formatToDisplay(isoDate: string): string;
240
+ isValidDate(displayDate: string): boolean;
123
241
  formatToISO(displayDate: string): string;
124
242
  onDisplayInput(event: Event): void;
125
243
  openDatePicker(): void;
@@ -172,6 +290,16 @@ declare class ApprovalListComponent {
172
290
  static ɵcmp: i0.ɵɵComponentDeclaration<ApprovalListComponent, "app-approval-list", never, { "rows": { "alias": "rows"; "required": false; }; "headerContentRight": { "alias": "headerContentRight"; "required": false; }; "headerContentLeft": { "alias": "headerContentLeft"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, {}, never, never, true, never>;
173
291
  }
174
292
 
293
+ declare class ApprovalListItemComponent {
294
+ name: string;
295
+ date: Date;
296
+ rightTemplate?: TemplateRef<any>;
297
+ rightContext: any;
298
+ get parsedDate(): Date;
299
+ static ɵfac: i0.ɵɵFactoryDeclaration<ApprovalListItemComponent, never>;
300
+ static ɵcmp: i0.ɵɵComponentDeclaration<ApprovalListItemComponent, "app-approval-list-item", never, { "name": { "alias": "name"; "required": false; }; "date": { "alias": "date"; "required": false; }; "rightTemplate": { "alias": "rightTemplate"; "required": false; }; "rightContext": { "alias": "rightContext"; "required": false; }; }, {}, never, never, true, never>;
301
+ }
302
+
175
303
  declare class PopUpConfirmComponent {
176
304
  imgUrl: string;
177
305
  title: string;
@@ -185,5 +313,5 @@ declare class PopUpConfirmComponent {
185
313
  static ɵcmp: i0.ɵɵComponentDeclaration<PopUpConfirmComponent, "app-pop-up-confirm", never, { "imgUrl": { "alias": "imgUrl"; "required": false; }; "title": { "alias": "title"; "required": false; }; "content": { "alias": "content"; "required": false; }; "colorButton": { "alias": "colorButton"; "required": false; }; }, { "confirmClick": "confirmClick"; "cancelClick": "cancelClick"; }, never, never, true, never>;
186
314
  }
187
315
 
188
- export { ApprovalListComponent, ButtonContainerComponent, HeaderComponent, InputCalendarComponent, InputStepperComponent, InputTextComponent, LabelButtonComponent, MainLayoutComponent, PopUpConfirmComponent, SidebarComponent, TableBodyComponent, TableHeaderComponent };
189
- export type { ApprovalListItemInterface, ColumnConfig, SidebarItem };
316
+ export { ApprovalListComponent, ApprovalListItemComponent, BUTTON_SIZE_MAP, ButtonContainerComponent, FunctionalLabelComponent, HeaderComponent, IconComponent, InputCalendarComponent, InputStepperComponent, InputTextComponent, LabelButtonComponent, PopUpConfirmComponent, SidebarComponent, TableBodyComponent, TableHeaderComponent };
317
+ export type { ApprovalListItemInterface, ButtonContainerInterface, ButtonSize, ButtonSizeConfig, ColumnConfig, HeaderAction, HeaderData, IconData, SidebarData, SidebarItem };