@goat-bravos/intern-hub-layout 1.0.4 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/.editorconfig +17 -0
  2. package/.vscode/extensions.json +4 -0
  3. package/.vscode/launch.json +20 -0
  4. package/.vscode/mcp.json +9 -0
  5. package/.vscode/tasks.json +42 -0
  6. package/README.md +797 -185
  7. package/angular.json +40 -0
  8. package/ng-package.json +11 -0
  9. package/package.json +24 -16
  10. package/src/libs/layouts/header/header.component.html +58 -0
  11. package/src/libs/layouts/header/header.component.scss +108 -0
  12. package/src/libs/layouts/header/header.component.ts +70 -0
  13. package/src/libs/layouts/sidebar/sidebar.component.html +28 -0
  14. package/src/libs/layouts/sidebar/sidebar.component.scss +44 -0
  15. package/src/libs/layouts/sidebar/sidebar.component.ts +55 -0
  16. package/src/libs/shared/components/approval/approval-list/approval-list.component.html +19 -0
  17. package/src/libs/shared/components/approval/approval-list/approval-list.component.scss +24 -0
  18. package/src/libs/shared/components/approval/approval-list/approval-list.component.ts +19 -0
  19. package/src/libs/shared/components/approval/approval-list-item/approval-list-item.component.html +21 -0
  20. package/src/libs/shared/components/approval/approval-list-item/approval-list-item.component.scss +28 -0
  21. package/src/libs/shared/components/approval/approval-list-item/approval-list-item.component.ts +20 -0
  22. package/src/libs/shared/components/approval/approval-list-item/approval-list-item.model.ts +8 -0
  23. package/src/libs/shared/components/button/button-container/button-container.component.html +20 -0
  24. package/src/libs/shared/components/button/button-container/button-container.component.scss +49 -0
  25. package/src/libs/shared/components/button/button-container/button-container.component.ts +34 -0
  26. package/src/libs/shared/components/button/button-container/button-container.model.ts +58 -0
  27. package/src/libs/shared/components/button/label-button/label-button.component.html +11 -0
  28. package/src/libs/shared/components/button/label-button/label-button.component.scss +13 -0
  29. package/src/libs/shared/components/button/label-button/label-button.component.ts +18 -0
  30. package/src/libs/shared/components/functional-label/functional-label.component.html +36 -0
  31. package/src/libs/shared/components/functional-label/functional-label.component.scss +56 -0
  32. package/src/libs/shared/components/functional-label/functional-label.component.ts +141 -0
  33. package/src/libs/shared/components/icon/icon.component.html +12 -0
  34. package/src/libs/shared/components/icon/icon.component.scss +11 -0
  35. package/src/libs/shared/components/icon/icon.component.ts +61 -0
  36. package/src/libs/shared/components/input/input-calendar/input-calendar.component.html +52 -0
  37. package/src/libs/shared/components/input/input-calendar/input-calendar.component.scss +98 -0
  38. package/src/libs/shared/components/input/input-calendar/input-calendar.component.ts +126 -0
  39. package/src/libs/shared/components/input/input-label/input-label.component.html +0 -0
  40. package/src/libs/shared/components/input/input-label/input-label.component.scss +0 -0
  41. package/src/libs/shared/components/input/input-label/input-label.component.ts +0 -0
  42. package/src/libs/shared/components/input/input-stepper/input-stepper.component.html +62 -0
  43. package/src/libs/shared/components/input/input-stepper/input-stepper.component.scss +211 -0
  44. package/src/libs/shared/components/input/input-stepper/input-stepper.component.ts +73 -0
  45. package/src/libs/shared/components/input/input-text/input-text.component.html +40 -0
  46. package/src/libs/shared/components/input/input-text/input-text.component.scss +143 -0
  47. package/src/libs/shared/components/input/input-text/input-text.component.ts +63 -0
  48. package/src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.html +15 -0
  49. package/src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.scss +70 -0
  50. package/src/libs/shared/components/pop-up/pop-up-confirm/pop-up-confirm.component.ts +29 -0
  51. package/src/libs/shared/components/table/table-body/table-body.component.html +18 -0
  52. package/src/libs/shared/components/table/table-body/table-body.component.scss +6 -0
  53. package/src/libs/shared/components/table/table-body/table-body.component.ts +17 -0
  54. package/src/libs/shared/components/table/table-header/table-header.component.html +27 -0
  55. package/src/libs/shared/components/table/table-header/table-header.component.scss +91 -0
  56. package/src/libs/shared/components/table/table-header/table-header.component.ts +25 -0
  57. package/src/public-api.ts +34 -0
  58. package/tsconfig.json +38 -0
  59. package/tsconfig.lib.json +17 -0
  60. package/tsconfig.lib.prod.json +11 -0
  61. package/tsconfig.spec.json +15 -0
  62. package/fesm2022/goat-bravos-intern-hub-layout.mjs +0 -561
  63. package/fesm2022/goat-bravos-intern-hub-layout.mjs.map +0 -1
  64. package/types/goat-bravos-intern-hub-layout.d.ts +0 -189
