@cityway/basic-ui 1.0.1 → 1.0.2-beta003

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 (49) hide show
  1. package/README.md +1 -2
  2. package/cityway-basic-ui-1.0.2-beta003.tgz +0 -0
  3. package/fesm2022/cityway-basic-ui.mjs +849 -194
  4. package/fesm2022/cityway-basic-ui.mjs.map +1 -1
  5. package/index.d.ts +574 -42
  6. package/lib/assets/fonts/nunito/_nunito.scss +10 -10
  7. package/lib/assets/icons/sprite.ids.txt +467 -0
  8. package/lib/assets/icons/sprite.preview.html +4966 -0
  9. package/lib/assets/icons/sprite.svg +1404 -0
  10. package/lib/assets/styles/scss/_custom-bootstrap.scss +1 -1
  11. package/lib/assets/styles/scss/bootstrap/_breadcrumb.scss +6 -6
  12. package/lib/assets/styles/scss/cw-ds/_reboot.scss +3 -11
  13. package/lib/assets/styles/scss/cw-ds/_root-bo.scss +1 -0
  14. package/lib/assets/styles/scss/cw-ds/_root-fo.scss +1 -0
  15. package/lib/assets/styles/scss/cw-ds/components/_accordion.scss +35 -0
  16. package/lib/assets/styles/scss/cw-ds/components/_alert.scss +10 -10
  17. package/lib/assets/styles/scss/cw-ds/components/_badge.scss +22 -22
  18. package/lib/assets/styles/scss/cw-ds/components/_close.scss +5 -0
  19. package/lib/assets/styles/scss/cw-ds/components/_icon-notification.scss +10 -10
  20. package/lib/assets/styles/scss/cw-ds/components/_icon.scss +35 -9
  21. package/lib/assets/styles/scss/cw-ds/components/_modal.scss +161 -0
  22. package/lib/assets/styles/scss/cw-ds/components/_numerical-range.scss +4 -4
  23. package/lib/assets/styles/scss/cw-ds/components/button/_button-bo-variant.scss +87 -21
  24. package/lib/assets/styles/scss/cw-ds/components/button/_button-fo-variant.scss +21 -87
  25. package/lib/assets/styles/scss/cw-ds/components/button/_button.scss +11 -1
  26. package/lib/assets/styles/scss/cw-ds/components/tab/_tab-bo.scss +96 -0
  27. package/lib/assets/styles/scss/cw-ds/components/{_tab.scss → tab/_tab-fo.scss} +6 -4
  28. package/lib/assets/styles/scss/cw-ds/helpers/_skeleton.scss +67 -0
  29. package/lib/assets/styles/scss/cw-ds/helpers/_spinner.scss +15 -9
  30. package/lib/assets/styles/scss/cw-ds/mixins/_type.scss +17 -0
  31. package/lib/assets/styles/scss/cw-ds/utilities/_breakpoints.scss +30 -0
  32. package/lib/assets/styles/scss/cw-ds/utilities/_flex.scss +4 -0
  33. package/lib/assets/styles/scss/cw-ds/utilities/_grid.scss +65 -0
  34. package/lib/assets/styles/scss/cw-ds/utilities/type/_type-bo.scss +40 -0
  35. package/lib/assets/styles/scss/cw-ds/utilities/type/_type-fo.scss +1 -0
  36. package/lib/assets/styles/scss/cw-ds/utilities/type/_type.scss +18 -0
  37. package/lib/assets/styles/scss/styles-bo.scss +23 -15
  38. package/lib/assets/styles/scss/styles-fo.scss +23 -15
  39. package/package.json +3 -4
  40. package/styles/styles-bo.min.css +5 -0
  41. package/styles/styles-bo.min.css.map +1 -0
  42. package/styles/styles-fo.min.css +5 -0
  43. package/styles/styles-fo.min.css.map +1 -0
  44. package/cityway-basic-ui-1.0.1.tgz +0 -0
  45. package/lib/assets/styles/scss/cw-ds/utilities/_type.scss +0 -3
  46. package/styles-bo.min.css +0 -5
  47. package/styles-bo.min.css.map +0 -1
  48. package/styles-fo.min.css +0 -5
  49. package/styles-fo.min.css.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cityway-basic-ui.mjs","sources":["../../../projects/basic-ui/src/lib/directives/collapse.directive.ts","../../../projects/basic-ui/src/lib/enum/icon.enum.ts","../../../projects/basic-ui/src/lib/components/icon/icon.component.ts","../../../projects/basic-ui/src/lib/components/icon/icon.component.html","../../../projects/basic-ui/src/lib/enum/card.enum.ts","../../../projects/basic-ui/src/lib/components/card/card.component.ts","../../../projects/basic-ui/src/lib/components/card/card.component.html","../../../projects/basic-ui/src/lib/components/accordion/accordion.component.ts","../../../projects/basic-ui/src/lib/components/accordion/accordion.component.html","../../../projects/basic-ui/src/lib/enum/alert.enum.ts","../../../projects/basic-ui/src/lib/enum/icon-notification.enum.ts","../../../projects/basic-ui/src/lib/components/icon-notification/icon-notification.component.ts","../../../projects/basic-ui/src/lib/components/icon-notification/icon-notification.component.html","../../../projects/basic-ui/src/lib/components/alert/alert.component.ts","../../../projects/basic-ui/src/lib/components/alert/alert.component.html","../../../projects/basic-ui/src/lib/services/focus.service.ts","../../../projects/basic-ui/src/lib/services/toast.service.ts","../../../projects/basic-ui/src/lib/components/toast/toast.component.ts","../../../projects/basic-ui/src/lib/components/toast/toast.component.html","../../../projects/basic-ui/src/lib/enum/badge.enum.ts","../../../projects/basic-ui/src/lib/components/badge/badge.component.ts","../../../projects/basic-ui/src/lib/components/badge/badge.component.html","../../../projects/basic-ui/src/lib/directives/clickoutside.directive.ts","../../../projects/basic-ui/src/lib/enum/button.enum.ts","../../../projects/basic-ui/src/lib/services/responsive.service.ts","../../../projects/basic-ui/src/lib/helpers/utils.helper.ts","../../../projects/basic-ui/src/lib/components/button/button.component.ts","../../../projects/basic-ui/src/lib/components/button/button.component.html","../../../projects/basic-ui/src/lib/components/dropdown/dropdown.component.ts","../../../projects/basic-ui/src/lib/components/dropdown/dropdown.component.html","../../../projects/basic-ui/src/lib/directives/show-hide-password.ts","../../../projects/basic-ui/src/lib/enum/field-type.enum.ts","../../../projects/basic-ui/src/lib/components/form-field/form-field.component.ts","../../../projects/basic-ui/src/lib/components/form-field/form-field.component.html","../../../projects/basic-ui/src/lib/enum/legend-type.enum.ts","../../../projects/basic-ui/src/lib/components/legend/legend.component.ts","../../../projects/basic-ui/src/lib/components/legend/legend.component.html","../../../projects/basic-ui/src/lib/components/loader/loader.component.ts","../../../projects/basic-ui/src/lib/components/loader/loader.component.html","../../../projects/basic-ui/src/lib/enum/modals.enum.ts","../../../projects/basic-ui/src/lib/components/modals/modals.component.ts","../../../projects/basic-ui/src/lib/components/modals/modals.component.html","../../../projects/basic-ui/src/lib/components/tab/components/tab-content.component.ts","../../../projects/basic-ui/src/lib/enum/tab.enum.ts","../../../projects/basic-ui/src/lib/components/tab/tab.component.ts","../../../projects/basic-ui/src/lib/components/tab/tab.component.html","../../../projects/basic-ui/src/lib/components/wizard-stepper/components/wizard-step.component.ts","../../../projects/basic-ui/src/lib/components/wizard-stepper/wizard-stepper.component.ts","../../../projects/basic-ui/src/lib/components/wizard-stepper/wizard-stepper.component.html","../../../projects/basic-ui/src/lib/components/stepper/stepper.component.ts","../../../projects/basic-ui/src/lib/components/stepper/stepper.component.html","../../../projects/basic-ui/src/lib/pipe/format-file-size.pipe.ts","../../../projects/basic-ui/src/lib/components/file-to-download/file-to-download.component.ts","../../../projects/basic-ui/src/lib/components/file-to-download/file-to-download.component.html","../../../projects/basic-ui/src/lib/enum/numerical-range.enum.ts","../../../projects/basic-ui/src/lib/components/numerical-range/numerical-range.component.ts","../../../projects/basic-ui/src/lib/components/numerical-range/numerical-range.component.html","../../../projects/basic-ui/src/lib/components/image/image.component.ts","../../../projects/basic-ui/src/lib/components/image/image.component.html","../../../projects/basic-ui/src/lib/enum/placement.enum.ts","../../../projects/basic-ui/src/lib/services/modals.service.ts","../../../projects/basic-ui/src/public-api.ts","../../../projects/basic-ui/src/cityway-basic-ui.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Input, Output, inject, effect, signal } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cwCollapse]',\r\n exportAs: 'cwCollapse',\r\n standalone: true\r\n})\r\nexport class CollapseDirective {\r\n private elementRef = inject(ElementRef);\r\n\r\n // Utilisation de signals pour la réactivité\r\n private collapsedSignal = signal(false);\r\n\r\n @Input({ required: false })\r\n set cwCollapse(value: boolean) {\r\n this.collapsedSignal.set(value);\r\n }\r\n\r\n get cwCollapse(): boolean {\r\n return this.collapsedSignal();\r\n }\r\n\r\n @Output() shown = new EventEmitter<void>();\r\n @Output() hidden = new EventEmitter<void>();\r\n\r\n constructor() {\r\n // Effect pour réagir aux changements de collapsed\r\n effect(() => {\r\n const isCollapsed = this.collapsedSignal();\r\n this.updateClasses(isCollapsed);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.classList.add('collapse');\r\n this.updateClasses(this.collapsedSignal());\r\n }\r\n\r\n private updateClasses(isCollapsed: boolean): void {\r\n const element = this.elementRef.nativeElement;\r\n\r\n if (isCollapsed) {\r\n element.classList.remove('show');\r\n this.hidden.emit();\r\n } else {\r\n element.classList.add('show');\r\n this.shown.emit();\r\n }\r\n }\r\n\r\n toggle(): void {\r\n this.collapsedSignal.update(value => !value);\r\n }\r\n\r\n show(): void {\r\n this.collapsedSignal.set(false);\r\n }\r\n\r\n hide(): void {\r\n this.collapsedSignal.set(true);\r\n }\r\n}\r\n","export enum IconSizeEnum {\r\n '5xl' = '5xl',\r\n '4xl' = '4xl',\r\n '3xl' = '3xl',\r\n '2xl' = '2xl',\r\n 'xl' = 'xl',\r\n 'lg' = 'lg',\r\n 'md' = 'md',\r\n 'sm' = 'sm',\r\n 'xs' = 'xs',\r\n '2xs' = '2xs',\r\n '3xs' = '3xs'\r\n}\r\n\r\nexport enum IconTypeEnum {\r\n default = 'default',\r\n rounded = 'rounded'\r\n}\r\n\r\nexport enum IconUiTypeEnum {\r\n default = 'default',\r\n light = 'light',\r\n primary = 'primary',\r\n invert = 'invert'\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { IconSizeEnum, IconTypeEnum, IconUiTypeEnum } from '../../enum/icon.enum';\n\n@Component({\n selector: 'cw-icon',\n templateUrl: './icon.component.html',\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class IconComponent implements OnInit {\n\n @Input() icon = 'cw-alert-help';\n @Input() font = 'optyweb';\n @Input() label?: string;\n @Input() type?: IconTypeEnum = IconTypeEnum.default;\n\n @Input() iconSize?: IconSizeEnum = IconSizeEnum['sm'];\n @Input() iconCssClass?: string = '';\n @Input() iconUiType?: IconUiTypeEnum = IconUiTypeEnum.default;\n @Input() iconColorCustom?: string;\n\n public iconTypeEnum = IconTypeEnum;\n public iconClass: string;\n\n constructor() { }\n\n @HostBinding('class')\n\n get hostClasses(): string {\n if(this.type == IconTypeEnum.rounded) {\n return 'icon-rounded icon-rounded-' + this.iconSize + ' icon-rounded-' + this.iconUiType;\n }else {\n return 'icon icon-' + this.iconSize;\n }\n }\n\n ngOnInit(): void {\n this.iconClass = this.font + ' ' + this.icon;\n }\n}\n","@if (type == iconTypeEnum.rounded) {\r\n <span class=\"icon\">\r\n <ng-container *ngTemplateOutlet=\"icon\"></ng-container>\r\n </span>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"icon\"></ng-container>\r\n }\r\n\r\n<ng-template #icon>\r\n <span [class]=\"iconClass + ' icon-span'\" [ngClass]=\"iconCssClass\" aria-hidden=\"true\" [attr.style]=\"iconColorCustom ? 'color: ' + iconColorCustom : null\"></span>\r\n @if (label) {\r\n <span class=\"visually-hidden\">{{ label }}</span>\r\n }\r\n</ng-template>\r\n","export enum CardTypeEnum {\r\n default = 'default',\r\n light = 'light'\r\n}\r\n\r\nexport enum CardTitleRankEnum {\r\n h2 = 'h2',\r\n h3 = 'h3'\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, Input, OnInit, AfterViewInit, ViewChild, ElementRef, signal, Output, EventEmitter, WritableSignal } from '@angular/core';\nimport { CollapseDirective } from '../../directives/collapse.directive';\nimport { IconComponent } from '../icon/icon.component';\nimport { CardTitleRankEnum, CardTypeEnum } from '../../enum/card.enum';\nimport { IconSizeEnum } from '../../enum/icon.enum';\n\n@Component({\n selector: 'cw-card',\n templateUrl: './card.component.html',\n standalone: true,\n imports: [\n CommonModule,\n CollapseDirective,\n IconComponent\n ]\n})\n\nexport class CardComponent implements OnInit, AfterViewInit {\n\n @Input() title: string;\n @Input() type: CardTypeEnum = CardTypeEnum.default;\n @Input() titleRank: CardTitleRankEnum = CardTitleRankEnum.h2;\n @Input() collapsible: boolean = false;\n @Input() collapsed: boolean = false;\n @Input() collapseId: string = `collapse-${Math.random().toString(36).substring(2, 11)}`;\n @Input() destroyOnHide: boolean = true;\n\n @Output() collapseClicked = new EventEmitter<boolean>();\n\n @ViewChild('collapse') collapseDirective?: CollapseDirective;\n @ViewChild('cardFooter') cardFooter: ElementRef<any>;\n\n public showFooter = true;\n public titleRankEnum = CardTitleRankEnum;\n public typeEnum = CardTypeEnum;\n protected isCollapsed = signal(false);\n protected shouldRenderBody = signal(true);\n\n readonly iconSize = IconSizeEnum;\n\n constructor(private cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.isCollapsed.set(this.collapsed);\n if (this.destroyOnHide && this.collapsed) {\n this.shouldRenderBody.set(false);\n }\n }\n\n ngAfterViewInit(): void {\n this.showFooter = this.cardFooter.nativeElement && this.cardFooter.nativeElement.children.length > 0;\n this.cdRef.detectChanges();\n }\n\n toggleCollapse() {\n if (this.collapsible) {\n const newCollapsedState = !this.isCollapsed();\n this.updateCollapseState(newCollapsedState);\n }\n }\n\n collapse() {\n this.updateCollapseState(true);\n }\n\n expand() {\n this.updateCollapseState(false);\n }\n\n private updateCollapseState(collapsed: boolean) {\n if (!collapsed && this.destroyOnHide && !this.shouldRenderBody()) {\n this.shouldRenderBody.set(true);\n this.cdRef.detectChanges();\n }\n\n this.isCollapsed.set(collapsed);\n this.collapseClicked.emit(collapsed);\n\n if (collapsed && this.destroyOnHide) {\n setTimeout(() => {\n if (this.isCollapsed()) {\n this.shouldRenderBody.set(false);\n this.cdRef.detectChanges();\n }\n }, 120);\n }\n }\n\n get collapsed_state(): boolean {\n return this.isCollapsed();\n }\n\n}\n","<div class=\"card\" [class.card-collapse]=\"collapsible\" [class.card-light]=\"type == typeEnum.light\">\n @if (title) {\n <div class=\"card-header\" [class.card-header-collapse]=\"collapsible\"\n [class.card-header-collapsed]=\"collapsible && isCollapsed()\">\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n </div>\n }\n\n @if (shouldRenderBody()) {\n <div class=\"card-body\" [cwCollapse]=\"isCollapsed()\" [id]=\"collapseId\" #collapse=\"cwCollapse\">\n <ng-content></ng-content>\n </div>\n }\n\n @if (showFooter) {\n <div class=\"card-footer\" #cardFooter>\n <ng-content select=\"[card-footer]\"></ng-content>\n </div>\n }\n</div>\n\n<ng-template #header>\n @if (titleRank == titleRankEnum.h2) {\n <h2>{{title}}</h2>\n }\n @else if (titleRank == titleRankEnum.h3) {\n <h3>{{title}}</h3>\n }\n\n <div class=\"card-header-custom-area\">\n <ng-content select=\"[header-custom-area]\"></ng-content>\n </div>\n\n @if (collapsible) {\n <button type=\"button\" class=\"btn btn-collapse stretched-link\" (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"!isCollapsed()\" [class.collapsed]=\"isCollapsed()\" [attr.aria-controls]=\"collapseId\">\n <cw-icon icon=\"cw-nav-expand2\" label=\"Déplier/Plier\" [iconSize]=\"iconSize['xs']\"></cw-icon>\n <!-- // TODO trad -->\n </button>\n }\n</ng-template>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, Output, EventEmitter, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\r\nimport { CardComponent } from '../card/card.component';\r\n\r\n@Component({\r\n selector: 'cw-accordion',\r\n templateUrl: './accordion.component.html',\r\n standalone: true,\r\n imports: [CommonModule]\r\n})\r\nexport class AccordionComponent implements AfterContentInit {\r\n\r\n @Input() closeOthers: boolean = true;\r\n @Input() allowMultiple: boolean = false;\r\n @Input() destroyOnHide: boolean = true; // Nouvelle option pour l'accordéon\r\n\r\n @Output() panelOpened = new EventEmitter<string>();\r\n @Output() panelClosed = new EventEmitter<string>();\r\n\r\n @ContentChildren(CardComponent) cards!: QueryList<CardComponent>;\r\n\r\n private cardMap = new Map<string, CardComponent>();\r\n\r\n ngAfterContentInit(): void {\r\n this.cards.forEach(card => {\r\n if (!card.collapsible) {\r\n card.collapsible = true;\r\n }\r\n\r\n if (card.destroyOnHide === true) {\r\n card.destroyOnHide = this.destroyOnHide;\r\n }\r\n\r\n this.cardMap.set(card.collapseId, card);\r\n\r\n card.collapseClicked.subscribe((isCollapsed: boolean) => {\r\n this.onCardToggle(card.collapseId, isCollapsed);\r\n });\r\n });\r\n }\r\n\r\n openPanel(panelId: string): void {\r\n const card = this.cardMap.get(panelId);\r\n if (card) {\r\n if (this.shouldCloseOthers()) {\r\n this.closeAllExcept(panelId);\r\n }\r\n card.expand();\r\n }\r\n }\r\n\r\n closePanel(panelId: string): void {\r\n const card = this.cardMap.get(panelId);\r\n if (card) {\r\n card.collapse();\r\n }\r\n }\r\n\r\n togglePanel(panelId: string): void {\r\n const card = this.cardMap.get(panelId);\r\n if (card) {\r\n if (card.collapsed_state) {\r\n this.openPanel(panelId);\r\n } else {\r\n this.closePanel(panelId);\r\n }\r\n }\r\n }\r\n\r\n closeAll(): void {\r\n this.cards.forEach(card => card.collapse());\r\n }\r\n\r\n openAll(): void {\r\n if (!this.shouldCloseOthers()) {\r\n this.cards.forEach(card => card.expand());\r\n }\r\n }\r\n\r\n private onCardToggle(panelId: string, isCollapsed: boolean): void {\r\n if (!isCollapsed) {\r\n if (this.shouldCloseOthers()) {\r\n this.closeAllExcept(panelId);\r\n }\r\n this.panelOpened.emit(panelId);\r\n } else {\r\n this.panelClosed.emit(panelId);\r\n }\r\n }\r\n\r\n private closeAllExcept(exceptId: string): void {\r\n this.cards.forEach(card => {\r\n if (card.collapseId !== exceptId) {\r\n card.collapse();\r\n }\r\n });\r\n }\r\n\r\n private shouldCloseOthers(): boolean {\r\n return this.closeOthers && !this.allowMultiple;\r\n }\r\n}\r\n","<div class=\"accordion\">\r\n <ng-content></ng-content>\r\n</div>\r\n","export enum AlertTypeEnum {\r\n info = 'info',\r\n success = 'success',\r\n warning = 'warning',\r\n danger = 'danger',\r\n}\r\n","export enum IconNotifSizeEnum {\r\n '5xl' = '5xl',\r\n 'md' = 'md'\r\n}\r\n\r\nexport enum IconNotifTypeEnum {\r\n info = 'info',\r\n success = 'success',\r\n warning = 'warning',\r\n danger = 'danger',\r\n careful = 'careful'\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { IconNotifSizeEnum, IconNotifTypeEnum } from '../../enum/icon-notification.enum';\n\n@Component({\n selector: 'cw-icon-notification',\n templateUrl: './icon-notification.component.html',\n standalone: true,\n imports: [\n CommonModule\n ]\n})\nexport class IconNotificationComponent implements OnInit {\n @Input() type?: IconNotifTypeEnum = IconNotifTypeEnum.info;\n @Input() iconSize?: IconNotifSizeEnum = IconNotifSizeEnum['md'];\n\n public icon: string;\n public label: string;\n\n constructor() { }\n\n @HostBinding('class')\n\n get hostClasses(): string {\n return 'icon-rounded icon-rounded-' + this.iconSize + ' icon-notification-' + this.type;\n }\n\n ngOnInit(): void {\n switch (this.type) {\n case IconNotifTypeEnum.info:\n this.icon = 'cw-alert-info2';\n this.label = 'Informatiion';\n break;\n case IconNotifTypeEnum.success:\n this.icon = 'cw-alert-success2';\n this.label = 'Succès';\n break;\n case IconNotifTypeEnum.warning:\n this.icon = 'cw-event-warning';\n this.label = 'Avertisement';\n break;\n case IconNotifTypeEnum.danger:\n this.icon = 'cw-toolbar-close1';\n this.label = 'Erreur';\n break;\n case IconNotifTypeEnum.careful:\n this.icon = 'cw-alert-warning';\n this.label = 'Attention';\n break;\n }\n }\n}\n","\r\n<span class=\"icon\">\r\n <span class=\"icon-span optyweb\" [ngClass]=\"icon\" aria-hidden=\"true\" [title]=\"label\"></span>\r\n <span class=\"visually-hidden\">{{ label }}</span>\r\n</span>\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AlertTypeEnum } from '../../enum/alert.enum';\r\nimport { IconNotificationComponent } from \"../icon-notification/icon-notification.component\";\r\nimport { IconNotifTypeEnum } from '../../enum/icon-notification.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconSizeEnum, IconTypeEnum } from '../../enum/icon.enum';\r\n\r\n@Component({\r\n selector: 'cw-alert',\r\n templateUrl: './alert.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n IconNotificationComponent,\r\n IconComponent\r\n]\r\n})\r\nexport class AlertComponent implements OnInit {\r\n\r\n @Input() type: AlertTypeEnum = AlertTypeEnum.info;\r\n @Input() title?: string;\r\n @Input() isDismissible: boolean = false;\r\n @Input() cssClass?: string = '';\r\n @Input() dataTest?: string;\r\n\r\n @Output() close = new EventEmitter<boolean>();\r\n\r\n @ViewChild('alertContent') alertContent: ElementRef<any>;\r\n\r\n public isVisible: boolean = true;\r\n public icon: string;\r\n public iconNotifType: IconNotifTypeEnum;\r\n public showContent = true;\r\n\r\n readonly iconSize = IconSizeEnum;\r\n\r\n constructor(private cdRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.dataTest = this.dataTest ? this.dataTest : 'alert' + this.type;\r\n\r\n switch (this.type) {\r\n case AlertTypeEnum.info:\r\n this.icon = \"cw-alert-info2\";\r\n this.iconNotifType = IconNotifTypeEnum.info;\r\n break;\r\n case AlertTypeEnum.danger:\r\n this.icon = \"cw-toolbar-close1\";\r\n this.iconNotifType = IconNotifTypeEnum.danger;\r\n break;\r\n case AlertTypeEnum.warning:\r\n this.icon = \"cw-event-warning\";\r\n this.iconNotifType = IconNotifTypeEnum.warning;\r\n break;\r\n case AlertTypeEnum.success:\r\n this.icon = \"cw-alert-success2\";\r\n this.iconNotifType = IconNotifTypeEnum.success;\r\n break;\r\n default:\r\n this.icon = \"cw-alert-info2\";\r\n this.iconNotifType = IconNotifTypeEnum.info;\r\n break;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.showContent = this.alertContent.nativeElement && this.alertContent.nativeElement.children.length > 0;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public closeAlert() {\r\n this.isVisible = false;\r\n this.close.emit();\r\n }\r\n\r\n}\r\n","@if (isVisible) {\r\n <div [class]=\"'alert alert-' + type + ' '+ cssClass\" [ngClass]=\"{ 'alert-dismissible fade show': isDismissible }\"\r\n [attr.data-test-ctw]=\"dataTest\">\r\n <cw-icon-notification [type]=\"iconNotifType\"></cw-icon-notification>\r\n <div class=\"alert-content\">\r\n @if (title) {\r\n <div class=\"fw-bold\">{{ title }}</div>\r\n }\r\n\r\n @if (showContent) {\r\n <p class=\"mb-none\" #alertContent>\r\n <ng-content></ng-content>\r\n </p>\r\n }\r\n </div>\r\n @if (isDismissible) {\r\n <button type=\"button\" class=\"btn-close\" (click)=\"closeAlert()\"\r\n [attr.aria-label]=\"'_COMMON._ACTION.CLOSE' | translate\"\r\n [attr.data-test-ctw]=\"'close-' + dataTest\">\r\n <cw-icon [label]=\"'_COMMON._ACTION.CLOSE' | translate\" [iconSize]=\"iconSize['2xs']\" icon=\"cw-toolbar-close1\"></cw-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class FocusTrackerService implements OnDestroy {\r\n\r\n private lastFocusedElement: HTMLElement | null = null;\r\n private focusListener: (event: FocusEvent) => void;\r\n\r\n constructor() {\r\n this.focusListener = this.onFocus.bind(this);\r\n document.addEventListener('focus', this.focusListener, true);\r\n }\r\n\r\n private onFocus(event: FocusEvent): void {\r\n const target = event.target as HTMLElement;\r\n if (target) {\r\n this.lastFocusedElement = target;\r\n }\r\n }\r\n\r\n getFocusedElement(): HTMLElement | null {\r\n return this.lastFocusedElement;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n document.removeEventListener('focus', this.focusListener, true);\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Toast } from '../models/toast.model';\r\nimport { FocusTrackerService } from './focus.service';\r\nimport { AlertTypeEnum } from '../enum/alert.enum';\r\n\r\nexport interface ShowToastOptions<T = unknown> {\r\n type: AlertTypeEnum;\r\n message: string;\r\n title?: string;\r\n autohide?: boolean;\r\n action?: {\r\n label: string;\r\n payload?: T;\r\n };\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ToastService {\r\n private focusService = inject(FocusTrackerService);\r\n\r\n public toasts: Toast[] = [];\r\n private lastToast?: { message: string; date: Date };\r\n private triggeringElement?: HTMLElement;\r\n private autohideTimers = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\n public show<T>(options: ShowToastOptions<T>): void {\r\n if (!this.canShowMessage(options.message)) {\r\n return;\r\n }\r\n\r\n const toast: Toast<T> = {\r\n id: crypto.randomUUID(),\r\n type: options.type,\r\n title: options.title,\r\n message: options.message,\r\n autohide: options.autohide ?? false,\r\n action: options.action,\r\n };\r\n\r\n this.toasts.push(toast);\r\n this.triggeringElement = this.focusService.getFocusedElement();\r\n\r\n // Gestion du autohide\r\n if (toast.autohide) {\r\n const toastId = toast.id; // Capturer l'ID\r\n const timer = setTimeout(() => {\r\n this.removeById(toastId);\r\n }, 5000);\r\n\r\n this.autohideTimers.set(toastId, timer);\r\n }\r\n }\r\n\r\n public remove(toast: Toast): void {\r\n this.removeById(toast.id);\r\n }\r\n\r\n private removeById(toastId: string): void {\r\n // Nettoyer le timer s'il existe\r\n const timer = this.autohideTimers.get(toastId);\r\n if (timer) {\r\n clearTimeout(timer);\r\n this.autohideTimers.delete(toastId);\r\n }\r\n\r\n this.toasts = this.toasts.filter(t => t.id !== toastId);\r\n\r\n // Ne restaurer le focus que si c'était une action manuelle\r\n if (timer === undefined || this.autohideTimers.has(toastId) === false) {\r\n this.triggeringElement?.focus();\r\n }\r\n }\r\n\r\n public clear(): void {\r\n // Nettoyer tous les timers\r\n this.autohideTimers.forEach(timer => clearTimeout(timer));\r\n this.autohideTimers.clear();\r\n\r\n this.toasts = [];\r\n }\r\n\r\n private canShowMessage(message: string): boolean {\r\n if (!this.lastToast) {\r\n this.setLastToast(message);\r\n return true;\r\n }\r\n\r\n const limit = new Date(this.lastToast.date);\r\n limit.setSeconds(limit.getSeconds() + 1);\r\n\r\n if (new Date() > limit || message !== this.lastToast.message) {\r\n this.setLastToast(message);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private setLastToast(message: string): void {\r\n this.lastToast = { message, date: new Date() };\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { Toast, ToastAction } from '../../models/toast.model';\r\nimport { AlertComponent } from '../alert/alert.component';\r\nimport { ToastService } from '../../services/toast.service';\r\n\r\n@Component({\r\n selector: 'cw-toast',\r\n templateUrl: './toast.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n AlertComponent\r\n ],\r\n host: { '[class.toast]': 'true', role: 'alert' }\r\n})\r\nexport class ToastComponent {\r\n\r\n readonly toastService = inject(ToastService);\r\n private elRef = inject(ElementRef);\r\n\r\n @Output() action = new EventEmitter<ToastAction>();\r\n @Output() closed = new EventEmitter<void>();\r\n\r\n ngAfterViewInit(): void {\r\n const elemPosition = this.elRef.nativeElement.getBoundingClientRect();\r\n document.addEventListener(\"scroll\", (event) => {\r\n if (window.scrollY >= elemPosition.top * 2) {\r\n this.elRef.nativeElement.classList.remove('is-absolute');\r\n }\r\n else {\r\n this.elRef.nativeElement.classList.add('is-absolute');\r\n }\r\n });\r\n }\r\n\r\n public onAction(toast: Toast): void {\r\n if (!toast?.action) {\r\n return;\r\n }\r\n this.action.emit(toast.action);\r\n }\r\n\r\n public close(): void {\r\n this.closed.emit();\r\n }\r\n}\r\n","@for (toast of toastService.toasts; track toast.id) {\r\n <cw-alert [type]=\"toast.type\" [isDismissible]=\"true\" [title]=\"toast.title\" (close)=\"toastService.remove(toast)\" [dataTest]=\"'toast-'+ toast.type\">\r\n <span [innerHTML]=\"toast.message\"></span>&nbsp;\r\n @if (toast.action) {\r\n <a href=\"javascript:void(0);\" (click)=\"onAction(toast)\" class=\"alert-link\">{{ toast.action.label }}</a>\r\n }\r\n </cw-alert>\r\n}\r\n","export enum BadgeTypeEnum {\r\n // Light variants\r\n lightInfo = 'light-info',\r\n lightSuccess = 'light-success',\r\n lightWarning = 'light-warning',\r\n lightDanger = 'light-danger',\r\n lightLight = 'light-light',\r\n\r\n // Heavy variants\r\n heavyPrimary = 'heavy-primary',\r\n heavyInfo = 'heavy-info',\r\n heavySuccess = 'heavy-success',\r\n heavyWarning = 'heavy-warning',\r\n heavyDanger = 'heavy-danger',\r\n heavyDark = 'heavy-dark',\r\n heavyLight = 'heavy-light',\r\n heavyDisabled = 'heavy-disabled',\r\n}\r\n\r\nexport enum BadgePositionEnum {\r\n left = 'left',\r\n right = 'right'\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { BadgeTypeEnum, BadgePositionEnum } from '../../enum/badge.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconSizeEnum } from '../../enum/icon.enum';\r\n\r\n@Component({\r\n selector: 'cw-badge',\r\n templateUrl: './badge.component.html',\r\n standalone: true,\r\n imports: [IconComponent]\r\n})\r\nexport class BadgeComponent {\r\n\r\n public badgePositionEnum = BadgePositionEnum;\r\n\r\n @Input() type!: BadgeTypeEnum;\r\n @Input() label?: string;\r\n @Input() withIcon?: string;\r\n @Input() iconPosition?: BadgePositionEnum = this.badgePositionEnum.left;\r\n @Input() cssClass?: string = '';\r\n @Input() dataTest?: string;\r\n\r\n public iconSizeEnum = IconSizeEnum;\r\n\r\n constructor() { }\r\n\r\n}\r\n","<div [class]=\"'badge badge-' + type + ' '+ cssClass\" [attr.data-test-ctw]=\"dataTest ? dataTest : null\">\r\n\r\n @if (withIcon && iconPosition === badgePositionEnum.left) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['2xs']\"></cw-icon>\r\n }\r\n\r\n @if (label) {\r\n {{ label }}\r\n }\r\n\r\n @if (withIcon && iconPosition === badgePositionEnum.right) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['2xs']\"></cw-icon>\r\n }\r\n</div>\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[clickOutside]',\r\n standalone: true\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n}\r\n","export enum FoButtonTypeEnum {\r\n primary = 'primary',\r\n secondary = 'secondary',\r\n link = 'link'\r\n}\r\n\r\nexport enum BoButtonTypeEnum {\r\n primary = 'primary',\r\n secondary = 'secondary',\r\n link = 'link',\r\n info = 'info',\r\n warning = 'warning',\r\n success = 'success',\r\n danger = 'danger',\r\n dangerOutline = 'danger-outline',\r\n light = 'light'\r\n}\r\n\r\nexport enum ButtonIconSizeEnum {\r\n default = 'default',\r\n small = 'small',\r\n xsmall = 'xsmall'\r\n}\r\n\r\nexport enum ButtonPositionEnum {\r\n left = 'left',\r\n right = 'right'\r\n}\r\n\r\nexport enum TypeTooltipEnum {\r\n tooltip = 'tooltip',\r\n popover = 'popover'\r\n}\r\n\r\nexport enum TriggerTooltipEnum {\r\n click = 'click',\r\n hover = 'hover'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EventManager } from '@angular/platform-browser';\r\nimport { BehaviorSubject, fromEvent } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResponsiveService {\r\n\r\n public checkIsMobileResolution$: BehaviorSubject<boolean>;\r\n\r\n constructor() {\r\n this.checkIsMobileResolution$ = new BehaviorSubject<boolean>(this.checkIsMobileResolution());\r\n fromEvent(window, 'resize').subscribe(e => {\r\n this.checkIsMobileResolution$.next(this.checkIsMobileResolution());\r\n });\r\n }\r\n\r\n private checkIsMobileResolution(): boolean {\r\n return window.innerWidth < 768;\r\n }\r\n}\r\n","\r\nexport class UtilsHelper {\r\n\r\n static slugify(text?: string): string {\r\n if (!text) return '';\r\n return text\r\n .normalize('NFD')\r\n .toLowerCase()\r\n .trim()\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .replace(/[^a-z0-9]+/g, '-')\r\n .replace(/^-+|-+$/g, '');\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Directive, ElementRef, EventEmitter, inject, Input, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ClickOutsideDirective } from '../../directives/clickoutside.directive';\r\nimport { ButtonPositionEnum, FoButtonTypeEnum, BoButtonTypeEnum, TypeTooltipEnum, TriggerTooltipEnum, ButtonIconSizeEnum } from '../../enum/button.enum';\r\nimport { IconSizeEnum, IconTypeEnum, IconUiTypeEnum } from '../../enum/icon.enum';\r\nimport { ResponsiveService } from '../../services/responsive.service';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { UtilsHelper } from '../../helpers/utils.helper';\r\n\r\n@Directive({ selector: '[cwDropdownItem]' })\r\n\r\nexport class DropdownItemDirective {\r\n private elementRef = inject(ElementRef);\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.classList.add('dropdown-item');\r\n this.elementRef.nativeElement.setAttribute('tabindex', '0');\r\n }\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'cw-button',\r\n templateUrl: './button.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n IconComponent,\r\n ClickOutsideDirective\r\n ]\r\n})\r\nexport class ButtonComponent implements OnInit {\r\n private renderer = inject(Renderer2);\r\n responsiveService = inject(ResponsiveService);\r\n\r\n public buttonPositionEnum = ButtonPositionEnum;\r\n\r\n @Input() type: FoButtonTypeEnum | BoButtonTypeEnum;\r\n @Input() label: string;\r\n @Input() id: string = '';\r\n\r\n @Input() isDropdown?: boolean = false;\r\n @Input() withIcon?: string = '';\r\n @Input() withOnlyIcon?: boolean = false;\r\n @Input() iconSize?: ButtonIconSizeEnum = ButtonIconSizeEnum.default;\r\n @Input() iconPosition?: ButtonPositionEnum = this.buttonPositionEnum.left;\r\n @Input() dropdownPosition?: ButtonPositionEnum = this.buttonPositionEnum.right;\r\n @Input() isMinWidth?: boolean = false;\r\n @Input() isDisabled?: boolean = false;\r\n @Input() withSpinner?: boolean = false;\r\n @Input() cssClass?: string = '';\r\n @Input() dataTest?: string;\r\n\r\n @Input() withTooltip?: boolean = false;\r\n @Input() tooltipText?: string = '';\r\n @Input() tooltipTitle?: string = '';\r\n @Input() tooltipTrigger?: TriggerTooltipEnum = TriggerTooltipEnum.hover;\r\n @Input() tooltipPosition?: ButtonPositionEnum = this.buttonPositionEnum.right;\r\n @Input() tooltipType?: TypeTooltipEnum = TypeTooltipEnum.tooltip;\r\n\r\n @Output() btnAction = new EventEmitter<string>();\r\n @Output() dropDownClicked = new EventEmitter<boolean>();\r\n\r\n @ViewChild('dropdown') dropdown: ElementRef | undefined;\r\n @ViewChild('dropdownMenu') dropdownMenu: ElementRef;\r\n @ViewChild('dropdownToggle') dropdownToggle: ElementRef;\r\n\r\n public isLoading = false;\r\n public iconSizeEnum = IconSizeEnum;\r\n readonly iconType = IconTypeEnum;\r\n readonly iconUiType = IconUiTypeEnum;\r\n readonly buttonIconSizeEnum = ButtonIconSizeEnum;\r\n\r\n public placementCss: string = '';\r\n public isOpen: boolean = false;\r\n\r\n public tooltipRandomId: number;\r\n public isTooltipOpened = false;\r\n public typeTooltipEnum = TypeTooltipEnum;\r\n\r\n private focusOutInitialized = false;\r\n\r\n constructor() {\r\n this.renderer.listen('window', 'click', (e: Event) => {\r\n const target = e.target as Element;\r\n if (target.classList.contains('dropdown-item')) {\r\n this.onClickOutside();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.responsiveService.checkIsMobileResolution$.subscribe({\r\n next: () => {\r\n this.getPlacement(this.dropdownPosition);\r\n }\r\n });\r\n\r\n if (this.withTooltip) {\r\n this.tooltipRandomId = this.getRandomId(1, 10000);\r\n }\r\n\r\n this.dataTest ??= `btn-${UtilsHelper.slugify(this.label)}`;\r\n }\r\n\r\n public getButtonClasses() {\r\n return {\r\n 'btn-min-width': this.isMinWidth,\r\n 'btn-icon': this.withOnlyIcon,\r\n [`btn-icon-${this.iconSize}`]: !!this.iconSize && this.withOnlyIcon\r\n };\r\n }\r\n\r\n public onBtnAction() {\r\n this.btnAction.emit();\r\n if (this.withSpinner) {\r\n this.isLoading = !this.isLoading;\r\n }\r\n }\r\n public toggleDropdown() {\r\n this.getPlacement(this.dropdownPosition);\r\n this.setAriaExpanded();\r\n this.dropdown?.nativeElement.classList.toggle(\"show\");\r\n this.dropdownMenu.nativeElement.classList.toggle(\"show\");\r\n this.isOpen = !this.isOpen;\r\n this.dropDownClicked.emit(this.isOpen);\r\n\r\n if (this.isOpen && !this.focusOutInitialized) {\r\n this.focusOut(this.dropdownMenu.nativeElement);\r\n this.focusOutInitialized = true;\r\n }\r\n }\r\n\r\n public onClickOutside() {\r\n this.dropdownToggle?.nativeElement.setAttribute('aria-expanded', 'false');\r\n this.dropdown?.nativeElement.classList.remove(\"show\");\r\n this.dropdownMenu.nativeElement.classList.remove(\"show\");\r\n this.isOpen = false;\r\n this.dropDownClicked.emit(this.isOpen);\r\n }\r\n\r\n private setAriaExpanded() {\r\n const button = this.dropdownToggle.nativeElement;\r\n const currentAriaExpanded = button.getAttribute('aria-expanded') === 'true';\r\n button.setAttribute('aria-expanded', (!currentAriaExpanded).toString());\r\n }\r\n\r\n private getPlacement(placement) {\r\n switch (placement) {\r\n case ButtonPositionEnum.right:\r\n return this.placementCss = 'dropdown-menu-right';\r\n case ButtonPositionEnum.left:\r\n return this.placementCss = 'dropdown-menu-left';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n // Fermer la dropdown si on focus out en tab ou shift tab\r\n private focusOut(element: HTMLElement) {\r\n const focusableEls1 = element.querySelectorAll(\r\n 'a[href], button, textarea, input[type=\"text\"],' +\r\n 'input[type=\"radio\"]:checked, input[type=\"checkbox\"], select'\r\n );\r\n const focusableEls = Array.from(focusableEls1)\r\n .filter((el: any) => !el.disabled);\r\n\r\n const firstFocusableEl: any = focusableEls[0];\r\n const lastFocusableEl: any = focusableEls[focusableEls.length - 1];\r\n\r\n element.addEventListener('keydown', (e) => {\r\n const isTabPressed = e.key === 'Tab'; // isTabPressed\r\n if (!isTabPressed) return;\r\n\r\n if (e.shiftKey) /* shift + tab */ {\r\n if (document.activeElement === firstFocusableEl) {\r\n this.toggleDropdown();\r\n }\r\n } else /* tab */ {\r\n if (document.activeElement === lastFocusableEl) {\r\n this.toggleDropdown();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public showTooltip() {\r\n if (this.tooltipTrigger === 'click') {\r\n this.isTooltipOpened = !this.isTooltipOpened;\r\n } else {\r\n this.isTooltipOpened = true;\r\n }\r\n }\r\n\r\n public hideTooltip() {\r\n if (this.tooltipTrigger === 'hover') {\r\n this.isTooltipOpened = false;\r\n }\r\n }\r\n\r\n public onTooltipClickOutside(): void {\r\n if (this.tooltipTrigger === 'click') {\r\n this.isTooltipOpened = false;\r\n }\r\n }\r\n\r\n private getRandomId(min: number, max: number): number {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n}\r\n","<!-- Wrapper pour le tooltip -->\r\n@if (withTooltip) {\r\n <div class=\"d-inline-block position-relative\" (clickOutside)=\"onTooltipClickOutside()\" ctwClickOutside>\r\n\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n\r\n <!-- Tooltip/Popover -->\r\n @if (isTooltipOpened) {\r\n <div role=\"tooltip\" [id]=\"'ctw-tooltip-' + tooltipRandomId\" [ngClass]=\"tooltipType + ' fade show ' + tooltipType + '-' + tooltipPosition\">\r\n <div class=\"arrow\"></div>\r\n @if (tooltipTitle) {\r\n <div [ngClass]=\"(tooltipType === typeTooltipEnum.popover ? 'popover' : 'tooltip') + '-header'\"\r\n [innerHTML]=\"tooltipTitle\"></div>\r\n }\r\n <div [ngClass]=\"tooltipType === typeTooltipEnum.tooltip ? 'tooltip-inner' : 'popover-body'\"\r\n [innerHTML]=\"tooltipText\"></div>\r\n </div>\r\n }\r\n </div>\r\n}\r\n@else {\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n}\r\n\r\n<!-- Template du bouton (code existant enveloppé) -->\r\n<ng-template #buttonTemplate>\r\n @if (!isDropdown) {\r\n <button type=\"button\" class=\"btn\" [class]=\"'btn-' + type + ' ' + cssClass\" [ngClass]=\"getButtonClasses()\"\r\n [disabled]=\"isDisabled\" (click)=\"onBtnAction()\" [attr.data-test-ctw]=\"dataTest\"\r\n [attr.aria-describedby]=\"withTooltip && isTooltipOpened ? 'ctw-tooltip-' + tooltipRandomId : null\"\r\n (mouseenter)=\"withTooltip && tooltipTrigger === 'hover' ? showTooltip() : null\"\r\n (mouseleave)=\"withTooltip && tooltipTrigger === 'hover' ? hideTooltip() : null\"\r\n (click)=\"withTooltip && tooltipTrigger === 'click' ? showTooltip() : null\">\r\n\r\n @if (isLoading) {\r\n <span class=\"spinner-border spinner-border-sm\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\" role=\"status\">{{ '_COMMON._HTTP.TXT_LOADING' | translate }}</span>\r\n }\r\n\r\n <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\r\n </button>\r\n }\r\n @else {\r\n <div (clickOutside)=\"onClickOutside()\" ctwClickOutside #dropdown class=\"d-inline-block\">\r\n <button class=\"btn\" [class]=\"'btn-' + type + ' '\" type=\"button\"\r\n [ngClass]=\"getButtonClasses()\"\r\n [disabled]=\"isDisabled\" [id]=\"id\" aria-expanded=\"false\" (click)=\"toggleDropdown()\" #dropdownToggle\r\n [attr.data-test-ctw]=\"dataTest\"\r\n [attr.aria-describedby]=\"withTooltip && isTooltipOpened ? 'ctw-tooltip-' + tooltipRandomId : null\"\r\n (mouseenter)=\"withTooltip && tooltipTrigger === 'hover' ? showTooltip() : null\"\r\n (mouseleave)=\"withTooltip && tooltipTrigger === 'hover' ? hideTooltip() : null\">\r\n\r\n <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\r\n </button>\r\n\r\n <div [attr.aria-labelledby]=\"id\" class=\"dropdown-menu\" [ngClass]=\"placementCss\" #dropdownMenu>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<!-- Template existant du contenu du bouton -->\r\n<ng-template #buttonContent>\r\n @if (withIcon && iconPosition === buttonPositionEnum.left) {\r\n <ng-container *ngTemplateOutlet=\"iconContent\"></ng-container>\r\n }\r\n\r\n @if(withOnlyIcon) {\r\n <span class=\"visually-hidden\">{{label | translate }}</span>\r\n }\r\n @else {\r\n {{ label | translate }}\r\n }\r\n\r\n @if (withIcon && iconPosition === buttonPositionEnum.right) {\r\n <ng-container *ngTemplateOutlet=\"iconContent\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #iconContent>\r\n @if(withOnlyIcon) {\r\n @switch(iconSize) {\r\n @case(buttonIconSizeEnum.xsmall) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['xs']\"></cw-icon>\r\n }\r\n @case(buttonIconSizeEnum.small) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['sm']\"></cw-icon>\r\n }\r\n @default {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['md']\"></cw-icon>\r\n }\r\n }\r\n }\r\n @else {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['md']\"></cw-icon>\r\n }\r\n</ng-template>\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Component, ElementRef, Input, output, signal, ViewChild } from \"@angular/core\";\r\nimport { ClickOutsideDirective } from \"../../directives/clickoutside.directive\";\r\nimport { IconComponent } from \"../icon/icon.component\";\r\n\r\n@Component({\r\n selector: 'cw-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ClickOutsideDirective,\r\n IconComponent\r\n ]\r\n})\r\n\r\nexport class DropdownComponent {\r\n @Input() id?: string;\r\n @Input() title = 'Dropdown';\r\n @Input() icon = 'cw-nav-small-menu';\r\n @Input() btnCustom = false;\r\n @Input() btnCssClass = 'btn-secondary';\r\n @Input() menuClass = '';\r\n @Input() placement: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left-start' | 'right-start' = 'bottom-start';\r\n @Input() autoClose = true;\r\n\r\n opened = output<void>();\r\n closed = output<void>();\r\n\r\n @ViewChild('dropdown') dropdownElement!: ElementRef;\r\n @ViewChild('dropdownMenu') dropdownMenu!: ElementRef;\r\n @ViewChild('dropdownToggle') dropdownToggle!: ElementRef;\r\n\r\n protected isOpen = signal(false);\r\n\r\n get dropdownId(): string {\r\n return this.id || `dropdown-${Math.random().toString(36).substring(2, 11)}`;\r\n }\r\n\r\n get placementCss(): string {\r\n return this.placement;\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Fermer au clic sur un item du menu\r\n if (this.autoClose && this.dropdownMenu) {\r\n this.dropdownMenu.nativeElement.addEventListener('click', (event: Event) => {\r\n const target = event.target as HTMLElement;\r\n if (target.classList.contains('dropdown-item')) {\r\n this.closeDropdown();\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (this.isOpen()) {\r\n this.closeDropdown();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n openDropdown(): void {\r\n this.isOpen.set(true);\r\n this.opened.emit();\r\n }\r\n\r\n closeDropdown(): void {\r\n this.isOpen.set(false);\r\n this.closed.emit();\r\n }\r\n\r\n onClickOutside(): void {\r\n if (this.isOpen()) {\r\n this.closeDropdown();\r\n }\r\n }\r\n}\r\n","<div class=\"dropdown\" [class.show]=\"isOpen()\" (clickOutside)=\"onClickOutside()\" clickOutside #dropdown>\r\n\r\n <button type=\"button\" class=\"dropdown-toggle btn\" [id]=\"dropdownId\" [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-haspopup]=\"true\" (click)=\"toggleDropdown()\" [ngClass]=\"btnCssClass\" #dropdownToggle>\r\n\r\n <!-- Custom button content -->\r\n <ng-content select=\"[button]\"></ng-content>\r\n\r\n <!-- Classic button with icon -->\r\n @if (!btnCustom) {\r\n <cw-icon label=\"Menu\"></cw-icon>\r\n }\r\n </button>\r\n\r\n <div [attr.aria-labelledby]=\"dropdownId\" class=\"dropdown-menu\" [class.show]=\"isOpen()\"\r\n [ngClass]=\"placementCss + ' ' + menuClass\" #dropdownMenu>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef, Renderer2, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[showHidePassword]',\r\n standalone: true\r\n})\r\n\r\nexport class ShowHidePasswordDirective implements OnInit {\r\n\r\n private isShown = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private translateService: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.setup();\r\n }\r\n\r\n setup() {\r\n const div = this.renderer.createElement('div');\r\n this.renderer.insertBefore(this.el.nativeElement.parentNode, div, this.el.nativeElement);\r\n\r\n this.renderer.appendChild(div, this.el.nativeElement);\r\n this.renderer.addClass(div, 'see-password-container');\r\n\r\n const button = this.renderer.createElement('button');\r\n this.renderer.appendChild(this.el.nativeElement.parentNode, button);\r\n this.renderer.addClass(button, 'btn');\r\n this.renderer.setAttribute(button, 'type', 'button');\r\n this.renderer.addClass(button, 'optyweb');\r\n this.renderer.addClass(button, 'cw-hide-map');\r\n this.renderer.addClass(button, 'py-2');\r\n this.renderer.addClass(button, 'see-password');\r\n\r\n const srOnly = this.renderer.createElement('span');\r\n this.renderer.appendChild(button, srOnly);\r\n this.renderer.addClass(srOnly, 'visually-hidden');\r\n this.renderer.setProperty(srOnly,'innerHTML', this.translateService.instant('_COMMON._FORM._SHOW_HIDE_PWD.SHOW'));\r\n\r\n this.renderer.listen(button, 'click', (event) => {\r\n this.isShown = !this.isShown;\r\n if (this.isShown) {\r\n this.el.nativeElement.setAttribute('type', 'text');\r\n this.renderer.removeClass(button, 'cw-hide-map');\r\n this.renderer.addClass(button, 'cw-show-map');\r\n this.renderer.setProperty(srOnly,'innerHTML', this.translateService.instant('_COMMON._FORM._SHOW_HIDE_PWD.HIDE'));\r\n } else {\r\n this.el.nativeElement.setAttribute('type', 'password');\r\n this.renderer.addClass(button, 'cw-hide-map');\r\n this.renderer.removeClass(button, 'cw-show-map');\r\n this.renderer.setProperty(srOnly,'innerHTML', this.translateService.instant('_COMMON._FORM._SHOW_HIDE_PWD.SHOW'));\r\n }\r\n });\r\n }\r\n}\r\n","export enum FormFieldTypeEnum {\r\n text = 'text',\r\n date = 'date',\r\n time = 'time',\r\n dateTime = 'datetime-local',\r\n textarea = 'textarea',\r\n select = 'select',\r\n range = 'range',\r\n radio = 'radio',\r\n radioInline = 'radioInline',\r\n radioButton = 'radioButton',\r\n checkbox = 'checkbox',\r\n checkboxInline = 'checkboxInline',\r\n checkboxButton = 'checkboxButton',\r\n switch = 'switch',\r\n switchSmall = 'switchSmall',\r\n ngSelect = 'ngSelect',\r\n ngSelectMultiple = 'ngSelectMultiple',\r\n number = 'number',\r\n color = 'color',\r\n file = 'file',\r\n password = 'password',\r\n email = 'email',\r\n slider = 'slider',\r\n dateToDate = 'dateToDate',\r\n datePlusOne = 'datePlusOne',\r\n datePlusTwo = 'datePlusTwo',\r\n datePlusSeven = 'datePlusSeven',\r\n dateComplexe = 'dateComplexe',\r\n dateTimeToDateTime = 'dateTimeToDateTime',\r\n timeToTime = 'timeToTime'\r\n}\r\n\r\nexport interface FormFieldOption {\r\n value: string;\r\n label: string;\r\n}\r\nexport interface FormFieldRangeOption {\r\n floor: number;\r\n ceil: number;\r\n step: number;\r\n unit?: string;\r\n}\r\n","import { NgxSliderModule, Options } from '@angular-slider/ngx-slider';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, ContentChild, EventEmitter, HostBinding, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, FormsModule, ReactiveFormsModule, ValidationErrors } from '@angular/forms';\r\nimport { NgbDropdownModule, NgbPopover } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ShowHidePasswordDirective } from '../../directives/show-hide-password';\r\nimport { FormFieldOption, FormFieldRangeOption, FormFieldTypeEnum } from '../../enum/field-type.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\n\r\nexport function rangeValidator(group: AbstractControl, type: 'date' | 'time' | 'datetime'): ValidationErrors | null {\r\n const startControl = group.get('start');\r\n const endControl = group.get('end');\r\n const start = startControl?.value;\r\n const end = endControl?.value;\r\n\r\n if (!start || !end) return null;\r\n\r\n let startValue: number;\r\n let endValue: number;\r\n\r\n switch (type) {\r\n case 'time':\r\n startValue = parseTime(start);\r\n endValue = parseTime(end);\r\n break;\r\n case 'datetime':\r\n startValue = new Date(start).getTime();\r\n endValue = new Date(end).getTime();\r\n break;\r\n default: // date\r\n startValue = new Date(start).setHours(0, 0, 0, 0);\r\n endValue = new Date(end).setHours(0, 0, 0, 0);\r\n }\r\n\r\n if (startValue > endValue) {\r\n // Marquer les enfants comme invalid\r\n startControl?.setErrors({ ...startControl.errors, rangeInvalid: true });\r\n endControl?.setErrors({ ...endControl.errors, rangeInvalid: true });\r\n return { rangeInvalid: true };\r\n } else {\r\n // Supprimer l’erreur rangeInvalid si présente\r\n if (startControl?.errors?.['rangeInvalid']) {\r\n const { rangeInvalid, ...rest } = startControl.errors!;\r\n startControl.setErrors(Object.keys(rest).length ? rest : null);\r\n }\r\n if (endControl?.errors?.['rangeInvalid']) {\r\n const { rangeInvalid, ...rest } = endControl.errors!;\r\n endControl.setErrors(Object.keys(rest).length ? rest : null);\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction parseTime(time: string): number {\r\n const [h, m] = time.split(':').map(Number);\r\n return h * 60 + m;\r\n}\r\n\r\n@Component({\r\n selector: 'cw-form-field',\r\n templateUrl: './form-field.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n NgbDropdownModule,\r\n NgxSliderModule,\r\n NgbPopover,\r\n ShowHidePasswordDirective,\r\n IconComponent\r\n ]\r\n})\r\n\r\nexport class FormFieldComponent implements OnInit {\r\n\r\n @Input() control!: AbstractControl;\r\n @Input() formGroup!: FormGroup;\r\n @Input() type: FormFieldTypeEnum;\r\n @Input() label!: string;\r\n @Input() displayLabel: boolean = true;\r\n @Input() name!: string;\r\n @Input() placeholder!: string;\r\n @Input() options: FormFieldOption[] = [];\r\n @Input() rangeOptions: FormFieldRangeOption;\r\n\r\n @Input() isRequired: boolean = false;\r\n @Input() help?: string;\r\n @Input() tooltip!: string;\r\n @Input() addonLeft?: TemplateRef<any>;\r\n @Input() addonRight?: TemplateRef<any>;\r\n @Input() isInAddon?: boolean = false;\r\n @Input() isReadonly?: boolean = false;\r\n @Input() isDisabled?: boolean = false;\r\n @Input() sliderValue!: number;\r\n @Input() sliderOptions!: Options;\r\n @Input() cssClass?: string;\r\n\r\n @Output() refreshEvent = new EventEmitter<void>();\r\n @Output() textChanged = new EventEmitter<string>();\r\n\r\n // Option et label personnalisés pour les ng-selects\r\n @ContentChild('ngOptionTpl', { read: TemplateRef }) optionTemplate?: TemplateRef<any>;\r\n @ContentChild('ngLabelTpl', { read: TemplateRef }) labelTemplate?: TemplateRef<any>;\r\n\r\n public typeField = FormFieldTypeEnum;\r\n\r\n\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n return 'position-relative';\r\n }\r\n\r\n constructor() { }\r\n\r\n public get isRange(): boolean {\r\n if (!this.control) return false;\r\n return this.control instanceof FormGroup &&\r\n 'start' in (this.control as any).controls &&\r\n 'end' in (this.control as any).controls;\r\n }\r\n\r\n public get formControl(): FormControl {\r\n return this.control as FormControl;\r\n }\r\n\r\n public get controlOrGroup() {\r\n return this.control ?? this.formGroup?.get(this.name);\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.formGroup && this.name) {\r\n const group = this.formGroup.get(this.name);\r\n if (group instanceof FormGroup) {\r\n switch (this.type) {\r\n case this.typeField.dateToDate:\r\n group.setValidators(g => rangeValidator(g, 'date'));\r\n break;\r\n case this.typeField.timeToTime:\r\n group.setValidators(g => rangeValidator(g, 'time'));\r\n break;\r\n case this.typeField.dateTimeToDateTime:\r\n group.setValidators(g => rangeValidator(g, 'datetime'));\r\n break;\r\n }\r\n group.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n\r\n public onCheckboxChange(event: Event) {\r\n const checkbox = event.target as HTMLInputElement;\r\n const valueArray = this.control.value || [];\r\n\r\n if (checkbox.checked) {\r\n this.control.setValue([...valueArray, checkbox.value]);\r\n } else {\r\n this.control.setValue(valueArray.filter((v: string) => v !== checkbox.value));\r\n }\r\n\r\n this.control.markAsTouched();\r\n }\r\n\r\n public onBlur() {\r\n if (this.control && !this.control.touched) {\r\n this.control.markAsTouched();\r\n }\r\n }\r\n\r\n public isInInputGroup(): boolean {\r\n const inInputGroup = [\r\n this.typeField.text,\r\n this.typeField.date,\r\n this.typeField.time,\r\n this.typeField.dateTime,\r\n this.typeField.number,\r\n this.typeField.email,\r\n this.typeField.textarea,\r\n this.typeField.password,\r\n ].includes(this.type)\r\n return inInputGroup;\r\n }\r\n\r\n public getControl(path: 'start' | 'end'): FormControl | null {\r\n if (!this.isRange) return null;\r\n const group = this.control as FormGroup<{ start: FormControl; end: FormControl }>;\r\n return group.get(path) as FormControl;\r\n }\r\n\r\n public getInputType(): string {\r\n switch (this.type) {\r\n case this.typeField.dateToDate:\r\n return 'date';\r\n case this.typeField.timeToTime:\r\n return 'time';\r\n case this.typeField.dateTimeToDateTime:\r\n return 'datetime-local';\r\n default:\r\n return 'text';\r\n }\r\n }\r\n\r\n public onClearFieldPeriod(path: 'start' | 'end'): void {\r\n const ctrl = this.getControl(path);\r\n if (ctrl) {\r\n ctrl.setValue(null);\r\n ctrl.markAsPristine();\r\n ctrl.markAsUntouched();\r\n }\r\n }\r\n\r\n public onClearField(control: FormControl): void {\r\n control?.setValue(null);\r\n control?.markAsPristine();\r\n control?.markAsUntouched();\r\n }\r\n\r\n public onDateAddDay(direction: 'prev' | 'next'): void {\r\n const current = this.getDateValue();\r\n if (current) {\r\n const delta = direction === 'prev' ? -1 : 1;\r\n current.setDate(current.getDate() + delta);\r\n this.formControl.setValue(this.formatDate(current));\r\n }\r\n }\r\n\r\n public onTodayAddDay(days: number): void {\r\n const today = new Date();\r\n today.setDate(today.getDate() + days);\r\n this.formControl.setValue(this.formatDate(today));\r\n }\r\n\r\n public onRefresh(): void {\r\n this.refreshEvent.emit();\r\n }\r\n\r\n private getDateValue(): Date | null {\r\n const value = this.formControl.value;\r\n if (!value) return null;\r\n const date = new Date(value);\r\n return isNaN(date.getTime()) ? null : date;\r\n }\r\n\r\n private formatDate(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n const day = date.getDate().toString().padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n public getRangePercent(): number {\r\n const value = this.formControl.value || this.rangeOptions.floor;\r\n const range = this.rangeOptions.ceil - this.rangeOptions.floor;\r\n return ((value - this.rangeOptions.floor) / range) * 100;\r\n }\r\n\r\n public onRangeStep(direction: 'increase' | 'decrease'): void {\r\n const step = this.rangeOptions.step || 1;\r\n const currentValue = this.formControl.value || this.rangeOptions.floor;\r\n\r\n if (direction === 'increase' && currentValue < this.rangeOptions.ceil) {\r\n this.formControl.setValue(Math.min(currentValue + step, this.rangeOptions.ceil));\r\n } else if (direction === 'decrease' && currentValue > this.rangeOptions.floor) {\r\n this.formControl.setValue(Math.max(currentValue - step, this.rangeOptions.floor));\r\n }\r\n\r\n this.formControl.markAsTouched();\r\n }\r\n}\r\n","@if (!isInAddon) {\r\n @if (\r\n type !== typeField.checkbox &&\r\n type !== typeField.radio &&\r\n type !== typeField.checkboxButton &&\r\n type !== typeField.radioButton &&\r\n type !== typeField.checkboxInline &&\r\n type !== typeField.radioInline &&\r\n type !== typeField.switch &&\r\n type !== typeField.range &&\r\n type !== typeField.switchSmall\r\n\r\n ) {\r\n <label [for]=\"name\" class=\"form-label\" [class.visually-hidden]=\"!displayLabel\">\r\n {{ label }}\r\n\r\n @if (isRequired) {\r\n <span class=\"text-danger\">*</span>\r\n }\r\n\r\n @if (tooltip) {\r\n <button type=\"button\" class=\"btn btn-link btn-popover\" placement=\"bottom\" [ngbPopover]=\"popContent\" container=\"body\"\r\n triggers=\"mouseenter:mouseleave\">\r\n <span class=\"btn-popover-icon bo-icons bo-help\"></span>\r\n </button>\r\n <ng-template #popContent>\r\n <div [innerHTML]=\"tooltip\"></div>\r\n </ng-template>\r\n }\r\n </label>\r\n }\r\n\r\n @if (addonLeft || addonRight) {\r\n <div class=\"input-group\">\r\n @if(addonLeft) {\r\n <ng-container [ngTemplateOutlet]=\"addonLeft\"></ng-container>\r\n }\r\n <ng-container [ngTemplateOutlet]=\"field\"></ng-container>\r\n @if(addonRight) {\r\n <ng-container [ngTemplateOutlet]=\"addonRight\"></ng-container>\r\n }\r\n </div>\r\n }\r\n @else {\r\n @if ( isInInputGroup() ) {\r\n <div class=\"input-group\">\r\n <ng-container [ngTemplateOutlet]=\"field\"></ng-container>\r\n </div>\r\n }\r\n @else {\r\n <ng-container [ngTemplateOutlet]=\"field\"></ng-container>\r\n }\r\n }\r\n\r\n <!-- Error message -->\r\n @if (controlOrGroup?.invalid && controlOrGroup?.touched) {\r\n <div class=\"invalid-feedback d-block\" [id]=\"'error-' + name\">\r\n @if ((controlOrGroup?.errors?.['required']) || (getControl('start')?.errors?.['required'] || getControl('end')?.errors?.['required'])) {\r\n <span [innerHtml]=\"'_COMMON._FORM.ERROR_IS_MANDATORY' | translate: {label: label}\"></span>\r\n }\r\n @if(controlOrGroup?.errors?.['rangeInvalid']) {\r\n <span>{{'_COMMON._DATES.ERROR_START_END_PERIOD' | translate}}</span>\r\n }\r\n </div>\r\n }\r\n\r\n @if (help) {\r\n <small [id]=\"name + '-help'\" class=\"form-text text-muted\">{{help}}</small>\r\n }\r\n}\r\n@else {\r\n <ng-container [ngTemplateOutlet]=\"field\"></ng-container>\r\n}\r\n\r\n<ng-template #field>\r\n <!-- Text -->\r\n @if ([typeField.text, typeField.date, typeField.time, typeField.dateTime, typeField.number, typeField.file,\r\n typeField.email,\r\n typeField.color].includes(type)) {\r\n <input [type]=\"type\" class=\"form-control\" [id]=\"name\" [formControl]=\"formControl\"\r\n [ngClass]=\"[(cssClass || ''), formControl?.value ? 'has-value' : '']\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\" [attr.required]=\"isRequired ? 'required' : null\"\r\n [attr.readonly]=\"isReadonly ? 'readonly' : null\" [disabled]=\"isDisabled\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" />\r\n }\r\n\r\n @if (type === typeField.password) {\r\n <input showHidePassword [type]=\"type\" class=\"form-control\" [id]=\"name\" [formControl]=\"formControl\"\r\n [ngClass]=\"[(cssClass || ''), formControl?.value ? 'has-value' : '']\"\r\n [attr.required]=\"isRequired ? 'required' : null\" [attr.readonly]=\"isReadonly ? 'readonly' : null\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" />\r\n }\r\n\r\n <!-- Textarea -->\r\n @if (type === typeField.textarea) {\r\n <textarea class=\"form-control\" [id]=\"name\" [formControl]=\"formControl\"\r\n [ngClass]=\"[(cssClass || ''), formControl?.value ? 'has-value' : '']\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\" [attr.required]=\"isRequired ? 'required' : null\"\r\n [attr.readonly]=\"isReadonly ? 'readonly' : null\" [attr.disabled]=\"isDisabled ? 'disabled' : null\"\r\n [attr.aria-required]=\"isRequired\" [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\"></textarea>\r\n }\r\n\r\n <!-- Select -->\r\n @if (type === typeField.select) {\r\n <ng-select [formControl]=\"formControl\" [items]=\"options\" bindLabel=\"label\" [labelForId]=\"name\" bindValue=\"value\"\r\n [ngClass]=\"cssClass\" [searchable]=\"false\" [placeholder]=\"placeholder ? placeholder : null\" [readonly]=\"isReadonly\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" [attr.required]=\"isRequired ? 'required' : null\"\r\n [attr.aria-required]=\"isRequired\" [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" [attr.id]=\"name\"\r\n (blur)=\"onBlur()\">\r\n\r\n <!-- Template pour les options -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n @if (optionTemplate) {\r\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { item: item, index: index, searchTerm: search }\"></ng-container>\r\n }\r\n @else {\r\n <div>{{ item.label }}</div>\r\n }\r\n </ng-template>\r\n\r\n <!-- Template pour le label -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n @if (labelTemplate) {\r\n <ng-container *ngTemplateOutlet=\"labelTemplate; context: { item: item }\"></ng-container>\r\n }\r\n @else {\r\n {{ item.label }}\r\n }\r\n </ng-template>\r\n </ng-select>\r\n }\r\n\r\n <!-- NgSelect -->\r\n @if (type === typeField.ngSelect || type === typeField.ngSelectMultiple) {\r\n <ng-select [formControl]=\"formControl\" [items]=\"options\" bindLabel=\"label\" [labelForId]=\"name\" bindValue=\"value\"\r\n [multiple]=\"type === typeField.ngSelectMultiple\" [ngClass]=\"cssClass\"\r\n [placeholder]=\"placeholder ? placeholder : null\" [readonly]=\"isReadonly\"\r\n [notFoundText]=\"'_COMMON.NO_RESULT' | translate\" [attr.disabled]=\"isDisabled ? 'disabled' : null\"\r\n [attr.required]=\"isRequired ? 'required' : null\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" [attr.id]=\"name\"\r\n (blur)=\"onBlur()\" (search)=\"textChanged.emit($event?.term)\">\r\n\r\n <!-- Template pour les options -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n @if (optionTemplate) {\r\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { item: item, index: index, searchTerm: search }\"></ng-container>\r\n }\r\n @else {\r\n <div>{{ item.label }}</div>\r\n }\r\n </ng-template>\r\n\r\n <!-- Template pour le label -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n @if (labelTemplate) {\r\n <ng-container *ngTemplateOutlet=\"labelTemplate; context: { item: item }\"></ng-container>\r\n }\r\n @else {\r\n {{ item.label }}\r\n }\r\n </ng-template>\r\n </ng-select>\r\n }\r\n\r\n <!-- Radio -->\r\n @if (type === typeField.radioInline || type === typeField.radio) {\r\n <fieldset [ngClass]=\"{ 'flex-column': type === typeField.radio }\">\r\n <legend [class.visually-hidden]=\"!displayLabel\">{{label}}</legend>\r\n <ul class=\" mb-none\" [ngClass]=\"type === typeField.radioInline ? 'list-inline' : 'list-unstyled'\">\r\n <li *ngFor=\"let opt of options\" class=\"form-check\"\r\n [ngClass]=\"{ 'form-check-inline': type === typeField.radioInline }\">\r\n <input type=\"radio\" [id]=\"name + '_' + opt.value\" [value]=\"opt.value\" [formControl]=\"formControl\"\r\n class=\"form-check-input\" />\r\n <label [for]=\"name + '_' + opt.value\" class=\"form-check-label\">{{ opt.label }}</label>\r\n </li>\r\n </ul>\r\n </fieldset>\r\n }\r\n\r\n <!-- Radio button -->\r\n @if (type === typeField.radioButton) {\r\n <fieldset>\r\n <legend [class.visually-hidden]=\"!displayLabel\">{{label}}</legend>\r\n <div class=\"btn-group btn-group-secondary\">\r\n <ng-container *ngFor=\"let opt of options\">\r\n <input type=\"radio\" [id]=\"name + '_' + opt.value\" [value]=\"opt.value\" [formControl]=\"formControl\"\r\n class=\"visually-hidden\" />\r\n <label [for]=\"name + '_' + opt.value\" class=\"btn btn-form\">{{ opt.label }}</label>\r\n </ng-container>\r\n </div>\r\n </fieldset>\r\n }\r\n\r\n <!-- Checkbox Switch -->\r\n @if (\r\n (type === typeField.checkbox ||\r\n type === typeField.switch ||\r\n type === typeField.switchSmall)\r\n && options.length === 0\r\n ) {\r\n <div class=\"form-check form-switch\" [ngClass]=\"{'form-switch-small': type === typeField.switchSmall}\">\r\n <input type=\"checkbox\" [id]=\"name\" [formControl]=\"formControl\" class=\"form-check-input\" />\r\n <label [for]=\"name\" class=\"form-check-label\">{{ label }}</label>\r\n </div>\r\n }\r\n\r\n <!-- Checkbox -->\r\n @if ((type === typeField.checkboxInline || type === typeField.checkbox) && options.length > 0) {\r\n <fieldset [ngClass]=\"{ 'flex-column': type === typeField.checkbox }\">\r\n <legend [class.visually-hidden]=\"!displayLabel\">{{label}}</legend>\r\n <ul class=\"mb-none\" [ngClass]=\"type === typeField.checkboxInline ? 'list-inline' : 'list-unstyled'\">\r\n <li *ngFor=\"let opt of options\" class=\"form-check\"\r\n [ngClass]=\"{ 'form-check-inline': type === typeField.checkboxInline }\">\r\n <input type=\"checkbox\" [id]=\"name + '_' + opt.value\" [value]=\"opt.value\" (change)=\"onCheckboxChange($event)\"\r\n [checked]=\"control.value?.includes(opt.value)\" class=\"form-check-input\" />\r\n <label [for]=\"name + '_' + opt.value\" class=\"form-check-label\">{{ opt.label }}</label>\r\n </li>\r\n </ul>\r\n </fieldset>\r\n }\r\n\r\n <!-- Checkbox button -->\r\n @if (type === typeField.checkboxButton) {\r\n <fieldset>\r\n <legend [class.visually-hidden]=\"!displayLabel\">{{label}}</legend>\r\n <div class=\"btn-group btn-group-secondary\">\r\n <ng-container *ngFor=\"let opt of options\">\r\n <input type=\"checkbox\" [id]=\"name + '_' + opt.value\" [value]=\"opt.value\" (change)=\"onCheckboxChange($event)\"\r\n [checked]=\"control.value?.includes(opt.value)\" class=\"visually-hidden\" />\r\n <label [for]=\"name + '_' + opt.value\" class=\"btn btn-form\">{{ opt.label }}</label>\r\n </ng-container>\r\n </div>\r\n </fieldset>\r\n }\r\n\r\n <!-- Period - DateToDate / TimeToTime / DateTimeToDateTime -->\r\n @if ([typeField.dateToDate, typeField.timeToTime, typeField.dateTimeToDateTime].includes(type) && isRange) {\r\n\r\n <div class=\"input-group\">\r\n\r\n <input [type]=\"getInputType()\" class=\"form-control\" [id]=\"name + '_start'\" [formControl]=\"getControl('start')\"\r\n [attr.placeholder]=\"type === typeField.timeToTime ? ('_COMMON._DATES.FROM' | translate) : ('_COMMON._DATES.FROM_TO_1' | translate)\"\r\n [ngClass]=\"[(cssClass || ''), getControl('start')?.value ? 'has-value' : '']\"\r\n [attr.required]=\"isRequired ? 'required' : null\" [attr.readonly]=\"isReadonly ? 'readonly' : null\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"getControl('start')?.invalid && getControl('start')?.touched\"\r\n [attr.aria-describedby]=\"getControl('start')?.invalid && getControl('start')?.touched ? 'error-' + name : null\" />\r\n\r\n @if(getControl('start')?.value) {\r\n <button type=\"button\" class=\"btn btn-secondary btn-clear-field\"\r\n (click)=\"onClearFieldPeriod('start')\">\r\n &times;\r\n </button>\r\n }\r\n\r\n <input [type]=\"getInputType()\" class=\"form-control\" [id]=\"name + '_end'\" [formControl]=\"getControl('end')\"\r\n [attr.placeholder]=\"type === typeField.timeToTime ? ('_COMMON._DATES.TO' | translate) : ('_COMMON._DATES.FROM_TO_2' | translate)\"\r\n [ngClass]=\"[(cssClass || ''), getControl('end')?.value ? 'has-value' : '']\"\r\n [attr.required]=\"isRequired ? 'required' : null\" [attr.readonly]=\"isReadonly ? 'readonly' : null\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\"\r\n [attr.aria-invalid]=\"getControl('end')?.invalid && getControl('end')?.touched\"\r\n [attr.aria-describedby]=\"getControl('end')?.invalid && getControl('end')?.touched ? 'error-' + name : null\" />\r\n\r\n <button *ngIf=\"getControl('end')?.value\" type=\"button\" class=\"btn btn-secondary btn-clear-field\"\r\n (click)=\"onClearFieldPeriod('end')\">\r\n &times;\r\n </button>\r\n </div>\r\n }\r\n\r\n @if ([typeField.datePlusOne, typeField.datePlusTwo, typeField.datePlusSeven, typeField.dateComplexe].includes(type)) {\r\n <div class=\"input-group\">\r\n\r\n @if (type === typeField.dateComplexe) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onDateAddDay('prev')\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n <cw-icon font=\"optyweb\" icon=\"cw-nav-next-left\" [label]=\"'Jour précédent'\"></cw-icon>\r\n </button>\r\n }\r\n\r\n <input type=\"date\" class=\"form-control\" [id]=\"name\" [formControl]=\"formControl\"\r\n [ngClass]=\"[(cssClass || ''), formControl?.value ? 'has-value' : '']\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\" [attr.required]=\"isRequired ? 'required' : null\"\r\n [attr.readonly]=\"isReadonly ? 'readonly' : null\" [disabled]=\"isDisabled\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" />\r\n <button *ngIf=\"formControl?.value\" class=\"btn btn-secondary btn-clear-field\" type=\"button\"\r\n (click)=\"onClearField(formControl)\">&times;</button>\r\n\r\n @if (type === typeField.dateComplexe) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onDateAddDay('next')\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n <cw-icon font=\"optyweb\" icon=\"cw-nav-next-right\" [label]=\"'Jour suivant'\"></cw-icon>\r\n </button>\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onRefresh()\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n <cw-icon font=\"optyweb\" icon=\"cw-toolbar-reload\" [label]=\"'Rafraîchir'\"></cw-icon>\r\n </button>\r\n }\r\n\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onTodayAddDay(0)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n J\r\n <span class=\"visually-hidden\">Aujourd'hui</span>\r\n </button>\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onTodayAddDay(1)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n J+1\r\n <span class=\"visually-hidden\">Demain</span>\r\n </button>\r\n\r\n @if (type !== typeField.datePlusOne && type !== typeField.dateComplexe) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onTodayAddDay(2)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n J+2\r\n <span class=\"visually-hidden\">Dans 2 jours</span>\r\n </button>\r\n\r\n @if (type !== typeField.datePlusTwo) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onTodayAddDay(7)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n J+7\r\n <span class=\"visually-hidden\">Dans 7 jours</span>\r\n </button>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (type === typeField.slider) {\r\n <ngx-slider [(value)]=\"sliderValue\" [options]=\"sliderOptions\" [formControl]=\"formControl\"></ngx-slider>\r\n }\r\n\r\n @if (type === typeField.range) {\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <button type=\"button\" class=\"btn slider-btn slider-btn-less\" (click)=\"onRangeStep('decrease')\"\r\n [disabled]=\"formControl.value <= rangeOptions.floor\">\r\n <span class=\"slider-btn-less-icon\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">Diminuer</span>\r\n </button>\r\n\r\n <div class=\"slider-input flex-grow-1 position-relative\">\r\n <label [for]=\"name\" class=\"slider-tooltip\" [style.left]=\"getRangePercent() + '%'\" aria-live=\"polite\"\r\n aria-atomic=\"true\">\r\n {{ label }} {{ formControl.value }}\r\n @if (rangeOptions.unit) {\r\n <abbr [title]=\"rangeOptions.unit\">{{ rangeOptions.unit }}</abbr>\r\n }\r\n </label>\r\n\r\n <div class=\"slider-custom-bar\">\r\n <div class=\"slider-custom-bar-selection\" [style.width]=\"getRangePercent() + '%'\">\r\n </div>\r\n </div>\r\n\r\n <input type=\"range\" [id]=\"name\" [formControl]=\"formControl\" [min]=\"rangeOptions.floor\" [max]=\"rangeOptions.ceil\"\r\n [step]=\"rangeOptions.step || 1\" class=\"form-control-range\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\" [disabled]=\"isDisabled\">\r\n </div>\r\n\r\n <button type=\"button\" class=\"btn slider-btn slider-btn-more\" (click)=\"onRangeStep('increase')\"\r\n [disabled]=\"formControl.value >= rangeOptions.ceil\">\r\n <span class=\"slider-btn-more-icon optyweb cw-toolbar-add\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">Augmenter</span>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if (isInInputGroup()) {\r\n @if(formControl?.value) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\"\r\n (click)=\"onClearField(formControl)\">&times;</button>\r\n }\r\n }\r\n\r\n</ng-template>\r\n","export enum LegendTypeEnum {\r\n icon = 'icon',\r\n badge = 'badge',\r\n color = 'color'\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { LegendTypeEnum } from '../../enum/legend-type.enum';\r\nimport { Legend } from '../../models/legend.model';\r\nimport { BadgeComponent } from '../badge/badge.component';\r\nimport { IconComponent } from '../icon/icon.component';\r\n\r\n@Component({\r\n selector: 'cw-legend',\r\n templateUrl: './legend.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n IconComponent,\r\n BadgeComponent,\r\n TranslateModule\r\n ]\r\n})\r\nexport class LegendComponent {\r\n\r\n @Input() legend: Legend;\r\n @Input() displayInline: boolean = false;\r\n\r\n public legendTypeEnum = LegendTypeEnum;\r\n\r\n constructor() { }\r\n\r\n}\r\n","@if (legend.title) {\r\n <div class=\"legend-title\">\r\n {{ '_COMMON._TABLE.LEGEND' | translate }}\r\n </div>\r\n}\r\n\r\n<ul class=\"legend-items\" [class.list-inline]=\"displayInline\">\r\n @for (item of legend.data; track $index) {\r\n <li class=\"legend-item\" [class.list-inline-item]=\"displayInline\">\r\n @switch (item.type) {\r\n @case (legendTypeEnum.icon) {\r\n <cw-icon [icon]=\"item.icon\" [label]=\"item.label\" [iconCssClass]=\"'text-' + item.colorUi\" [iconColorCustom]=\"item.colorCustom\"></cw-icon>\r\n }\r\n @case (legendTypeEnum.badge) {\r\n <cw-badge [type]=\"item.colorBadge\" [label]=\"item.labelBadge\"></cw-badge>\r\n {{item.label}}\r\n }\r\n @case (legendTypeEnum.color) {\r\n <span class=\"legend-item-color\" [ngClass]=\"item.colorUi ?'legend-' + item.colorUi : ''\" [style.background-color]=\"item.colorCustom\"></span>\r\n {{item.label}}\r\n }\r\n }\r\n </li>\r\n }\r\n</ul>\r\n","import { Component } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'cw-loader',\r\n templateUrl: './loader.component.html',\r\n standalone: true,\r\n imports: [\r\n TranslateModule\r\n ]\r\n})\r\nexport class LoaderComponent {\r\n\r\n constructor() { }\r\n\r\n}\r\n","<div class=\"loader text-center\">\r\n <span class=\"spinner-border spinner-border-sm\" aria-hidden=\"true\"></span>\r\n <span role=\"status\">{{ '_COMMON._HTTP.TXT_LOADING' | translate }}</span>\r\n</div>\r\n","export enum ModalsType {\r\n delete = 'delete',\r\n loader = 'loader',\r\n quickSideView = 'quicksideview',\r\n custom = 'custom'\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { FoButtonTypeEnum, BoButtonTypeEnum } from '../../enum/button.enum';\nimport { ModalsType } from '../../enum/modals.enum';\nimport { ButtonComponent } from '../button/button.component';\nimport { LoaderComponent } from '../loader/loader.component';\n\n@Component({\n selector: 'cw-modals',\n templateUrl: './modals.component.html',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonComponent,\n LoaderComponent\n ]\n})\nexport class ModalsComponent implements OnInit {\n @Input() type: ModalsType;\n @Input() modalTitle: string;\n @Input() itemsToDelete: any[] = [];\n @Input() itemsToDeleteTitle = this.translateService.instant('_COMMON._MODAL_DELETE.DEFAULT_TYPE');\n @Input() labelBtnAction: string;\n @Input() customBodyTemplate?: TemplateRef<any>;\n @Input() customBodyContext?: any;\n\n @Output() btnAction = new EventEmitter<string>();\n\n public modalsType = ModalsType;\n public buttonTypeEnum = FoButtonTypeEnum && BoButtonTypeEnum;\n\n constructor(\n public activeModal: NgbActiveModal,\n private translateService: TranslateService\n ) { }\n\n ngOnInit(): void {\n if (this.type === this.modalsType.quickSideView && !this.labelBtnAction) {\n this.labelBtnAction = this.translateService.instant('_COMMON._ACTION.EDIT');\n }\n }\n\n public actionClick() {\n this.activeModal.close();\n }\n}\n","@if (type !== modalsType.loader) {\r\n <div class=\"modal-header\">\r\n @if (type === modalsType.delete) {\r\n <h1 class=\"modal-title\" id=\"modal-basic-title\">\r\n {{ '_COMMON._MODAL_DELETE.TITLE' | translate: { number: itemsToDelete.length, name: itemsToDeleteTitle } }}\r\n </h1>\r\n }\r\n @else {\r\n <h1 class=\"modal-title\" id=\"modal-basic-title\">\r\n {{ modalTitle | translate }}\r\n </h1>\r\n }\r\n\r\n <button type=\"button\" class=\"btn-close\" [attr.aria-label]=\"'_COMMON._ACTION.CLOSE' | translate\"\r\n (click)=\"activeModal.dismiss()\" data-test-ctw=\"btn-close-modal\">\r\n </button>\r\n </div>\r\n\r\n <div class=\"modal-body\">\r\n @if (type === modalsType.delete) {\r\n @if (itemsToDelete.length === 1) {\r\n <div [innerHTML]=\"'_COMMON._MODAL_DELETE.SIMPLE_TEXT' | translate\"></div>\r\n }\r\n @if (itemsToDelete.length > 1) {\r\n <div [innerHTML]=\"'_COMMON._MODAL_DELETE.MULTIPLE_TEXT' | translate\"></div>\r\n }\r\n @if (itemsToDelete.length > 0) {\r\n <ul class=\"mb-none\">\r\n @for (item of itemsToDelete; track item) {\r\n <li>{{ item }}</li>\r\n }\r\n </ul>\r\n }\r\n }\r\n @else if (type === modalsType.custom || type === modalsType.quickSideView) {\r\n @if (customBodyTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"customBodyTemplate\" [ngTemplateOutletContext]=\"customBodyContext\">\r\n </ng-container>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"modal-footer\">\r\n @if (type === modalsType.delete) {\r\n <cw-button label=\"_COMMON._ACTION.DELETE\" [type]=\"buttonTypeEnum.primary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"actionClick()\" dataTest=\"btn-action-modal\">\r\n </cw-button>\r\n\r\n <cw-button label=\"_COMMON._ACTION.CANCEL\" [type]=\"buttonTypeEnum.secondary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"activeModal.dismiss()\" dataTest=\"btn-close-modal\">\r\n </cw-button>\r\n }\r\n @else {\r\n @if(labelBtnAction) {\r\n <cw-button [label]=\"labelBtnAction | translate\" [type]=\"buttonTypeEnum.primary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"actionClick()\" dataTest=\"btn-close-modal\">\r\n </cw-button>\r\n }\r\n\r\n <cw-button label=\"_COMMON._ACTION.CLOSE\" [type]=\"buttonTypeEnum.secondary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"activeModal.dismiss()\" dataTest=\"btn-close-modal\">\r\n </cw-button>\r\n }\r\n </div>\r\n}\r\n\r\n@if (type === modalsType.loader) {\r\n <div class=\"modal-body\">\r\n <cw-loader></cw-loader>\r\n </div>\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { UtilsHelper } from '../../../helpers/utils.helper';\r\n\r\n@Component({\r\n selector: 'cw-tab-content',\r\n template: `\r\n <div class=\"tab-pane\"\r\n [class.fade]=\"!active\"\r\n [class.active]=\"active\"\r\n [class.show]=\"active\"\r\n [class.d-none]=\"!active\"\r\n [id]=\"'cw-nav-' + id + '-panel'\"\r\n role=\"tabpanel\"\r\n [attr.aria-labelledby]=\"'cw-nav-' + id\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n standalone: true\r\n})\r\nexport class TabContentComponent {\r\n @Input() title!: string;\r\n @Input() disabled = false;\r\n @Input() withIcon?: string;\r\n\r\n id: number = 0;\r\n active = false;\r\n\r\n get fragment(): string {\r\n return UtilsHelper.slugify(this.title);\r\n }\r\n}\r\n","export enum FoTabTypeEnum {\r\n defaultMd = 'default-md',\r\n defaultXl = 'default-xl',\r\n}\r\n\r\nexport enum BoTabTypeEnum {\r\n basic = 'basic',\r\n card = 'card',\r\n}\r\n","import { AfterContentInit, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { TabContentComponent } from './components/tab-content.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BoTabTypeEnum, FoTabTypeEnum } from '../../enum/tab.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconSizeEnum } from '../../enum/icon.enum';\r\n\r\n@Component({\r\n selector: 'cw-tab',\r\n templateUrl: './tab.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n IconComponent,\r\n TranslateModule\r\n ]\r\n})\r\nexport class TabComponent implements AfterContentInit {\r\n\r\n @Input() type: FoTabTypeEnum | BoTabTypeEnum = FoTabTypeEnum.defaultMd;\r\n @Input() id: string;\r\n @Input() useFragment = true;\r\n @Input() title?: string;\r\n @Input() tabContentCssClass?: string = '';\r\n @Input() activeTabIndex?: number = 0;\r\n\r\n @ContentChildren(TabContentComponent) tabs!: QueryList<TabContentComponent>;\r\n @ViewChildren('tabLink') tabLinks!: QueryList<ElementRef>;\r\n @Output() tabChanged = new EventEmitter<number>();\r\n\r\n public activeId = 0;\r\n public iconSize: IconSizeEnum = IconSizeEnum['md'];\r\n\r\n readonly tabTypeEnum = FoTabTypeEnum && BoTabTypeEnum;\r\n\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) { }\r\n\r\n ngAfterContentInit(): void {\r\n const tabsArray = this.tabs.toArray();\r\n\r\n tabsArray.forEach((tab, index) => {\r\n tab.id = index;\r\n tab.active = false;\r\n });\r\n\r\n const firstActiveIndex = tabsArray.findIndex(t => !t.disabled);\r\n this.activeId = this.activeTabIndex ?? (firstActiveIndex !== -1 ? firstActiveIndex : 0);\r\n\r\n if (this.useFragment) {\r\n this.route.fragment.subscribe(fragment => {\r\n if (fragment) {\r\n const foundIndex = tabsArray.findIndex(\r\n tab => tab.fragment === fragment && !tab.disabled\r\n );\r\n if (foundIndex !== -1) {\r\n this.activeId = foundIndex;\r\n }\r\n }\r\n this.activateTabByIndex(this.activeId);\r\n });\r\n } else {\r\n this.activateTabByIndex(this.activeId);\r\n }\r\n }\r\n\r\n public selectTab(tab: TabContentComponent) {\r\n if (tab.disabled) return;\r\n\r\n this.tabs.forEach(t => t.active = false);\r\n tab.active = true;\r\n\r\n this.activeId = tab.id;\r\n\r\n if (this.useFragment) {\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n fragment: tab.fragment,\r\n queryParamsHandling: 'preserve',\r\n replaceUrl: true\r\n });\r\n }\r\n\r\n this.tabChanged.emit(this.activeId);\r\n }\r\n\r\n private activateTabByIndex(index: number) {\r\n const tab = this.tabs.toArray()[index];\r\n if (tab && !tab.disabled) {\r\n this.selectTab(tab);\r\n }\r\n }\r\n\r\n public onKeydown(event: KeyboardEvent) {\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n event.preventDefault();\r\n this.selectPreviousTab();\r\n break;\r\n case 'ArrowRight':\r\n event.preventDefault();\r\n this.selectNextTab();\r\n break;\r\n }\r\n }\r\n\r\n private moveFocus() {\r\n this.tabLinks?.forEach((link: ElementRef) => {\r\n if (link.nativeElement.getAttribute('aria-selected') === 'true') {\r\n link.nativeElement.focus();\r\n }\r\n });\r\n }\r\n\r\n private selectPreviousTab() {\r\n const tabsArray = this.tabs.toArray();\r\n const activeIndex = tabsArray.findIndex(tab => tab.active);\r\n if (activeIndex !== -1) {\r\n let newIndex = (activeIndex - 1 + tabsArray.length) % tabsArray.length;\r\n while (tabsArray[newIndex].disabled && newIndex !== activeIndex) {\r\n newIndex = (newIndex - 1 + tabsArray.length) % tabsArray.length;\r\n }\r\n if (!tabsArray[newIndex].disabled) {\r\n this.selectTab(tabsArray[newIndex]);\r\n setTimeout(() => this.moveFocus());\r\n }\r\n }\r\n }\r\n\r\n private selectNextTab() {\r\n const tabsArray = this.tabs.toArray();\r\n const activeIndex = tabsArray.findIndex(tab => tab.active);\r\n if (activeIndex !== -1) {\r\n let newIndex = (activeIndex + 1) % tabsArray.length;\r\n while (tabsArray[newIndex].disabled && newIndex !== activeIndex) {\r\n newIndex = (newIndex + 1) % tabsArray.length;\r\n }\r\n if (!tabsArray[newIndex].disabled) {\r\n this.selectTab(tabsArray[newIndex]);\r\n setTimeout(() => this.moveFocus());\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"tab\" [ngClass]=\"'tab-' + type\">\r\n @if (title) {\r\n <h2>{{ title | translate }}</h2>\r\n }\r\n <ul class=\"tab-items d-flex-h\" [ngClass]=\"'tab-items-' + type\" role=\"tablist\" appRwdTabs>\r\n @for (tab of tabs.toArray(); track tab; let i = $index) {\r\n <li class=\"tab-item\" role=\"presentation\">\r\n <button #tabLink type=\"button\" class=\"tab-link btn\" [class.active]=\"tab.active\" [class.disabled]=\"tab.disabled\"\r\n [disabled]=\"tab.disabled\" [attr.id]=\"'cw-nav-' + i\" [attr.data-test-ctw]=\"'link-tab-' + id + '-' + i\"\r\n [attr.aria-selected]=\"tab.active\" [attr.aria-controls]=\"'cw-nav-' + i + '-panel'\"\r\n [attr.tabindex]=\"tab.active ? '0' : '-1'\" (click)=\"selectTab(tab)\" (keydown)=\"onKeydown($event)\" role=\"tab\">\r\n @if (tab.withIcon) {\r\n <cw-icon [icon]=\"tab.withIcon\" [iconSize]=\"iconSize\"></cw-icon>\r\n }\r\n {{ tab.title | translate }}\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n\r\n<div [class]=\"'tab-content ' + tabContentCssClass\" [ngClass]=\"'tab-content-' + type\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'cw-wizard-step',\n template: '<ng-template #content><ng-content></ng-content></ng-template>',\n standalone: true\n})\n\nexport class WizardStepComponent {\n\n @Input() title!: string;\n @Input() completed = false;\n\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<any>;\n\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, ContentChildren, EventEmitter, Output, QueryList } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { WizardStepComponent } from './components/wizard-step.component';\n\n@Component({\n selector: 'cw-wizard-stepper',\n templateUrl: './wizard-stepper.component.html',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule\n ]\n})\nexport class WizardStepperComponent {\n @ContentChildren(WizardStepComponent) steps!: QueryList<WizardStepComponent>;\n\n @Output() stepChange = new EventEmitter<number>();\n @Output() stepNext = new EventEmitter<number>();\n @Output() stepPrevious = new EventEmitter<number>();\n @Output() stepEnd = new EventEmitter<number>();\n\n public selectedIndex = 0;\n\n public get stepList(): WizardStepComponent[] {\n return this.steps.toArray();\n }\n\n public goToStep(index: number) {\n if (index < 0 || index >= this.steps.length) return;\n\n // Vérifier que toutes les étapes précédentes sont complétées\n for (let i = 0; i < index; i++) {\n if (!this.steps.toArray()[i].completed) {\n return; // Empêche d'aller à cette étape si une étape précédente n'est pas validée\n }\n }\n\n this.selectedIndex = index;\n this.stepChange.emit(this.selectedIndex);\n }\n\n public nextStep() {\n if (this.selectedIndex < this.steps.length - 1) {\n const currentStep = this.steps.toArray()[this.selectedIndex];\n if (!currentStep.completed) {\n // Si l'étape courante n'est pas validée, on bloque\n return;\n }\n this.selectedIndex++;\n this.stepNext.emit(this.selectedIndex);\n this.stepChange.emit(this.selectedIndex);\n }\n }\n\n public previousStep() {\n if (this.selectedIndex > 0) {\n this.selectedIndex--;\n this.stepPrevious.emit(this.selectedIndex);\n this.stepChange.emit(this.selectedIndex);\n }\n }\n\n public endWizard() {\n if (this.selectedIndex > 0) {\n this.stepEnd.emit(this.selectedIndex);\n this.stepChange.emit(this.selectedIndex);\n }\n }\n}\n","<nav>\r\n <ul class=\"list-inline step-list\">\r\n @for (step of steps.toArray(); track step; let i = $index) {\r\n <li class=\"list-inline-item step-item\">\r\n <button class=\"btn step-button\" [ngClass]=\"{\r\n 'step-active': selectedIndex === i,\r\n 'step-completed': step.completed,\r\n 'step-current': selectedIndex === i && step.completed === false\r\n }\" [disabled]=\"(i > 0 && !steps.toArray()[i - 1]?.completed)\" (click)=\"goToStep(i)\" type=\"button\">\r\n <span class=\"step-indicator bo-icons bo-alert-success\" aria-hidden=\"true\"></span>\r\n <span class=\"step-label\">\r\n {{ step.title || ('_COMMON._STEPPER.STEP' | translate) + (i + 1) }}\r\n </span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n</nav>\r\n\r\n@for (step of steps.toArray(); track step; let i = $index) {\r\n <section class=\"tab-pane\" [class.active]=\"selectedIndex === i\" [hidden]=\"selectedIndex !== i\" role=\"tabpanel\">\r\n <ng-container *ngTemplateOutlet=\"step.templateRef\"></ng-container>\r\n </section>\r\n}\r\n\r\n<div class=\"text-center mt-5\">\r\n <div class=\"btn-group\">\r\n <button class=\"btn btn-secondary btn-min-width\" (click)=\"previousStep()\" [disabled]=\"selectedIndex === 0\"\r\n type=\"button\">\r\n {{ '_COMMON._STEPPER.PREVIOUS_STEP' | translate }}\r\n </button>\r\n\r\n @if (selectedIndex !== steps.length - 1) {\r\n <button class=\"btn btn-primary btn-min-width\" (click)=\"nextStep()\"\r\n [disabled]=\"!steps.toArray()[selectedIndex]?.completed\" type=\"button\">\r\n {{ '_COMMON._STEPPER.NEXT_STEP' | translate }}\r\n </button>\r\n }\r\n @else {\r\n <button class=\"btn btn-primary btn-min-width\" (click)=\"endWizard()\" type=\"button\">\r\n {{ '_COMMON._ACTION.END' | translate }}\r\n </button>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'cw-stepper',\r\n templateUrl: './stepper.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule\r\n]\r\n})\r\nexport class StepperComponent {\r\n\r\n @Input() activeStep: number = 0;\r\n @Input() steps: string[] = [];\r\n @Input() label: string = 'Étapes de progression'; // todo trad\r\n\r\n}\r\n","<ul class=\"stepper\" role=\"list\" [attr.aria-label]=\"label\">\r\n @for (step of steps; track step; let i = $index) {\r\n <li id=\"step-{{i}}\" class=\"stepper-item\" [ngClass]=\"{\r\n 'stepper-item-current': i === activeStep,\r\n 'stepper-item-completed': i < activeStep}\"\r\n [attr.aria-current]=\"i === activeStep ? 'step' : null\">\r\n <span class=\"stepper-label\">\r\n <span class=\"visually-hidden\">{{i + 1}}</span>\r\n {{step | translate}}\r\n </span>\r\n </li>\r\n }\r\n</ul>\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nconst FILE_SIZE_UNITS_FR = ['o', 'Ko', 'Mo', 'Go', 'To', 'Po', 'Eo', 'Zo', 'Yo'];\r\nconst FILE_SIZE_UNITS_DEFAULT = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n\r\n@Pipe({ name: 'formatFileSize' })\r\nexport class FormatFileSizePipe implements PipeTransform {\r\n private translate = inject(TranslateService);\r\n\r\n\r\n transform(sizeInBytes: number): string {\r\n const units = this.translate.currentLang === 'fr' ? FILE_SIZE_UNITS_FR : FILE_SIZE_UNITS_DEFAULT;\r\n\r\n let power = Math.round(Math.log(sizeInBytes) / Math.log(1024));\r\n power = Math.min(power, units.length - 1);\r\n\r\n const size = sizeInBytes / Math.pow(1024, power); // size in new units\r\n const formattedSize = Math.round(size * 10) / 10; // keep up to 1 decimal\r\n const unit = units[power];\r\n\r\n return `${formattedSize} ${unit}`;\r\n }\r\n}\r\n","import { Component, Input, OnInit, inject } from '@angular/core';\r\nimport { TranslateService, TranslatePipe } from '@ngx-translate/core';\r\nimport { FormatFileSizePipe } from '../../pipe/format-file-size.pipe';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { Attachment } from '../../models/attachment.model';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconTypeEnum, IconSizeEnum } from '../../enum/icon.enum';\r\n\r\n@Component({\r\n selector: 'cw-file-to-download',\r\n templateUrl: './file-to-download.component.html',\r\n imports: [NgTemplateOutlet, TranslatePipe, FormatFileSizePipe, IconComponent]\r\n})\r\nexport class FileToDownloadComponent {\r\n\r\n translate = inject(TranslateService);\r\n\r\n readonly iconType = IconTypeEnum;\r\n readonly iconSize = IconSizeEnum;\r\n\r\n @Input() attachments: Attachment[];\r\n}\r\n","<!-- If one file -->\r\n@if (attachments.length === 1 ) {\r\n<ng-container *ngTemplateOutlet=\"file;context:{attachment:attachments[0]}\"></ng-container>\r\n}\r\n\r\n<!-- If two files or more, li loop -->\r\n@if (attachments.length > 1) {\r\n<ul class=\"list-unstyled file-to-download-items\">\r\n @for (attachment of attachments; track attachment) {\r\n <li class=\"file-to-download-list-item\">\r\n <ng-container *ngTemplateOutlet=\"file;context:{attachment:attachment}\"></ng-container>\r\n </li>\r\n }\r\n</ul>\r\n}\r\n\r\n<ng-template #file let-attachment=\"attachment\">\r\n <a [href]=\"attachment.url\" class=\"file-to-download-link\" target=\"_blank\">\r\n <span class=\"file-to-download-name\">\r\n {{ attachment.label ? attachment.label : ('_SHARED.ATTACHMENT_DEFAULT_LABEL' | translate ) }}\r\n </span>\r\n <span class=\"file-to-download-info\">\r\n @if (attachment.extension && attachment.size) {\r\n {{attachment.extension.toUpperCase()}} {{attachment.size * 1024 | formatFileSize}}\r\n }\r\n <cw-icon icon=\"cw-toolbar-download\" font=\"optyweb\" [label]=\"'_COMMON.NEW_WINDOW' |translate\" [type]=\"iconType.default\"\r\n [iconSize]=\"iconSize['md']\" iconCssClass=\"file-to-download-download\"></cw-icon>\r\n </span>\r\n </a>\r\n</ng-template>\r\n","export enum NumericalRangeTypeEnum {\r\n defaultWhite = 'default-white',\r\n defaultGrey = 'default-grey',\r\n smallWhite = 'small-white',\r\n smalltGrey = 'small-grey',\r\n largeWhite = 'large-white',\r\n largeGrey = 'large-grey'\r\n}\r\nexport enum NumericalRangeLabelPositionEnum {\r\n inside = 'inside',\r\n outside = 'outside'\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { NumericalRangeLabelPositionEnum, NumericalRangeTypeEnum } from '../../enum/numerical-range.enum';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { FoButtonTypeEnum, BoButtonTypeEnum, ButtonIconSizeEnum } from '../../enum/button.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconSizeEnum, IconTypeEnum } from '../../enum/icon.enum';\r\n\r\n@Component({\r\n selector: 'cw-numerical-range',\r\n templateUrl: './numerical-range.component.html',\r\n imports: [NgClass, IconComponent, ButtonComponent],\r\n standalone: true\r\n})\r\nexport class NumericalRangeComponent implements OnInit {\r\n\r\n @Input() type: NumericalRangeTypeEnum = NumericalRangeTypeEnum.defaultGrey;\r\n @Input() label: string = '';\r\n @Input() amount: number = 0;\r\n @Input() withIcon?: string;\r\n @Input() withLabelVisible?: boolean = true;\r\n @Input() labelPosition: NumericalRangeLabelPositionEnum = NumericalRangeLabelPositionEnum.inside;\r\n @Input() ceil?: number = 9;\r\n @Input() floor?: number = 0;\r\n @Input() isDisabled?: boolean = false;\r\n @Input() autoChangeAmount?: boolean = true;\r\n\r\n @Output() newAmount = new EventEmitter<number>();\r\n\r\n readonly numericalRangeType = NumericalRangeTypeEnum;\r\n readonly iconTypeEnum = IconTypeEnum;\r\n readonly iconSize = IconSizeEnum;\r\n readonly labelPositionValue = NumericalRangeLabelPositionEnum;\r\n readonly buttonType = FoButtonTypeEnum && BoButtonTypeEnum;\r\n readonly buttonIconSize = ButtonIconSizeEnum;\r\n\r\n public\r\n\r\n ngOnInit(): void {\r\n // this.elementRef.nativeElement.classList.add('dropdown-item');\r\n // this.elementRef.nativeElement.setAttribute('tabindex', '0');\r\n }\r\n\r\n\r\n public increaseAmount(): void {\r\n const amount = this.amount + 1;\r\n if (this.autoChangeAmount) {\r\n this.amount = amount;\r\n }\r\n this.newAmount.emit(amount);\r\n }\r\n\r\n public decreaseAmount(): void {\r\n const amount = this.amount - 1;\r\n if (this.autoChangeAmount) {\r\n this.amount = amount;\r\n if (this.amount < this.floor) {\r\n this.amount = this.floor;\r\n }\r\n }\r\n this.newAmount.emit(amount);\r\n }\r\n}\r\n","<div class=\"numerical-range text-center\" [ngClass]=\"'numerical-range-' + type\">\r\n @if (labelPosition == labelPositionValue.outside) {\r\n @if (withLabelVisible) {\r\n <div class=\"numerical-range-label\">\r\n @if (withIcon && (type == numericalRangeType.largeWhite || type == numericalRangeType.largeGrey)) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSize['lg']\"></cw-icon>\r\n }\r\n <span>{{ label }}</span>\r\n </div>\r\n }\r\n }\r\n <div class=\"numerical-range-container\">\r\n\r\n <cw-button [isDisabled]=\"isDisabled || amount <= floor\" label=\"Augmenter la valeur de 1\"\r\n withIcon=\"optyweb cw-toolbar-add\" [withOnlyIcon]=\"true\" [type]=\"buttonType.primary\" [iconSize]=\"buttonIconSize.small\"\r\n (btnAction)=\"decreaseAmount()\"></cw-button>\r\n\r\n <div class=\"numerical-range-wrapper\">\r\n <div class=\"numerical-range-amount\">\r\n {{ amount }}\r\n </div>\r\n\r\n @if ((type !== numericalRangeType.largeGrey && type !== numericalRangeType.largeWhite) && (withIcon || withLabelVisible)) {\r\n <div class=\"numerical-range-label\">\r\n @if (withLabelVisible && labelPosition == labelPositionValue.inside) {\r\n @if (withIcon) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSize['lg']\"></cw-icon>\r\n }\r\n <span>{{ label }}</span>\r\n }\r\n @else {\r\n @if (withIcon) {\r\n <cw-icon [icon]=\"withIcon\" [label]=\"label\" [iconSize]=\"iconSize['lg']\"></cw-icon>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n <cw-button [isDisabled]=\"isDisabled || amount >= ceil\" label=\"Dimiuer la valeur de 1\"\r\n withIcon=\"optyweb cw-toolbar-add\" [withOnlyIcon]=\"true\" [type]=\"buttonType.primary\" [iconSize]=\"buttonIconSize.small\"\r\n (btnAction)=\"increaseAmount()\"></cw-button>\r\n </div>\r\n\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cw-image',\r\n templateUrl: './image.component.html',\r\n standalone: true\r\n\r\n})\r\nexport class ImageComponent {\r\n\r\n @Input() source: string = '';\r\n @Input() alt: string = '';\r\n @Input() isAriaHidden:boolean = false;\r\n @Input() cssClass: string = '';\r\n @Input() width: string = '';\r\n @Input() height: string = '';\r\n\r\n}\r\n","<img [src]=\"source\" [attr.aria-hidden]=\"isAriaHidden ? 'true' : null\" [class]=\"cssClass\" [alt]=\"alt\"\r\n [attr.width]=\"width ? width : null\" [attr.height]=\"height ? height : null\">\r\n","export enum PlacementEnum {\r\n Left = 'left',\r\n Right = 'right',\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ModalsType } from '../enum/modals.enum';\r\nimport { ModalsComponent } from '../components/modals/modals.component';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ModalsService {\r\n constructor(private modalService: NgbModal) { }\r\n\r\n openModal(\r\n type: ModalsType,\r\n config?: Partial<ModalsComponent>,\r\n sizeOverride?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl'\r\n ): NgbModalRef {\r\n const size = sizeOverride ?? this.getModalSizeByType(type);\r\n const modalRef = this.modalService.open(ModalsComponent, {\r\n centered: true,\r\n size,\r\n backdrop: type === ModalsType.loader ? 'static' : true,\r\n ariaLabelledBy: 'modal-basic-title',\r\n keyboard: type !== ModalsType.loader,\r\n windowClass: type === ModalsType.quickSideView ? 'quick-view-modal' : null,\r\n scrollable: type === ModalsType.quickSideView\r\n });\r\n\r\n modalRef.componentInstance.type = type;\r\n\r\n if (config) {\r\n Object.assign(modalRef.componentInstance, config);\r\n }\r\n\r\n return modalRef;\r\n }\r\n\r\n private getModalSizeByType(type: ModalsType): 'sm' | 'md' | 'lg' | 'xl' | 'xxl' {\r\n switch (type) {\r\n case ModalsType.loader:\r\n return 'sm';\r\n case ModalsType.delete:\r\n return 'md';\r\n case ModalsType.quickSideView:\r\n return 'lg';\r\n default:\r\n return 'md';\r\n }\r\n }\r\n}\r\n","/*\r\n * Public API Surface of basic-ui\r\n */\r\n\r\n// LIB UI\r\n//---------------------------------------------------------\r\n// Lib ui components\r\nexport * from './lib/components/accordion/accordion.component';\r\nexport * from './lib/components/alert/alert.component';\r\nexport * from './lib/components/toast/toast.component';\r\nexport * from './lib/components/badge/badge.component';\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/dropdown/dropdown.component';\r\nexport * from './lib/components/card/card.component';\r\nexport * from './lib/components/form-field/form-field.component';\r\nexport * from './lib/components/icon/icon.component';\r\nexport * from './lib/components/icon-notification/icon-notification.component';\r\nexport * from './lib/components/legend/legend.component';\r\nexport * from './lib/components/loader/loader.component';\r\nexport * from './lib/components/modals/modals.component';\r\nexport * from './lib/components/tab/components/tab-content.component';\r\nexport * from './lib/components/tab/tab.component';\r\nexport * from './lib/components/wizard-stepper/components/wizard-step.component';\r\nexport * from './lib/components/wizard-stepper/wizard-stepper.component';\r\nexport * from './lib/components/stepper/stepper.component';\r\nexport * from './lib/components/file-to-download/file-to-download.component';\r\nexport * from './lib/components/numerical-range/numerical-range.component';\r\nexport * from './lib/components/image/image.component';\r\n\r\n// Lib UI Directives\r\nexport * from './lib/directives/collapse.directive';\r\nexport * from './lib/directives/clickoutside.directive';\r\n\r\n// Lib UI Enum\r\nexport * from './lib/enum/field-type.enum';\r\nexport * from './lib/enum/legend-type.enum';\r\nexport * from './lib/enum/modals.enum';\r\nexport * from './lib/enum/icon.enum';\r\nexport * from './lib/enum/icon-notification.enum';\r\nexport * from './lib/enum/badge.enum';\r\nexport * from './lib/enum/alert.enum';\r\nexport * from './lib/enum/placement.enum';\r\nexport * from './lib/enum/card.enum';\r\nexport * from './lib/enum/tab.enum';\r\nexport * from './lib/enum/button.enum';\r\nexport * from './lib/enum/numerical-range.enum';\r\n\r\n// Lib Services\r\nexport * from './lib/services/modals.service';\r\nexport * from './lib/services/toast.service';\r\nexport * from './lib/services/focus.service';\r\nexport * from './lib/services/responsive.service';\r\n\r\n// Lib Models\r\nexport * from './lib/models/custom-list.model';\r\nexport * from './lib/models/legend.model';\r\nexport * from './lib/models/toast.model';\r\nexport * from './lib/models/attachment.model';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i5","i3"],"mappings":"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"}
