@cityway/basic-ui 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -0
- package/cityway-basic-ui-1.0.1.tgz +0 -0
- package/fesm2022/cityway-basic-ui.mjs +2092 -0
- package/fesm2022/cityway-basic-ui.mjs.map +1 -0
- package/index.d.ts +766 -0
- package/lib/assets/fonts/bo/_variables.scss +43 -0
- package/lib/assets/fonts/bo/bo.scss +61 -0
- package/lib/assets/fonts/bo/bo.woff +0 -0
- package/lib/assets/fonts/bo/bo.woff2 +0 -0
- package/lib/assets/fonts/nunito/_nunito.scss +39 -0
- package/lib/assets/fonts/nunito/nunito-bold.woff +0 -0
- package/lib/assets/fonts/nunito/nunito-bold.woff2 +0 -0
- package/lib/assets/fonts/nunito/nunito-extrabold.woff +0 -0
- package/lib/assets/fonts/nunito/nunito-extrabold.woff2 +0 -0
- package/lib/assets/fonts/nunito/nunito-light.woff +0 -0
- package/lib/assets/fonts/nunito/nunito-light.woff2 +0 -0
- package/lib/assets/fonts/nunito/nunito-regular.woff +0 -0
- package/lib/assets/fonts/nunito/nunito-regular.woff2 +0 -0
- package/lib/assets/fonts/nunito/nunito-semi-bold.woff +0 -0
- package/lib/assets/fonts/nunito/nunito-semi-bold.woff2 +0 -0
- package/lib/assets/fonts/optyweb/_variables.scss +405 -0
- package/lib/assets/fonts/optyweb/optyweb.scss +1571 -0
- package/lib/assets/fonts/optyweb/optyweb.woff +0 -0
- package/lib/assets/fonts/optyweb/optyweb.woff2 +0 -0
- package/lib/assets/i18n/common.en.json +248 -0
- package/lib/assets/i18n/common.fr.json +242 -0
- package/lib/assets/i18n/label.en.json +29 -0
- package/lib/assets/i18n/label.fr.json +29 -0
- package/lib/assets/images/common/check-mark.svg +3 -0
- package/lib/assets/images/favicon/android-chrome-192x192.png +0 -0
- package/lib/assets/images/favicon/android-chrome-512x512.png +0 -0
- package/lib/assets/images/favicon/apple-touch-icon.png +0 -0
- package/lib/assets/images/favicon/favicon-16x16.png +0 -0
- package/lib/assets/images/favicon/favicon-32x32.png +0 -0
- package/lib/assets/images/favicon/favicon-96x96.png +0 -0
- package/lib/assets/images/favicon/favicon.ico +0 -0
- package/lib/assets/images/favicon/site.webmanifest +19 -0
- package/lib/assets/images/icon/referential-icon.svg +1 -0
- package/lib/assets/images/login/login-bg.jpg +0 -0
- package/lib/assets/images/login/logo-cityway-baseline.svg +16 -0
- package/lib/assets/images/toast/warning.svg +3 -0
- package/lib/assets/styles/scss/_components.scss +14 -0
- package/lib/assets/styles/scss/_custom-bootstrap.scss +22 -0
- package/lib/assets/styles/scss/bootstrap/_accordion.scss +1 -0
- package/lib/assets/styles/scss/bootstrap/_alert.scss +32 -0
- package/lib/assets/styles/scss/bootstrap/_badge.scss +36 -0
- package/lib/assets/styles/scss/bootstrap/_breadcrumb.scss +46 -0
- package/lib/assets/styles/scss/bootstrap/_button-group.scss +107 -0
- package/lib/assets/styles/scss/bootstrap/_buttons.scss +324 -0
- package/lib/assets/styles/scss/bootstrap/_card.scss +107 -0
- package/lib/assets/styles/scss/bootstrap/_close.scss +8 -0
- package/lib/assets/styles/scss/bootstrap/_dropdown.scss +53 -0
- package/lib/assets/styles/scss/bootstrap/_forms.scss +259 -0
- package/lib/assets/styles/scss/bootstrap/_input-group.scss +61 -0
- package/lib/assets/styles/scss/bootstrap/_lists.scss +30 -0
- package/lib/assets/styles/scss/bootstrap/_modal.scss +152 -0
- package/lib/assets/styles/scss/bootstrap/_pagination.scss +21 -0
- package/lib/assets/styles/scss/bootstrap/_popover.scss +5 -0
- package/lib/assets/styles/scss/bootstrap/_progress.scss +6 -0
- package/lib/assets/styles/scss/bootstrap/_reboot.scss +5 -0
- package/lib/assets/styles/scss/bootstrap/_tables.scss +155 -0
- package/lib/assets/styles/scss/bootstrap/_tabs.scss +71 -0
- package/lib/assets/styles/scss/bootstrap/_tooltip.scss +3 -0
- package/lib/assets/styles/scss/bootstrap/_type.scss +55 -0
- package/lib/assets/styles/scss/components/_forms-firefox.scss +17 -0
- package/lib/assets/styles/scss/components/_leaflet.scss +41 -0
- package/lib/assets/styles/scss/components/_legend.scss +36 -0
- package/lib/assets/styles/scss/components/_ng-select.scss +148 -0
- package/lib/assets/styles/scss/components/_ng2-dragula.scss +36 -0
- package/lib/assets/styles/scss/components/_ng2-validation.scss +39 -0
- package/lib/assets/styles/scss/components/_ng5-slider.scss +28 -0
- package/lib/assets/styles/scss/components/_ngb-datepicker.scss +165 -0
- package/lib/assets/styles/scss/components/_ngb-timepicker.scss +19 -0
- package/lib/assets/styles/scss/components/_ngx-chips.scss +102 -0
- package/lib/assets/styles/scss/components/_ngx-editor.scss +10 -0
- package/lib/assets/styles/scss/components/_ngx-file-drop.scss +15 -0
- package/lib/assets/styles/scss/components/_ngx-intl-tel-input.scss +21 -0
- package/lib/assets/styles/scss/components/_ngx-slider.scss +34 -0
- package/lib/assets/styles/scss/components/_ngx-toast.scss +74 -0
- package/lib/assets/styles/scss/components/_pwd-policy.scss +18 -0
- package/lib/assets/styles/scss/components/_table.scss +8 -0
- package/lib/assets/styles/scss/components/_vis.scss +50 -0
- package/lib/assets/styles/scss/components/_wizard-stepper.scss +82 -0
- package/lib/assets/styles/scss/components/table/_table-action.scss +77 -0
- package/lib/assets/styles/scss/components/table/_table-bg-cell.scss +6 -0
- package/lib/assets/styles/scss/components/table/_table-double-scroll.scss +38 -0
- package/lib/assets/styles/scss/components/table/_table-filter.scss +128 -0
- package/lib/assets/styles/scss/components/table/_table-pagination.scss +34 -0
- package/lib/assets/styles/scss/components/table/_table-popover.scss +39 -0
- package/lib/assets/styles/scss/components/table/_table-sorting.scss +64 -0
- package/lib/assets/styles/scss/cw-ds/_reboot.scss +551 -0
- package/lib/assets/styles/scss/cw-ds/_root-bo.scss +9 -0
- package/lib/assets/styles/scss/cw-ds/_root-fo.scss +9 -0
- package/lib/assets/styles/scss/cw-ds/components/_alert.scss +76 -0
- package/lib/assets/styles/scss/cw-ds/components/_badge.scss +107 -0
- package/lib/assets/styles/scss/cw-ds/components/_btn-collapse.scss +15 -0
- package/lib/assets/styles/scss/cw-ds/components/_card.scss +66 -0
- package/lib/assets/styles/scss/cw-ds/components/_close.scss +6 -0
- package/lib/assets/styles/scss/cw-ds/components/_file-to-download.scss +46 -0
- package/lib/assets/styles/scss/cw-ds/components/_icon-notification.scss +30 -0
- package/lib/assets/styles/scss/cw-ds/components/_icon.scss +112 -0
- package/lib/assets/styles/scss/cw-ds/components/_numerical-range.scss +60 -0
- package/lib/assets/styles/scss/cw-ds/components/_stepper.scss +78 -0
- package/lib/assets/styles/scss/cw-ds/components/_tab.scss +81 -0
- package/lib/assets/styles/scss/cw-ds/components/_toast.scss +27 -0
- package/lib/assets/styles/scss/cw-ds/components/button/_button-bo-variant.scss +46 -0
- package/lib/assets/styles/scss/cw-ds/components/button/_button-fo-variant.scss +112 -0
- package/lib/assets/styles/scss/cw-ds/components/button/_button.scss +95 -0
- package/lib/assets/styles/scss/cw-ds/helpers/_spinner.scss +30 -0
- package/lib/assets/styles/scss/cw-ds/helpers/_stretched-link.scss +9 -0
- package/lib/assets/styles/scss/cw-ds/helpers/_visually-hidden.scss +18 -0
- package/lib/assets/styles/scss/cw-ds/mixins/_color.scss +16 -0
- package/lib/assets/styles/scss/cw-ds/mixins/_flex.scss +11 -0
- package/lib/assets/styles/scss/cw-ds/mixins/_root.scss +26 -0
- package/lib/assets/styles/scss/cw-ds/mixins/_spacing.scss +84 -0
- package/lib/assets/styles/scss/cw-ds/mixins/_type.scss +27 -0
- package/lib/assets/styles/scss/cw-ds/utilities/_alignment.scss +23 -0
- package/lib/assets/styles/scss/cw-ds/utilities/_flex.scss +96 -0
- package/lib/assets/styles/scss/cw-ds/utilities/_spacing.scss +3 -0
- package/lib/assets/styles/scss/cw-ds/utilities/_type.scss +3 -0
- package/lib/assets/styles/scss/styles-bo.scss +115 -0
- package/lib/assets/styles/scss/styles-fo.scss +115 -0
- package/lib/assets/styles/scss/variables/_colors.scss +43 -0
- package/lib/assets/styles/scss/variables/_custom.scss +451 -0
- package/lib/assets/styles/scss/variables/_site.scss +68 -0
- package/package.json +33 -0
- package/styles-bo.min.css +5 -0
- package/styles-bo.min.css.map +1 -0
- package/styles-fo.min.css +5 -0
- package/styles-fo.min.css.map +1 -0
|
@@ -0,0 +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> \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 ×\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 ×\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)\">×</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)\">×</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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"}
|