@@ -1 +0,0 @@
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,189 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { EventEmitter, ElementRef, TemplateRef } from '@angular/core';
3
-
4
- interface SidebarItem {
5
- icon: string;
6
- content: string;
7
- }
8
- declare class SidebarComponent {
9
- menuItems: SidebarItem[];
10
- static ɵfac: i0.ɵɵFactoryDeclaration<SidebarComponent, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<SidebarComponent, "app-sidebar", never, { "menuItems": { "alias": "menuItems"; "required": false; }; }, {}, never, never, true, never>;
12
- }
13
-
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>;
18
- }
19
-
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>;
23
- }
24
-
25
- type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
26
- interface ButtonSizeConfig {
27
- minWidth: string;
28
- minHeight: string;
29
- fontSize: string;
30
- iconSize: string;
31
- contentWidth: string;
32
- contentHeight: string;
33
- }
34
-
35
- declare class ButtonContainerComponent {
36
- size: ButtonSize;
37
- content: string;
38
- fontSize?: string;
39
- leftIcon?: string;
40
- rightIcon?: string;
41
- color: string;
42
- backgroundColor: string;
43
- borderColor: string;
44
- buttonClick: EventEmitter<any>;
45
- get sizeStyle(): ButtonSizeConfig;
46
- handleClick(): void;
47
- static ɵfac: i0.ɵɵFactoryDeclaration<ButtonContainerComponent, never>;
48
- 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
- }
50
-
51
- declare class LabelButtonComponent {
52
- label: string;
53
- bgColor: string;
54
- borderColor: string;
55
- width: string;
56
- height: string;
57
- textColor: string;
58
- static ɵfac: i0.ɵɵFactoryDeclaration<LabelButtonComponent, never>;
59
- static ɵcmp: i0.ɵɵComponentDeclaration<LabelButtonComponent, "app-label-button", never, { "label": { "alias": "label"; "required": false; }; "bgColor": { "alias": "bgColor"; "required": false; }; "borderColor": { "alias": "borderColor"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; "textColor": { "alias": "textColor"; "required": false; }; }, {}, never, never, true, never>;
60
- }
61
-
62
- declare class InputTextComponent {
63
- headerInput: string;
64
- placeholder: string;
65
- readonly: boolean;
66
- required: boolean;
67
- width: string;
68
- maxLength: number;
69
- showLimit: boolean;
70
- icon: string;
71
- typeInput: string;
72
- valueChange: EventEmitter<string>;
73
- iconClick: EventEmitter<void>;
74
- private _value;
75
- onIconClick(): void;
76
- set value(val: string);
77
- get value(): string;
78
- get currentLength(): number;
79
- get limit(): string;
80
- onInput(event: Event): void;
81
- static ɵfac: i0.ɵɵFactoryDeclaration<InputTextComponent, never>;
82
- static ɵcmp: i0.ɵɵComponentDeclaration<InputTextComponent, "app-input-text", never, { "headerInput": { "alias": "headerInput"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "width": { "alias": "width"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "showLimit": { "alias": "showLimit"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "typeInput": { "alias": "typeInput"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "iconClick": "iconClick"; }, never, never, true, never>;
83
- }
84
-
85
- declare class InputStepperComponent {
86
- protected readonly componentId: string;
87
- headerInput: string;
88
- placeholder: string;
89
- readonly: boolean;
90
- required: boolean;
91
- disabled: boolean;
92
- width: string;
93
- min: number;
94
- max: number;
95
- error: string;
96
- helperText: string;
97
- step: number;
98
- state: 'default' | 'negative' | 'positive';
99
- valueChange: EventEmitter<number>;
100
- private _value;
101
- set value(val: number);
102
- get value(): number;
103
- increment(): void;
104
- decrement(): void;
105
- onInput(event: Event): void;
106
- static ɵfac: i0.ɵɵFactoryDeclaration<InputStepperComponent, never>;
107
- static ɵcmp: i0.ɵɵComponentDeclaration<InputStepperComponent, "app-input-stepper", never, { "headerInput": { "alias": "headerInput"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "width": { "alias": "width"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "error": { "alias": "error"; "required": false; }; "helperText": { "alias": "helperText"; "required": false; }; "step": { "alias": "step"; "required": false; }; "state": { "alias": "state"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
108
- }
109
-
110
- declare class InputCalendarComponent {
111
- headerInput: string;
112
- placeholder: string;
113
- readonly: boolean;
114
- required: boolean;
115
- width: string;
116
- valueChange: EventEmitter<string>;
117
- hiddenDateInput: ElementRef<HTMLInputElement>;
118
- displayValue: string;
119
- private _value;
120
- set value(val: string);
121
- get value(): string;
122
- formatToDisplay(isoDate: string): string;
123
- formatToISO(displayDate: string): string;
124
- onDisplayInput(event: Event): void;
125
- openDatePicker(): void;
126
- onDatePickerChange(event: Event): void;
127
- static ɵfac: i0.ɵɵFactoryDeclaration<InputCalendarComponent, never>;
128
- static ɵcmp: i0.ɵɵComponentDeclaration<InputCalendarComponent, "app-input-calendar", never, { "headerInput": { "alias": "headerInput"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "width": { "alias": "width"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
129
- }
130
-
131
- interface ColumnConfig {
132
- header: string;
133
- key: string;
134
- width: string;
135
- }
136
- declare class TableHeaderComponent {
137
- columns: ColumnConfig[];
138
- backgroundColor?: string;
139
- textColor: string;
140
- headerIconLeft?: string;
141
- headerIconRight?: string;
142
- fontSize: string;
143
- static ɵfac: i0.ɵɵFactoryDeclaration<TableHeaderComponent, never>;
144
- static ɵcmp: i0.ɵɵComponentDeclaration<TableHeaderComponent, "tr[app-table-header]", never, { "columns": { "alias": "columns"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "textColor": { "alias": "textColor"; "required": false; }; "headerIconLeft": { "alias": "headerIconLeft"; "required": false; }; "headerIconRight": { "alias": "headerIconRight"; "required": false; }; "fontSize": { "alias": "fontSize"; "required": false; }; }, {}, never, never, true, never>;
145
- static ngAcceptInputType_textColor: string | undefined;
146
- }
147
-
148
- declare class TableBodyComponent {
149
- rows: any[];
150
- columns: ColumnConfig[];
151
- columnTemplates: {
152
- [key: string]: TemplateRef<any>;
153
- };
154
- fontSize: string;
155
- static ɵfac: i0.ɵɵFactoryDeclaration<TableBodyComponent, never>;
156
- static ɵcmp: i0.ɵɵComponentDeclaration<TableBodyComponent, "[app-table-body]", never, { "rows": { "alias": "rows"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "columnTemplates": { "alias": "columnTemplates"; "required": false; }; "fontSize": { "alias": "fontSize"; "required": false; }; }, {}, never, never, true, never>;
157
- }
158
-
159
- interface ApprovalListItemInterface {
160
- name: string;
161
- date: Date;
162
- rightTemplate?: TemplateRef<any>;
163
- rightContext?: any;
164
- }
165
-
166
- declare class ApprovalListComponent {
167
- rows: ApprovalListItemInterface[];
168
- headerContentRight: string;
169
- headerContentLeft: string;
170
- width: string;
171
- static ɵfac: i0.ɵɵFactoryDeclaration<ApprovalListComponent, never>;
172
- 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
- }
174
-
175
- declare class PopUpConfirmComponent {
176
- imgUrl: string;
177
- title: string;
178
- content: string;
179
- colorButton: string;
180
- confirmClick: EventEmitter<void>;
181
- cancelClick: EventEmitter<void>;
182
- onConfirm(): void;
183
- onCancel(): void;
184
- static ɵfac: i0.ɵɵFactoryDeclaration<PopUpConfirmComponent, never>;
185
- 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
- }
187
-
188
- export { ApprovalListComponent, ButtonContainerComponent, HeaderComponent, InputCalendarComponent, InputStepperComponent, InputTextComponent, LabelButtonComponent, MainLayoutComponent, PopUpConfirmComponent, SidebarComponent, TableBodyComponent, TableHeaderComponent };
189
- export type { ApprovalListItemInterface, ColumnConfig, SidebarItem };