1
+ {"version":3,"file":"cityway-basic-ui.mjs","sources":["../../../projects/basic-ui/src/lib/directives/collapse.directive.ts","../../../projects/basic-ui/src/lib/enum/icon.enum.ts","../../../projects/basic-ui/src/lib/enum/sprite-icons.enum.ts","../../../projects/basic-ui/src/lib/components/icon/icon.component.ts","../../../projects/basic-ui/src/lib/components/icon/icon.component.html","../../../projects/basic-ui/src/lib/enum/card.enum.ts","../../../projects/basic-ui/src/lib/components/card/card.component.ts","../../../projects/basic-ui/src/lib/components/card/card.component.html","../../../projects/basic-ui/src/lib/components/accordion/accordion.component.ts","../../../projects/basic-ui/src/lib/components/accordion/accordion.component.html","../../../projects/basic-ui/src/lib/enum/alert.enum.ts","../../../projects/basic-ui/src/lib/enum/icon-notification.enum.ts","../../../projects/basic-ui/src/lib/components/icon-notification/icon-notification.component.ts","../../../projects/basic-ui/src/lib/components/icon-notification/icon-notification.component.html","../../../projects/basic-ui/src/lib/components/alert/alert.component.ts","../../../projects/basic-ui/src/lib/components/alert/alert.component.html","../../../projects/basic-ui/src/lib/services/focus.service.ts","../../../projects/basic-ui/src/lib/services/toast.service.ts","../../../projects/basic-ui/src/lib/components/toast/toast.component.ts","../../../projects/basic-ui/src/lib/components/toast/toast.component.html","../../../projects/basic-ui/src/lib/enum/badge.enum.ts","../../../projects/basic-ui/src/lib/components/badge/badge.component.ts","../../../projects/basic-ui/src/lib/components/badge/badge.component.html","../../../projects/basic-ui/src/lib/directives/clickoutside.directive.ts","../../../projects/basic-ui/src/lib/enum/button.enum.ts","../../../projects/basic-ui/src/lib/services/responsive.service.ts","../../../projects/basic-ui/src/lib/helpers/utils.helper.ts","../../../projects/basic-ui/src/lib/components/button/button.component.ts","../../../projects/basic-ui/src/lib/components/button/button.component.html","../../../projects/basic-ui/src/lib/components/dropdown/dropdown.component.ts","../../../projects/basic-ui/src/lib/components/dropdown/dropdown.component.html","../../../projects/basic-ui/src/lib/directives/show-hide-password.ts","../../../projects/basic-ui/src/lib/enum/field-type.enum.ts","../../../projects/basic-ui/src/lib/components/form-field/form-field.component.ts","../../../projects/basic-ui/src/lib/components/form-field/form-field.component.html","../../../projects/basic-ui/src/lib/enum/legend-type.enum.ts","../../../projects/basic-ui/src/lib/components/legend/legend.component.ts","../../../projects/basic-ui/src/lib/components/legend/legend.component.html","../../../projects/basic-ui/src/lib/components/loader/loader.component.ts","../../../projects/basic-ui/src/lib/components/loader/loader.component.html","../../../projects/basic-ui/src/lib/enum/modals.enum.ts","../../../projects/basic-ui/src/lib/services/modals.service.ts","../../../projects/basic-ui/src/lib/components/modals/modals.component.ts","../../../projects/basic-ui/src/lib/components/modals/modals.component.html","../../../projects/basic-ui/src/lib/components/tab/components/tab-content.component.ts","../../../projects/basic-ui/src/lib/enum/tab.enum.ts","../../../projects/basic-ui/src/lib/components/tab/tab.component.ts","../../../projects/basic-ui/src/lib/components/tab/tab.component.html","../../../projects/basic-ui/src/lib/components/wizard-stepper/components/wizard-step.component.ts","../../../projects/basic-ui/src/lib/components/wizard-stepper/wizard-stepper.component.ts","../../../projects/basic-ui/src/lib/components/wizard-stepper/wizard-stepper.component.html","../../../projects/basic-ui/src/lib/components/stepper/stepper.component.ts","../../../projects/basic-ui/src/lib/components/stepper/stepper.component.html","../../../projects/basic-ui/src/lib/pipe/format-file-size.pipe.ts","../../../projects/basic-ui/src/lib/components/file-to-download/file-to-download.component.ts","../../../projects/basic-ui/src/lib/components/file-to-download/file-to-download.component.html","../../../projects/basic-ui/src/lib/enum/numerical-range.enum.ts","../../../projects/basic-ui/src/lib/components/numerical-range/numerical-range.component.ts","../../../projects/basic-ui/src/lib/components/numerical-range/numerical-range.component.html","../../../projects/basic-ui/src/lib/components/image/image.component.ts","../../../projects/basic-ui/src/lib/components/image/image.component.html","../../../projects/basic-ui/src/lib/enum/placement.enum.ts","../../../projects/basic-ui/src/public-api.ts","../../../projects/basic-ui/src/cityway-basic-ui.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, Input, Output, inject, effect, signal } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cwCollapse]',\r\n exportAs: 'cwCollapse',\r\n standalone: true\r\n})\r\nexport class CollapseDirective {\r\n private elementRef = inject(ElementRef);\r\n\r\n // Utilisation de signals pour la réactivité\r\n private collapsedSignal = signal(false);\r\n\r\n @Input({ required: false })\r\n set cwCollapse(value: boolean) {\r\n this.collapsedSignal.set(value);\r\n }\r\n\r\n get cwCollapse(): boolean {\r\n return this.collapsedSignal();\r\n }\r\n\r\n @Output() shown = new EventEmitter<void>();\r\n @Output() hidden = new EventEmitter<void>();\r\n\r\n constructor() {\r\n // Effect pour réagir aux changements de collapsed\r\n effect(() => {\r\n const isCollapsed = this.collapsedSignal();\r\n this.updateClasses(isCollapsed);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.classList.add('collapse');\r\n this.updateClasses(this.collapsedSignal());\r\n }\r\n\r\n private updateClasses(isCollapsed: boolean): void {\r\n const element = this.elementRef.nativeElement;\r\n\r\n if (isCollapsed) {\r\n element.classList.remove('show');\r\n this.hidden.emit();\r\n } else {\r\n element.classList.add('show');\r\n this.shown.emit();\r\n }\r\n }\r\n\r\n toggle(): void {\r\n this.collapsedSignal.update(value => !value);\r\n }\r\n\r\n show(): void {\r\n this.collapsedSignal.set(false);\r\n }\r\n\r\n hide(): void {\r\n this.collapsedSignal.set(true);\r\n }\r\n}\r\n","export enum IconSizeEnum {\r\n '5xl' = '5xl',\r\n '4xl' = '4xl',\r\n '3xl' = '3xl',\r\n '2xl' = '2xl',\r\n 'xl' = 'xl',\r\n 'lg' = 'lg',\r\n 'md' = 'md',\r\n 'sm' = 'sm',\r\n 'xs' = 'xs',\r\n '2xs' = '2xs',\r\n '3xs' = '3xs'\r\n}\r\n\r\nexport enum IconTypeEnum {\r\n default = 'default',\r\n rounded = 'rounded'\r\n}\r\n\r\nexport enum IconUiTypeEnum {\r\n default = 'default',\r\n light = 'light',\r\n primary = 'primary',\r\n invert = 'invert',\r\n success = 'success',\r\n info = 'info',\r\n warning = 'warning',\r\n danger = 'danger',\r\n neutral = 'neutral',\r\n}\r\n","// AUTO-GENERATED — ne pas éditer manuellement\n// Regénérer avec : node build-sprite.mjs\n\nexport enum SpriteIconEnum {\n accessAccompaniedHearingImpairedUser = 'accessAccompaniedHearingImpairedUser',\n accessAccompaniedLearningImpairedUser = 'accessAccompaniedLearningImpairedUser',\n accessAccompaniedVisuallyChallengedUser = 'accessAccompaniedVisuallyChallengedUser',\n accessAccompaniedWheelchairUser = 'accessAccompaniedWheelchairUser',\n accessHearingImpairedUser = 'accessHearingImpairedUser',\n accessLearningImpairedUser = 'accessLearningImpairedUser',\n accessVisuallyChallengedUser = 'accessVisuallyChallengedUser',\n accessWheelchairUser = 'accessWheelchairUser',\n accountConfidentialitySettings = 'accountConfidentialitySettings',\n accountConsumption = 'accountConsumption',\n accountCredits = 'accountCredits',\n accountHelp = 'accountHelp',\n accountLogout = 'accountLogout',\n accountServices = 'accountServices',\n addBag = 'addBag',\n addCard = 'addCard',\n addPassenger = 'addPassenger',\n airQuality = 'airQuality',\n alertHelp = 'alertHelp',\n alertHelp1 = 'alertHelp1',\n alertWarning = 'alertWarning',\n americanExpress = 'americanExpress',\n baby = 'baby',\n bad = 'bad',\n bmp = 'bmp',\n boardingForbidden = 'boardingForbidden',\n boardingOnly = 'boardingOnly',\n border = 'border',\n card = 'card',\n carPlate = 'carPlate',\n cash = 'cash',\n chat = 'chat',\n codes = 'codes',\n computer = 'computer',\n copyright = 'copyright',\n crowdsourcingAccident = 'crowdsourcingAccident',\n crowdsourcingBtn = 'crowdsourcingBtn',\n crowdsourcingBusShelter = 'crowdsourcingBusShelter',\n crowdsourcingCrowded = 'crowdsourcingCrowded',\n crowdsourcingDegradation = 'crowdsourcingDegradation',\n crowdsourcingDelay = 'crowdsourcingDelay',\n crowdsourcingEscalator = 'crowdsourcingEscalator',\n crowdsourcingInvalidate = 'crowdsourcingInvalidate',\n crowdsourcingLift = 'crowdsourcingLift',\n crowdsourcingMove = 'crowdsourcingMove',\n crowdsourcingReport = 'crowdsourcingReport',\n crowdsourcingSign = 'crowdsourcingSign',\n crowdsourcingStopRelocated = 'crowdsourcingStopRelocated',\n crowdsourcingTicket = 'crowdsourcingTicket',\n crowdsourcingTrafficJam = 'crowdsourcingTrafficJam',\n crowdsourcingValidate = 'crowdsourcingValidate',\n crowdsourcingVehicle = 'crowdsourcingVehicle',\n crowdsourcingWork = 'crowdsourcingWork',\n dataProtection = 'dataProtection',\n diamond = 'diamond',\n doc = 'doc',\n down = 'down',\n driver = 'driver',\n dropOffForbidden = 'dropOffForbidden',\n dropOffOnly = 'dropOffOnly',\n error = 'error',\n errorCard = 'errorCard',\n eshop = 'eshop',\n event = 'event',\n eventChangeRoad = 'eventChangeRoad',\n eventCloud = 'eventCloud',\n eventColClose = 'eventColClose',\n eventColOpen = 'eventColOpen',\n eventCommercial = 'eventCommercial',\n eventDisrupt = 'eventDisrupt',\n eventDisruptionEnd = 'eventDisruptionEnd',\n eventFog = 'eventFog',\n eventIce = 'eventIce',\n eventLine = 'eventLine',\n eventMarch = 'eventMarch',\n eventMiscHour = 'eventMiscHour',\n eventRain = 'eventRain',\n eventSnow = 'eventSnow',\n eventSnow2 = 'eventSnow2',\n eventSocialMovement = 'eventSocialMovement',\n eventSun = 'eventSun',\n eventTrafficAccident = 'eventTrafficAccident',\n eventTrafficBlockedroad = 'eventTrafficBlockedroad',\n eventTrafficCongestion = 'eventTrafficCongestion',\n eventTrafficDisabledvehicle = 'eventTrafficDisabledvehicle',\n eventTrafficMiscellaneous = 'eventTrafficMiscellaneous',\n eventTrafficObstruction = 'eventTrafficObstruction',\n eventTrafficSportevent = 'eventTrafficSportevent',\n eventTrafficUndefined = 'eventTrafficUndefined',\n eventTrafficWeather = 'eventTrafficWeather',\n eventWarning = 'eventWarning',\n eventWeather = 'eventWeather',\n eventWind = 'eventWind',\n fail = 'fail',\n favorite = 'favorite',\n favoriteCard = 'favoriteCard',\n favoriteLine = 'favoriteLine',\n file = 'file',\n free = 'free',\n from = 'from',\n gif = 'gif',\n good = 'good',\n handCard = 'handCard',\n headphone = 'headphone',\n home = 'home',\n homeLine = 'homeLine',\n hotline = 'hotline',\n info = 'info',\n interactiveMap = 'interactiveMap',\n interactiveMapLine = 'interactiveMapLine',\n invert = 'invert',\n journey = 'journey',\n jpg = 'jpg',\n kcal = 'kcal',\n law = 'law',\n left = 'left',\n left1 = 'left1',\n loading = 'loading',\n mailAlternate = 'mailAlternate',\n mapCenterMap = 'mapCenterMap',\n mapChooseMap = 'mapChooseMap',\n mapChooseMapIos = 'mapChooseMapIos',\n mapDeparture = 'mapDeparture',\n mapDisplacement = 'mapDisplacement',\n mapEnd = 'mapEnd',\n mapFullScreen = 'mapFullScreen',\n mapFullScreenReturn = 'mapFullScreenReturn',\n mapGeolocationActive = 'mapGeolocationActive',\n mapGeolocationInactive = 'mapGeolocationInactive',\n mapItinerary = 'mapItinerary',\n mapLocation = 'mapLocation',\n mapMap = 'mapMap',\n mapMap1 = 'mapMap1',\n mapMap2 = 'mapMap2',\n mapMap3 = 'mapMap3',\n mapMove = 'mapMove',\n mapNavigation = 'mapNavigation',\n mapNearest = 'mapNearest',\n mapPin = 'mapPin',\n mapPin2 = 'mapPin2',\n mapStop = 'mapStop',\n mapStreetView = 'mapStreetView',\n mapWorld = 'mapWorld',\n medium = 'medium',\n meeting = 'meeting',\n menu = 'menu',\n menuLine = 'menuLine',\n message = 'message',\n messageActivateAccount = 'messageActivateAccount',\n messageAlert = 'messageAlert',\n messageFail = 'messageFail',\n messageInfo = 'messageInfo',\n messageInfo2 = 'messageInfo2',\n messageNotification = 'messageNotification',\n messageNoTripFavoris = 'messageNoTripFavoris',\n messageOk = 'messageOk',\n messageWarning = 'messageWarning',\n messengerAlternate = 'messengerAlternate',\n miscAccess = 'miscAccess',\n miscCamcorder = 'miscCamcorder',\n miscDiscover = 'miscDiscover',\n miscHealth = 'miscHealth',\n miscNews = 'miscNews',\n miscNewsletter = 'miscNewsletter',\n miscRegistered = 'miscRegistered',\n miscRoute = 'miscRoute',\n miscRoute2 = 'miscRoute2',\n miscRoute3 = 'miscRoute3',\n miscRoute4 = 'miscRoute4',\n miscTicket1 = 'miscTicket1',\n miscTicket2 = 'miscTicket2',\n miscTicket3 = 'miscTicket3',\n miscVia = 'miscVia',\n modeBike = 'modeBike',\n modeBoat = 'modeBoat',\n modeBus = 'modeBus',\n modeBusPmr = 'modeBusPmr',\n modeCar = 'modeCar',\n modeCarpooling = 'modeCarpooling',\n modeCarsharing = 'modeCarsharing',\n modeCoach = 'modeCoach',\n modeCyclopouss = 'modeCyclopouss',\n modeDoubling = 'modeDoubling',\n modeEBus = 'modeEBus',\n modeElectricShuttle = 'modeElectricShuttle',\n modeElevator = 'modeElevator',\n modeEscalator = 'modeEscalator',\n modeFindPlace = 'modeFindPlace',\n modeFreefloating = 'modeFreefloating',\n modeFunicular = 'modeFunicular',\n modeHail = 'modeHail',\n modeInoui = 'modeInoui',\n modeLer = 'modeLer',\n modeMinibus = 'modeMinibus',\n modeMulti = 'modeMulti',\n modeMultiBikeBus = 'modeMultiBikeBus',\n modeMultiCarBus = 'modeMultiCarBus',\n modeMultiCoach = 'modeMultiCoach',\n modeMultiTrain = 'modeMultiTrain',\n modePlane = 'modePlane',\n modeRer = 'modeRer',\n modeSchool = 'modeSchool',\n modeSelfServiceBike = 'modeSelfServiceBike',\n modeSncfIntercite = 'modeSncfIntercite',\n modeStreetcar = 'modeStreetcar',\n modeSubway = 'modeSubway',\n modeTaxi = 'modeTaxi',\n modeTaxibus = 'modeTaxibus',\n modeTer = 'modeTer',\n modeTgv = 'modeTgv',\n modeTod = 'modeTod',\n modeTrain = 'modeTrain',\n modeTrolley = 'modeTrolley',\n modeUnknown = 'modeUnknown',\n modeWait = 'modeWait',\n modeWaitInside = 'modeWaitInside',\n modeWalk = 'modeWalk',\n modeZou = 'modeZou',\n more = 'more',\n moveBackward = 'moveBackward',\n moveForward = 'moveForward',\n music = 'music',\n navDashboard = 'navDashboard',\n navFirst = 'navFirst',\n navigationApple = 'navigationApple',\n navigationFacebook = 'navigationFacebook',\n navigationGoogle = 'navigationGoogle',\n navigationInstagram = 'navigationInstagram',\n navigationLinkedin = 'navigationLinkedin',\n navigationPinterest = 'navigationPinterest',\n navigationSnapchat = 'navigationSnapchat',\n navigationTiktok = 'navigationTiktok',\n navigationTwitter = 'navigationTwitter',\n navigationWhatsapp = 'navigationWhatsapp',\n navigationYoutube = 'navigationYoutube',\n navLast = 'navLast',\n navMediaPause = 'navMediaPause',\n newWindow = 'newWindow',\n nextLeft = 'nextLeft',\n nextRight = 'nextRight',\n nfc = 'nfc',\n ok = 'ok',\n onlineServices = 'onlineServices',\n onlineServices2 = 'onlineServices2',\n openofficeBlank = 'openofficeBlank',\n openofficeCalc = 'openofficeCalc',\n openofficeVideo = 'openofficeVideo',\n openofficeWriter = 'openofficeWriter',\n paste = 'paste',\n payment = 'payment',\n pdf = 'pdf',\n pet = 'pet',\n phone = 'phone',\n phoneCard = 'phoneCard',\n pinArrival = 'pinArrival',\n placeholder = 'placeholder',\n plan = 'plan',\n play = 'play',\n pmr = 'pmr',\n pmr2 = 'pmr2',\n png = 'png',\n poiAccommodation = 'poiAccommodation',\n poiActivity = 'poiActivity',\n poiAddress = 'poiAddress',\n poiAdministration = 'poiAdministration',\n poiAirport = 'poiAirport',\n poiBar = 'poiBar',\n poiBeach = 'poiBeach',\n poiBikePark = 'poiBikePark',\n poiBikeRack = 'poiBikeRack',\n poiBikeRental = 'poiBikeRental',\n poiBusinessFacilities = 'poiBusinessFacilities',\n poiBusStation = 'poiBusStation',\n poiCamping = 'poiCamping',\n poiCarpoolArea = 'poiCarpoolArea',\n poiCarpoolingTransition = 'poiCarpoolingTransition',\n poiCarsharingStation = 'poiCarsharingStation',\n poiChargingStation = 'poiChargingStation',\n poiClub = 'poiClub',\n poiCommercialAgency = 'poiCommercialAgency',\n poiCommunityServices = 'poiCommunityServices',\n poiCompany = 'poiCompany',\n poiCorrespondence = 'poiCorrespondence',\n poiCulture = 'poiCulture',\n poiDistrict = 'poiDistrict',\n poiDropSelfServiceBike = 'poiDropSelfServiceBike',\n poiEducation = 'poiEducation',\n poiEducation2 = 'poiEducation2',\n poiEnter = 'poiEnter',\n poiEuro = 'poiEuro',\n poiEvent = 'poiEvent',\n poiEventSport = 'poiEventSport',\n poiExit = 'poiExit',\n poiFireman = 'poiFireman',\n poiFuel = 'poiFuel',\n poiHistoric = 'poiHistoric',\n poiInfoBus = 'poiInfoBus',\n poiInformationPoint = 'poiInformationPoint',\n poiIntersection = 'poiIntersection',\n poiMapDefault = 'poiMapDefault',\n poiMarina = 'poiMarina',\n poiMarket = 'poiMarket',\n poiMilitary = 'poiMilitary',\n poiMiscHealthcare = 'poiMiscHealthcare',\n poiMiscSale = 'poiMiscSale',\n poiMiscSale2 = 'poiMiscSale2',\n poiMiscWork = 'poiMiscWork',\n poiMuseum = 'poiMuseum',\n poiOtherServices = 'poiOtherServices',\n poiPark2 = 'poiPark2',\n poiParkAndRide = 'poiParkAndRide',\n poiParking = 'poiParking',\n poiParkingCarpool = 'poiParkingCarpool',\n poiParkingElectricVehicle = 'poiParkingElectricVehicle',\n poiParkingV = 'poiParkingV',\n poiPatrol = 'poiPatrol',\n poiPhoto = 'poiPhoto',\n poiPointSale = 'poiPointSale',\n poiPolice = 'poiPolice',\n poiPublicPlace = 'poiPublicPlace',\n poiRentalAgency = 'poiRentalAgency',\n poiRestaurant = 'poiRestaurant',\n poiRezoPouce = 'poiRezoPouce',\n poiSchool2 = 'poiSchool2',\n poiSecuredBike = 'poiSecuredBike',\n poiSelfServiceBike = 'poiSelfServiceBike',\n poiSelfServiceBikeSpot = 'poiSelfServiceBikeSpot',\n poiShopping = 'poiShopping',\n poiSkiResort2 = 'poiSkiResort2',\n poiSport2 = 'poiSport2',\n poiSwim = 'poiSwim',\n poiSwitchPointMulti = 'poiSwitchPointMulti',\n poiSwitchPointMulti2 = 'poiSwitchPointMulti2',\n poiTakeSelfServiceBike = 'poiTakeSelfServiceBike',\n poiTouristOffice = 'poiTouristOffice',\n poiTown = 'poiTown',\n poiVaccination = 'poiVaccination',\n poiWorship = 'poiWorship',\n poiZone = 'poiZone',\n ppt = 'ppt',\n priceDollar = 'priceDollar',\n priceEuro = 'priceEuro',\n printAlternate = 'printAlternate',\n qrcode = 'qrcode',\n rar = 'rar',\n realtime = 'realtime',\n recentTrip = 'recentTrip',\n reloadCard = 'reloadCard',\n returnTrip = 'returnTrip',\n right = 'right',\n right1 = 'right1',\n road = 'road',\n round = 'round',\n roundFull = 'roundFull',\n schedules = 'schedules',\n schedulesLine = 'schedulesLine',\n secure = 'secure',\n settingsFast = 'settingsFast',\n shop = 'shop',\n shopLine = 'shopLine',\n shopping = 'shopping',\n smartAssistant = 'smartAssistant',\n smartphone = 'smartphone',\n smartphoneHandled = 'smartphoneHandled',\n smartphoneWindows = 'smartphoneWindows',\n smoke = 'smoke',\n socialAddthis = 'socialAddthis',\n socialApple = 'socialApple',\n socialFacebook = 'socialFacebook',\n socialGoogle = 'socialGoogle',\n socialInstagram = 'socialInstagram',\n socialLinkedin = 'socialLinkedin',\n socialMail = 'socialMail',\n socialMessenger = 'socialMessenger',\n socialPinterest = 'socialPinterest',\n socialRemovethis = 'socialRemovethis',\n socialRss = 'socialRss',\n socialSnapchat = 'socialSnapchat',\n socialTiktok = 'socialTiktok',\n socialWhatsapp = 'socialWhatsapp',\n socialX = 'socialX',\n socialYoutube = 'socialYoutube',\n square = 'square',\n squareFull = 'squareFull',\n stamp = 'stamp',\n star = 'star',\n straight = 'straight',\n talk = 'talk',\n tarifProfileDollar = 'tarifProfileDollar',\n tarifProfileEuro = 'tarifProfileEuro',\n terminal = 'terminal',\n ticketAutovalidation = 'ticketAutovalidation',\n time = 'time',\n tinyElectricCar = 'tinyElectricCar',\n tinyTicket = 'tinyTicket',\n tip = 'tip',\n to = 'to',\n todUfr = 'todUfr',\n toolbarAdd = 'toolbarAdd',\n toolbarCalendarChecked = 'toolbarCalendarChecked',\n toolbarCalendarDefault = 'toolbarCalendarDefault',\n toolbarCalendarSchedule = 'toolbarCalendarSchedule',\n toolbarClose = 'toolbarClose',\n toolbarDelete = 'toolbarDelete',\n toolbarDisconnect = 'toolbarDisconnect',\n toolbarDownload = 'toolbarDownload',\n toolbarEdit = 'toolbarEdit',\n toolbarFavorite = 'toolbarFavorite',\n toolbarFavoriteAdd = 'toolbarFavoriteAdd',\n toolbarFavoriteAlert = 'toolbarFavoriteAlert',\n toolbarFavoriteNotSelected = 'toolbarFavoriteNotSelected',\n toolbarFilter = 'toolbarFilter',\n toolbarFilterCancel = 'toolbarFilterCancel',\n toolbarFullScreen2 = 'toolbarFullScreen2',\n toolbarGuestMode = 'toolbarGuestMode',\n toolbarHidePassword = 'toolbarHidePassword',\n toolbarLess = 'toolbarLess',\n toolbarLogin = 'toolbarLogin',\n toolbarMenu = 'toolbarMenu',\n toolbarMinus = 'toolbarMinus',\n toolbarMyFamily = 'toolbarMyFamily',\n toolbarNavQuit = 'toolbarNavQuit',\n toolbarNextJourney = 'toolbarNextJourney',\n toolbarPastJourney = 'toolbarPastJourney',\n toolbarPlus = 'toolbarPlus',\n toolbarPrint = 'toolbarPrint',\n toolbarRecentSearch = 'toolbarRecentSearch',\n toolbarRefresh = 'toolbarRefresh',\n toolbarSchedule = 'toolbarSchedule',\n toolbarSearch = 'toolbarSearch',\n toolbarSettings1 = 'toolbarSettings1',\n toolbarSettings2 = 'toolbarSettings2',\n toolbarShare = 'toolbarShare',\n toolbarShowPassword = 'toolbarShowPassword',\n toolbarSocialShare = 'toolbarSocialShare',\n toolbarTable = 'toolbarTable',\n toolbarUpload = 'toolbarUpload',\n toolbarUser = 'toolbarUser',\n traffic = 'traffic',\n tripPlanner = 'tripPlanner',\n tripPlannerLine = 'tripPlannerLine',\n turnCompletelyLeft = 'turnCompletelyLeft',\n turnCompletelyRight = 'turnCompletelyRight',\n turnLeft = 'turnLeft',\n turnRight = 'turnRight',\n turnSlightlyLeft = 'turnSlightlyLeft',\n turnSlightlyRight = 'turnSlightlyRight',\n type2 = 'type2',\n typeChademo = 'typeChademo',\n typeComboCcs = 'typeComboCcs',\n typeEf = 'typeEf',\n up = 'up',\n user = 'user',\n userConnected = 'userConnected',\n userConnectedLine = 'userConnectedLine',\n userLine = 'userLine',\n userTicket = 'userTicket',\n vector = 'vector',\n via = 'via',\n wagon = 'wagon',\n wagonHead = 'wagonHead',\n wallet = 'wallet',\n walletLine = 'walletLine',\n watts = 'watts',\n wifi = 'wifi',\n xls = 'xls',\n zip = 'zip',\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input } from '@angular/core';\nimport { IconSizeEnum, IconTypeEnum, IconUiTypeEnum } from '../../enum/icon.enum';\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\n\n@Component({\n selector: 'cw-icon',\n templateUrl: './icon.component.html',\n standalone: true,\n imports: [CommonModule]\n})\nexport class IconComponent {\n\n @Input() icon = SpriteIconEnum.alertHelp;\n @Input() label?: string;\n @Input() type?: IconTypeEnum = IconTypeEnum.default;\n @Input() iconSize?: IconSizeEnum = IconSizeEnum['sm'];\n @Input() iconCssClass?: string = '';\n @Input() iconUiType?: IconUiTypeEnum = IconUiTypeEnum.default;\n @Input() iconColorCustom?: string;\n\n @Input() spritePath = '/assets/icons/sprite.svg';\n\n public iconTypeEnum = IconTypeEnum;\n\n @HostBinding('class')\n get hostClasses(): string {\n if (this.type === IconTypeEnum.rounded) {\n return `icon-rounded icon-rounded-${this.iconSize} icon-rounded-${this.iconUiType}`;\n }\n return `icon icon-${this.iconSize}`;\n }\n}\n","@if (type == iconTypeEnum.rounded) {\r\n <span class=\"icon\">\r\n <ng-container *ngTemplateOutlet=\"iconContent\"></ng-container>\r\n </span>\r\n} @else {\r\n <ng-container *ngTemplateOutlet=\"iconContent\"></ng-container>\r\n}\r\n\r\n<ng-template #iconContent>\r\n <svg class=\"icon-svg\" [ngClass]=\"iconCssClass\" aria-hidden=\"true\"\r\n [attr.style]=\"iconColorCustom ? 'color: ' + iconColorCustom : null\">\r\n <use [attr.href]=\"spritePath + '#' + icon\" />\r\n </svg>\r\n @if (label) {\r\n <span class=\"visually-hidden\">{{ label }}</span>\r\n }\r\n</ng-template>\r\n","export enum CardTypeEnum {\r\n default = 'default',\r\n light = 'light'\r\n}\r\n\r\nexport enum CardTitleRankEnum {\r\n h2 = 'h2',\r\n h3 = 'h3'\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, Input, OnInit, AfterViewInit, ViewChild, ElementRef, signal, Output, EventEmitter, WritableSignal } from '@angular/core';\nimport { CollapseDirective } from '../../directives/collapse.directive';\nimport { IconComponent } from '../icon/icon.component';\nimport { CardTitleRankEnum, CardTypeEnum } from '../../enum/card.enum';\nimport { IconSizeEnum } from '../../enum/icon.enum';\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\n\n@Component({\n selector: 'cw-card',\n templateUrl: './card.component.html',\n standalone: true,\n imports: [\n CommonModule,\n CollapseDirective,\n IconComponent\n ]\n})\n\nexport class CardComponent implements OnInit, AfterViewInit {\n\n @Input() title: string;\n @Input() type: CardTypeEnum = CardTypeEnum.default;\n @Input() titleRank: CardTitleRankEnum = CardTitleRankEnum.h2;\n @Input() collapsible: boolean = false;\n @Input() collapsed: boolean = false;\n @Input() collapseId: string = `collapse-${Math.random().toString(36).substring(2, 11)}`;\n @Input() destroyOnHide: boolean = true;\n\n @Output() collapseClicked = new EventEmitter<boolean>();\n\n @ViewChild('collapse') collapseDirective?: CollapseDirective;\n @ViewChild('cardFooter') cardFooter: ElementRef<any>;\n\n public showFooter = true;\n public titleRankEnum = CardTitleRankEnum;\n public typeEnum = CardTypeEnum;\n protected isCollapsed = signal(false);\n protected shouldRenderBody = signal(true);\n\n readonly iconSize = IconSizeEnum;\n readonly spriteIcon = SpriteIconEnum;\n\n constructor(private cdRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n this.isCollapsed.set(this.collapsed);\n if (this.destroyOnHide && this.collapsed) {\n this.shouldRenderBody.set(false);\n }\n }\n\n ngAfterViewInit(): void {\n this.showFooter = this.cardFooter.nativeElement && this.cardFooter.nativeElement.children.length > 0;\n this.cdRef.detectChanges();\n }\n\n toggleCollapse() {\n if (this.collapsible) {\n const newCollapsedState = !this.isCollapsed();\n this.updateCollapseState(newCollapsedState);\n }\n }\n\n collapse() {\n this.updateCollapseState(true);\n }\n\n expand() {\n this.updateCollapseState(false);\n }\n\n private updateCollapseState(collapsed: boolean) {\n if (!collapsed && this.destroyOnHide && !this.shouldRenderBody()) {\n this.shouldRenderBody.set(true);\n this.cdRef.detectChanges();\n }\n\n this.isCollapsed.set(collapsed);\n this.collapseClicked.emit(collapsed);\n\n if (collapsed && this.destroyOnHide) {\n setTimeout(() => {\n if (this.isCollapsed()) {\n this.shouldRenderBody.set(false);\n this.cdRef.detectChanges();\n }\n }, 120);\n }\n }\n\n get collapsed_state(): boolean {\n return this.isCollapsed();\n }\n\n}\n","<div class=\"card\" [class.card-collapse]=\"collapsible\" [class.card-light]=\"type == typeEnum.light\">\n @if (title) {\n <div class=\"card-header\" [class.card-header-collapse]=\"collapsible\"\n [class.card-header-collapsed]=\"collapsible && isCollapsed()\">\n <ng-container *ngTemplateOutlet=\"header\"></ng-container>\n </div>\n }\n\n @if(collapsible) {\n <div [cwCollapse]=\"isCollapsed()\" [id]=\"collapseId\" #collapse=\"cwCollapse\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n }\n @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n</div>\n\n<ng-template #header>\n @if (titleRank == titleRankEnum.h2) {\n <h2>{{title}}</h2>\n }\n @else if (titleRank == titleRankEnum.h3) {\n <h3>{{title}}</h3>\n }\n\n <div class=\"card-header-custom-area\">\n <ng-content select=\"[header-custom-area]\"></ng-content>\n </div>\n\n @if (collapsible) {\n <button type=\"button\" class=\"btn btn-collapse stretched-link\" (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"!isCollapsed()\" [class.collapsed]=\"isCollapsed()\" [attr.aria-controls]=\"collapseId\">\n <cw-icon [icon]=\"spriteIcon.down\" label=\"Déplier/Plier\" [iconSize]=\"iconSize['xs']\"></cw-icon>\n <!-- // TODO trad -->\n </button>\n }\n</ng-template>\n\n<ng-template #content>\n @if (shouldRenderBody()) {\n <div class=\"card-body\">\n <ng-content></ng-content>\n </div>\n\n @if (showFooter) {\n <div class=\"card-footer\" #cardFooter>\n <ng-content select=\"[card-footer]\"></ng-content>\n </div>\n }\n }\n</ng-template>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, Output, EventEmitter, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\r\nimport { CardComponent } from '../card/card.component';\r\n\r\n@Component({\r\n selector: 'cw-accordion',\r\n templateUrl: './accordion.component.html',\r\n standalone: true,\r\n imports: [CommonModule]\r\n})\r\nexport class AccordionComponent implements AfterContentInit {\r\n\r\n @Input() closeOthers: boolean = true;\r\n @Input() allowMultiple: boolean = false;\r\n @Input() destroyOnHide: boolean = true; // Nouvelle option pour l'accordéon\r\n\r\n @Output() panelOpened = new EventEmitter<string>();\r\n @Output() panelClosed = new EventEmitter<string>();\r\n\r\n @ContentChildren(CardComponent) cards!: QueryList<CardComponent>;\r\n\r\n private cardMap = new Map<string, CardComponent>();\r\n\r\n ngAfterContentInit(): void {\r\n this.cards.forEach(card => {\r\n if (!card.collapsible) {\r\n card.collapsible = true;\r\n }\r\n\r\n if (card.destroyOnHide === true) {\r\n card.destroyOnHide = this.destroyOnHide;\r\n }\r\n\r\n this.cardMap.set(card.collapseId, card);\r\n\r\n card.collapseClicked.subscribe((isCollapsed: boolean) => {\r\n this.onCardToggle(card.collapseId, isCollapsed);\r\n });\r\n });\r\n }\r\n\r\n openPanel(panelId: string): void {\r\n const card = this.cardMap.get(panelId);\r\n if (card) {\r\n if (this.shouldCloseOthers()) {\r\n this.closeAllExcept(panelId);\r\n }\r\n card.expand();\r\n }\r\n }\r\n\r\n closePanel(panelId: string): void {\r\n const card = this.cardMap.get(panelId);\r\n if (card) {\r\n card.collapse();\r\n }\r\n }\r\n\r\n togglePanel(panelId: string): void {\r\n const card = this.cardMap.get(panelId);\r\n if (card) {\r\n if (card.collapsed_state) {\r\n this.openPanel(panelId);\r\n } else {\r\n this.closePanel(panelId);\r\n }\r\n }\r\n }\r\n\r\n closeAll(): void {\r\n this.cards.forEach(card => card.collapse());\r\n }\r\n\r\n openAll(): void {\r\n if (!this.shouldCloseOthers()) {\r\n this.cards.forEach(card => card.expand());\r\n }\r\n }\r\n\r\n private onCardToggle(panelId: string, isCollapsed: boolean): void {\r\n if (!isCollapsed) {\r\n if (this.shouldCloseOthers()) {\r\n this.closeAllExcept(panelId);\r\n }\r\n this.panelOpened.emit(panelId);\r\n } else {\r\n this.panelClosed.emit(panelId);\r\n }\r\n }\r\n\r\n private closeAllExcept(exceptId: string): void {\r\n this.cards.forEach(card => {\r\n if (card.collapseId !== exceptId) {\r\n card.collapse();\r\n }\r\n });\r\n }\r\n\r\n private shouldCloseOthers(): boolean {\r\n return this.closeOthers && !this.allowMultiple;\r\n }\r\n}\r\n","<div class=\"accordion\">\r\n <ng-content></ng-content>\r\n</div>\r\n","export enum AlertTypeEnum {\r\n info = 'info',\r\n success = 'success',\r\n warning = 'warning',\r\n danger = 'danger',\r\n}\r\n","export enum IconNotifSizeEnum {\r\n '5xl' = '5xl',\r\n 'md' = 'md'\r\n}\r\n\r\nexport enum IconNotifTypeEnum {\r\n info = 'info',\r\n success = 'success',\r\n warning = 'warning',\r\n danger = 'danger',\r\n careful = 'careful'\r\n}\r\n","import { CommonModule } from '@angular/common';\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { IconNotifSizeEnum, IconNotifTypeEnum } from '../../enum/icon-notification.enum';\nimport { IconComponent } from '../icon/icon.component';\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\n\n@Component({\n selector: 'cw-icon-notification',\n templateUrl: './icon-notification.component.html',\n standalone: true,\n imports: [\n CommonModule,\n IconComponent\n ]\n})\nexport class IconNotificationComponent implements OnInit {\n @Input() type?: IconNotifTypeEnum = IconNotifTypeEnum.info;\n @Input() iconSize?: IconNotifSizeEnum = IconNotifSizeEnum['md'];\n\n public icon: SpriteIconEnum;\n public label: string;\n\n constructor() { }\n\n @HostBinding('class')\n\n get hostClasses(): string {\n return 'icon-rounded icon-rounded-' + this.iconSize + ' icon-notification-' + this.type;\n }\n\n ngOnInit(): void {\n switch (this.type) {\n case IconNotifTypeEnum.info:\n this.icon = SpriteIconEnum.alertHelp;\n this.label = 'Informatiion';\n break;\n case IconNotifTypeEnum.success:\n this.icon = SpriteIconEnum.eventDisruptionEnd;\n this.label = 'Succès';\n break;\n case IconNotifTypeEnum.warning:\n this.icon = SpriteIconEnum.event;\n this.label = 'Avertisement';\n break;\n case IconNotifTypeEnum.danger:\n this.icon = SpriteIconEnum.toolbarClose;\n this.label = 'Erreur';\n break;\n case IconNotifTypeEnum.careful:\n this.icon = SpriteIconEnum.event;\n this.label = 'Attention';\n break;\n }\n }\n}\n","\r\n<span class=\"icon\">\r\n <cw-icon [label]=\"label\" [iconSize]=\"iconSize['2xs']\" [icon]=\"icon\"></cw-icon>\r\n</span>\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AlertTypeEnum } from '../../enum/alert.enum';\r\nimport { IconNotificationComponent } from \"../icon-notification/icon-notification.component\";\r\nimport { IconNotifTypeEnum } from '../../enum/icon-notification.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconSizeEnum, IconTypeEnum } from '../../enum/icon.enum';\r\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\r\n\r\n@Component({\r\n selector: 'cw-alert',\r\n templateUrl: './alert.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n IconNotificationComponent,\r\n IconComponent\r\n]\r\n})\r\nexport class AlertComponent implements OnInit {\r\n\r\n @Input() type: AlertTypeEnum = AlertTypeEnum.info;\r\n @Input() title?: string;\r\n @Input() isDismissible: boolean = false;\r\n @Input() cssClass?: string = '';\r\n @Input() dataTest?: string;\r\n\r\n @Output() close = new EventEmitter<boolean>();\r\n\r\n @ViewChild('alertContent') alertContent: ElementRef<any>;\r\n\r\n public isVisible: boolean = true;\r\n public icon: string;\r\n public iconNotifType: IconNotifTypeEnum;\r\n public showContent = true;\r\n\r\n readonly iconSize = IconSizeEnum;\r\n readonly spriteIcon = SpriteIconEnum;\r\n\r\n constructor(private cdRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.dataTest = this.dataTest ? this.dataTest : 'alert' + this.type;\r\n\r\n switch (this.type) {\r\n case AlertTypeEnum.info:\r\n this.icon = \"cw-alert-info2\";\r\n this.iconNotifType = IconNotifTypeEnum.info;\r\n break;\r\n case AlertTypeEnum.danger:\r\n this.icon = \"cw-toolbar-close1\";\r\n this.iconNotifType = IconNotifTypeEnum.danger;\r\n break;\r\n case AlertTypeEnum.warning:\r\n this.icon = \"cw-event-warning\";\r\n this.iconNotifType = IconNotifTypeEnum.warning;\r\n break;\r\n case AlertTypeEnum.success:\r\n this.icon = \"cw-alert-success2\";\r\n this.iconNotifType = IconNotifTypeEnum.success;\r\n break;\r\n default:\r\n this.icon = \"cw-alert-info2\";\r\n this.iconNotifType = IconNotifTypeEnum.info;\r\n break;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.showContent = this.alertContent.nativeElement && this.alertContent.nativeElement.children.length > 0;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n public closeAlert() {\r\n this.isVisible = false;\r\n this.close.emit();\r\n }\r\n\r\n}\r\n","@if (isVisible) {\r\n <div [class]=\"'alert alert-' + type + ' '+ cssClass\" [ngClass]=\"{ 'alert-dismissible fade show': isDismissible }\"\r\n [attr.data-test-ctw]=\"dataTest\">\r\n <cw-icon-notification [type]=\"iconNotifType\"></cw-icon-notification>\r\n <div class=\"alert-content\">\r\n @if (title) {\r\n <div class=\"fw-bold\">{{ title }}</div>\r\n }\r\n\r\n @if (showContent) {\r\n <p class=\"mb-none\" #alertContent>\r\n <ng-content></ng-content>\r\n </p>\r\n }\r\n </div>\r\n @if (isDismissible) {\r\n <button type=\"button\" class=\"btn-close\" (click)=\"closeAlert()\"\r\n [attr.aria-label]=\"'_COMMON._ACTION.CLOSE' | translate\"\r\n [attr.data-test-ctw]=\"'close-' + dataTest\">\r\n <cw-icon [label]=\"'_COMMON._ACTION.CLOSE' | translate\" [iconSize]=\"iconSize['2xs']\" [icon]=\"spriteIcon.toolbarClose\"></cw-icon>\r\n </button>\r\n }\r\n </div>\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\nexport class FocusTrackerService implements OnDestroy {\r\n\r\n private lastFocusedElement: HTMLElement | null = null;\r\n private focusListener: (event: FocusEvent) => void;\r\n\r\n constructor() {\r\n this.focusListener = this.onFocus.bind(this);\r\n document.addEventListener('focus', this.focusListener, true);\r\n }\r\n\r\n private onFocus(event: FocusEvent): void {\r\n const target = event.target as HTMLElement;\r\n if (target) {\r\n this.lastFocusedElement = target;\r\n }\r\n }\r\n\r\n getFocusedElement(): HTMLElement | null {\r\n return this.lastFocusedElement;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n document.removeEventListener('focus', this.focusListener, true);\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Toast } from '../models/toast.model';\r\nimport { FocusTrackerService } from './focus.service';\r\nimport { AlertTypeEnum } from '../enum/alert.enum';\r\n\r\nexport interface ShowToastOptions<T = unknown> {\r\n type: AlertTypeEnum;\r\n message: string;\r\n title?: string;\r\n autohide?: boolean;\r\n action?: {\r\n label: string;\r\n payload?: T;\r\n };\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ToastService {\r\n private focusService = inject(FocusTrackerService);\r\n\r\n public toasts: Toast[] = [];\r\n private lastToast?: { message: string; date: Date };\r\n private triggeringElement?: HTMLElement;\r\n private autohideTimers = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\n public show<T>(options: ShowToastOptions<T>): void {\r\n if (!this.canShowMessage(options.message)) {\r\n return;\r\n }\r\n\r\n const toast: Toast<T> = {\r\n id: crypto.randomUUID(),\r\n type: options.type,\r\n title: options.title,\r\n message: options.message,\r\n autohide: options.autohide ?? false,\r\n action: options.action,\r\n };\r\n\r\n this.toasts.push(toast);\r\n this.triggeringElement = this.focusService.getFocusedElement();\r\n\r\n // Gestion du autohide\r\n if (toast.autohide) {\r\n const toastId = toast.id; // Capturer l'ID\r\n const timer = setTimeout(() => {\r\n this.removeById(toastId);\r\n }, 5000);\r\n\r\n this.autohideTimers.set(toastId, timer);\r\n }\r\n }\r\n\r\n public remove(toast: Toast): void {\r\n this.removeById(toast.id);\r\n }\r\n\r\n private removeById(toastId: string): void {\r\n // Nettoyer le timer s'il existe\r\n const timer = this.autohideTimers.get(toastId);\r\n if (timer) {\r\n clearTimeout(timer);\r\n this.autohideTimers.delete(toastId);\r\n }\r\n\r\n this.toasts = this.toasts.filter(t => t.id !== toastId);\r\n\r\n // Ne restaurer le focus que si c'était une action manuelle\r\n if (timer === undefined || this.autohideTimers.has(toastId) === false) {\r\n this.triggeringElement?.focus();\r\n }\r\n }\r\n\r\n public clear(): void {\r\n // Nettoyer tous les timers\r\n this.autohideTimers.forEach(timer => clearTimeout(timer));\r\n this.autohideTimers.clear();\r\n\r\n this.toasts = [];\r\n }\r\n\r\n private canShowMessage(message: string): boolean {\r\n if (!this.lastToast) {\r\n this.setLastToast(message);\r\n return true;\r\n }\r\n\r\n const limit = new Date(this.lastToast.date);\r\n limit.setSeconds(limit.getSeconds() + 1);\r\n\r\n if (new Date() > limit || message !== this.lastToast.message) {\r\n this.setLastToast(message);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private setLastToast(message: string): void {\r\n this.lastToast = { message, date: new Date() };\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { Toast, ToastAction } from '../../models/toast.model';\r\nimport { AlertComponent } from '../alert/alert.component';\r\nimport { ToastService } from '../../services/toast.service';\r\n\r\n@Component({\r\n selector: 'cw-toast',\r\n templateUrl: './toast.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n AlertComponent\r\n ],\r\n host: { '[class.toast]': 'true', role: 'alert' }\r\n})\r\nexport class ToastComponent {\r\n\r\n readonly toastService = inject(ToastService);\r\n private elRef = inject(ElementRef);\r\n\r\n @Output() action = new EventEmitter<ToastAction>();\r\n @Output() closed = new EventEmitter<void>();\r\n\r\n ngAfterViewInit(): void {\r\n const elemPosition = this.elRef.nativeElement.getBoundingClientRect();\r\n document.addEventListener(\"scroll\", (event) => {\r\n if (window.scrollY >= elemPosition.top * 2) {\r\n this.elRef.nativeElement.classList.remove('is-absolute');\r\n }\r\n else {\r\n this.elRef.nativeElement.classList.add('is-absolute');\r\n }\r\n });\r\n }\r\n\r\n public onAction(toast: Toast): void {\r\n if (!toast?.action) {\r\n return;\r\n }\r\n this.action.emit(toast.action);\r\n }\r\n\r\n public close(): void {\r\n this.closed.emit();\r\n }\r\n}\r\n","@for (toast of toastService.toasts; track toast.id) {\r\n <cw-alert [type]=\"toast.type\" [isDismissible]=\"true\" [title]=\"toast.title\" (close)=\"toastService.remove(toast)\" [dataTest]=\"'toast-'+ toast.type\">\r\n <span [innerHTML]=\"toast.message\"></span>&nbsp;\r\n @if (toast.action) {\r\n <a href=\"javascript:void(0);\" (click)=\"onAction(toast)\" class=\"alert-link\">{{ toast.action.label }}</a>\r\n }\r\n </cw-alert>\r\n}\r\n","export enum BadgeTypeEnum {\r\n // Light variants\r\n lightInfo = 'light-info',\r\n lightSuccess = 'light-success',\r\n lightWarning = 'light-warning',\r\n lightDanger = 'light-danger',\r\n lightLight = 'light-light',\r\n\r\n // Heavy variants\r\n heavyPrimary = 'heavy-primary',\r\n heavyInfo = 'heavy-info',\r\n heavySuccess = 'heavy-success',\r\n heavyWarning = 'heavy-warning',\r\n heavyDanger = 'heavy-danger',\r\n heavyDark = 'heavy-dark',\r\n heavyLight = 'heavy-light',\r\n heavyDisabled = 'heavy-disabled',\r\n}\r\n\r\nexport enum BadgePositionEnum {\r\n left = 'left',\r\n right = 'right'\r\n}\r\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\r\nimport { BadgeTypeEnum, BadgePositionEnum } from '../../enum/badge.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconSizeEnum } from '../../enum/icon.enum';\r\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\r\n\r\n@Component({\r\n selector: 'cw-badge',\r\n templateUrl: './badge.component.html',\r\n standalone: true,\r\n imports: [IconComponent]\r\n})\r\nexport class BadgeComponent {\r\n\r\n public badgePositionEnum = BadgePositionEnum;\r\n\r\n @Input() type!: BadgeTypeEnum;\r\n @Input() label?: string;\r\n @Input() withIcon?: SpriteIconEnum;\r\n @Input() iconPosition?: BadgePositionEnum = this.badgePositionEnum.left;\r\n @Input() cssClass?: string = '';\r\n @Input() skeletonMode?: boolean = false;\r\n @Input() dataTest?: string;\r\n\r\n public iconSizeEnum = IconSizeEnum;\r\n\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n return this.skeletonMode ? 'skeleton badge' : '';\r\n }\r\n\r\n constructor() { }\r\n\r\n}\r\n","<div [class]=\"'badge badge-' + type + ' '+ cssClass\" [attr.data-test-ctw]=\"dataTest ? dataTest : null\">\r\n\r\n @if (withIcon && iconPosition === badgePositionEnum.left) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['2xs']\"></cw-icon>\r\n }\r\n\r\n @if (label) {\r\n {{ label }}\r\n }\r\n\r\n @if (withIcon && iconPosition === badgePositionEnum.right) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['2xs']\"></cw-icon>\r\n }\r\n</div>\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[clickOutside]',\r\n standalone: true\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n const target = event.target as HTMLElement;\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n}\r\n","export enum FoButtonTypeEnum {\r\n primary = 'primary',\r\n secondary = 'secondary',\r\n link = 'link'\r\n}\r\n\r\nexport enum BoButtonTypeEnum {\r\n primary = 'primary',\r\n secondary = 'secondary',\r\n link = 'link',\r\n info = 'info',\r\n warning = 'warning',\r\n success = 'success',\r\n danger = 'danger',\r\n dangerOutline = 'danger-outline',\r\n light = 'light'\r\n}\r\n\r\nexport enum ButtonIconSizeEnum {\r\n default = 'default',\r\n small = 'small',\r\n xsmall = 'xsmall'\r\n}\r\n\r\nexport enum ButtonPositionEnum {\r\n left = 'left',\r\n right = 'right'\r\n}\r\n\r\nexport enum TypeTooltipEnum {\r\n tooltip = 'tooltip',\r\n popover = 'popover'\r\n}\r\n\r\nexport enum TriggerTooltipEnum {\r\n click = 'click',\r\n hover = 'hover'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EventManager } from '@angular/platform-browser';\r\nimport { BehaviorSubject, fromEvent } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResponsiveService {\r\n\r\n public checkIsMobileResolution$: BehaviorSubject<boolean>;\r\n\r\n constructor() {\r\n this.checkIsMobileResolution$ = new BehaviorSubject<boolean>(this.checkIsMobileResolution());\r\n fromEvent(window, 'resize').subscribe(e => {\r\n this.checkIsMobileResolution$.next(this.checkIsMobileResolution());\r\n });\r\n }\r\n\r\n private checkIsMobileResolution(): boolean {\r\n return window.innerWidth < 768;\r\n }\r\n}\r\n","\r\nexport class UtilsHelper {\r\n\r\n static slugify(text?: string): string {\r\n if (!text) return '';\r\n return text\r\n .normalize('NFD')\r\n .toLowerCase()\r\n .trim()\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .replace(/[^a-z0-9]+/g, '-')\r\n .replace(/^-+|-+$/g, '');\r\n }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Directive, ElementRef, EventEmitter, HostBinding, inject, Input, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ClickOutsideDirective } from '../../directives/clickoutside.directive';\r\nimport { ButtonPositionEnum, FoButtonTypeEnum, BoButtonTypeEnum, TypeTooltipEnum, TriggerTooltipEnum, ButtonIconSizeEnum } from '../../enum/button.enum';\r\nimport { IconSizeEnum, IconTypeEnum, IconUiTypeEnum } from '../../enum/icon.enum';\r\nimport { ResponsiveService } from '../../services/responsive.service';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { UtilsHelper } from '../../helpers/utils.helper';\r\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\r\n\r\n@Directive({ selector: '[cwDropdownItem]' })\r\n\r\nexport class DropdownItemDirective {\r\n private elementRef = inject(ElementRef);\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.classList.add('dropdown-item');\r\n this.elementRef.nativeElement.setAttribute('tabindex', '0');\r\n }\r\n\r\n}\r\n\r\n@Component({\r\n selector: 'cw-button',\r\n templateUrl: './button.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n IconComponent,\r\n ClickOutsideDirective\r\n ]\r\n})\r\nexport class ButtonComponent implements OnInit {\r\n private renderer = inject(Renderer2);\r\n responsiveService = inject(ResponsiveService);\r\n\r\n public buttonPositionEnum = ButtonPositionEnum;\r\n\r\n @Input() type: FoButtonTypeEnum | BoButtonTypeEnum;\r\n @Input() label: string;\r\n @Input() id: string = '';\r\n\r\n @Input() isDropdown?: boolean = false;\r\n @Input() withIcon?: SpriteIconEnum;\r\n @Input() withOnlyIcon?: boolean = false;\r\n @Input() iconSize?: ButtonIconSizeEnum = ButtonIconSizeEnum.default;\r\n @Input() iconPosition?: ButtonPositionEnum = this.buttonPositionEnum.left;\r\n @Input() dropdownPosition?: ButtonPositionEnum = this.buttonPositionEnum.right;\r\n @Input() isMinWidth?: boolean = false;\r\n @Input() isDisabled?: boolean = false;\r\n @Input() isLoading?: boolean = false;\r\n @Input() cssClass?: string = '';\r\n @Input() dataTest?: string;\r\n @Input() skeletonMode?: boolean = false;\r\n\r\n @Input() withTooltip?: boolean = false;\r\n @Input() tooltipText?: string = '';\r\n @Input() tooltipTitle?: string = '';\r\n @Input() tooltipTrigger?: TriggerTooltipEnum = TriggerTooltipEnum.hover;\r\n @Input() tooltipPosition?: ButtonPositionEnum = this.buttonPositionEnum.right;\r\n @Input() tooltipType?: TypeTooltipEnum = TypeTooltipEnum.tooltip;\r\n\r\n @Output() btnAction = new EventEmitter<string>();\r\n @Output() dropDownClicked = new EventEmitter<boolean>();\r\n\r\n @ViewChild('dropdown') dropdown: ElementRef | undefined;\r\n @ViewChild('dropdownMenu') dropdownMenu: ElementRef;\r\n @ViewChild('dropdownToggle') dropdownToggle: ElementRef;\r\n\r\n public iconSizeEnum = IconSizeEnum;\r\n readonly iconType = IconTypeEnum;\r\n readonly iconUiType = IconUiTypeEnum;\r\n readonly buttonIconSizeEnum = ButtonIconSizeEnum;\r\n\r\n public placementCss: string = '';\r\n public isOpen: boolean = false;\r\n\r\n public tooltipRandomId: number;\r\n public isTooltipOpened = false;\r\n public typeTooltipEnum = TypeTooltipEnum;\r\n\r\n private focusOutInitialized = false;\r\n\r\n\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n return this.skeletonMode ? 'skeleton btn' : '';\r\n }\r\n\r\n constructor() {\r\n this.renderer.listen('window', 'click', (e: Event) => {\r\n const target = e.target as Element;\r\n if (target.classList.contains('dropdown-item')) {\r\n this.onClickOutside();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.responsiveService.checkIsMobileResolution$.subscribe({\r\n next: () => {\r\n this.getPlacement(this.dropdownPosition);\r\n }\r\n });\r\n\r\n if (this.withTooltip) {\r\n this.tooltipRandomId = this.getRandomId(1, 10000);\r\n }\r\n\r\n this.dataTest ??= `btn-${UtilsHelper.slugify(this.label)}`;\r\n }\r\n\r\n public getButtonClasses() {\r\n return {\r\n 'btn-min-width': this.isMinWidth,\r\n 'btn-icon': this.withOnlyIcon,\r\n [`btn-icon-${this.iconSize}`]: !!this.iconSize && this.withOnlyIcon\r\n };\r\n }\r\n\r\n public onBtnAction() {\r\n this.btnAction.emit();\r\n }\r\n\r\n public toggleDropdown() {\r\n this.getPlacement(this.dropdownPosition);\r\n this.setAriaExpanded();\r\n this.dropdown?.nativeElement.classList.toggle(\"show\");\r\n this.dropdownMenu.nativeElement.classList.toggle(\"show\");\r\n this.isOpen = !this.isOpen;\r\n this.dropDownClicked.emit(this.isOpen);\r\n\r\n if (this.isOpen && !this.focusOutInitialized) {\r\n this.focusOut(this.dropdownMenu.nativeElement);\r\n this.focusOutInitialized = true;\r\n }\r\n }\r\n\r\n public onClickOutside() {\r\n this.dropdownToggle?.nativeElement.setAttribute('aria-expanded', 'false');\r\n this.dropdown?.nativeElement.classList.remove(\"show\");\r\n this.dropdownMenu.nativeElement.classList.remove(\"show\");\r\n this.isOpen = false;\r\n this.dropDownClicked.emit(this.isOpen);\r\n }\r\n\r\n private setAriaExpanded() {\r\n const button = this.dropdownToggle.nativeElement;\r\n const currentAriaExpanded = button.getAttribute('aria-expanded') === 'true';\r\n button.setAttribute('aria-expanded', (!currentAriaExpanded).toString());\r\n }\r\n\r\n private getPlacement(placement) {\r\n switch (placement) {\r\n case ButtonPositionEnum.right:\r\n return this.placementCss = 'dropdown-menu-right';\r\n case ButtonPositionEnum.left:\r\n return this.placementCss = 'dropdown-menu-left';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n // Fermer la dropdown si on focus out en tab ou shift tab\r\n private focusOut(element: HTMLElement) {\r\n const focusableEls1 = element.querySelectorAll(\r\n 'a[href], button, textarea, input[type=\"text\"],' +\r\n 'input[type=\"radio\"]:checked, input[type=\"checkbox\"], select'\r\n );\r\n const focusableEls = Array.from(focusableEls1)\r\n .filter((el: any) => !el.disabled);\r\n\r\n const firstFocusableEl: any = focusableEls[0];\r\n const lastFocusableEl: any = focusableEls[focusableEls.length - 1];\r\n\r\n element.addEventListener('keydown', (e) => {\r\n const isTabPressed = e.key === 'Tab'; // isTabPressed\r\n if (!isTabPressed) return;\r\n\r\n if (e.shiftKey) /* shift + tab */ {\r\n if (document.activeElement === firstFocusableEl) {\r\n this.toggleDropdown();\r\n }\r\n } else /* tab */ {\r\n if (document.activeElement === lastFocusableEl) {\r\n this.toggleDropdown();\r\n }\r\n }\r\n });\r\n }\r\n\r\n public showTooltip() {\r\n if (this.tooltipTrigger === 'click') {\r\n this.isTooltipOpened = !this.isTooltipOpened;\r\n } else {\r\n this.isTooltipOpened = true;\r\n }\r\n }\r\n\r\n public hideTooltip() {\r\n if (this.tooltipTrigger === 'hover') {\r\n this.isTooltipOpened = false;\r\n }\r\n }\r\n\r\n public onTooltipClickOutside(): void {\r\n if (this.tooltipTrigger === 'click') {\r\n this.isTooltipOpened = false;\r\n }\r\n }\r\n\r\n private getRandomId(min: number, max: number): number {\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n}\r\n","<!-- Wrapper pour le tooltip -->\r\n@if (withTooltip) {\r\n <div class=\"d-inline-block position-relative\" (clickOutside)=\"onTooltipClickOutside()\" ctwClickOutside>\r\n\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n\r\n <!-- Tooltip/Popover -->\r\n @if (isTooltipOpened) {\r\n <div role=\"tooltip\" [id]=\"'ctw-tooltip-' + tooltipRandomId\" [ngClass]=\"tooltipType + ' fade show ' + tooltipType + '-' + tooltipPosition\">\r\n <div class=\"arrow\"></div>\r\n @if (tooltipTitle) {\r\n <div [ngClass]=\"(tooltipType === typeTooltipEnum.popover ? 'popover' : 'tooltip') + '-header'\"\r\n [innerHTML]=\"tooltipTitle\"></div>\r\n }\r\n <div [ngClass]=\"tooltipType === typeTooltipEnum.tooltip ? 'tooltip-inner' : 'popover-body'\"\r\n [innerHTML]=\"tooltipText\"></div>\r\n </div>\r\n }\r\n </div>\r\n}\r\n@else {\r\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\r\n}\r\n\r\n<!-- Template du bouton (code existant enveloppé) -->\r\n<ng-template #buttonTemplate>\r\n @if (!isDropdown) {\r\n <button type=\"button\" class=\"btn\" [class]=\"'btn-' + type + ' ' + cssClass\" [ngClass]=\"getButtonClasses()\"\r\n [disabled]=\"isDisabled\" (click)=\"onBtnAction()\" [attr.data-test-ctw]=\"dataTest\"\r\n [attr.aria-describedby]=\"withTooltip && isTooltipOpened ? 'ctw-tooltip-' + tooltipRandomId : null\"\r\n (mouseenter)=\"withTooltip && tooltipTrigger === 'hover' ? showTooltip() : null\"\r\n (mouseleave)=\"withTooltip && tooltipTrigger === 'hover' ? hideTooltip() : null\"\r\n (click)=\"withTooltip && tooltipTrigger === 'click' ? showTooltip() : null\">\r\n\r\n @if (isLoading) {\r\n <span class=\"spinner-border spinner-border-sm\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\" role=\"status\">{{ '_COMMON._HTTP.TXT_LOADING' | translate }}</span>\r\n }\r\n\r\n <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\r\n </button>\r\n }\r\n @else {\r\n <div (clickOutside)=\"onClickOutside()\" ctwClickOutside #dropdown class=\"d-inline-block\">\r\n <button class=\"btn\" [class]=\"'btn-' + type + ' '\" type=\"button\"\r\n [ngClass]=\"getButtonClasses()\"\r\n [disabled]=\"isDisabled\" [id]=\"id\" aria-expanded=\"false\" (click)=\"toggleDropdown()\" #dropdownToggle\r\n [attr.data-test-ctw]=\"dataTest\"\r\n [attr.aria-describedby]=\"withTooltip && isTooltipOpened ? 'ctw-tooltip-' + tooltipRandomId : null\"\r\n (mouseenter)=\"withTooltip && tooltipTrigger === 'hover' ? showTooltip() : null\"\r\n (mouseleave)=\"withTooltip && tooltipTrigger === 'hover' ? hideTooltip() : null\">\r\n\r\n <ng-container *ngTemplateOutlet=\"buttonContent\"></ng-container>\r\n </button>\r\n\r\n <div [attr.aria-labelledby]=\"id\" class=\"dropdown-menu\" [ngClass]=\"placementCss\" #dropdownMenu>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<!-- Template existant du contenu du bouton -->\r\n<ng-template #buttonContent>\r\n @if (withIcon && iconPosition === buttonPositionEnum.left) {\r\n <ng-container *ngTemplateOutlet=\"iconContent\"></ng-container>\r\n }\r\n\r\n @if(withOnlyIcon) {\r\n <span class=\"visually-hidden\">{{label | translate }}</span>\r\n }\r\n @else {\r\n {{ label | translate }}\r\n }\r\n\r\n @if (withIcon && iconPosition === buttonPositionEnum.right) {\r\n <ng-container *ngTemplateOutlet=\"iconContent\"></ng-container>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #iconContent>\r\n @if(withOnlyIcon) {\r\n @switch(iconSize) {\r\n @case(buttonIconSizeEnum.xsmall) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['xs']\"></cw-icon>\r\n }\r\n @case(buttonIconSizeEnum.small) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['sm']\"></cw-icon>\r\n }\r\n @default {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['md']\"></cw-icon>\r\n }\r\n }\r\n }\r\n @else {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSizeEnum['md']\"></cw-icon>\r\n }\r\n</ng-template>\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { Component, ElementRef, Input, output, signal, ViewChild } from \"@angular/core\";\r\nimport { ClickOutsideDirective } from \"../../directives/clickoutside.directive\";\r\nimport { IconComponent } from \"../icon/icon.component\";\r\n\r\n@Component({\r\n selector: 'cw-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ClickOutsideDirective,\r\n IconComponent\r\n ]\r\n})\r\n\r\nexport class DropdownComponent {\r\n @Input() id?: string;\r\n @Input() title = 'Dropdown';\r\n @Input() icon = 'cw-nav-small-menu';\r\n @Input() btnCustom = false;\r\n @Input() btnCssClass = 'btn-secondary';\r\n @Input() menuClass = '';\r\n @Input() placement: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left-start' | 'right-start' = 'bottom-start';\r\n @Input() autoClose = true;\r\n\r\n opened = output<void>();\r\n closed = output<void>();\r\n\r\n @ViewChild('dropdown') dropdownElement!: ElementRef;\r\n @ViewChild('dropdownMenu') dropdownMenu!: ElementRef;\r\n @ViewChild('dropdownToggle') dropdownToggle!: ElementRef;\r\n\r\n protected isOpen = signal(false);\r\n\r\n get dropdownId(): string {\r\n return this.id || `dropdown-${Math.random().toString(36).substring(2, 11)}`;\r\n }\r\n\r\n get placementCss(): string {\r\n return this.placement;\r\n }\r\n\r\n ngAfterViewInit() {\r\n // Fermer au clic sur un item du menu\r\n if (this.autoClose && this.dropdownMenu) {\r\n this.dropdownMenu.nativeElement.addEventListener('click', (event: Event) => {\r\n const target = event.target as HTMLElement;\r\n if (target.classList.contains('dropdown-item')) {\r\n this.closeDropdown();\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (this.isOpen()) {\r\n this.closeDropdown();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n openDropdown(): void {\r\n this.isOpen.set(true);\r\n this.opened.emit();\r\n }\r\n\r\n closeDropdown(): void {\r\n this.isOpen.set(false);\r\n this.closed.emit();\r\n }\r\n\r\n onClickOutside(): void {\r\n if (this.isOpen()) {\r\n this.closeDropdown();\r\n }\r\n }\r\n}\r\n","<div class=\"dropdown\" [class.show]=\"isOpen()\" (clickOutside)=\"onClickOutside()\" clickOutside #dropdown>\r\n\r\n <button type=\"button\" class=\"dropdown-toggle btn\" [id]=\"dropdownId\" [attr.aria-expanded]=\"isOpen()\"\r\n [attr.aria-haspopup]=\"true\" (click)=\"toggleDropdown()\" [ngClass]=\"btnCssClass\" #dropdownToggle>\r\n\r\n <!-- Custom button content -->\r\n <ng-content select=\"[button]\"></ng-content>\r\n\r\n <!-- Classic button with icon -->\r\n @if (!btnCustom) {\r\n <cw-icon label=\"Menu\"></cw-icon>\r\n }\r\n </button>\r\n\r\n <div [attr.aria-labelledby]=\"dropdownId\" class=\"dropdown-menu\" [class.show]=\"isOpen()\"\r\n [ngClass]=\"placementCss + ' ' + menuClass\" #dropdownMenu>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { Directive, ElementRef, Renderer2, OnInit } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[showHidePassword]',\r\n standalone: true\r\n})\r\n\r\nexport class ShowHidePasswordDirective implements OnInit {\r\n\r\n private isShown = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private translateService: TranslateService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.setup();\r\n }\r\n\r\n setup() {\r\n const div = this.renderer.createElement('div');\r\n this.renderer.insertBefore(this.el.nativeElement.parentNode, div, this.el.nativeElement);\r\n\r\n this.renderer.appendChild(div, this.el.nativeElement);\r\n this.renderer.addClass(div, 'see-password-container');\r\n\r\n const button = this.renderer.createElement('button');\r\n this.renderer.appendChild(this.el.nativeElement.parentNode, button);\r\n this.renderer.addClass(button, 'btn');\r\n this.renderer.setAttribute(button, 'type', 'button');\r\n this.renderer.addClass(button, 'optyweb');\r\n this.renderer.addClass(button, 'cw-hide-map');\r\n this.renderer.addClass(button, 'py-2');\r\n this.renderer.addClass(button, 'see-password');\r\n\r\n const srOnly = this.renderer.createElement('span');\r\n this.renderer.appendChild(button, srOnly);\r\n this.renderer.addClass(srOnly, 'visually-hidden');\r\n this.renderer.setProperty(srOnly,'innerHTML', this.translateService.instant('_COMMON._FORM._SHOW_HIDE_PWD.SHOW'));\r\n\r\n this.renderer.listen(button, 'click', (event) => {\r\n this.isShown = !this.isShown;\r\n if (this.isShown) {\r\n this.el.nativeElement.setAttribute('type', 'text');\r\n this.renderer.removeClass(button, 'cw-hide-map');\r\n this.renderer.addClass(button, 'cw-show-map');\r\n this.renderer.setProperty(srOnly,'innerHTML', this.translateService.instant('_COMMON._FORM._SHOW_HIDE_PWD.HIDE'));\r\n } else {\r\n this.el.nativeElement.setAttribute('type', 'password');\r\n this.renderer.addClass(button, 'cw-hide-map');\r\n this.renderer.removeClass(button, 'cw-show-map');\r\n this.renderer.setProperty(srOnly,'innerHTML', this.translateService.instant('_COMMON._FORM._SHOW_HIDE_PWD.SHOW'));\r\n }\r\n });\r\n }\r\n}\r\n","export enum FormFieldTypeEnum {\r\n text = 'text',\r\n date = 'date',\r\n time = 'time',\r\n dateTime = 'datetime-local',\r\n textarea = 'textarea',\r\n select = 'select',\r\n range = 'range',\r\n radio = 'radio',\r\n radioInline = 'radioInline',\r\n radioButton = 'radioButton',\r\n checkbox = 'checkbox',\r\n checkboxInline = 'checkboxInline',\r\n checkboxButton = 'checkboxButton',\r\n switch = 'switch',\r\n switchSmall = 'switchSmall',\r\n ngSelect = 'ngSelect',\r\n ngSelectMultiple = 'ngSelectMultiple',\r\n number = 'number',\r\n color = 'color',\r\n file = 'file',\r\n password = 'password',\r\n email = 'email',\r\n slider = 'slider',\r\n dateToDate = 'dateToDate',\r\n datePlusOne = 'datePlusOne',\r\n datePlusTwo = 'datePlusTwo',\r\n datePlusSeven = 'datePlusSeven',\r\n dateComplexe = 'dateComplexe',\r\n dateTimeToDateTime = 'dateTimeToDateTime',\r\n timeToTime = 'timeToTime'\r\n}\r\n\r\nexport interface FormFieldOption {\r\n value: string;\r\n label: string;\r\n}\r\nexport interface FormFieldRangeOption {\r\n floor: number;\r\n ceil: number;\r\n step: number;\r\n unit?: string;\r\n}\r\n","import { NgxSliderModule, Options } from '@angular-slider/ngx-slider';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, ContentChild, EventEmitter, HostBinding, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, FormsModule, ReactiveFormsModule, ValidationErrors } from '@angular/forms';\r\nimport { NgbDropdownModule, NgbPopover } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ShowHidePasswordDirective } from '../../directives/show-hide-password';\r\nimport { FormFieldOption, FormFieldRangeOption, FormFieldTypeEnum } from '../../enum/field-type.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\r\n\r\nexport function rangeValidator(group: AbstractControl, type: 'date' | 'time' | 'datetime'): ValidationErrors | null {\r\n const startControl = group.get('start');\r\n const endControl = group.get('end');\r\n const start = startControl?.value;\r\n const end = endControl?.value;\r\n\r\n if (!start || !end) return null;\r\n\r\n let startValue: number;\r\n let endValue: number;\r\n\r\n switch (type) {\r\n case 'time':\r\n startValue = parseTime(start);\r\n endValue = parseTime(end);\r\n break;\r\n case 'datetime':\r\n startValue = new Date(start).getTime();\r\n endValue = new Date(end).getTime();\r\n break;\r\n default: // date\r\n startValue = new Date(start).setHours(0, 0, 0, 0);\r\n endValue = new Date(end).setHours(0, 0, 0, 0);\r\n }\r\n\r\n if (startValue > endValue) {\r\n // Marquer les enfants comme invalid\r\n startControl?.setErrors({ ...startControl.errors, rangeInvalid: true });\r\n endControl?.setErrors({ ...endControl.errors, rangeInvalid: true });\r\n return { rangeInvalid: true };\r\n } else {\r\n // Supprimer l’erreur rangeInvalid si présente\r\n if (startControl?.errors?.['rangeInvalid']) {\r\n const { rangeInvalid, ...rest } = startControl.errors!;\r\n startControl.setErrors(Object.keys(rest).length ? rest : null);\r\n }\r\n if (endControl?.errors?.['rangeInvalid']) {\r\n const { rangeInvalid, ...rest } = endControl.errors!;\r\n endControl.setErrors(Object.keys(rest).length ? rest : null);\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction parseTime(time: string): number {\r\n const [h, m] = time.split(':').map(Number);\r\n return h * 60 + m;\r\n}\r\n\r\n@Component({\r\n selector: 'cw-form-field',\r\n templateUrl: './form-field.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgSelectModule,\r\n NgbDropdownModule,\r\n NgxSliderModule,\r\n NgbPopover,\r\n ShowHidePasswordDirective,\r\n IconComponent\r\n ]\r\n})\r\n\r\nexport class FormFieldComponent implements OnInit {\r\n\r\n @Input() control!: AbstractControl;\r\n @Input() formGroup!: FormGroup;\r\n @Input() type: FormFieldTypeEnum;\r\n @Input() label!: string;\r\n @Input() displayLabel: boolean = true;\r\n @Input() name!: string;\r\n @Input() placeholder!: string;\r\n @Input() options: FormFieldOption[] = [];\r\n @Input() rangeOptions: FormFieldRangeOption;\r\n\r\n @Input() isRequired: boolean = false;\r\n @Input() help?: string;\r\n @Input() tooltip!: string;\r\n @Input() addonLeft?: TemplateRef<any>;\r\n @Input() addonRight?: TemplateRef<any>;\r\n @Input() isInAddon?: boolean = false;\r\n @Input() isReadonly?: boolean = false;\r\n @Input() isDisabled?: boolean = false;\r\n @Input() sliderValue!: number;\r\n @Input() sliderOptions!: Options;\r\n @Input() cssClass?: string;\r\n @Input() skeletonMode?: boolean = false;\r\n\r\n @Output() refreshEvent = new EventEmitter<void>();\r\n @Output() textChanged = new EventEmitter<string>();\r\n\r\n // Option et label personnalisés pour les ng-selects\r\n @ContentChild('ngOptionTpl', { read: TemplateRef }) optionTemplate?: TemplateRef<any>;\r\n @ContentChild('ngLabelTpl', { read: TemplateRef }) labelTemplate?: TemplateRef<any>;\r\n\r\n public typeField = FormFieldTypeEnum;\r\n readonly spriteIcon = SpriteIconEnum;\r\n\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n return [\r\n 'position-relative',\r\n this.skeletonMode && 'skeleton form-control'\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n }\r\n\r\n constructor() { }\r\n\r\n public get isRange(): boolean {\r\n if (!this.control) return false;\r\n return this.control instanceof FormGroup &&\r\n 'start' in (this.control as any).controls &&\r\n 'end' in (this.control as any).controls;\r\n }\r\n\r\n public get formControl(): FormControl {\r\n return this.control as FormControl;\r\n }\r\n\r\n public get controlOrGroup() {\r\n return this.control ?? this.formGroup?.get(this.name);\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n if (this.formGroup && this.name) {\r\n const group = this.formGroup.get(this.name);\r\n if (group instanceof FormGroup) {\r\n switch (this.type) {\r\n case this.typeField.dateToDate:\r\n group.setValidators(g => rangeValidator(g, 'date'));\r\n break;\r\n case this.typeField.timeToTime:\r\n group.setValidators(g => rangeValidator(g, 'time'));\r\n break;\r\n case this.typeField.dateTimeToDateTime:\r\n group.setValidators(g => rangeValidator(g, 'datetime'));\r\n break;\r\n }\r\n group.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n\r\n public onCheckboxChange(event: Event) {\r\n const checkbox = event.target as HTMLInputElement;\r\n const valueArray = this.control.value || [];\r\n\r\n if (checkbox.checked) {\r\n this.control.setValue([...valueArray, checkbox.value]);\r\n } else {\r\n this.control.setValue(valueArray.filter((v: string) => v !== checkbox.value));\r\n }\r\n\r\n this.control.markAsTouched();\r\n }\r\n\r\n public onBlur() {\r\n if (this.control && !this.control.touched) {\r\n this.control.markAsTouched();\r\n }\r\n }\r\n\r\n public isInInputGroup(): boolean {\r\n const inInputGroup = [\r\n this.typeField.text,\r\n this.typeField.date,\r\n this.typeField.time,\r\n this.typeField.dateTime,\r\n this.typeField.number,\r\n this.typeField.email,\r\n this.typeField.textarea,\r\n this.typeField.password,\r\n ].includes(this.type)\r\n return inInputGroup;\r\n }\r\n\r\n public getControl(path: 'start' | 'end'): FormControl | null {\r\n if (!this.isRange) return null;\r\n const group = this.control as FormGroup<{ start: FormControl; end: FormControl }>;\r\n return group.get(path) as FormControl;\r\n }\r\n\r\n public getInputType(): string {\r\n switch (this.type) {\r\n case this.typeField.dateToDate:\r\n return 'date';\r\n case this.typeField.timeToTime:\r\n return 'time';\r\n case this.typeField.dateTimeToDateTime:\r\n return 'datetime-local';\r\n default:\r\n return 'text';\r\n }\r\n }\r\n\r\n public onClearFieldPeriod(path: 'start' | 'end'): void {\r\n const ctrl = this.getControl(path);\r\n if (ctrl) {\r\n ctrl.setValue(null);\r\n ctrl.markAsPristine();\r\n ctrl.markAsUntouched();\r\n }\r\n }\r\n\r\n public onClearField(control: FormControl): void {\r\n control?.setValue(null);\r\n control?.markAsPristine();\r\n control?.markAsUntouched();\r\n }\r\n\r\n public onDateAddDay(direction: 'prev' | 'next'): void {\r\n const current = this.getDateValue();\r\n if (current) {\r\n const delta = direction === 'prev' ? -1 : 1;\r\n current.setDate(current.getDate() + delta);\r\n this.formControl.setValue(this.formatDate(current));\r\n }\r\n }\r\n\r\n public onTodayAddDay(days: number): void {\r\n const today = new Date();\r\n today.setDate(today.getDate() + days);\r\n this.formControl.setValue(this.formatDate(today));\r\n }\r\n\r\n public onRefresh(): void {\r\n this.refreshEvent.emit();\r\n }\r\n\r\n private getDateValue(): Date | null {\r\n const value = this.formControl.value;\r\n if (!value) return null;\r\n const date = new Date(value);\r\n return isNaN(date.getTime()) ? null : date;\r\n }\r\n\r\n private formatDate(date: Date): string {\r\n const year = date.getFullYear();\r\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n const day = date.getDate().toString().padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n public getRangePercent(): number {\r\n const value = this.formControl.value || this.rangeOptions.floor;\r\n const range = this.rangeOptions.ceil - this.rangeOptions.floor;\r\n return ((value - this.rangeOptions.floor) / range) * 100;\r\n }\r\n\r\n public onRangeStep(direction: 'increase' | 'decrease'): void {\r\n const step = this.rangeOptions.step || 1;\r\n const currentValue = this.formControl.value || this.rangeOptions.floor;\r\n\r\n if (direction === 'increase' && currentValue < this.rangeOptions.ceil) {\r\n this.formControl.setValue(Math.min(currentValue + step, this.rangeOptions.ceil));\r\n } else if (direction === 'decrease' && currentValue > this.rangeOptions.floor) {\r\n this.formControl.setValue(Math.max(currentValue - step, this.rangeOptions.floor));\r\n }\r\n\r\n this.formControl.markAsTouched();\r\n }\r\n}\r\n","@if (!isInAddon) {\r\n @if (\r\n type !== typeField.checkbox &&\r\n type !== typeField.radio &&\r\n type !== typeField.checkboxButton &&\r\n type !== typeField.radioButton &&\r\n type !== typeField.checkboxInline &&\r\n type !== typeField.radioInline &&\r\n type !== typeField.switch &&\r\n type !== typeField.range &&\r\n type !== typeField.switchSmall\r\n\r\n ) {\r\n <label [for]=\"name\" class=\"form-label\" [class.visually-hidden]=\"!displayLabel\">\r\n {{ label }}\r\n\r\n @if (isRequired) {\r\n <span class=\"text-danger\">*</span>\r\n }\r\n\r\n @if (tooltip) {\r\n <button type=\"button\" class=\"btn btn-link btn-popover\" placement=\"bottom\" [ngbPopover]=\"popContent\" container=\"body\"\r\n triggers=\"mouseenter:mouseleave\">\r\n <span class=\"btn-popover-icon bo-icons bo-help\"></span>\r\n </button>\r\n <ng-template #popContent>\r\n <div [innerHTML]=\"tooltip\"></div>\r\n </ng-template>\r\n }\r\n </label>\r\n }\r\n\r\n @if (addonLeft || addonRight) {\r\n <div class=\"input-group\">\r\n @if(addonLeft) {\r\n <ng-container [ngTemplateOutlet]=\"addonLeft\"></ng-container>\r\n }\r\n <ng-container [ngTemplateOutlet]=\"field\"></ng-container>\r\n @if(addonRight) {\r\n <ng-container [ngTemplateOutlet]=\"addonRight\"></ng-container>\r\n }\r\n </div>\r\n }\r\n @else {\r\n @if ( isInInputGroup() ) {\r\n <div class=\"input-group\">\r\n <ng-container [ngTemplateOutlet]=\"field\"></ng-container>\r\n </div>\r\n }\r\n @else {\r\n <ng-container [ngTemplateOutlet]=\"field\"></ng-container>\r\n }\r\n }\r\n\r\n <!-- Error message -->\r\n @if (controlOrGroup?.invalid && controlOrGroup?.touched) {\r\n <div class=\"invalid-feedback d-block\" [id]=\"'error-' + name\">\r\n @if ((controlOrGroup?.errors?.['required']) || (getControl('start')?.errors?.['required'] || getControl('end')?.errors?.['required'])) {\r\n <span [innerHtml]=\"'_COMMON._FORM.ERROR_IS_MANDATORY' | translate: {label: label}\"></span>\r\n }\r\n @if(controlOrGroup?.errors?.['rangeInvalid']) {\r\n <span>{{'_COMMON._DATES.ERROR_START_END_PERIOD' | translate}}</span>\r\n }\r\n </div>\r\n }\r\n\r\n @if (help) {\r\n <small [id]=\"name + '-help'\" class=\"form-text text-muted\">{{help}}</small>\r\n }\r\n}\r\n@else {\r\n <ng-container [ngTemplateOutlet]=\"field\"></ng-container>\r\n}\r\n\r\n<ng-template #field>\r\n <!-- Text -->\r\n @if ([typeField.text, typeField.date, typeField.time, typeField.dateTime, typeField.number, typeField.file,\r\n typeField.email,\r\n typeField.color].includes(type)) {\r\n <input [type]=\"type\" class=\"form-control\" [id]=\"name\" [formControl]=\"formControl\"\r\n [ngClass]=\"[(cssClass || ''), formControl?.value ? 'has-value' : '']\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\" [attr.required]=\"isRequired ? 'required' : null\"\r\n [attr.readonly]=\"isReadonly ? 'readonly' : null\" [disabled]=\"isDisabled\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" />\r\n }\r\n\r\n @if (type === typeField.password) {\r\n <input showHidePassword [type]=\"type\" class=\"form-control\" [id]=\"name\" [formControl]=\"formControl\"\r\n [ngClass]=\"[(cssClass || ''), formControl?.value ? 'has-value' : '']\"\r\n [attr.required]=\"isRequired ? 'required' : null\" [attr.readonly]=\"isReadonly ? 'readonly' : null\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" />\r\n }\r\n\r\n <!-- Textarea -->\r\n @if (type === typeField.textarea) {\r\n <textarea class=\"form-control\" [id]=\"name\" [formControl]=\"formControl\"\r\n [ngClass]=\"[(cssClass || ''), formControl?.value ? 'has-value' : '']\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\" [attr.required]=\"isRequired ? 'required' : null\"\r\n [attr.readonly]=\"isReadonly ? 'readonly' : null\" [attr.disabled]=\"isDisabled ? 'disabled' : null\"\r\n [attr.aria-required]=\"isRequired\" [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\"></textarea>\r\n }\r\n\r\n <!-- Select -->\r\n @if (type === typeField.select) {\r\n <ng-select [formControl]=\"formControl\" [items]=\"options\" bindLabel=\"label\" [labelForId]=\"name\" bindValue=\"value\"\r\n [ngClass]=\"cssClass\" [searchable]=\"false\" [placeholder]=\"placeholder ? placeholder : null\" [readonly]=\"isReadonly\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" [attr.required]=\"isRequired ? 'required' : null\"\r\n [attr.aria-required]=\"isRequired\" [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" [attr.id]=\"name\"\r\n (blur)=\"onBlur()\">\r\n\r\n <!-- Template pour les options -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n @if (optionTemplate) {\r\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { item: item, index: index, searchTerm: search }\"></ng-container>\r\n }\r\n @else {\r\n <div>{{ item.label }}</div>\r\n }\r\n </ng-template>\r\n\r\n <!-- Template pour le label -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n @if (labelTemplate) {\r\n <ng-container *ngTemplateOutlet=\"labelTemplate; context: { item: item }\"></ng-container>\r\n }\r\n @else {\r\n {{ item.label }}\r\n }\r\n </ng-template>\r\n </ng-select>\r\n }\r\n\r\n <!-- NgSelect -->\r\n @if (type === typeField.ngSelect || type === typeField.ngSelectMultiple) {\r\n <ng-select [formControl]=\"formControl\" [items]=\"options\" bindLabel=\"label\" [labelForId]=\"name\" bindValue=\"value\"\r\n [multiple]=\"type === typeField.ngSelectMultiple\" [ngClass]=\"cssClass\"\r\n [placeholder]=\"placeholder ? placeholder : null\" [readonly]=\"isReadonly\"\r\n [notFoundText]=\"'_COMMON.NO_RESULT' | translate\" [attr.disabled]=\"isDisabled ? 'disabled' : null\"\r\n [attr.required]=\"isRequired ? 'required' : null\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" [attr.id]=\"name\"\r\n (blur)=\"onBlur()\" (search)=\"textChanged.emit($event?.term)\">\r\n\r\n <!-- Template pour les options -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\r\n @if (optionTemplate) {\r\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: { item: item, index: index, searchTerm: search }\"></ng-container>\r\n }\r\n @else {\r\n <div>{{ item.label }}</div>\r\n }\r\n </ng-template>\r\n\r\n <!-- Template pour le label -->\r\n <ng-template ng-label-tmp let-item=\"item\">\r\n @if (labelTemplate) {\r\n <ng-container *ngTemplateOutlet=\"labelTemplate; context: { item: item }\"></ng-container>\r\n }\r\n @else {\r\n {{ item.label }}\r\n }\r\n </ng-template>\r\n </ng-select>\r\n }\r\n\r\n <!-- Radio -->\r\n @if (type === typeField.radioInline || type === typeField.radio) {\r\n <fieldset [ngClass]=\"{ 'flex-column': type === typeField.radio }\">\r\n <legend [class.visually-hidden]=\"!displayLabel\">{{label}}</legend>\r\n <ul class=\" mb-none\" [ngClass]=\"type === typeField.radioInline ? 'list-inline' : 'list-unstyled'\">\r\n <li *ngFor=\"let opt of options\" class=\"form-check\"\r\n [ngClass]=\"{ 'form-check-inline': type === typeField.radioInline }\">\r\n <input type=\"radio\" [id]=\"name + '_' + opt.value\" [value]=\"opt.value\" [formControl]=\"formControl\"\r\n class=\"form-check-input\" />\r\n <label [for]=\"name + '_' + opt.value\" class=\"form-check-label\">{{ opt.label }}</label>\r\n </li>\r\n </ul>\r\n </fieldset>\r\n }\r\n\r\n <!-- Radio button -->\r\n @if (type === typeField.radioButton) {\r\n <fieldset>\r\n <legend [class.visually-hidden]=\"!displayLabel\">{{label}}</legend>\r\n <div class=\"btn-group btn-group-secondary\">\r\n <ng-container *ngFor=\"let opt of options\">\r\n <input type=\"radio\" [id]=\"name + '_' + opt.value\" [value]=\"opt.value\" [formControl]=\"formControl\"\r\n class=\"visually-hidden\" />\r\n <label [for]=\"name + '_' + opt.value\" class=\"btn btn-form\">{{ opt.label }}</label>\r\n </ng-container>\r\n </div>\r\n </fieldset>\r\n }\r\n\r\n <!-- Checkbox Switch -->\r\n @if (\r\n (type === typeField.checkbox ||\r\n type === typeField.switch ||\r\n type === typeField.switchSmall)\r\n && options.length === 0\r\n ) {\r\n <div class=\"form-check form-switch\" [ngClass]=\"{'form-switch-small': type === typeField.switchSmall}\">\r\n <input type=\"checkbox\" [id]=\"name\" [formControl]=\"formControl\" class=\"form-check-input\" />\r\n <label [for]=\"name\" class=\"form-check-label\">{{ label }}</label>\r\n </div>\r\n }\r\n\r\n <!-- Checkbox -->\r\n @if ((type === typeField.checkboxInline || type === typeField.checkbox) && options.length > 0) {\r\n <fieldset [ngClass]=\"{ 'flex-column': type === typeField.checkbox }\">\r\n <legend [class.visually-hidden]=\"!displayLabel\">{{label}}</legend>\r\n <ul class=\"mb-none\" [ngClass]=\"type === typeField.checkboxInline ? 'list-inline' : 'list-unstyled'\">\r\n <li *ngFor=\"let opt of options\" class=\"form-check\"\r\n [ngClass]=\"{ 'form-check-inline': type === typeField.checkboxInline }\">\r\n <input type=\"checkbox\" [id]=\"name + '_' + opt.value\" [value]=\"opt.value\" (change)=\"onCheckboxChange($event)\"\r\n [checked]=\"control.value?.includes(opt.value)\" class=\"form-check-input\" />\r\n <label [for]=\"name + '_' + opt.value\" class=\"form-check-label\">{{ opt.label }}</label>\r\n </li>\r\n </ul>\r\n </fieldset>\r\n }\r\n\r\n <!-- Checkbox button -->\r\n @if (type === typeField.checkboxButton) {\r\n <fieldset>\r\n <legend [class.visually-hidden]=\"!displayLabel\">{{label}}</legend>\r\n <div class=\"btn-group btn-group-secondary\">\r\n <ng-container *ngFor=\"let opt of options\">\r\n <input type=\"checkbox\" [id]=\"name + '_' + opt.value\" [value]=\"opt.value\" (change)=\"onCheckboxChange($event)\"\r\n [checked]=\"control.value?.includes(opt.value)\" class=\"visually-hidden\" />\r\n <label [for]=\"name + '_' + opt.value\" class=\"btn btn-form\">{{ opt.label }}</label>\r\n </ng-container>\r\n </div>\r\n </fieldset>\r\n }\r\n\r\n <!-- Period - DateToDate / TimeToTime / DateTimeToDateTime -->\r\n @if ([typeField.dateToDate, typeField.timeToTime, typeField.dateTimeToDateTime].includes(type) && isRange) {\r\n\r\n <div class=\"input-group\">\r\n\r\n <input [type]=\"getInputType()\" class=\"form-control\" [id]=\"name + '_start'\" [formControl]=\"getControl('start')\"\r\n [attr.placeholder]=\"type === typeField.timeToTime ? ('_COMMON._DATES.FROM' | translate) : ('_COMMON._DATES.FROM_TO_1' | translate)\"\r\n [ngClass]=\"[(cssClass || ''), getControl('start')?.value ? 'has-value' : '']\"\r\n [attr.required]=\"isRequired ? 'required' : null\" [attr.readonly]=\"isReadonly ? 'readonly' : null\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"getControl('start')?.invalid && getControl('start')?.touched\"\r\n [attr.aria-describedby]=\"getControl('start')?.invalid && getControl('start')?.touched ? 'error-' + name : null\" />\r\n\r\n @if(getControl('start')?.value) {\r\n <button type=\"button\" class=\"btn btn-secondary btn-clear-field\"\r\n (click)=\"onClearFieldPeriod('start')\">\r\n &times;\r\n </button>\r\n }\r\n\r\n <input [type]=\"getInputType()\" class=\"form-control\" [id]=\"name + '_end'\" [formControl]=\"getControl('end')\"\r\n [attr.placeholder]=\"type === typeField.timeToTime ? ('_COMMON._DATES.TO' | translate) : ('_COMMON._DATES.FROM_TO_2' | translate)\"\r\n [ngClass]=\"[(cssClass || ''), getControl('end')?.value ? 'has-value' : '']\"\r\n [attr.required]=\"isRequired ? 'required' : null\" [attr.readonly]=\"isReadonly ? 'readonly' : null\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\"\r\n [attr.aria-invalid]=\"getControl('end')?.invalid && getControl('end')?.touched\"\r\n [attr.aria-describedby]=\"getControl('end')?.invalid && getControl('end')?.touched ? 'error-' + name : null\" />\r\n\r\n <button *ngIf=\"getControl('end')?.value\" type=\"button\" class=\"btn btn-secondary btn-clear-field\"\r\n (click)=\"onClearFieldPeriod('end')\">\r\n &times;\r\n </button>\r\n </div>\r\n }\r\n\r\n @if ([typeField.datePlusOne, typeField.datePlusTwo, typeField.datePlusSeven, typeField.dateComplexe].includes(type)) {\r\n <div class=\"input-group\">\r\n\r\n @if (type === typeField.dateComplexe) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onDateAddDay('prev')\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n <cw-icon font=\"optyweb\" [icon]=\"spriteIcon.nextLeft\" [label]=\"'Jour précédent'\"></cw-icon>\r\n </button>\r\n }\r\n\r\n <input type=\"date\" class=\"form-control\" [id]=\"name\" [formControl]=\"formControl\"\r\n [ngClass]=\"[(cssClass || ''), formControl?.value ? 'has-value' : '']\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\" [attr.required]=\"isRequired ? 'required' : null\"\r\n [attr.readonly]=\"isReadonly ? 'readonly' : null\" [disabled]=\"isDisabled\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\"\r\n [attr.aria-describedby]=\"control.invalid && control.touched ? 'error-' + name : null\" />\r\n <button *ngIf=\"formControl?.value\" class=\"btn btn-secondary btn-clear-field\" type=\"button\"\r\n (click)=\"onClearField(formControl)\">&times;</button>\r\n\r\n @if (type === typeField.dateComplexe) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onDateAddDay('next')\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n <cw-icon font=\"optyweb\" [icon]=\"spriteIcon.nextRight\" [label]=\"'Jour suivant'\"></cw-icon>\r\n </button>\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onRefresh()\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n <cw-icon font=\"optyweb\" [icon]=\"spriteIcon.toolbarRefresh\" [label]=\"'Rafraîchir'\"></cw-icon>\r\n </button>\r\n }\r\n\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onTodayAddDay(0)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n J\r\n <span class=\"visually-hidden\">Aujourd'hui</span>\r\n </button>\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onTodayAddDay(1)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n J+1\r\n <span class=\"visually-hidden\">Demain</span>\r\n </button>\r\n\r\n @if (type !== typeField.datePlusOne && type !== typeField.dateComplexe) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onTodayAddDay(2)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n J+2\r\n <span class=\"visually-hidden\">Dans 2 jours</span>\r\n </button>\r\n\r\n @if (type !== typeField.datePlusTwo) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onTodayAddDay(7)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\">\r\n J+7\r\n <span class=\"visually-hidden\">Dans 7 jours</span>\r\n </button>\r\n }\r\n }\r\n </div>\r\n }\r\n\r\n @if (type === typeField.slider) {\r\n <ngx-slider [(value)]=\"sliderValue\" [options]=\"sliderOptions\" [formControl]=\"formControl\"></ngx-slider>\r\n }\r\n\r\n @if (type === typeField.range) {\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <button type=\"button\" class=\"btn slider-btn slider-btn-less\" (click)=\"onRangeStep('decrease')\"\r\n [disabled]=\"formControl.value <= rangeOptions.floor\">\r\n <span class=\"slider-btn-less-icon\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">Diminuer</span>\r\n </button>\r\n\r\n <div class=\"slider-input flex-grow-1 position-relative\">\r\n <label [for]=\"name\" class=\"slider-tooltip\" [style.left]=\"getRangePercent() + '%'\" aria-live=\"polite\"\r\n aria-atomic=\"true\">\r\n {{ label }} {{ formControl.value }}\r\n @if (rangeOptions.unit) {\r\n <abbr [title]=\"rangeOptions.unit\">{{ rangeOptions.unit }}</abbr>\r\n }\r\n </label>\r\n\r\n <div class=\"slider-custom-bar\">\r\n <div class=\"slider-custom-bar-selection\" [style.width]=\"getRangePercent() + '%'\">\r\n </div>\r\n </div>\r\n\r\n <input type=\"range\" [id]=\"name\" [formControl]=\"formControl\" [min]=\"rangeOptions.floor\" [max]=\"rangeOptions.ceil\"\r\n [step]=\"rangeOptions.step || 1\" class=\"form-control-range\" [attr.aria-required]=\"isRequired\"\r\n [attr.aria-invalid]=\"control.invalid && control.touched\" [disabled]=\"isDisabled\">\r\n </div>\r\n\r\n <button type=\"button\" class=\"btn slider-btn slider-btn-more\" (click)=\"onRangeStep('increase')\"\r\n [disabled]=\"formControl.value >= rangeOptions.ceil\">\r\n <span class=\"slider-btn-more-icon optyweb cw-toolbar-add\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">Augmenter</span>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if (isInInputGroup()) {\r\n @if(formControl?.value) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\"\r\n (click)=\"onClearField(formControl)\">&times;</button>\r\n }\r\n }\r\n\r\n</ng-template>\r\n","export enum LegendTypeEnum {\r\n icon = 'icon',\r\n badge = 'badge',\r\n color = 'color'\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { LegendTypeEnum } from '../../enum/legend-type.enum';\r\nimport { Legend } from '../../models/legend.model';\r\nimport { BadgeComponent } from '../badge/badge.component';\r\nimport { IconComponent } from '../icon/icon.component';\r\n\r\n@Component({\r\n selector: 'cw-legend',\r\n templateUrl: './legend.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n IconComponent,\r\n BadgeComponent,\r\n TranslateModule\r\n ]\r\n})\r\nexport class LegendComponent {\r\n\r\n @Input() legend: Legend;\r\n @Input() displayInline: boolean = false;\r\n\r\n public legendTypeEnum = LegendTypeEnum;\r\n\r\n constructor() { }\r\n\r\n}\r\n","@if (legend.title) {\r\n <div class=\"legend-title\">\r\n {{ '_COMMON._TABLE.LEGEND' | translate }}\r\n </div>\r\n}\r\n\r\n<ul class=\"legend-items\" [class.list-inline]=\"displayInline\">\r\n @for (item of legend.data; track $index) {\r\n <li class=\"legend-item\" [class.list-inline-item]=\"displayInline\">\r\n @switch (item.type) {\r\n @case (legendTypeEnum.icon) {\r\n <cw-icon [icon]=\"item.icon\" [label]=\"item.label\" [iconCssClass]=\"'text-' + item.colorUi\" [iconColorCustom]=\"item.colorCustom\"></cw-icon>\r\n }\r\n @case (legendTypeEnum.badge) {\r\n <cw-badge [type]=\"item.colorBadge\" [label]=\"item.labelBadge\"></cw-badge>\r\n {{item.label}}\r\n }\r\n @case (legendTypeEnum.color) {\r\n <span class=\"legend-item-color\" [ngClass]=\"item.colorUi ?'legend-' + item.colorUi : ''\" [style.background-color]=\"item.colorCustom\"></span>\r\n {{item.label}}\r\n }\r\n }\r\n </li>\r\n }\r\n</ul>\r\n","import { Component } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'cw-loader',\r\n templateUrl: './loader.component.html',\r\n standalone: true,\r\n imports: [\r\n TranslateModule\r\n ]\r\n})\r\nexport class LoaderComponent {\r\n\r\n constructor() { }\r\n\r\n}\r\n","<div class=\"d-flex-v gap-md loader text-center\">\r\n <span class=\"spinner-border spinner-border-sm\" aria-hidden=\"true\"></span>\r\n <span role=\"status\">{{ '_COMMON._HTTP.TXT_LOADING' | translate }}</span>\r\n</div>\r\n","export enum ModalsType {\r\n delete = 'delete',\r\n loader = 'loader',\r\n quickSideView = 'quicksideview',\r\n custom = 'custom',\r\n success = 'success',\r\n info = 'info',\r\n warning = 'warning',\r\n danger = 'danger',\r\n neutral = 'neutral',\r\n}\r\nexport enum ModalsSize {\r\n sm = 'sm',\r\n md = 'md',\r\n lg = 'lg',\r\n xl = 'xl',\r\n}\r\n","import {\r\n Injectable,\r\n ApplicationRef,\r\n Injector,\r\n EmbeddedViewRef,\r\n ComponentRef,\r\n createComponent,\r\n EventEmitter,\r\n inject\r\n} from '@angular/core';\r\nimport { ModalsSize, ModalsType } from '../enum/modals.enum';\r\nimport { ModalsComponent } from '../components/modals/modals.component';\r\n\r\nexport interface ModalRef {\r\n componentInstance: ModalsComponent;\r\n result: Promise<any>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ModalsService {\r\n private appRef = inject(ApplicationRef);\r\n private injector = inject(Injector);\r\n\r\n private modalsStack: ComponentRef<ModalsComponent>[] = [];\r\n private focusedElementsStack: HTMLElement[] = [];\r\n\r\n public dismissModal = new EventEmitter<string>();\r\n public openedModal = new EventEmitter<boolean>();\r\n\r\n /**\r\n * Ouvre une modale et retourne un objet compatible avec l'ancienne syntaxe .result\r\n */\r\n public openModal(\r\n type: ModalsType,\r\n config?: Partial<ModalsComponent>,\r\n sizeOverride?: ModalsSize\r\n ): ModalRef {\r\n\r\n // 1. Détermination des propriétés de base\r\n const size = sizeOverride ?? this.getModalSizeByType(type);\r\n const isQuickView = type === ModalsType.quickSideView;\r\n\r\n // 2. Création dynamique du composant\r\n const componentRef = createComponent(ModalsComponent, {\r\n environmentInjector: this.appRef.injector,\r\n elementInjector: this.injector\r\n });\r\n\r\n // 3. Injection des données\r\n componentRef.instance.type = type;\r\n componentRef.instance.size = size;\r\n componentRef.instance.scrollable = isQuickView;\r\n componentRef.instance.customClass = isQuickView ? 'quick-view-modal' : '';\r\n\r\n if (config) {\r\n Object.assign(componentRef.instance, config);\r\n }\r\n\r\n // 4. Gestion de la Promesse (le fameux .result)\r\n const resultPromise = new Promise((resolve, reject) => {\r\n // Succès : quand le bouton d'action est cliqué\r\n const subAction = componentRef.instance.btnAction1.subscribe((data) => {\r\n subAction.unsubscribe();\r\n resolve(data || 'confirm');\r\n });\r\n const subAction2 = componentRef.instance.btnAction2.subscribe((data) => {\r\n subAction.unsubscribe();\r\n resolve(data || 'confirm');\r\n });\r\n\r\n // Échec/Fermeture : on intercepte la fermeture via dismissModal\r\n const subDismiss = this.dismissModal.subscribe(() => {\r\n subDismiss.unsubscribe();\r\n reject('closed');\r\n });\r\n });\r\n\r\n // 5. Intégration au DOM\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n this.appRef.attachView(componentRef.hostView);\r\n document.body.classList.add('modal-open');\r\n\r\n // 6. Gestion de la pile et du focus\r\n this.saveFocus();\r\n this.modalsStack.push(componentRef);\r\n\r\n // Retourne un objet ModalRef\r\n return {\r\n componentInstance: componentRef.instance,\r\n result: resultPromise\r\n };\r\n }\r\n\r\n /**\r\n * Ferme la modale en haut de la pile\r\n */\r\n public closeModal(): void {\r\n const currentModal = this.modalsStack.pop();\r\n\r\n if (currentModal) {\r\n const modalClass = currentModal.instance.customClass ?? '';\r\n\r\n // Retrait du DOM\r\n this.appRef.detachView(currentModal.hostView);\r\n currentModal.destroy();\r\n\r\n // Gestion du body\r\n if (this.modalsStack.length === 0) {\r\n document.body.classList.remove('modal-open');\r\n }\r\n\r\n // Restauration focus\r\n this.restoreFocus();\r\n\r\n // On émet l'événement (ce qui déclenchera le reject de la promesse plus haut)\r\n this.dismissModal.emit(modalClass);\r\n }\r\n }\r\n\r\n private getModalSizeByType(type: ModalsType): ModalsSize {\r\n switch (type) {\r\n case ModalsType.loader: return ModalsSize.sm;\r\n case ModalsType.delete: return ModalsSize.md;\r\n case ModalsType.quickSideView: return ModalsSize.lg;\r\n default: return ModalsSize.md\r\n }\r\n }\r\n\r\n private saveFocus(): void {\r\n const activeEl = document.activeElement as HTMLElement;\r\n if (activeEl?.hasAttribute(\"cwDropdownItem\")) {\r\n const dropdownBtn = activeEl.closest(\".dropdown\")?.querySelector('button') as HTMLElement;\r\n this.focusedElementsStack.push(dropdownBtn || activeEl);\r\n } else {\r\n this.focusedElementsStack.push(activeEl);\r\n }\r\n }\r\n\r\n private restoreFocus(): void {\r\n const previousEl = this.focusedElementsStack.pop();\r\n if (previousEl) {\r\n previousEl.focus();\r\n }\r\n }\r\n}\r\n","import {\n Component, ElementRef, Input, OnInit, AfterViewInit,\n OnDestroy, ViewChild, TemplateRef, EventEmitter, Output, inject\n} from '@angular/core';\nimport { CommonModule, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { ModalsService } from '../../services/modals.service';\nimport { ModalsSize, ModalsType } from '../../enum/modals.enum';\nimport { FoButtonTypeEnum, BoButtonTypeEnum } from '../../enum/button.enum';\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\n\nimport { ButtonComponent } from '../button/button.component';\nimport { LoaderComponent } from '../loader/loader.component';\nimport { IconComponent } from '../icon/icon.component';\nimport { IconSizeEnum, IconTypeEnum, IconUiTypeEnum } from '../../enum/icon.enum';\n\n@Component({\n selector: 'cw-modals',\n standalone: true,\n imports: [CommonModule, TranslateModule, NgClass, NgTemplateOutlet, ButtonComponent, LoaderComponent, IconComponent],\n templateUrl: './modals.component.html'\n})\nexport class ModalsComponent implements OnInit, AfterViewInit {\n private modalService = inject(ModalsService);\n private translateService = inject(TranslateService);\n\n @ViewChild('modalContainer') modalContainer!: ElementRef;\n @Input() size: ModalsSize = ModalsSize.md;\n @Input() customClass: string = '';\n @Input() scrollable: boolean = false;\n @Input() isAutcompModal: boolean = false;\n\n @Input() type!: ModalsType;\n @Input() modalTitle?: string;\n @Input() itemsToDelete: any[] = [];\n @Input() itemsToDeleteTitle = this.translateService.instant('_COMMON._MODAL_DELETE.DEFAULT_TYPE');\n @Input() labelBtnAction1?: string;\n @Input() labelBtnAction2?: string;\n @Input() customBodyTemplate?: TemplateRef<any>;\n @Input() customBodyContext?: any;\n\n @Output() btnAction1 = new EventEmitter<string>();\n @Output() btnAction2 = new EventEmitter<string>();\n\n public readonly modalsType = ModalsType;\n public readonly buttonTypeEnum = { ...FoButtonTypeEnum, ...BoButtonTypeEnum };\n public readonly spriteIcon = SpriteIconEnum;\n public readonly iconType = IconTypeEnum;\n public readonly iconSize = IconSizeEnum;\n public readonly iconUiType = IconUiTypeEnum;\n\n ngOnInit(): void {\n this.modalService.openedModal.emit(true);\n }\n\n ngAfterViewInit() {\n setTimeout(() => this.trapFocus(this.modalContainer.nativeElement), 0);\n }\n\n public onKeyDown(e: KeyboardEvent) {\n if (this.type === this.modalsType.loader) {\n e.preventDefault();\n return;\n }\n if (e.key === 'Escape') {\n const isAutocompleteOpen = document.activeElement?.getAttribute('aria-controls') === 'autocompletion-panel';\n if (isAutocompleteOpen) {\n e.preventDefault();\n } else {\n this.closeModal();\n }\n }\n }\n\n public action1Click() {\n this.btnAction1.emit('confirm');\n this.closeModal();\n }\n\n public action2Click() {\n this.btnAction1.emit('confirm');\n this.closeModal();\n }\n\n public closeModal() {\n this.modalService.closeModal();\n }\n\n private trapFocus(element: HTMLElement) {\n const focusableSelector = 'a[href], button:not([disabled]), textarea, input:not([disabled]), select';\n const focusableEls = Array.from(element.querySelectorAll(focusableSelector)) as HTMLElement[];\n\n if (focusableEls.length === 0) return;\n\n const firstFocusableEl = focusableEls[0];\n const lastFocusableEl = focusableEls[focusableEls.length - 1];\n\n // Logique Autocomplete peut etre à externaliser ou élargir la notion\n const autocompleteInput = focusableEls.find(x => x.getAttribute('aria-controls') === 'autocompletion-panel');\n if (autocompleteInput && this.isAutcompModal) {\n autocompleteInput.focus();\n } else {\n firstFocusableEl.focus();\n }\n\n // Listener pour le Tab (on l'attache au container)\n element.addEventListener('keydown', (e: KeyboardEvent) => {\n if (e.key !== 'Tab') return;\n\n if (e.shiftKey) { // Shift + Tab\n if (document.activeElement === firstFocusableEl) {\n lastFocusableEl.focus();\n e.preventDefault();\n }\n } else { // Tab\n if (document.activeElement === lastFocusableEl) {\n firstFocusableEl.focus();\n e.preventDefault();\n }\n }\n });\n }\n}\n","<div class=\"cityway-v8 modal-backdrop fade show\" style=\"z-index: 1050;\" aria-hidden=\"true\"></div>\r\n\r\n<div role=\"dialog\" tabindex=\"-1\" aria-modal=\"true\" aria-labelledby=\"modal-basic-title\"\r\n class=\"cityway-v8 d-flex modal show\" [ngClass]=\"customClass\" data-test-ctw=\"modal\" (keydown)=\"onKeyDown($event)\">\r\n\r\n <div class=\"modal-inner-backdrop\" (click)=\"type !== modalsType.loader && closeModal()\"></div>\r\n\r\n <div #modalContainer role=\"document\" class=\"modal-dialog modal-dialog-centered\"\r\n [ngClass]=\"['modal-' + size, scrollable ? 'modal-dialog-scrollable' : '']\">\r\n\r\n <div class=\"modal-content\">\r\n\r\n @if (type !== modalsType.loader) {\r\n @if (type == modalsType.delete || type == modalsType.quickSideView || type == modalsType.custom) {\r\n <div class=\"modal-header\">\r\n @if (type === modalsType.delete) {\r\n <h1 class=\"modal-title\" id=\"modal-basic-title\">\r\n {{ '_COMMON._MODAL_DELETE.TITLE' | translate: { number: itemsToDelete.length, name: itemsToDeleteTitle } }}\r\n </h1>\r\n }\r\n @else {\r\n <h1 class=\"modal-title\" id=\"modal-basic-title\">\r\n {{ modalTitle | translate }}\r\n </h1>\r\n }\r\n\r\n <cw-button [label]=\"'_COMMON._ACTION.CLOSE' | translate\" [type]=\"buttonTypeEnum.light\" [withOnlyIcon]=\"true\"\r\n [withIcon]=\"spriteIcon.toolbarClose\" (btnAction)=\"closeModal()\" dataTest=\"btn-close-modal\"\r\n cssClass=\"btn-close\">\r\n </cw-button>\r\n </div>\r\n\r\n <div class=\"modal-body\">\r\n @if (type === modalsType.delete) {\r\n @if (itemsToDelete.length === 1) {\r\n <div [innerHTML]=\"'_COMMON._MODAL_DELETE.SIMPLE_TEXT' | translate\"></div>\r\n }\r\n @if (itemsToDelete.length > 1) {\r\n <div [innerHTML]=\"'_COMMON._MODAL_DELETE.MULTIPLE_TEXT' | translate\"></div>\r\n }\r\n @if (itemsToDelete.length > 0) {\r\n <ul class=\"mb-none\">\r\n @for (item of itemsToDelete; track item) {\r\n <li>{{ item }}</li>\r\n }\r\n </ul>\r\n }\r\n }\r\n @else {\r\n @if (customBodyTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"customBodyTemplate\" [ngTemplateOutletContext]=\"customBodyContext\">\r\n </ng-container>\r\n }\r\n }\r\n </div>\r\n }\r\n @else {\r\n <div class=\"modal-header justify-content-end\">\r\n <cw-button [label]=\"'_COMMON._ACTION.CLOSE' | translate\" [type]=\"buttonTypeEnum.light\" [withOnlyIcon]=\"true\"\r\n [withIcon]=\"spriteIcon.toolbarClose\" (btnAction)=\"closeModal()\" dataTest=\"btn-close-modal\"\r\n cssClass=\"btn-close\">\r\n </cw-button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <cw-icon [label]=\"'Sucess'\" [iconSize]=\"iconSize['5xl']\" [icon]=\"spriteIcon.toolbarClose\" [type]=\"iconType.rounded\" [iconUiType]=\"iconUiType.success\"></cw-icon>\r\n\r\n <h1 class=\"modal-title\" id=\"modal-basic-title\">\r\n {{ modalTitle | translate }}\r\n </h1>\r\n\r\n @if (customBodyTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"customBodyTemplate\" [ngTemplateOutletContext]=\"customBodyContext\">\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"modal-footer\">\r\n @if (type === modalsType.delete) {\r\n <cw-button label=\"_COMMON._ACTION.DELETE\" [type]=\"buttonTypeEnum.danger\" [isMinWidth]=\"true\"\r\n (btnAction)=\"action1Click()\" dataTest=\"btn-action-modal\">\r\n </cw-button>\r\n\r\n <cw-button label=\"_COMMON._ACTION.CLOSE\" [type]=\"buttonTypeEnum.secondary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"closeModal()\" dataTest=\"btn-close-modal\">\r\n </cw-button>\r\n }\r\n @else {\r\n @if (labelBtnAction1) {\r\n <cw-button [label]=\"labelBtnAction1 | translate\" [type]=\"buttonTypeEnum.primary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"action1Click()\" dataTest=\"btn-action-modal\">\r\n </cw-button>\r\n }\r\n @if (labelBtnAction2) {\r\n <cw-button [label]=\"labelBtnAction2 | translate\" [type]=\"buttonTypeEnum.secondary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"action2Click()\" dataTest=\"btn-action-modal\">\r\n </cw-button>\r\n }\r\n @else {\r\n <cw-button label=\"_COMMON._ACTION.CLOSE\" [type]=\"buttonTypeEnum.secondary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"closeModal()\" dataTest=\"btn-close-modal\">\r\n </cw-button>\r\n }\r\n }\r\n </div>\r\n }\r\n @else {\r\n <div class=\"modal-body\">\r\n <cw-loader></cw-loader>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { UtilsHelper } from '../../../helpers/utils.helper';\r\nimport { SpriteIconEnum } from '../../../enum/sprite-icons.enum';\r\n\r\n@Component({\r\n selector: 'cw-tab-content',\r\n template: `\r\n <div class=\"tab-pane\"\r\n [class.fade]=\"!active\"\r\n [class.active]=\"active\"\r\n [class.show]=\"active\"\r\n [class.d-none]=\"!active\"\r\n [id]=\"'cw-nav-' + id + '-panel'\"\r\n role=\"tabpanel\"\r\n [attr.aria-labelledby]=\"'cw-nav-' + id\">\r\n <ng-content></ng-content>\r\n </div>\r\n `,\r\n standalone: true\r\n})\r\nexport class TabContentComponent {\r\n @Input() title!: string;\r\n @Input() disabled = false;\r\n @Input() withIcon?: SpriteIconEnum;\r\n\r\n id: number = 0;\r\n active = false;\r\n\r\n get fragment(): string {\r\n return UtilsHelper.slugify(this.title);\r\n }\r\n}\r\n","export enum FoTabTypeEnum {\r\n defaultMd = 'default-md',\r\n defaultXl = 'default-xl',\r\n}\r\n\r\nexport enum BoTabTypeEnum {\r\n basic = 'basic',\r\n card = 'card',\r\n}\r\n","import { AfterContentInit, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { TabContentComponent } from './components/tab-content.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { BoTabTypeEnum, FoTabTypeEnum } from '../../enum/tab.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconSizeEnum } from '../../enum/icon.enum';\r\n\r\n@Component({\r\n selector: 'cw-tab',\r\n templateUrl: './tab.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n IconComponent,\r\n TranslateModule\r\n ]\r\n})\r\nexport class TabComponent implements AfterContentInit {\r\n\r\n @Input() type: FoTabTypeEnum | BoTabTypeEnum = FoTabTypeEnum.defaultMd;\r\n @Input() id: string;\r\n @Input() useFragment = true;\r\n @Input() title?: string;\r\n @Input() tabContentCssClass?: string = '';\r\n @Input() activeTabIndex?: number = 0;\r\n\r\n @ContentChildren(TabContentComponent) tabs!: QueryList<TabContentComponent>;\r\n @ViewChildren('tabLink') tabLinks!: QueryList<ElementRef>;\r\n @Output() tabChanged = new EventEmitter<number>();\r\n\r\n public activeId = 0;\r\n public iconSize: IconSizeEnum = IconSizeEnum['md'];\r\n\r\n readonly tabTypeEnum = FoTabTypeEnum && BoTabTypeEnum;\r\n\r\n constructor(\r\n private router: Router,\r\n private route: ActivatedRoute\r\n ) { }\r\n\r\n ngAfterContentInit(): void {\r\n const tabsArray = this.tabs.toArray();\r\n\r\n tabsArray.forEach((tab, index) => {\r\n tab.id = index;\r\n tab.active = false;\r\n });\r\n\r\n const firstActiveIndex = tabsArray.findIndex(t => !t.disabled);\r\n this.activeId = this.activeTabIndex ?? (firstActiveIndex !== -1 ? firstActiveIndex : 0);\r\n\r\n if (this.useFragment) {\r\n this.route.fragment.subscribe(fragment => {\r\n if (fragment) {\r\n const foundIndex = tabsArray.findIndex(\r\n tab => tab.fragment === fragment && !tab.disabled\r\n );\r\n if (foundIndex !== -1) {\r\n this.activeId = foundIndex;\r\n }\r\n }\r\n this.activateTabByIndex(this.activeId);\r\n });\r\n } else {\r\n this.activateTabByIndex(this.activeId);\r\n }\r\n }\r\n\r\n public selectTab(tab: TabContentComponent) {\r\n if (tab.disabled) return;\r\n\r\n this.tabs.forEach(t => t.active = false);\r\n tab.active = true;\r\n\r\n this.activeId = tab.id;\r\n\r\n if (this.useFragment) {\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n fragment: tab.fragment,\r\n queryParamsHandling: 'preserve',\r\n replaceUrl: true\r\n });\r\n }\r\n\r\n this.tabChanged.emit(this.activeId);\r\n }\r\n\r\n private activateTabByIndex(index: number) {\r\n const tab = this.tabs.toArray()[index];\r\n if (tab && !tab.disabled) {\r\n this.selectTab(tab);\r\n }\r\n }\r\n\r\n public onKeydown(event: KeyboardEvent) {\r\n switch (event.key) {\r\n case 'ArrowLeft':\r\n event.preventDefault();\r\n this.selectPreviousTab();\r\n break;\r\n case 'ArrowRight':\r\n event.preventDefault();\r\n this.selectNextTab();\r\n break;\r\n }\r\n }\r\n\r\n private moveFocus() {\r\n this.tabLinks?.forEach((link: ElementRef) => {\r\n if (link.nativeElement.getAttribute('aria-selected') === 'true') {\r\n link.nativeElement.focus();\r\n }\r\n });\r\n }\r\n\r\n private selectPreviousTab() {\r\n const tabsArray = this.tabs.toArray();\r\n const activeIndex = tabsArray.findIndex(tab => tab.active);\r\n if (activeIndex !== -1) {\r\n let newIndex = (activeIndex - 1 + tabsArray.length) % tabsArray.length;\r\n while (tabsArray[newIndex].disabled && newIndex !== activeIndex) {\r\n newIndex = (newIndex - 1 + tabsArray.length) % tabsArray.length;\r\n }\r\n if (!tabsArray[newIndex].disabled) {\r\n this.selectTab(tabsArray[newIndex]);\r\n setTimeout(() => this.moveFocus());\r\n }\r\n }\r\n }\r\n\r\n private selectNextTab() {\r\n const tabsArray = this.tabs.toArray();\r\n const activeIndex = tabsArray.findIndex(tab => tab.active);\r\n if (activeIndex !== -1) {\r\n let newIndex = (activeIndex + 1) % tabsArray.length;\r\n while (tabsArray[newIndex].disabled && newIndex !== activeIndex) {\r\n newIndex = (newIndex + 1) % tabsArray.length;\r\n }\r\n if (!tabsArray[newIndex].disabled) {\r\n this.selectTab(tabsArray[newIndex]);\r\n setTimeout(() => this.moveFocus());\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"tab\" [ngClass]=\"'tab-' + type\">\r\n @if (title) {\r\n <h2>{{ title | translate }}</h2>\r\n }\r\n <ul class=\"tab-items d-flex-h\" [ngClass]=\"'tab-items-' + type\" role=\"tablist\" appRwdTabs>\r\n @for (tab of tabs.toArray(); track tab; let i = $index) {\r\n <li class=\"tab-item\" role=\"presentation\">\r\n <button #tabLink type=\"button\" class=\"tab-link btn\" [class.active]=\"tab.active\" [class.disabled]=\"tab.disabled\"\r\n [disabled]=\"tab.disabled\" [attr.id]=\"'cw-nav-' + i\" [attr.data-test-ctw]=\"'link-tab-' + id + '-' + i\"\r\n [attr.aria-selected]=\"tab.active\" [attr.aria-controls]=\"'cw-nav-' + i + '-panel'\"\r\n [attr.tabindex]=\"tab.active ? '0' : '-1'\" (click)=\"selectTab(tab)\" (keydown)=\"onKeydown($event)\" role=\"tab\">\r\n @if (tab.withIcon) {\r\n <cw-icon [icon]=\"tab.withIcon\" [iconSize]=\"iconSize\"></cw-icon>\r\n }\r\n {{ tab.title | translate }}\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n\r\n<div [class]=\"'tab-content ' + tabContentCssClass\" [ngClass]=\"'tab-content-' + type\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'cw-wizard-step',\n template: '<ng-template #content><ng-content></ng-content></ng-template>',\n standalone: true\n})\n\nexport class WizardStepComponent {\n\n @Input() title!: string;\n @Input() completed = false;\n\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<any>;\n\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, ContentChildren, EventEmitter, Output, QueryList } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { WizardStepComponent } from './components/wizard-step.component';\n\n@Component({\n selector: 'cw-wizard-stepper',\n templateUrl: './wizard-stepper.component.html',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule\n ]\n})\nexport class WizardStepperComponent {\n @ContentChildren(WizardStepComponent) steps!: QueryList<WizardStepComponent>;\n\n @Output() stepChange = new EventEmitter<number>();\n @Output() stepNext = new EventEmitter<number>();\n @Output() stepPrevious = new EventEmitter<number>();\n @Output() stepEnd = new EventEmitter<number>();\n\n public selectedIndex = 0;\n\n public get stepList(): WizardStepComponent[] {\n return this.steps.toArray();\n }\n\n public goToStep(index: number) {\n if (index < 0 || index >= this.steps.length) return;\n\n // Vérifier que toutes les étapes précédentes sont complétées\n for (let i = 0; i < index; i++) {\n if (!this.steps.toArray()[i].completed) {\n return; // Empêche d'aller à cette étape si une étape précédente n'est pas validée\n }\n }\n\n this.selectedIndex = index;\n this.stepChange.emit(this.selectedIndex);\n }\n\n public nextStep() {\n if (this.selectedIndex < this.steps.length - 1) {\n const currentStep = this.steps.toArray()[this.selectedIndex];\n if (!currentStep.completed) {\n // Si l'étape courante n'est pas validée, on bloque\n return;\n }\n this.selectedIndex++;\n this.stepNext.emit(this.selectedIndex);\n this.stepChange.emit(this.selectedIndex);\n }\n }\n\n public previousStep() {\n if (this.selectedIndex > 0) {\n this.selectedIndex--;\n this.stepPrevious.emit(this.selectedIndex);\n this.stepChange.emit(this.selectedIndex);\n }\n }\n\n public endWizard() {\n if (this.selectedIndex > 0) {\n this.stepEnd.emit(this.selectedIndex);\n this.stepChange.emit(this.selectedIndex);\n }\n }\n}\n","<nav>\r\n <ul class=\"list-inline step-list\">\r\n @for (step of steps.toArray(); track step; let i = $index) {\r\n <li class=\"list-inline-item step-item\">\r\n <button class=\"btn step-button\" [ngClass]=\"{\r\n 'step-active': selectedIndex === i,\r\n 'step-completed': step.completed,\r\n 'step-current': selectedIndex === i && step.completed === false\r\n }\" [disabled]=\"(i > 0 && !steps.toArray()[i - 1]?.completed)\" (click)=\"goToStep(i)\" type=\"button\">\r\n <span class=\"step-indicator bo-icons bo-alert-success\" aria-hidden=\"true\"></span>\r\n <span class=\"step-label\">\r\n {{ step.title || ('_COMMON._STEPPER.STEP' | translate) + (i + 1) }}\r\n </span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n</nav>\r\n\r\n@for (step of steps.toArray(); track step; let i = $index) {\r\n <section class=\"tab-pane\" [class.active]=\"selectedIndex === i\" [hidden]=\"selectedIndex !== i\" role=\"tabpanel\">\r\n <ng-container *ngTemplateOutlet=\"step.templateRef\"></ng-container>\r\n </section>\r\n}\r\n\r\n<div class=\"text-center mt-5\">\r\n <div class=\"btn-group\">\r\n <button class=\"btn btn-secondary btn-min-width\" (click)=\"previousStep()\" [disabled]=\"selectedIndex === 0\"\r\n type=\"button\">\r\n {{ '_COMMON._STEPPER.PREVIOUS_STEP' | translate }}\r\n </button>\r\n\r\n @if (selectedIndex !== steps.length - 1) {\r\n <button class=\"btn btn-primary btn-min-width\" (click)=\"nextStep()\"\r\n [disabled]=\"!steps.toArray()[selectedIndex]?.completed\" type=\"button\">\r\n {{ '_COMMON._STEPPER.NEXT_STEP' | translate }}\r\n </button>\r\n }\r\n @else {\r\n <button class=\"btn btn-primary btn-min-width\" (click)=\"endWizard()\" type=\"button\">\r\n {{ '_COMMON._ACTION.END' | translate }}\r\n </button>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'cw-stepper',\r\n templateUrl: './stepper.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule\r\n]\r\n})\r\nexport class StepperComponent {\r\n\r\n @Input() activeStep: number = 0;\r\n @Input() steps: string[] = [];\r\n @Input() label: string = 'Étapes de progression'; // todo trad\r\n\r\n}\r\n","<ul class=\"stepper\" role=\"list\" [attr.aria-label]=\"label\">\r\n @for (step of steps; track step; let i = $index) {\r\n <li id=\"step-{{i}}\" class=\"stepper-item\" [ngClass]=\"{\r\n 'stepper-item-current': i === activeStep,\r\n 'stepper-item-completed': i < activeStep}\"\r\n [attr.aria-current]=\"i === activeStep ? 'step' : null\">\r\n <span class=\"stepper-label\">\r\n <span class=\"visually-hidden\">{{i + 1}}</span>\r\n {{step | translate}}\r\n </span>\r\n </li>\r\n }\r\n</ul>\r\n","import { Pipe, PipeTransform, inject } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nconst FILE_SIZE_UNITS_FR = ['o', 'Ko', 'Mo', 'Go', 'To', 'Po', 'Eo', 'Zo', 'Yo'];\r\nconst FILE_SIZE_UNITS_DEFAULT = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n\r\n@Pipe({ name: 'formatFileSize' })\r\nexport class FormatFileSizePipe implements PipeTransform {\r\n private translate = inject(TranslateService);\r\n\r\n\r\n transform(sizeInBytes: number): string {\r\n const units = this.translate.currentLang === 'fr' ? FILE_SIZE_UNITS_FR : FILE_SIZE_UNITS_DEFAULT;\r\n\r\n let power = Math.round(Math.log(sizeInBytes) / Math.log(1024));\r\n power = Math.min(power, units.length - 1);\r\n\r\n const size = sizeInBytes / Math.pow(1024, power); // size in new units\r\n const formattedSize = Math.round(size * 10) / 10; // keep up to 1 decimal\r\n const unit = units[power];\r\n\r\n return `${formattedSize} ${unit}`;\r\n }\r\n}\r\n","import { Component, Input, OnInit, inject } from '@angular/core';\r\nimport { TranslateService, TranslatePipe } from '@ngx-translate/core';\r\nimport { FormatFileSizePipe } from '../../pipe/format-file-size.pipe';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { Attachment } from '../../models/attachment.model';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconTypeEnum, IconSizeEnum } from '../../enum/icon.enum';\r\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\r\n\r\n@Component({\r\n selector: 'cw-file-to-download',\r\n templateUrl: './file-to-download.component.html',\r\n imports: [NgTemplateOutlet, TranslatePipe, FormatFileSizePipe, IconComponent]\r\n})\r\nexport class FileToDownloadComponent {\r\n\r\n translate = inject(TranslateService);\r\n\r\n readonly iconType = IconTypeEnum;\r\n readonly iconSize = IconSizeEnum;\r\n readonly spriteIcon = SpriteIconEnum.toolbarDownload;\r\n\r\n @Input() attachments: Attachment[];\r\n}\r\n","<!-- If one file -->\r\n@if (attachments.length === 1 ) {\r\n<ng-container *ngTemplateOutlet=\"file;context:{attachment:attachments[0]}\"></ng-container>\r\n}\r\n\r\n<!-- If two files or more, li loop -->\r\n@if (attachments.length > 1) {\r\n<ul class=\"list-unstyled file-to-download-items\">\r\n @for (attachment of attachments; track attachment) {\r\n <li class=\"file-to-download-list-item\">\r\n <ng-container *ngTemplateOutlet=\"file;context:{attachment:attachment}\"></ng-container>\r\n </li>\r\n }\r\n</ul>\r\n}\r\n\r\n<ng-template #file let-attachment=\"attachment\">\r\n <a [href]=\"attachment.url\" class=\"file-to-download-link\" target=\"_blank\">\r\n <span class=\"file-to-download-name\">\r\n {{ attachment.label ? attachment.label : ('_SHARED.ATTACHMENT_DEFAULT_LABEL' | translate ) }}\r\n </span>\r\n <span class=\"file-to-download-info\">\r\n @if (attachment.extension && attachment.size) {\r\n {{attachment.extension.toUpperCase()}} {{attachment.size * 1024 | formatFileSize}}\r\n }\r\n <cw-icon [icon]=\"spriteIcon\" font=\"optyweb\" [label]=\"'_COMMON.NEW_WINDOW' |translate\" [type]=\"iconType.default\"\r\n [iconSize]=\"iconSize['md']\" iconCssClass=\"file-to-download-download\"></cw-icon>\r\n </span>\r\n </a>\r\n</ng-template>\r\n","export enum NumericalRangeTypeEnum {\r\n defaultWhite = 'default-white',\r\n defaultGrey = 'default-grey',\r\n smallWhite = 'small-white',\r\n smalltGrey = 'small-grey',\r\n largeWhite = 'large-white',\r\n largeGrey = 'large-grey'\r\n}\r\nexport enum NumericalRangeLabelPositionEnum {\r\n inside = 'inside',\r\n outside = 'outside'\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { NumericalRangeLabelPositionEnum, NumericalRangeTypeEnum } from '../../enum/numerical-range.enum';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { FoButtonTypeEnum, BoButtonTypeEnum, ButtonIconSizeEnum } from '../../enum/button.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { IconSizeEnum, IconTypeEnum } from '../../enum/icon.enum';\r\nimport { SpriteIconEnum } from '../../enum/sprite-icons.enum';\r\n\r\n@Component({\r\n selector: 'cw-numerical-range',\r\n templateUrl: './numerical-range.component.html',\r\n imports: [NgClass, IconComponent, ButtonComponent],\r\n standalone: true\r\n})\r\nexport class NumericalRangeComponent {\r\n\r\n @Input() type: NumericalRangeTypeEnum = NumericalRangeTypeEnum.defaultGrey;\r\n @Input() label: string = '';\r\n @Input() amount: number = 0;\r\n @Input() withIcon?: SpriteIconEnum;\r\n @Input() withLabelVisible?: boolean = true;\r\n @Input() labelPosition: NumericalRangeLabelPositionEnum = NumericalRangeLabelPositionEnum.inside;\r\n @Input() ceil?: number = 9;\r\n @Input() floor?: number = 0;\r\n @Input() isDisabled?: boolean = false;\r\n @Input() autoChangeAmount?: boolean = true;\r\n\r\n @Output() newAmount = new EventEmitter<number>();\r\n\r\n readonly numericalRangeType = NumericalRangeTypeEnum;\r\n readonly iconTypeEnum = IconTypeEnum;\r\n readonly iconSize = IconSizeEnum;\r\n readonly spriteIcon = SpriteIconEnum;\r\n readonly labelPositionValue = NumericalRangeLabelPositionEnum;\r\n readonly buttonType = FoButtonTypeEnum && BoButtonTypeEnum;\r\n readonly buttonIconSize = ButtonIconSizeEnum;\r\n\r\n public uniqueId = `numerical-range-${Math.random().toString(36).slice(2)}`;\r\n\r\n public increaseAmount(): void {\r\n const amount = this.amount + 1;\r\n if (this.autoChangeAmount) {\r\n this.amount = amount;\r\n }\r\n this.newAmount.emit(amount);\r\n }\r\n\r\n public decreaseAmount(): void {\r\n const amount = this.amount - 1;\r\n if (this.autoChangeAmount) {\r\n this.amount = amount;\r\n if (this.amount < this.floor) {\r\n this.amount = this.floor;\r\n }\r\n }\r\n this.newAmount.emit(amount);\r\n }\r\n}\r\n","<div class=\"numerical-range text-center\" [ngClass]=\"'numerical-range-' + type\">\r\n\r\n @if (labelPosition == labelPositionValue.outside && withLabelVisible) {\r\n <div class=\"numerical-range-label\" aria-hidden=\"true\">\r\n @if (withIcon && (type == numericalRangeType.largeWhite || type == numericalRangeType.largeGrey)) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSize['lg']\"></cw-icon>\r\n }\r\n <span>{{ label }}</span>\r\n </div>\r\n }\r\n\r\n <div class=\"numerical-range-container\">\r\n <cw-button [isDisabled]=\"isDisabled || amount <= floor\" [label]=\"'Diminuer ' + amount + ' ' + label\"\r\n [withIcon]=\"spriteIcon.toolbarMinus\" [withOnlyIcon]=\"true\" [type]=\"buttonType.primary\"\r\n [iconSize]=\"buttonIconSize.small\" (btnAction)=\"decreaseAmount()\">\r\n </cw-button>\r\n\r\n <div class=\"numerical-range-wrapper\">\r\n <div class=\"numerical-range-amount\" aria-live=\"polite\" aria-atomic=\"true\">\r\n {{ amount }}\r\n @if (!withLabelVisible && !withIcon) {\r\n <span class=\"sr-only\">{{ label }}</span>\r\n }\r\n </div>\r\n\r\n @if ((type !== numericalRangeType.largeGrey && type !== numericalRangeType.largeWhite) && (withIcon ||\r\n withLabelVisible)) {\r\n <div class=\"numerical-range-label\">\r\n @if (withLabelVisible && labelPosition == labelPositionValue.inside) {\r\n @if (withIcon) {\r\n <cw-icon [icon]=\"withIcon\" [iconSize]=\"iconSize['lg']\" aria-hidden=\"true\"></cw-icon>\r\n }\r\n <span>{{ label }}</span>\r\n }\r\n @else {\r\n @if (withIcon) {\r\n <cw-icon [icon]=\"withIcon\" [label]=\"label\" [iconSize]=\"iconSize['lg']\"></cw-icon>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <cw-button [isDisabled]=\"isDisabled || amount >= ceil\" [label]=\"'Augmenter ' + amount + ' ' + label\"\r\n [withIcon]=\"spriteIcon.toolbarPlus\" [withOnlyIcon]=\"true\" [type]=\"buttonType.primary\"\r\n [iconSize]=\"buttonIconSize.small\" (btnAction)=\"increaseAmount()\">\r\n </cw-button>\r\n </div>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cw-image',\r\n templateUrl: './image.component.html',\r\n standalone: true\r\n\r\n})\r\nexport class ImageComponent {\r\n\r\n @Input() source: string = '';\r\n @Input() alt: string = '';\r\n @Input() isAriaHidden:boolean = false;\r\n @Input() cssClass: string = '';\r\n @Input() width: string = '';\r\n @Input() height: string = '';\r\n\r\n}\r\n","<img [src]=\"source\" [attr.aria-hidden]=\"isAriaHidden ? 'true' : null\" [class]=\"cssClass\" [alt]=\"alt\"\r\n [attr.width]=\"width ? width : null\" [attr.height]=\"height ? height : null\">\r\n","export enum PlacementEnum {\r\n Left = 'left',\r\n Right = 'right',\r\n}\r\n","/*\r\n * Public API Surface of basic-ui\r\n */\r\n\r\n// LIB UI\r\n//---------------------------------------------------------\r\n// Lib ui components\r\nexport * from './lib/components/accordion/accordion.component';\r\nexport * from './lib/components/alert/alert.component';\r\nexport * from './lib/components/toast/toast.component';\r\nexport * from './lib/components/badge/badge.component';\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/dropdown/dropdown.component';\r\nexport * from './lib/components/card/card.component';\r\nexport * from './lib/components/form-field/form-field.component';\r\nexport * from './lib/components/icon/icon.component';\r\nexport * from './lib/components/icon-notification/icon-notification.component';\r\nexport * from './lib/components/legend/legend.component';\r\nexport * from './lib/components/loader/loader.component';\r\nexport * from './lib/components/modals/modals.component';\r\nexport * from './lib/components/tab/components/tab-content.component';\r\nexport * from './lib/components/tab/tab.component';\r\nexport * from './lib/components/wizard-stepper/components/wizard-step.component';\r\nexport * from './lib/components/wizard-stepper/wizard-stepper.component';\r\nexport * from './lib/components/stepper/stepper.component';\r\nexport * from './lib/components/file-to-download/file-to-download.component';\r\nexport * from './lib/components/numerical-range/numerical-range.component';\r\nexport * from './lib/components/image/image.component';\r\n\r\n// Lib UI Directives\r\nexport * from './lib/directives/collapse.directive';\r\nexport * from './lib/directives/clickoutside.directive';\r\n\r\n// Lib UI Enum\r\nexport * from './lib/enum/field-type.enum';\r\nexport * from './lib/enum/legend-type.enum';\r\nexport * from './lib/enum/modals.enum';\r\nexport * from './lib/enum/icon.enum';\r\nexport * from './lib/enum/icon-notification.enum';\r\nexport * from './lib/enum/badge.enum';\r\nexport * from './lib/enum/alert.enum';\r\nexport * from './lib/enum/placement.enum';\r\nexport * from './lib/enum/card.enum';\r\nexport * from './lib/enum/tab.enum';\r\nexport * from './lib/enum/button.enum';\r\nexport * from './lib/enum/numerical-range.enum';\r\n\r\n// Lib Services\r\nexport * from './lib/services/modals.service';\r\nexport * from './lib/services/toast.service';\r\nexport * from './lib/services/focus.service';\r\nexport * from './lib/services/responsive.service';\r\n\r\n// Lib Models\r\nexport * from './lib/models/custom-list.model';\r\nexport * from './lib/models/legend.model';\r\nexport * from './lib/models/toast.model';\r\nexport * from './lib/models/attachment.model';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i5","i3"],"mappings":"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"}