@cityway/bo-ui 1.0.1 → 1.0.3
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/cityway-bo-ui-1.0.3.tgz +0 -0
- package/fesm2022/cityway-bo-ui.mjs +1598 -0
- package/fesm2022/cityway-bo-ui.mjs.map +1 -0
- package/index.d.ts +509 -0
- package/package.json +34 -21
- package/styles.min.css +5 -0
- package/styles.min.css.map +1 -0
- package/.eslintrc.json +0 -37
- package/ng-package.json +0 -21
- package/src/lib/bo-ui.config.ts +0 -8
- package/src/lib/components/accordions/accordions.component.html +0 -16
- package/src/lib/components/accordions/accordions.component.spec.ts +0 -24
- package/src/lib/components/accordions/accordions.component.ts +0 -27
- package/src/lib/components/accordions/components/accordions-content.component.spec.ts +0 -24
- package/src/lib/components/accordions/components/accordions-content.component.ts +0 -28
- package/src/lib/components/alert/alert.component.html +0 -15
- package/src/lib/components/alert/alert.component.spec.ts +0 -24
- package/src/lib/components/alert/alert.component.ts +0 -36
- package/src/lib/components/badge/badge.component.html +0 -7
- package/src/lib/components/badge/badge.component.spec.ts +0 -24
- package/src/lib/components/badge/badge.component.ts +0 -24
- package/src/lib/components/button/button.component.html +0 -43
- package/src/lib/components/button/button.component.spec.ts +0 -25
- package/src/lib/components/button/button.component.ts +0 -47
- package/src/lib/components/card/card.component.html +0 -15
- package/src/lib/components/card/card.component.spec.ts +0 -25
- package/src/lib/components/card/card.component.ts +0 -30
- package/src/lib/components/custom-list/custom-list.component.html +0 -31
- package/src/lib/components/custom-list/custom-list.component.spec.ts +0 -24
- package/src/lib/components/custom-list/custom-list.component.ts +0 -42
- package/src/lib/components/drag-n-drop-list/drag-n-drop-list.component.html +0 -27
- package/src/lib/components/drag-n-drop-list/drag-n-drop-list.component.spec.ts +0 -24
- package/src/lib/components/drag-n-drop-list/drag-n-drop-list.component.ts +0 -40
- package/src/lib/components/form-field/form-field.component.html +0 -333
- package/src/lib/components/form-field/form-field.component.spec.ts +0 -24
- package/src/lib/components/form-field/form-field.component.ts +0 -256
- package/src/lib/components/icon/icon.component.html +0 -9
- package/src/lib/components/icon/icon.component.spec.ts +0 -25
- package/src/lib/components/icon/icon.component.ts +0 -31
- package/src/lib/components/layout/admin-layout/admin-layout.component.html +0 -17
- package/src/lib/components/layout/admin-layout/admin-layout.component.ts +0 -181
- package/src/lib/components/layout/footer/footer.component.html +0 -51
- package/src/lib/components/layout/footer/footer.component.ts +0 -65
- package/src/lib/components/layout/header/header.component.html +0 -71
- package/src/lib/components/layout/header/header.component.ts +0 -95
- package/src/lib/components/layout/menu/menu.component.html +0 -115
- package/src/lib/components/layout/menu/menu.component.ts +0 -75
- package/src/lib/components/layout/menu-accordion/accordion.directive.ts +0 -57
- package/src/lib/components/layout/menu-accordion/accordionanchor.directive.ts +0 -21
- package/src/lib/components/layout/menu-accordion/accordionlink.directive.ts +0 -45
- package/src/lib/components/layout/menu-accordion/index.ts +0 -3
- package/src/lib/components/layout/sidebar/sidebar.component.html +0 -62
- package/src/lib/components/layout/sidebar/sidebar.component.ts +0 -28
- package/src/lib/components/layout/skip-links/skip-links.component.html +0 -3
- package/src/lib/components/layout/skip-links/skip-links.component.spec.ts +0 -25
- package/src/lib/components/layout/skip-links/skip-links.component.ts +0 -19
- package/src/lib/components/layout/title-breadcrumb/title-breadcrumb.component.html +0 -10
- package/src/lib/components/layout/title-breadcrumb/title-breadcrumb.component.spec.ts +0 -25
- package/src/lib/components/layout/title-breadcrumb/title-breadcrumb.component.ts +0 -16
- package/src/lib/components/legend/legend.component.html +0 -23
- package/src/lib/components/legend/legend.component.spec.ts +0 -24
- package/src/lib/components/legend/legend.component.ts +0 -28
- package/src/lib/components/loader/loader.component.html +0 -4
- package/src/lib/components/loader/loader.component.ts +0 -16
- package/src/lib/components/modals/modals.component.html +0 -71
- package/src/lib/components/modals/modals.component.spec.ts +0 -25
- package/src/lib/components/modals/modals.component.ts +0 -49
- package/src/lib/components/tab/components/tab-content.component.spec.ts +0 -24
- package/src/lib/components/tab/components/tab-content.component.ts +0 -27
- package/src/lib/components/tab/tab.component.html +0 -59
- package/src/lib/components/tab/tab.component.spec.ts +0 -24
- package/src/lib/components/tab/tab.component.ts +0 -79
- package/src/lib/components/table/components/actions-on-table/actions-on-table.component.html +0 -50
- package/src/lib/components/table/components/actions-on-table/actions-on-table.component.spec.ts +0 -24
- package/src/lib/components/table/components/actions-on-table/actions-on-table.component.ts +0 -33
- package/src/lib/components/table/components/filter/filter.component.html +0 -21
- package/src/lib/components/table/components/filter/filter.component.spec.ts +0 -24
- package/src/lib/components/table/components/filter/filter.component.ts +0 -38
- package/src/lib/components/table/table.component.html +0 -104
- package/src/lib/components/table/table.component.spec.ts +0 -24
- package/src/lib/components/table/table.component.ts +0 -85
- package/src/lib/components/wizard-stepper/components/wizard-step.component.spec.ts +0 -25
- package/src/lib/components/wizard-stepper/components/wizard-step.component.ts +0 -16
- package/src/lib/components/wizard-stepper/wizard-stepper.component.html +0 -45
- package/src/lib/components/wizard-stepper/wizard-stepper.component.spec.ts +0 -25
- package/src/lib/components/wizard-stepper/wizard-stepper.component.ts +0 -70
- package/src/lib/directives/double-scroll.ts +0 -64
- package/src/lib/directives/rwd-tabs.ts +0 -99
- package/src/lib/directives/show-hide-password.ts +0 -61
- package/src/lib/enum/drag-item.enum.ts +0 -5
- package/src/lib/enum/field-type.enum.ts +0 -36
- package/src/lib/enum/legend-type.enum.ts +0 -5
- package/src/lib/enum/modals.enum.ts +0 -6
- package/src/lib/enum/ui-type.enum.ts +0 -11
- package/src/lib/models/ui/custom-list.model.ts +0 -14
- package/src/lib/models/ui/legend.model.ts +0 -17
- package/src/lib/models/ui/table.model.ts +0 -33
- package/src/lib/services/ui/modals.service.ts +0 -47
- package/src/lib/services/version.service.ts +0 -22
- package/src/public-api.ts +0 -49
- package/tsconfig.lib.json +0 -18
- package/tsconfig.lib.prod.json +0 -11
- package/tsconfig.spec.json +0 -14
- package/tslint.json +0 -17
- /package/{src/lib → lib}/assets/fonts/bo/_variables.scss +0 -0
- /package/{src/lib → lib}/assets/fonts/bo/bo.scss +0 -0
- /package/{src/lib → lib}/assets/fonts/bo/bo.woff +0 -0
- /package/{src/lib → lib}/assets/fonts/bo/bo.woff2 +0 -0
- /package/{src/lib → lib}/assets/fonts/nunito/_nunito.scss +0 -0
- /package/{src/lib → lib}/assets/fonts/nunito/nunito-bold.woff +0 -0
- /package/{src/lib → lib}/assets/fonts/nunito/nunito-bold.woff2 +0 -0
- /package/{src/lib → lib}/assets/fonts/nunito/nunito-extrabold.woff +0 -0
- /package/{src/lib → lib}/assets/fonts/nunito/nunito-extrabold.woff2 +0 -0
- /package/{src/lib → lib}/assets/fonts/nunito/nunito-regular.woff +0 -0
- /package/{src/lib → lib}/assets/fonts/nunito/nunito-regular.woff2 +0 -0
- /package/{src/lib → lib}/assets/fonts/nunito/nunito-semi-bold.woff +0 -0
- /package/{src/lib → lib}/assets/fonts/nunito/nunito-semi-bold.woff2 +0 -0
- /package/{src/lib → lib}/assets/fonts/optyweb/_variables.scss +0 -0
- /package/{src/lib → lib}/assets/fonts/optyweb/optyweb.scss +0 -0
- /package/{src/lib → lib}/assets/fonts/optyweb/optyweb.woff +0 -0
- /package/{src/lib → lib}/assets/fonts/optyweb/optyweb.woff2 +0 -0
- /package/{src/lib → lib}/assets/i18n/common.en.json +0 -0
- /package/{src/lib → lib}/assets/i18n/common.fr.json +0 -0
- /package/{src/lib → lib}/assets/i18n/label.en.json +0 -0
- /package/{src/lib → lib}/assets/i18n/label.fr.json +0 -0
- /package/{src/lib → lib}/assets/images/common/bg-loader.svg +0 -0
- /package/{src/lib → lib}/assets/images/common/bg-menu.svg +0 -0
- /package/{src/lib → lib}/assets/images/common/bg-round.svg +0 -0
- /package/{src/lib → lib}/assets/images/common/check-mark.svg +0 -0
- /package/{src/lib → lib}/assets/images/common/loader.svg +0 -0
- /package/{src/lib → lib}/assets/images/common/logo-en-bw.svg +0 -0
- /package/{src/lib → lib}/assets/images/common/logo-en.svg +0 -0
- /package/{src/lib → lib}/assets/images/common/logo-fr-bw.svg +0 -0
- /package/{src/lib → lib}/assets/images/common/logo-fr.svg +0 -0
- /package/{src/lib → lib}/assets/images/favicon/android-chrome-192x192.png +0 -0
- /package/{src/lib → lib}/assets/images/favicon/android-chrome-512x512.png +0 -0
- /package/{src/lib → lib}/assets/images/favicon/apple-touch-icon.png +0 -0
- /package/{src/lib → lib}/assets/images/favicon/favicon-16x16.png +0 -0
- /package/{src/lib → lib}/assets/images/favicon/favicon-32x32.png +0 -0
- /package/{src/lib → lib}/assets/images/favicon/favicon-96x96.png +0 -0
- /package/{src/lib → lib}/assets/images/favicon/favicon.ico +0 -0
- /package/{src/lib → lib}/assets/images/favicon/site.webmanifest +0 -0
- /package/{src/lib → lib}/assets/images/icon/referential-icon.svg +0 -0
- /package/{src/lib → lib}/assets/images/login/login-bg.jpg +0 -0
- /package/{src/lib → lib}/assets/images/login/logo-cityway-baseline.svg +0 -0
- /package/{src/lib → lib}/assets/images/toast/warning.svg +0 -0
- /package/{src/lib → lib}/assets/styles/scss/_components.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/_core.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/_custom-bootstrap.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_accordion.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_alert.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_badge.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_breadcrumb.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_button-group.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_buttons.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_card.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_close.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_dropdown.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_forms.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_input-group.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_lists.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_modal.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_pagination.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_popover.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_progress.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_reboot.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_tables.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_tabs.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_tooltip.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/bootstrap/_type.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_forms-firefox.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_leaflet.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_legend.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ng-select.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ng2-dragula.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ng2-validation.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ng5-slider.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ngb-datepicker.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ngb-timepicker.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ngx-chips.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ngx-editor.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ngx-file-drop.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ngx-intl-tel-input.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ngx-slider.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_ngx-toast.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_pwd-policy.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_table.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_vis.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/_wizard-stepper.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/table/_table-action.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/table/_table-bg-cell.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/table/_table-double-scroll.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/table/_table-filter.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/table/_table-pagination.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/table/_table-popover.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/components/table/_table-sorting.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/core/_footer.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/core/_header.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/core/_layout.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/core/_menu.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/core/_sidebar.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/mixins/_utilities.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/styles.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/tools/_focus.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/tools/_loader.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/variables/_colors.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/variables/_custom.scss +0 -0
- /package/{src/lib → lib}/assets/styles/scss/variables/_site.scss +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cityway-bo-ui.mjs","sources":["../../../projects/bo-ui/src/lib/components/layout/menu-accordion/accordion.directive.ts","../../../projects/bo-ui/src/lib/components/layout/menu-accordion/accordionlink.directive.ts","../../../projects/bo-ui/src/lib/components/layout/menu-accordion/accordionanchor.directive.ts","../../../projects/bo-ui/src/lib/components/layout/menu/menu.component.ts","../../../projects/bo-ui/src/lib/components/layout/menu/menu.component.html","../../../projects/bo-ui/src/lib/components/layout/sidebar/sidebar.component.ts","../../../projects/bo-ui/src/lib/components/layout/sidebar/sidebar.component.html","../../../projects/bo-ui/src/lib/components/layout/skip-links/skip-links.component.ts","../../../projects/bo-ui/src/lib/components/layout/skip-links/skip-links.component.html","../../../projects/bo-ui/src/lib/components/layout/footer/footer.component.ts","../../../projects/bo-ui/src/lib/components/layout/footer/footer.component.html","../../../projects/bo-ui/src/lib/components/layout/header/header.component.ts","../../../projects/bo-ui/src/lib/components/layout/header/header.component.html","../../../projects/bo-ui/src/lib/components/layout/admin-layout/admin-layout.component.ts","../../../projects/bo-ui/src/lib/components/layout/admin-layout/admin-layout.component.html","../../../projects/bo-ui/src/lib/components/layout/title-breadcrumb/title-breadcrumb.component.ts","../../../projects/bo-ui/src/lib/components/layout/title-breadcrumb/title-breadcrumb.component.html","../../../projects/bo-ui/src/lib/components/accordions/components/accordions-content.component.ts","../../../projects/bo-ui/src/lib/components/accordions/accordions.component.ts","../../../projects/bo-ui/src/lib/components/accordions/accordions.component.html","../../../projects/bo-ui/src/lib/components/alert/alert.component.ts","../../../projects/bo-ui/src/lib/components/alert/alert.component.html","../../../projects/bo-ui/src/lib/components/icon/icon.component.ts","../../../projects/bo-ui/src/lib/components/icon/icon.component.html","../../../projects/bo-ui/src/lib/components/badge/badge.component.ts","../../../projects/bo-ui/src/lib/components/badge/badge.component.html","../../../projects/bo-ui/src/lib/components/button/button.component.ts","../../../projects/bo-ui/src/lib/components/button/button.component.html","../../../projects/bo-ui/src/lib/components/card/card.component.ts","../../../projects/bo-ui/src/lib/components/card/card.component.html","../../../projects/bo-ui/src/lib/components/custom-list/custom-list.component.ts","../../../projects/bo-ui/src/lib/components/custom-list/custom-list.component.html","../../../projects/bo-ui/src/lib/components/drag-n-drop-list/drag-n-drop-list.component.ts","../../../projects/bo-ui/src/lib/components/drag-n-drop-list/drag-n-drop-list.component.html","../../../projects/bo-ui/src/lib/enum/field-type.enum.ts","../../../projects/bo-ui/src/lib/directives/show-hide-password.ts","../../../projects/bo-ui/src/lib/components/form-field/form-field.component.ts","../../../projects/bo-ui/src/lib/components/form-field/form-field.component.html","../../../projects/bo-ui/src/lib/enum/legend-type.enum.ts","../../../projects/bo-ui/src/lib/components/legend/legend.component.ts","../../../projects/bo-ui/src/lib/components/legend/legend.component.html","../../../projects/bo-ui/src/lib/components/loader/loader.component.ts","../../../projects/bo-ui/src/lib/components/loader/loader.component.html","../../../projects/bo-ui/src/lib/enum/modals.enum.ts","../../../projects/bo-ui/src/lib/enum/ui-type.enum.ts","../../../projects/bo-ui/src/lib/components/modals/modals.component.ts","../../../projects/bo-ui/src/lib/components/modals/modals.component.html","../../../projects/bo-ui/src/lib/components/tab/components/tab-content.component.ts","../../../projects/bo-ui/src/lib/components/tab/tab.component.ts","../../../projects/bo-ui/src/lib/components/tab/tab.component.html","../../../projects/bo-ui/src/lib/directives/double-scroll.ts","../../../projects/bo-ui/src/lib/models/ui/table.model.ts","../../../projects/bo-ui/src/lib/components/table/components/actions-on-table/actions-on-table.component.ts","../../../projects/bo-ui/src/lib/components/table/components/actions-on-table/actions-on-table.component.html","../../../projects/bo-ui/src/lib/components/table/table.component.ts","../../../projects/bo-ui/src/lib/components/table/table.component.html","../../../projects/bo-ui/src/lib/components/wizard-stepper/components/wizard-step.component.ts","../../../projects/bo-ui/src/lib/components/wizard-stepper/wizard-stepper.component.ts","../../../projects/bo-ui/src/lib/components/wizard-stepper/wizard-stepper.component.html","../../../projects/bo-ui/src/lib/services/ui/modals.service.ts","../../../projects/bo-ui/src/public-api.ts","../../../projects/bo-ui/src/cityway-bo-ui.ts"],"sourcesContent":["\r\nimport { filter } from 'rxjs/operators';\r\nimport { AfterContentChecked, AfterViewInit, Directive, OnInit } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\n\r\n\r\nimport { AccordionLinkDirective } from './accordionlink.directive';\r\n\r\n@Directive({\r\n selector: '[appAccordion]',\r\n standalone: true\r\n})\r\nexport class AccordionDirective implements AfterContentChecked {\r\n\r\n protected navlinks: AccordionLinkDirective[] = [];\r\n\r\n constructor(private router: Router) {\r\n setTimeout(() => this.checkOpenLinks());\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.router.events.pipe(filter((event) => event instanceof NavigationEnd)).subscribe((e) => this.checkOpenLinks());\r\n }\r\n\r\n closeOtherLinks(openLink: AccordionLinkDirective): void {\r\n this.navlinks.forEach((link: AccordionLinkDirective) => {\r\n if (link !== openLink) {\r\n link.open = false;\r\n }\r\n });\r\n }\r\n\r\n addLink(link: AccordionLinkDirective): void {\r\n this.navlinks.push(link);\r\n }\r\n\r\n removeGroup(link: AccordionLinkDirective): void {\r\n const index = this.navlinks.indexOf(link);\r\n if (index !== -1) {\r\n this.navlinks.splice(index, 1);\r\n }\r\n }\r\n\r\n checkOpenLinks() {\r\n this.navlinks.forEach((link: AccordionLinkDirective) => {\r\n if (link.group) {\r\n const routeUrl = this.router.url;\r\n const currentUrl = routeUrl.split('/');\r\n if (currentUrl.indexOf(link.group) > 0) {\r\n link.open = true;\r\n this.closeOtherLinks(link);\r\n }\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { Directive, HostBinding, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { AccordionDirective } from './accordion.directive';\r\n\r\n\r\n@Directive({\r\n selector: '[appAccordionLink]',\r\n standalone: true\r\n})\r\nexport class AccordionLinkDirective implements OnInit, OnDestroy {\r\n\r\n @Input() public group: any;\r\n\r\n @HostBinding('class.open')\r\n\r\n protected _open: boolean;\r\n protected nav: AccordionDirective;\r\n\r\n constructor(@Inject(AccordionDirective) nav: AccordionDirective) {\r\n this.nav = nav;\r\n }\r\n\r\n @Input()\r\n get open(): boolean {\r\n return this._open;\r\n }\r\n\r\n set open(value: boolean) {\r\n this._open = value;\r\n if (value) {\r\n this.nav.closeOtherLinks(this);\r\n }\r\n }\r\n\r\n ngOnInit(): any {\r\n this.nav.addLink(this);\r\n }\r\n\r\n ngOnDestroy(): any {\r\n this.nav.removeGroup(this);\r\n }\r\n\r\n toggle(): any {\r\n this.open = !this.open;\r\n }\r\n}\r\n","import { Directive, HostListener, Inject } from '@angular/core';\r\n\r\nimport { AccordionLinkDirective } from './accordionlink.directive';\r\n\r\n@Directive({\r\n selector: '[appAccordionToggle]',\r\n standalone: true\r\n})\r\nexport class AccordionAnchorDirective {\r\n\r\n protected navlink: AccordionLinkDirective;\r\n\r\n constructor( @Inject(AccordionLinkDirective) navlink: AccordionLinkDirective) {\r\n this.navlink = navlink;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(e: any) {\r\n this.navlink.toggle();\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { Router, RouterModule } from '@angular/router';\r\nimport { NgbCollapseModule, NgbDropdownModule, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { NgxPermissionsService } from 'ngx-permissions';\r\nimport { AccordionDirective, AccordionLinkDirective } from '../menu-accordion';\r\n\r\n@Component({\r\n selector: 'app-menu',\r\n templateUrl: './menu.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n NgbTooltipModule,\r\n NgbCollapseModule,\r\n NgbDropdownModule,\r\n AccordionLinkDirective,\r\n TranslateModule,\r\n AccordionLinkDirective,\r\n AccordionDirective\r\n ]\r\n})\r\nexport class MenuComponent {\r\n\r\n // @Input() isOpened = true;\r\n\r\n // public menus: MenuItem[];\r\n // public currentRoute: string;\r\n\t// public isCollapsed: boolean [] = [];\r\n\r\n // constructor(\r\n // public menuService: MenuService,\r\n // public translate: TranslateService,\r\n // private permissionStoreService: NgxPermissionsService,\r\n // private router: Router\r\n // ) {\r\n\r\n // this.menus = this.menuService.getAll();\r\n // this.menuService.menu$.subscribe({ next: menu => this.menus = menu });\r\n\r\n // this.currentRoute = this.router.url.split('/')[1];\r\n // // check for permissions\r\n // this.menus.forEach(menu => {\r\n // if(this.currentRoute && menu.state.includes(this.currentRoute)) {\r\n // this.isCollapsed.push(false);\r\n // } else {\r\n // this.isCollapsed.push(true);\r\n // }\r\n // if (menu.permissions) {\r\n // this.permissionStoreService.hasPermission(menu.permissions).then(hasPermission => menu.hide = !hasPermission);\r\n // }\r\n // if (menu.children) {\r\n // menu.children.forEach(childMenu => {\r\n // if (childMenu.permissions) {\r\n // this.permissionStoreService.hasPermission(childMenu.permissions).then(r => childMenu.hide = !r);\r\n // }\r\n // });\r\n // }\r\n // });\r\n // router.events.subscribe(() => this.currentRoute = null);\r\n // }\r\n\r\n\r\n // public onShow(index): void {\r\n // this.menus.forEach((menu, indexMenu) => {\r\n // if (indexMenu !== index) {\r\n // this.isCollapsed[indexMenu] = true;\r\n // }\r\n // });\r\n // this.isCollapsed[index] = !this.isCollapsed[index];\r\n // }\r\n\r\n}\r\n","<!-- <ul class=\"navigation\" appAccordion>\r\n <ng-container *ngFor=\"let menuitem of menus; index as Index\">\r\n <ng-container *ngIf=\"!menuitem.hide\">\r\n <li *ngIf=\"menuitem.type !== 'divider' && menuitem.type !== 'title'\" appAccordionLink [group]=\"menuitem.state\"\r\n [ngClass]=\"menuitem.state.includes(currentRoute) ? 'navigation-item menu-opened' : 'navigation-item'\" routerLinkActive=\"active\"> -->\r\n <!-- INTERNAL LINK -->\r\n <!-- <a *ngIf=\"menuitem.type === 'link' && isOpened\" [ngClass]=\"{'disabled': menuitem.disabled}\" class=\"navigation-link\"\r\n [routerLink]=\"menuitem.state\">\r\n <ng-container [ngTemplateOutlet]=\"menuItem\"></ng-container>\r\n </a>\r\n <a *ngIf=\"menuitem.type === 'link' && !isOpened\" [ngClass]=\"{'disabled': menuitem.disabled}\" class=\"navigation-link\"\r\n [routerLink]=\"menuitem.state\" placement=\"right\" [ngbTooltip]=\"menuitem.name | translate\" container=\"body\"\r\n tooltipClass=\"menu-tooltip\">\r\n <ng-container [ngTemplateOutlet]=\"menuItem\"></ng-container>\r\n </a> -->\r\n <!-- EXTERNAL LINK ou EXTERNAL LINK IN A TAB-->\r\n <!-- <a *ngIf=\"menuitem.type === 'extLink' || menuitem.type === 'extTabLink' && isOpened\" class=\"navigation-link\"\r\n [href]=\"menuitem.state\" [attr.target]=\"menuitem.type === 'extTabLink' ? '_blanck' : null\">\r\n <ng-container [ngTemplateOutlet]=\"menuItem\"></ng-container>\r\n </a>\r\n <a *ngIf=\"menuitem.type === 'extLink' || menuitem.type === 'extTabLink' && !isOpened\" class=\"navigation-link\"\r\n [href]=\"menuitem.state\" [attr.target]=\"menuitem.type === 'extTabLink' ? '_blanck' : null\"\r\n placement=\"right\" [ngbTooltip]=\"menuitem.name | translate\" container=\"body\"\r\n tooltipClass=\"menu-tooltip\">\r\n <ng-container [ngTemplateOutlet]=\"menuItem\"></ng-container>\r\n </a> -->\r\n\r\n<!--\r\n <ng-template #menuItem>\r\n <span class=\"{{ menuitem.icon }} me-3 icon\" aria-hidden=\"true\"></span>\r\n <span class=\"title me-auto\">{{ menuitem.name | translate }}</span>\r\n <span *ngFor=\"let badge of menuitem.badge\" class=\"badge badge-{{ badge.type }} me-3\">{{ badge.value }}</span>\r\n </ng-template>\r\n\r\n <ng-container *ngIf=\"isOpened\">\r\n <button *ngIf=\"menuitem.type === 'sub' || menuitem.type === 'sub-reorder'\" type=\"button\" class=\"navigation-link btn navigation-btn\"\r\n (click)=\"onShow(Index)\" [ngClass]=\"isCollapsed[Index] ? 'collapsed' : ''\"\r\n [attr.aria-expanded]=\"!isCollapsed[Index]\" aria-controls=\"collapseExample\">\r\n <ng-container [ngTemplateOutlet]=\"menuItem\"></ng-container>\r\n <span class=\"menu-caret optyweb cw-nav-collapse2\" aria-hidden=\"true\"></span>\r\n </button>\r\n <ul *ngIf=\"menuitem.type === 'sub'\" class=\"navigation-submenu\" [ngbCollapse]\r\n [(ngbCollapse)]=\"isCollapsed[Index]\">\r\n <ng-container *ngFor=\"let childitem of menuitem.children\">\r\n <li *ngIf=\"!childitem.hide\" class=\"navigation-item\" routerLinkActive=\"active\"\r\n [ngClass]=\"{disabled: childitem.disabled}\">\r\n <a [routerLink]=\"['/', menuitem.state, childitem.state ]\" class=\"navigation-submenu-link\">\r\n {{ childitem.name | translate }}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <ul *ngIf=\"menuitem.type === 'sub-reorder'\" class=\"navigation-submenu\" [ngbCollapse]\r\n [(ngbCollapse)]=\"isCollapsed[Index]\">\r\n <ng-container *ngFor=\"let childitem of menuitem.children\">\r\n <li *ngIf=\"!childitem.hide\" class=\"navigation-item\" routerLinkActive=\"active\"\r\n [ngClass]=\"{disabled: childitem.disabled}\">\r\n <a [routerLink]=\"childitem.state\" class=\"navigation-submenu-link\">\r\n {{ childitem.name | translate }}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </ng-container>\r\n </li>\r\n\r\n <ng-container *ngIf=\"!isOpened\">\r\n <li ngbDropdown *ngIf=\"menuitem.type !== 'divider' && menuitem.type !== 'title'\" appAccordionLink\r\n [group]=\"menuitem.state\" class=\"navigation-dropdown\" [autoClose]=\"true\"\r\n [container]=\"'body'\" [dropdownClass]=\"'navigation-submenu-dropdown'\" routerLinkActive=\"active\" #myDrop=\"ngbDropdown\"\r\n (mouseenter)=\"$event.stopPropagation(); myDrop.open();\" (mouseleave)=\"$event.stopPropagation(); myDrop.close();\">\r\n <button *ngIf=\"menuitem.type === 'sub' || menuitem.type === 'sub-reorder'\" type=\"button\" class=\"navigation-link btn navigation-btn\"\r\n id=\"dropdownBasic1\" ngbDropdownToggle (click)=\"onShow(Index)\">\r\n <span class=\"{{ menuitem.icon }} me-3 icon\" aria-hidden=\"true\"></span>\r\n <span class=\"title me-auto\">{{ menuitem.name | translate }}</span>\r\n <span *ngFor=\"let badge of menuitem.badge\" class=\"badge badge-{{ badge.type }} me-3\">{{ badge.value\r\n }}</span>\r\n <span class=\"menu-caret optyweb cw-nav-expand2\" aria-hidden=\"true\"></span>\r\n </button>\r\n <ul ngbDropdownMenu *ngIf=\"menuitem.type === 'sub'\" class=\"navigation-submenu\"\r\n [ngClass]=\"'navigation-submenu-collapsed'\"\r\n (mouseenter)=\"$event.stopPropagation(); myDrop.open();\" (mouseleave)=\"$event.stopPropagation(); myDrop.close();\">\r\n <ng-container *ngFor=\"let childitem of menuitem.children\">\r\n <li *ngIf=\"!childitem.hide\" class=\"navigation-item\" routerLinkActive=\"active\"\r\n [ngClass]=\"{disabled: childitem.disabled}\">\r\n <a [routerLink]=\"['/', menuitem.state, childitem.state ]\" class=\"navigation-submenu-link\" ngbDropdownItem>\r\n {{ childitem.name | translate }}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <ul ngbDropdownMenu *ngIf=\"menuitem.type === 'sub-reorder'\" class=\"navigation-submenu\"\r\n [ngClass]=\"'navigation-submenu-collapsed'\"\r\n (mouseenter)=\"$event.stopPropagation(); myDrop.open();\" (mouseleave)=\"$event.stopPropagation(); myDrop.close();\">\r\n <ng-container *ngFor=\"let childitem of menuitem.children\">\r\n <li *ngIf=\"!childitem.hide\" class=\"navigation-item\" routerLinkActive=\"active\"\r\n [ngClass]=\"{disabled: childitem.disabled}\">\r\n <a [routerLink]=\"childitem.state\" class=\"navigation-submenu-link\" ngbDropdownItem>\r\n {{ childitem.name | translate }}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n\r\n <li *ngIf=\"menuitem.type === 'divider'\" class=\"navigation-item\">\r\n <hr />\r\n </li>\r\n <li *ngIf=\"menuitem.type === 'title'\" class=\"navigation-item\">\r\n <span class=\"navigation-title\">{{ menuitem.name | translate }}</span>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n</ul> -->\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { MenuComponent } from '../menu/menu.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n MenuComponent,\r\n NgbTooltipModule,\r\n CommonModule,\r\n RouterModule\r\n ]\r\n})\r\nexport class SidebarComponent {\r\n\r\n @Output() toggleSidenav = new EventEmitter<void>();\r\n @Input() isOpened: boolean;\r\n\r\n public onClick() {\r\n this.toggleSidenav.emit()\r\n }\r\n}\r\n","<div class=\"sidebar-scroll\">\r\n <div class=\"sidebar\">\r\n <nav class=\"navbar custom-navbar main-brand justify-content-center text-center\">\r\n <a class=\"navbar-brand text-decoration-none\" [routerLink]=\"['/']\" [ngClass]=\"{'invisible': !isOpened}\">\r\n <div class=\"navbar-brand-name text-wrap\">\r\n <!-- {{ configuration.appSettings.name }} -->\r\n </div>\r\n <div class=\"navbar-brand-project\">\r\n <!-- {{ configuration.appSettings.clientName }} -->\r\n </div>\r\n </a>\r\n <button type=\"button\" class=\"btn btn-primary btn-close-menu d-lg-none\" (click)=\"onClick()\">\r\n <span class=\"optyweb cw-toolbar-close1\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">{{ '_COMMON._SIDEBAR.CLOSE_BTN' | translate }}</span>\r\n </button>\r\n </nav>\r\n\r\n <!-- main navigation -->\r\n <!-- <nav *ngIf=\"menuService.menu$ | async\" class=\"main-menu\">\r\n <app-menu [isOpened]=\"isOpened\"></app-menu>\r\n </nav> -->\r\n\r\n <nav class=\"navbar custom-navbar sidebar-footer bg-white\" [ngClass]=\"{'sidebar-footer-closed': !isOpened}\">\r\n <ul class=\"navbar-nav w-100\">\r\n <!-- <li class=\"nav-item\">\r\n <a class=\"btn nav-link d-flex\" href=\"assets/docs/fr/manuel.pdf\" container=\"body\" type=\"button\"\r\n [ngbTooltip]=\"'_COMMON._USER.LBL_USER_MANUAL' | translate\" [placement]=\"isOpened ? 'top' : 'right'\">\r\n <span class=\"bo-icons bo-manual\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">{{ '_COMMON._USER.LBL_USER_MANUAL' | translate }}</span>\r\n </a>\r\n </li>\r\n <ng-container *ngIf=\"authService.isLoggedIn()\">\r\n <li class=\"nav-item\">\r\n <button (click)=\"authService.logout()\" class=\"btn nav-link d-flex\" container=\"body\" type=\"button\"\r\n [ngbTooltip]=\"'_COMMON._APPLICATION.LOGOUT' | translate\" [placement]=\"isOpened ? 'top' : 'right'\">\r\n <span class=\"optyweb cw-nav-connexion\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">{{ '_COMMON._APPLICATION.LOGOUT' | translate }}</span>\r\n </button>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!authService.isLoggedIn()\">\r\n <li class=\"nav-item\">\r\n <button (click)=\"authService.startAuthentication()\" class=\"btn nav-link d-flex\" container=\"body\"\r\n type=\"button\" [ngbTooltip]=\"'_COMMON._APPLICATION.LOGIN' | translate\"\r\n [placement]=\"isOpened ? 'top' : 'right'\">\r\n <span class=\"optyweb cw-nav-connexion\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">{{ '_COMMON._APPLICATION.LOGIN' | translate }}</span>\r\n </button>\r\n </li>\r\n </ng-container>\r\n <li class=\"nav-item docked-hidden\">\r\n <a [href]=\"configuration.authentication.portalSettings.urlApplications\" class=\"nav-link d-flex\"\r\n container=\"body\" [ngbTooltip]=\"'_COMMON._APPLICATION.CHANGE' | translate\"\r\n [placement]=\"isOpened ? 'top' : 'right'\">\r\n <span class=\"bo-icons bo-change-app\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">{{ '_COMMON._APPLICATION.CHANGE' | translate }}</span>\r\n </a>\r\n </li> -->\r\n </ul>\r\n </nav>\r\n </div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-skip-links',\r\n templateUrl: './skip-links.component.html',\r\n standalone: true,\r\n imports: [\r\n TranslateModule\r\n ]\r\n})\r\nexport class SkipLinksComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"skip-links\">\r\n <a href=\"#content\">{{ '_COMMON._SKIP_LINKS.CONTENT' | translate }}</a>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n// import { Configuration } from '../../../models/configuration/configuration';\r\n// import { KeyVersion, Version } from '../../../models/version';\r\n// import { VersionService } from '../../../services/version.service';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n CommonModule\r\n ]\r\n})\r\nexport class FooterComponent implements OnInit {\r\n // public configuration: Configuration;\r\n // public versions: Version;\r\n // public productVersion: KeyVersion;\r\n public modalRef: NgbModalRef;\r\n\r\n private _today: number = Date.now();\r\n\r\n constructor(\r\n // private versionService: VersionService,\r\n private modalService: NgbModal\r\n ) {\r\n // this.configuration = JSON.parse(localStorage.getItem('configuration')) as Configuration;\r\n }\r\n\r\n public get today(): number {\r\n return this._today;\r\n }\r\n public set today(value: number) {\r\n this._today = value;\r\n }\r\n\r\n ngOnInit(): void {\r\n // this.versionService.get().subscribe({\r\n // next: (version: Version) => {\r\n // this.versions = version;\r\n // const keys = this.versions.bundle.projects.filter(x => x.name === this.configuration.appSettings.name);\r\n // if (keys[0]) {\r\n // this.productVersion = keys[0];\r\n // }\r\n // }\r\n // });\r\n }\r\n\r\n public open(content, size: string = 'lg'): void {\r\n\r\n this.modalRef = this.modalService.open(content, {\r\n size,\r\n ariaLabelledBy: 'modal-basic-title',\r\n centered: true\r\n });\r\n }\r\n\r\n public close(): void {\r\n this.modalRef.dismiss();\r\n }\r\n\r\n}\r\n","<footer role=\"contentinfo\">\r\n <nav class=\"navbar custom-navbar main-footer px-3\">\r\n <ul class=\"list-inline text-center mb-0\">\r\n <li class=\"list-inline-item\">\r\n <span class=\"me-1\">Copyright © {{today | date:'yyyy'}}</span>\r\n Cityway\r\n </li>\r\n <!-- <li class=\"list-inline-item\">\r\n <a href=\"mailto:{{configuration.appSettings.emailSupport}}\">{{configuration.appSettings.emailSupport}}</a>\r\n </li>\r\n <li class=\"list-inline-item\">\r\n @if (versions) {\r\n <button type=\"button\" class=\"btn btn-link p-0 border-0\" (click)=\"open(modalversion, 'md')\">\r\n {{versions.bundle.version}}\r\n </button>\r\n }\r\n @else {\r\n {{configuration.appSettings.version}}\r\n }\r\n </li> -->\r\n </ul>\r\n </nav>\r\n</footer>\r\n\r\n<!-- <ng-template #modalversion let-c=\"close\" let-d=\"dismiss\">\r\n <div class=\"modal-header\">\r\n <h1 id=\"modal-basic-title\" class=\"modal-title\">{{productVersion.name}} - {{productVersion.version}} </h1>\r\n <button type=\"button\" class=\"btn-close\" attr.aria-label=\"{{'_COMMON._ACTION.CLOSE' | translate}}\" (click)=\"close()\">\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <p class=\"fw-bold\">{{'_COMMON._VERSION.INCLUDED' | translate}}</p>\r\n\r\n <table class=\"table table-bordered table-striped\">\r\n <caption class=\"visually-hidden\"\r\n [innerHTML]=\"'_COMMON._TABLE.CAPTION' | translate: { label: '_COMMON._VERSION.INCLUDED' | translate } \">\r\n </caption>\r\n <tbody>\r\n <tr *ngFor=\"let version of versions.bundle.projects\">\r\n <td>{{version.name}}</td>\r\n <td>{{version.version}}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"close()\">\r\n {{'_COMMON._ACTION.CLOSE' | translate}}\r\n </button>\r\n </div>\r\n</ng-template> -->\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { User } from 'oidc-client';\r\nimport { Parent } from '../admin-layout/admin-layout.component';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n standalone: true,\r\n imports: [\r\n ReactiveFormsModule,\r\n RouterModule,\r\n CommonModule,\r\n TranslateModule,\r\n NgbDropdownModule\r\n ]\r\n})\r\n\r\nexport class HeaderComponent implements OnInit, OnChanges {\r\n @Input() heading: string;\r\n @Input() headingUrlParamsOptions: Array<string>;\r\n @Input() parent: any;\r\n @Input() isMenuOpened: boolean;\r\n @Output() toggleSidenav = new EventEmitter<void>();\r\n\r\n public parentTitle: string | Array<string>;\r\n public parentLink: string | Array<string>;\r\n public loadMenu: boolean;\r\n public extractedBy: string;\r\n public loginName: string;\r\n public formHeader: UntypedFormGroup;\r\n public lang: string;\r\n\r\n private jwtHelper: JwtHelperService;\r\n\r\n constructor(\r\n public translateService: TranslateService,\r\n private fb: UntypedFormBuilder,\r\n ) {\r\n this.parent = null;\r\n this.jwtHelper = new JwtHelperService();\r\n }\r\n\r\n ngOnInit() {\r\n this.formHeader = this.fb.group({\r\n lang: ['fr', Validators.compose([Validators.required])],\r\n });\r\n this.loginName = 'Admin';\r\n }\r\n\r\n public changeLang(lang: string) {\r\n localStorage.setItem('lang', lang);\r\n this.lang = lang;\r\n this.translateService.setDefaultLang(lang);\r\n this.translateService.use(lang);\r\n }\r\n\r\n ngOnChanges(simpleChanges: SimpleChanges) {\r\n // Si il y a un changement et que la variable envoye par le parent a une currentValue\r\n if (simpleChanges && simpleChanges['parent'] && simpleChanges['parent'].currentValue) {\r\n // attribution des datas a nos variables pour notre HTML\r\n this.parentLink = simpleChanges['parent'].currentValue.link;\r\n this.parentTitle = simpleChanges['parent'].currentValue.title;\r\n }\r\n\r\n // Si il y a un changement et que la variable envoye par le parent a une currentValue\r\n if (simpleChanges && simpleChanges['heading'] && simpleChanges['heading'].currentValue) {\r\n // Attribution des datas a nos variables pour notre HTML\r\n this.heading = simpleChanges['heading'].currentValue;\r\n // Si la variable du parent (parent) n'as pas change\r\n if (!simpleChanges['heading']) {\r\n // alors on la supprime pour le cote HTML\r\n delete this.parent;\r\n }\r\n }\r\n }\r\n\r\n /** Renvoie un tableau de menus */\r\n getMenus(parent: Parent | Array<Parent>) {\r\n if (parent === null || parent === undefined) {\r\n return new Array();\r\n }\r\n // Soit 1 element , soit 1 tableau en entée\r\n return parent instanceof Array ? parent : new Array(parent);\r\n }\r\n\r\n public onClick() {\r\n this.toggleSidenav.emit()\r\n }\r\n}\r\n","<header role=\"banner\" class=\"header\">\r\n <form [formGroup]=\"formHeader\">\r\n <nav class=\"navbar custom-navbar bg-faded main-header\">\r\n <button type=\"button\" class=\"btn btn-primary menu-link\" (click)=\"onClick()\"\r\n [title]=\"isMenuOpened ? ('_COMMON._MENU.BTN_MAIN_MENU_CLOSE' | translate) : ('_COMMON._MENU.BTN_MAIN_MENU_OPEN' | translate)\">\r\n <span class=\"bo-icons\" [ngClass]=\"isMenuOpened ? 'bo-menu-expanded' : 'bo-menu-collapsed' \"\r\n aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">{{ '_COMMON._MENU.BTN_MAIN_MENU' | translate}}</span>\r\n </button>\r\n\r\n <nav aria-label=\"breadcrumb\">\r\n <ol class=\"breadcrumb align-items-center\">\r\n <li class=\"breadcrumb-item\">\r\n <a href=\"/#\">\r\n <span class=\"optyweb cw-nav-home d-block d-md-none\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden d-block d-md-none\">{{ \"_COMMON._BREADCRUMB.HOME\" | translate }}</span>\r\n <span class=\"d-none d-md-block\">{{ \"_COMMON._BREADCRUMB.HOME\" | translate }}</span>\r\n </a>\r\n </li>\r\n <li *ngFor=\"let item of getMenus(parent)\" class=\"breadcrumb-item active\">\r\n <a *ngIf=\"!item.disabled\" [routerLink]=\"item.link\" href=\"#\">{{item.title | translate}}</a>\r\n <span *ngIf=\"item.disabled\">{{item.title | translate}}</span>\r\n </li>\r\n <li aria-current=\"page\" class=\"breadcrumb-item active navbar-heading\">\r\n <h1>{{ heading | translate:headingUrlParamsOptions }}</h1>\r\n </li>\r\n </ol>\r\n </nav>\r\n\r\n <span class=\"me-auto\"></span>\r\n\r\n <ul class=\"navbar-nav\">\r\n\r\n <li class=\"nav-item ms-0\" ngbDropdown placement=\"right\">\r\n <button class=\"header-login d-flex align-items-center btn btn-light\" id=\"language\"\r\n ngbDropdownToggle type=\"button\">\r\n <span class=\"optyweb cw-misc-man2 header-avatar\" aria-hidden=\"true\"></span>\r\n <span class=\"header-indicator\">\r\n <span class=\"bo-icons bo-alert-success\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\">{{ '_COMMON._USER.LBL_LOGGED' | translate }}</span>\r\n <!-- <img src=\"assets/images/common/check-mark.svg\" [alt]=\"'_COMMON._USER.LBL_LOGGED' | translate\"\r\n class=\"header-indicator\" width=\"15\" height=\"15\"> -->\r\n </span>\r\n <span class=\"d-none d-lg-inline-block ms-3 me-1\">{{ loginName }}</span>\r\n </button>\r\n <div ngbDropdownMenu class=\"dropdown-menu dropdown-menu-right\">\r\n <div class=\"dropdown-header font-md d-md-none\">\r\n <span>{{ loginName }}</span>\r\n </div>\r\n <a class=\"dropdown-item\" href=\"javascript:;\">\r\n <span>{{'_COMMON._USER.LBL_SETTINGS' | translate}}</span>\r\n </a>\r\n <a class=\"dropdown-item\" href=\"javascript:;\">\r\n <span>{{'_COMMON._USER.LBL_PROFILE' | translate}}</span>\r\n </a>\r\n <a class=\"dropdown-item\" href=\"javascript:;\">\r\n <span>{{'_COMMON._USER.LBL_NOTIFICATIONS' | translate}}</span>\r\n </a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item\" href=\"javascript:;\">\r\n <span>{{'_COMMON._USER.LBL_HELP' | translate}}</span>\r\n </a>\r\n <a class=\"dropdown-item\" href=\"javascript:;\">\r\n <span>{{ '_COMMON._ACTION.SIGN_OUT' | translate }}</span>\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </nav>\r\n </form>\r\n</header>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { LoadingBarRouterModule } from '@ngx-loading-bar/router';\r\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { SidebarComponent } from '../sidebar/sidebar.component';\r\nimport { SkipLinksComponent } from '../skip-links/skip-links.component';\r\nimport { FooterComponent } from '../footer/footer.component';\r\nimport { HeaderComponent } from '../header/header.component';\r\n\r\nconst SMALL_WIDTH_BREAKPOINT = 1300;\r\n\r\nexport interface Options {\r\n heading?: string;\r\n parent?: Parent | Array<Parent>;\r\n removeFooter?: boolean;\r\n}\r\n\r\nexport interface Parent {\r\n title: string;\r\n link: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-admin',\r\n templateUrl: './admin-layout.component.html',\r\n standalone: true,\r\n imports: [\r\n LoadingBarRouterModule,\r\n CommonModule,\r\n SidebarComponent,\r\n SkipLinksComponent,\r\n FooterComponent,\r\n HeaderComponent\r\n ]\r\n})\r\nexport class AdminLayoutComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('sidebar', { static: false }) sidebar;\r\n @ViewChild('sideMenu', { static: false }) sideMenu;\r\n\r\n public parentProperties: Parent | Array<Parent>;\r\n public routeOptions: Options;\r\n public urlParamsOptions: any;\r\n public formattedHeading: string;\r\n public options = {\r\n lang: 'en',\r\n theme: 'test',\r\n settings: false,\r\n docked: false,\r\n boxed: false,\r\n opened: false\r\n };\r\n public lang: string = 'lang-fr';\r\n public isMenuOpened: boolean = true;\r\n public menuReponsiveMode: boolean;\r\n\r\n private _router: Subscription;\r\n private mediaMatcher: MediaQueryList = matchMedia(`(max-width: 992px)`);\r\n private mediaMatcherLg: MediaQueryList = matchMedia(`(max-width: ${SMALL_WIDTH_BREAKPOINT}px)`);\r\n\r\n constructor(\r\n private _element: ElementRef,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n public translate: TranslateService,\r\n private titleService: Title,\r\n private zone: NgZone\r\n ) {\r\n this.mediaMatcherLg.addEventListener('change', this.handleMediaMatcherLg);\r\n this.mediaMatcher.addEventListener('change', this.handleMediaMatcher);\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this._router = this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {\r\n // Scroll to top on view load\r\n document.querySelector('.main-content').scrollTop = 0;\r\n if (this.isOver()) {\r\n this.sideMenu.close();\r\n }\r\n this.runOnRouteChange();\r\n });\r\n this.runOnRouteChange();\r\n this.onLangChange();\r\n\r\n this.lang = 'lang-' + localStorage.getItem('lang');\r\n\r\n // Check résolution pour menu au chargement\r\n this.handleMediaMatcherLg(this.mediaMatcherLg);\r\n this.handleMediaMatcher(this.mediaMatcher);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._router.unsubscribe();\r\n\r\n this.mediaMatcherLg.removeEventListener('change', this.handleMediaMatcherLg);\r\n this.mediaMatcher.removeEventListener('change', this.handleMediaMatcher);\r\n }\r\n\r\n public isOver(): boolean {\r\n return this.mediaMatcherLg.matches;\r\n }\r\n\r\n public isClosed(): void {\r\n if (this.mediaMatcherLg.matches) {\r\n }\r\n console.log(this.sideMenu.opened);\r\n }\r\n\r\n public receiveMessage($event) {\r\n this.options = $event;\r\n }\r\n\r\n public toggleFullscreen(): void {\r\n const elem = this._element.nativeElement.querySelector('.main-content');\r\n if (elem.requestFullscreen) {\r\n elem.requestFullscreen();\r\n } else if (elem.webkitRequestFullScreen) {\r\n elem.webkitRequestFullScreen();\r\n } else if (elem.mozRequestFullScreen) {\r\n elem.mozRequestFullScreen();\r\n } else if (elem.msRequestFullScreen) {\r\n elem.msRequestFullScreen();\r\n }\r\n }\r\n\r\n private runOnRouteChange(): void {\r\n this.route.children.forEach((route: ActivatedRoute) => {\r\n let activeRoute: ActivatedRoute = route;\r\n while (activeRoute.firstChild) {\r\n activeRoute = activeRoute.firstChild;\r\n }\r\n this.routeOptions = activeRoute.snapshot.data;\r\n this.urlParamsOptions = activeRoute.params;\r\n });\r\n\r\n if (this.routeOptions.hasOwnProperty('heading')) {\r\n // init a null des data qui seront envoye (permet d'avoir toujours un changement pour le OnChange dans l'enfant)\r\n this.parentProperties = null;\r\n // Si notre route a bien la propriete \"Parent\"\r\n if (this.routeOptions.hasOwnProperty('parent')) {\r\n // alors on remplie la variable qui sera envoyer a l'enfant\r\n this.parentProperties = this.routeOptions.parent;\r\n }\r\n // set du titre\r\n this.setTitle(this.translate.instant(this.routeOptions.heading, this.urlParamsOptions.value));\r\n }\r\n }\r\n\r\n private onLangChange() {\r\n this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\r\n this.setTitle(this.translate.instant(this.routeOptions.heading, this.urlParamsOptions.value));\r\n });\r\n }\r\n\r\n private setTitle(newTitle: string) {\r\n this.titleService.setTitle(\r\n this.translate.instant(newTitle));\r\n }\r\n\r\n public onToggleMenu() {\r\n this.isMenuOpened = !this.isMenuOpened;\r\n }\r\n\r\n private handleMediaMatcherLg = (event: MediaQueryList | MediaQueryListEvent) => {\r\n this.zone.run(() => {\r\n this.isMenuOpened = !event.matches;\r\n });\r\n };\r\n\r\n private handleMediaMatcher = (event: MediaQueryList | MediaQueryListEvent) => {\r\n this.zone.run(() => {\r\n this.menuReponsiveMode = event.matches;\r\n });\r\n };\r\n\r\n}\r\n","<ngx-loading-bar></ngx-loading-bar>\r\n\r\n<app-skip-links></app-skip-links>\r\n\r\n\r\n<div class=\"wrapper\">\r\n <app-sidebar [isOpened]=\"isMenuOpened\" class=\"bg-cover\" [ngClass]=\"{'bg-closed' : !isMenuOpened, 'bg-opened' : isMenuOpened, 'responsive-menu': menuReponsiveMode}\" (toggleSidenav)=\"onToggleMenu()\"></app-sidebar>\r\n <div class=\"wrapper-content flex-grow-1\" [ngClass]=\"{'wrapper-content-closed' : !isMenuOpened, 'wrapper-content-opened' : isMenuOpened, 'wrapper-content-responsive': menuReponsiveMode}\">\r\n <app-header (toggleSidenav)=\"onToggleMenu()\" [heading]=\"routeOptions.heading\" [isMenuOpened]=\"isMenuOpened\"\r\n [headingUrlParamsOptions]=\"urlParamsOptions.value\" [parent]=\"parentProperties\"></app-header>\r\n <main role=\"main\" id=\"content\" class=\"main-content\">\r\n <router-outlet>\r\n </router-outlet>\r\n </main>\r\n <app-footer></app-footer>\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: 'app-title-breadcrumb',\r\n templateUrl: './title-breadcrumb.component.html',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n CommonModule\r\n ]\r\n})\r\nexport class TitleBreadcrumbComponent {\r\n @Input() heading: string;\r\n}\r\n","<div class=\"bg-white border-bottom px-3 py-3\">\r\n <h1>{{heading}}</h1>\r\n <nav aria-label=\"breadcrumb\">\r\n <ol class=\"breadcrumb\">\r\n <li class=\"breadcrumb-item\"><a href=\"#\">{{ 'GENERIC.HOME' | translate}}</a></li>\r\n <li class=\"breadcrumb-item\">{{ 'GENERIC.HOME' | translate}}</li>\r\n <li class=\"breadcrumb-item active\" aria-current=\"page\">{{ heading | uppercase | translate }}</li>\r\n </ol>\r\n </nav>\r\n</div>\r\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-accordions-content',\r\n template: '<ng-template #content><ng-content></ng-content></ng-template>',\r\n standalone: true\r\n})\r\nexport class AccordionsContentComponent {\r\n @Input() title!: string;\r\n @Input() disabled = false;\r\n @Input() collapsed = true;\r\n\r\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<any>;\r\n\r\n get fragment(): string {\r\n return this.slugify(this.title);\r\n }\r\n\r\n private slugify(text: string): string {\r\n return text\r\n .toLowerCase()\r\n .trim()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .replace(/[^a-z0-9]+/g, '-')\r\n .replace(/^-+|-+$/g, '');\r\n }\r\n}\r\n","import { Component, ContentChildren, Input, QueryList } from '@angular/core';\r\nimport { AccordionsContentComponent } from './components/accordions-content.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-accordions',\r\n templateUrl: './accordions.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n NgbAccordionModule\r\n ]\r\n})\r\nexport class AccordionsComponent {\r\n\r\n @Input() title?: string;\r\n @Input() closeOthers = false;\r\n @Input() id = 'classic';\r\n @Input() destroyOnHide = true;\r\n @ContentChildren(AccordionsContentComponent) accordions!: QueryList<AccordionsContentComponent>;\r\n\r\n constructor() { }\r\n\r\n}\r\n","<div ngbAccordion [closeOthers]=\"closeOthers\" [destroyOnHide]=\"destroyOnHide\">\r\n @for (accordion of accordions.toArray(); track $index) {\r\n <div ngbAccordionItem [disabled]=\"accordion.disabled\" [collapsed]=\"accordion.collapsed\">\r\n <h2 ngbAccordionHeader>\r\n <button ngbAccordionButton [attr.data-test-ctw]=\"'button-accordion-' + id + '-' + $index\">\r\n {{ accordion.title | translate }}\r\n </button>\r\n </h2>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-container *ngTemplateOutlet=\"accordion.templateRef\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { UiTypeEnum } from '../../enum/ui-type.enum';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-alert',\r\n templateUrl: './alert.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class AlertComponent implements OnInit {\r\n\r\n @Input() type: UiTypeEnum;\r\n @Input() title?: string;\r\n @Input() isDismissible = false;\r\n @Input() cssClass = '';\r\n @Input() dataTest: string;\r\n\r\n @Output() btnAction = new EventEmitter<string>();\r\n\r\n public isVisible = true;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public closeAlert() {\r\n this.isVisible = false;\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 ?? null\">\r\n\r\n @if (title) {\r\n <div class=\"fw-bold\">{{ title }}</div>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @if (isDismissible) {\r\n <button type=\"button\" class=\"btn-close\" (click)=\"closeAlert()\" [attr.aria-label]=\"'_COMMON._ACTION.CLOSE' | translate\"></button>\r\n }\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, HostBinding, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-icon',\r\n templateUrl: './icon.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class IconComponent implements OnInit {\r\n\r\n @Input() icon = 'cw-alert-help';\r\n @Input() font = 'optyweb';\r\n @Input() withOnlyIcon = false;\r\n @Input() label: string;\r\n @Input() iconCssClass?: string;\r\n @Input() iconColorCustom?: string;\r\n\r\n constructor() { }\r\n\r\n @HostBinding('class')\r\n\r\n get hostClasses(): string {\r\n return 'd-inline-flex align-items-center';\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n}\r\n","<span [class]=\"font + ' icon'\" [ngClass]=\"[icon, !withOnlyIcon ? 'me-2' : '', iconCssClass ? iconCssClass : '']\" aria-hidden=\"true\"\r\n [attr.style]=\"iconColorCustom ? 'color: ' + iconColorCustom : null\"></span>\r\n\r\n@if (!withOnlyIcon) {\r\n <span>{{ label }}</span>\r\n}\r\n@else {\r\n <span class=\"visually-hidden\">{{ label }}</span>\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { UiTypeEnum } from '../../enum/ui-type.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\n\r\n@Component({\r\n selector: 'app-badge',\r\n templateUrl: './badge.component.html',\r\n standalone: true,\r\n imports: [IconComponent]\r\n})\r\nexport class BadgeComponent implements OnInit {\r\n\r\n @Input() type: UiTypeEnum;\r\n @Input() label: string;\r\n @Input() withIcon: string;\r\n @Input() cssClass = '';\r\n @Input() dataTest: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div [class]=\"'badge badge-' + type + ' '+ cssClass\" [attr.data-test-ctw]=\"dataTest ? dataTest : null\">\r\n @if (withIcon) {\r\n <app-icon [icon]=\"withIcon\" [label]=\"label\"></app-icon>\r\n } @else {\r\n {{ label }}\r\n }\r\n</div>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { UiTypeEnum } from '../../enum/ui-type.enum';\r\nimport { IconComponent } from '../icon/icon.component';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-button',\r\n templateUrl: './button.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n NgbDropdownModule,\r\n IconComponent\r\n ]\r\n})\r\nexport class ButtonComponent implements OnInit {\r\n\r\n @Input() type: UiTypeEnum;\r\n @Input() isDropdown = false;\r\n @Input() withIcon: string;\r\n @Input() withOnlyIcon = false;\r\n @Input() isMinWidth = false;\r\n @Input() isDisabled = false;\r\n @Input() withSpinner = false;\r\n @Input() label: string;\r\n @Input() small = false;\r\n @Input() dataTest: string;\r\n\r\n @Output() btnAction = new EventEmitter<string>();\r\n public isLoading = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\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\r\n}\r\n","@if (!isDropdown) {\r\n <button type=\"button\" class=\"btn\"\r\n [class]=\"'btn-' + type\"\r\n [ngClass]=\"{ 'btn-min-width': isMinWidth, 'btn-sm': small }\"\r\n [disabled]=\"isDisabled\"\r\n (click)=\"onBtnAction()\"\r\n [attr.data-test-ctw]=\"dataTest ?? null\">\r\n\r\n @if (isLoading) {\r\n <span class=\"spinner-border spinner-border-sm me-2\" aria-hidden=\"true\"></span>\r\n <span class=\"visually-hidden\" role=\"status\">{{ '_COMMON._HTTP.TXT_LOADING' | translate }}</span>\r\n }\r\n\r\n @if (withIcon) {\r\n <app-icon [icon]=\"withIcon\" [label]=\"label\" [withOnlyIcon]=\"withOnlyIcon\"></app-icon>\r\n }\r\n @else {\r\n {{ label | translate }}\r\n }\r\n </button>\r\n}\r\n@else {\r\n <div ngbDropdown class=\"d-inline-block\">\r\n <button class=\"btn\"\r\n [class]=\"'btn-' + type\"\r\n ngbDropdownToggle\r\n type=\"button\"\r\n [ngClass]=\"{ 'btn-min-width': isMinWidth, 'spinner-border': isLoading }\"\r\n [disabled]=\"isDisabled\"\r\n [attr.data-test-ctw]=\"dataTest ?? null\">\r\n\r\n @if (withIcon) {\r\n <app-icon class=\"me-2\"></app-icon>\r\n }\r\n\r\n {{ label | translate }}\r\n </button>\r\n\r\n <ul ngbDropdownMenu class=\"dropdown-menu dropdown-menu-right\">\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, Input, OnInit, AfterViewInit, ViewChild, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-card',\r\n templateUrl: './card.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\n\r\nexport class CardComponent implements OnInit, AfterViewInit {\r\n\r\n @Input() title: string;\r\n @ViewChild('cardFooter') cardFooter: ElementRef<any>;\r\n\r\n public showFooter = true;\r\n\r\n constructor(private cdRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.showFooter = this.cardFooter.nativeElement && this.cardFooter.nativeElement.children.length > 0;\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n}\r\n","<div class=\"card\">\r\n @if (title) {\r\n <h2 class=\"card-header\">{{ title }}</h2>\r\n }\r\n\r\n <div class=\"card-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"card-footer\" #cardFooter>\r\n <ng-content select=\"[card-footer]\"></ng-content>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { DataCustomListGroup } from '../../models/ui/custom-list.model';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-custom-list',\r\n templateUrl: './custom-list.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule\r\n ]\r\n})\r\n\r\nexport class CustomListComponent implements OnInit {\r\n\r\n @Input() customListData: DataCustomListGroup[] = [];\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n hasValue(value: any): boolean {\r\n if (value === null || value === undefined) {\r\n return false;\r\n };\r\n if (typeof value === 'string' && value.trim() === '') {\r\n return false;\r\n };\r\n if (Array.isArray(value) && value.length === 0) {\r\n return false;\r\n };\r\n if (typeof value === 'object' && Object.keys(value).length === 0) {\r\n return false;\r\n };\r\n\r\n return true;\r\n }\r\n\r\n}\r\n","<div class=\"custom-card-light\">\r\n @for (group of customListData; track group.title) {\r\n @if (group.title) {\r\n <h3>{{ group.title | translate }}</h3>\r\n }\r\n\r\n <dl class=\"custom-description-list\">\r\n @for (field of group.fields; track field.label) {\r\n @if (!field.hideIfEmpty || hasValue(field.value)) {\r\n <dt [innerHTML]=\"'_LABEL.COLON' | translate: { label: (field.label | translate) }\"></dt>\r\n <dd>\r\n @switch (field.type) {\r\n @case ('date') {\r\n {{ field.value | date: 'short' }}\r\n }\r\n @case ('boolean') {\r\n {{ (field.value ? '_COMMON._PRO_SENTENCE.YES' : '_COMMON._PRO_SENTENCE.NO') | translate }}\r\n }\r\n @case ('html') {\r\n <span [innerHTML]=\"field.value\"></span>\r\n }\r\n @default {\r\n {{ field.translateValue ? (field.value | translate) : field.value }}\r\n }\r\n }\r\n </dd>\r\n }\r\n }\r\n </dl>\r\n }\r\n</div>\r\n","import { CdkDragDrop, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DragItem } from '../../enum/drag-item.enum';\r\n\r\n@Component({\r\n selector: 'app-drag-n-drop-list',\r\n templateUrl: './drag-n-drop-list.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n DragDropModule\r\n ]\r\n})\r\nexport class DragNDropListComponent {\r\n\r\n @Input() availableItems: DragItem[] = [];\r\n @Input() activeItems: DragItem[] = [];\r\n @Input() itemTemplate?: TemplateRef<any>;\r\n\r\n @Output() availableItemsChange = new EventEmitter<DragItem[]>();\r\n @Output() activeItemsChange = new EventEmitter<DragItem[]>();\r\n\r\n drop(event: CdkDragDrop<any[]>) {\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n } else {\r\n transferArrayItem(\r\n event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n this.availableItemsChange.emit(this.availableItems);\r\n this.activeItemsChange.emit(this.activeItems);\r\n }\r\n}\r\n","<div class=\"drag-drop-list\">\r\n <div class=\"list-column\" cdkDropList #availableList=\"cdkDropList\" [cdkDropListData]=\"availableItems\"\r\n [cdkDropListConnectedTo]=\"[activeList]\" (cdkDropListDropped)=\"drop($event)\">\r\n <h3>Modes disponibles</h3>\r\n @for (item of availableItems; track item) {\r\n <div cdkDrag>\r\n <ng-container *ngTemplateOutlet=\"itemTemplate || defaultTemplate; context: { $implicit: item }\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"list-column\" cdkDropList #activeList=\"cdkDropList\" [cdkDropListData]=\"activeItems\"\r\n [cdkDropListConnectedTo]=\"[availableList]\" (cdkDropListDropped)=\"drop($event)\">\r\n <h3>Modes activés</h3>\r\n @for (item of activeItems; track item) {\r\n <div cdkDrag>\r\n <ng-container *ngTemplateOutlet=\"itemTemplate || defaultTemplate; context: { $implicit: item }\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n\r\n <ng-template #defaultTemplate let-item>\r\n <div class=\"default-item\">\r\n Mode : {{ item.label }} ({{ item.code }} )\r\n </div>\r\n </ng-template>\r\n</div>\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 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\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","import { Component, EventEmitter, HostBinding, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, FormsModule, ReactiveFormsModule, ValidationErrors } from '@angular/forms';\r\nimport { FormFieldOption, FormFieldTypeEnum } from '../../enum/field-type.enum';\r\nimport { NgxSliderModule, Options } from '@angular-slider/ngx-slider';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { NgbDropdownModule, NgbPopover } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ShowHidePasswordDirective } from '../../directives/show-hide-password';\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\r\n@Component({\r\n selector: 'app-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() name!: string;\r\n @Input() placeholder!: string;\r\n @Input() options: FormFieldOption[] = [];\r\n @Input() isRequired = 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 = false;\r\n @Input() isReadonly = false;\r\n @Input() isDisabled = false;\r\n @Input() sliderValue!: number;\r\n @Input() sliderOptions!: Options;\r\n @Input() cssClass!: string;\r\n @Input() inTableFilter = false;\r\n\r\n @Output() clearFieldFilter = new EventEmitter<string>();\r\n @Output() refreshEvent = new EventEmitter<void>();\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 console.log(this.isRange, this.control);\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 onClearFieldFilter() {\r\n this.clearFieldFilter.emit();\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","@if (!isInAddon && !inTableFilter) {\r\n <div class=\"form-group\">\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.switchSmall\r\n\r\n ) {\r\n <label [for]=\"name\" class=\"form-label\">\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 <ng-container *ngIf=\"addonLeft\" [ngTemplateOutlet]=\"addonLeft\"></ng-container>\r\n <ng-container [ngTemplateOutlet]=\"field\"></ng-container>\r\n <ng-container *ngIf=\"addonRight\" [ngTemplateOutlet]=\"addonRight\"></ng-container>\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 <span\r\n *ngIf=\"(controlOrGroup?.errors?.['required']) || (getControl('start')?.errors?.['required'] || getControl('end')?.errors?.['required'])\"\r\n [innerHtml]=\"'_COMMON._FORM.ERROR_IS_MANDATORY' | translate: {label: label}\">\r\n </span>\r\n <span *ngIf=\"controlOrGroup?.errors?.['rangeInvalid']\">\r\n {{'_COMMON._DATES.ERROR_START_END_PERIOD' | translate}}\r\n </span>\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 </div>\r\n}\r\n@else if ( inTableFilter ) {\r\n <label class=\"form-label\" [for]=\"name\" class=\"visually-hidden\">\r\n {{'_COMMON._FORM.FILTER_LABEL' | translate: { col: name } }}\r\n </label>\r\n\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@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\"\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\" />\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 <ng-content></ng-content>\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()\">\r\n <ng-content></ng-content>\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>{{label}}</legend>\r\n <ul class=\" mb-0\" [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>{{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 *ngIf=\"\" [ngClass]=\"{ 'flex-column': type === typeField.checkbox }\">\r\n <legend>{{label}}</legend>\r\n <ul class=\"mb-0\" [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>{{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 @if (!inTableFilter) {\r\n <span class=\"input-group-text text-lowercase\" [class.disabled]=\"isDisabled ? 'disabled' : null\">\r\n {{ type === typeField.timeToTime ? ('_COMMON._DATES.FROM' | translate) : ('_COMMON._DATES.FROM_TO_1' | translate)\r\n }}\r\n </span>\r\n }\r\n\r\n <input [type]=\"getInputType()\" class=\"form-control\" [id]=\"name + '_start'\" [formControl]=\"getControl('start')\"\r\n [attr.placeholder]=\"inTableFilter ? (type === typeField.timeToTime ? ('_COMMON._DATES.FROM' | translate) : ('_COMMON._DATES.FROM_TO_1' | translate)) : null\"\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 <button *ngIf=\"getControl('start')?.value\" type=\"button\" class=\"btn btn-secondary btn-clear-field\"\r\n (click)=\"onClearFieldPeriod('start')\">\r\n ×\r\n </button>\r\n\r\n @if (!inTableFilter) {\r\n <span class=\"input-group-text text-lowercase\" [class.disabled]=\"isDisabled ? 'disabled' : null\">\r\n {{ type === typeField.timeToTime ? ('_COMMON._DATES.TO' | translate) : ('_COMMON._DATES.FROM_TO_2' | translate) }}\r\n </span>\r\n }\r\n\r\n <input [type]=\"getInputType()\" class=\"form-control\" [id]=\"name + '_end'\" [formControl]=\"getControl('end')\"\r\n [attr.placeholder]=\"inTableFilter ? (type === typeField.timeToTime ? ('_COMMON._DATES.TO' | translate) : ('_COMMON._DATES.FROM_TO_2' | translate)) : null\"\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 <app-icon font=\"optyweb\" icon=\"cw-nav-next-left\" [withOnlyIcon]=\"true\" [label]=\"'Jour précédent'\"></app-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\"\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\" />\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 <app-icon font=\"optyweb\" icon=\"cw-nav-next-right\" [withOnlyIcon]=\"true\" [label]=\"'Jour suivant'\"></app-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 <app-icon font=\"optyweb\" icon=\"cw-toolbar-reload\" [withOnlyIcon]=\"true\" [label]=\"'Rafraîchir'\"></app-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 (inTableFilter && isInInputGroup()) {\r\n <button class=\"btn btn-secondary btn-clear-field\" type=\"button\" (click)=\"onClearFieldFilter()\">×</button>\r\n }\r\n @else if (isInInputGroup()) {\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\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/ui/legend.model';\r\nimport { BadgeComponent } from '../badge/badge.component';\r\nimport { IconComponent } from '../icon/icon.component';\r\n\r\n@Component({\r\n selector: 'app-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\r\n public legendTypeEnum = LegendTypeEnum;\r\n\r\n constructor() { }\r\n\r\n}\r\n","<div *ngIf=\"legend.title\" class=\"legend-title\">\r\n {{ '_COMMON._TABLE.LEGEND' | translate }}\r\n</div>\r\n<ul class=\"list-inline legend-items\">\r\n @for (item of legend.data; track $index) {\r\n <li class=\"list-inline-item legend-item\">\r\n @switch (item.type) {\r\n @case (legendTypeEnum.icon) {\r\n <app-icon [icon]=\"item.icon\" [label]=\"item.label\" [iconCssClass]=\"'text-' + item.colorUi\" [iconColorCustom]=\"item.colorCustom\">\r\n </app-icon>\r\n }\r\n @case (legendTypeEnum.badge) {\r\n <app-badge [type]=\"item.colorUi\" [label]=\"item.labelBadge\"></app-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: 'app-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=\"animated-loader-container animated-loader-medium animated-loader-container-top\">\r\n <div class=\"animated-loader mb-1\" aria-live=\"assertive\"></div>\r\n <div class=\"animated-loader-text\">{{ '_COMMON._HTTP.TXT_LOADING' | translate }}</div>\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","export enum UiTypeEnum {\r\n primary = 'primary',\r\n secondary = 'secondary',\r\n light = 'light',\r\n info = 'info',\r\n success = 'success',\r\n warning = 'warning',\r\n danger = 'danger',\r\n link = 'link',\r\n dark = 'dark'\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ModalsType } from '../../enum/modals.enum';\r\nimport { UiTypeEnum } from '../../enum/ui-type.enum';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { LoaderComponent } from '../loader/loader.component';\r\n\r\n@Component({\r\n selector: 'app-modals',\r\n templateUrl: './modals.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n ButtonComponent,\r\n LoaderComponent\r\n ]\r\n})\r\nexport class ModalsComponent implements OnInit {\r\n @Input() type: ModalsType;\r\n @Input() modalTitle: string;\r\n @Input() itemsToDelete: any[] = [];\r\n @Input() itemsToDeleteTitle = this.translateService.instant('_COMMON._MODAL_DELETE.DEFAULT_TYPE');\r\n @Input() labelBtnAction: string;\r\n @Input() customBodyTemplate?: TemplateRef<any>;\r\n @Input() customBodyContext?: any;\r\n\r\n @Output() btnAction = new EventEmitter<string>();\r\n\r\n public modalsType = ModalsType;\r\n public buttonTypeEnum = UiTypeEnum;\r\n\r\n constructor(\r\n public activeModal: NgbActiveModal,\r\n private translateService: TranslateService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.labelBtnAction = this.type === this.modalsType.quickSideView\r\n ? this.translateService.instant('_COMMON._ACTION.EDIT') : this.labelBtnAction;\r\n }\r\n\r\n public actionClick() {\r\n this.activeModal.close();\r\n }\r\n}\r\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-0\">\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 <app-button label=\"_COMMON._ACTION.DELETE\" [type]=\"buttonTypeEnum.danger\" [isMinWidth]=\"true\"\r\n (btnAction)=\"actionClick()\" dataTest=\"btn-action-modal\">\r\n </app-button>\r\n\r\n <app-button label=\"_COMMON._ACTION.CANCEL\" [type]=\"buttonTypeEnum.secondary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"activeModal.dismiss()\" dataTest=\"btn-close-modal\">\r\n </app-button>\r\n }\r\n @else {\r\n @if(labelBtnAction) {\r\n <app-button [label]=\"labelBtnAction | translate\" [type]=\"buttonTypeEnum.primary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"actionClick()\" dataTest=\"btn-close-modal\">\r\n </app-button>\r\n }\r\n\r\n <app-button label=\"_COMMON._ACTION.CLOSE\" [type]=\"buttonTypeEnum.secondary\" [isMinWidth]=\"true\"\r\n (btnAction)=\"activeModal.dismiss()\" dataTest=\"btn-close-modal\">\r\n </app-button>\r\n }\r\n </div>\r\n}\r\n\r\n@if (type === modalsType.loader) {\r\n <div class=\"modal-body\">\r\n <app-loader></app-loader>\r\n </div>\r\n}\r\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-tab-content',\r\n template: '<ng-template #content><ng-content></ng-content></ng-template>',\r\n standalone: true\r\n})\r\nexport class TabContentComponent {\r\n @Input() title!: string;\r\n @Input() disabled = false;\r\n\r\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<any>;\r\n\r\n get fragment(): string {\r\n return this.slugify(this.title);\r\n }\r\n\r\n private slugify(text: string): string {\r\n return text\r\n .toLowerCase()\r\n .trim()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .replace(/[^a-z0-9]+/g, '-')\r\n .replace(/^-+|-+$/g, '');\r\n }\r\n}\r\n","import { AfterContentInit, Component, ContentChildren, Input, QueryList } 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 { NgbNavModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-tab',\r\n templateUrl: './tab.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule,\r\n NgbNavModule\r\n ]\r\n})\r\nexport class TabComponent implements AfterContentInit {\r\n\r\n @Input() useFragment = true;\r\n @Input() title?: string;\r\n @Input() id: string;\r\n @Input() basicDisplay? = false;\r\n @ContentChildren(TabContentComponent) tabs!: QueryList<TabContentComponent>;\r\n\r\n public activeId = 0;\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 const firstEnabledIndex = tabsArray.findIndex(tab => !tab.disabled);\r\n this.activeId = firstEnabledIndex !== -1 ? firstEnabledIndex : 0;\r\n\r\n this.route.fragment.subscribe(fragment => {\r\n if (this.useFragment) {\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 } else {\r\n const currentTab = tabsArray[this.activeId];\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n fragment: currentTab.fragment,\r\n queryParamsHandling: 'preserve',\r\n replaceUrl: true\r\n });\r\n }\r\n }\r\n });\r\n}\r\n\r\n public onTabChange(newIndex: number) {\r\n this.activeId = newIndex;\r\n\r\n if (!this.useFragment) {\r\n return;\r\n }\r\n\r\n const tabsArray = this.tabs.toArray();\r\n const selectedTab = tabsArray[newIndex];\r\n\r\n if (selectedTab && !selectedTab.disabled) {\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n fragment: selectedTab.fragment,\r\n queryParamsHandling: 'preserve',\r\n replaceUrl: true\r\n });\r\n }\r\n }\r\n}\r\n","@if (!basicDisplay) {\r\n <div class=\"card\">\r\n @if (title) {\r\n <h2 class=\"card-header\">{{ title | translate }}</h2>\r\n }\r\n\r\n <div class=\"card-body p-0\">\r\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"activeId\" class=\"nav-tabs nav-tabs-card\"\r\n (activeIdChange)=\"onTabChange($event)\" appRwdTabs>\r\n @for (tab of tabs.toArray(); track tab; let i = $index) {\r\n <li [ngbNavItem]=\"i\" [disabled]=\"tab.disabled\">\r\n <a ngbNavLink [attr.data-test-ctw]=\"'link-tab-' + id + '-' + i\">\r\n {{ tab.title | translate }}\r\n </a>\r\n <ng-template ngbNavContent>\r\n <ng-container *ngTemplateOutlet=\"tab.templateRef\"></ng-container>\r\n </ng-template>\r\n </li>\r\n }\r\n\r\n <li ngbDropdown class=\"nav-item d-none\" placement=\"bottom-right\">\r\n <button (click)=\"false\" class=\"nav-link\" ngbDropdownToggle>\r\n {{ '_COMMON._ACTION.MORE' | translate }}\r\n </button>\r\n <ul ngbDropdownMenu placement=\"bottom right\"></ul>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div [ngbNavOutlet]=\"nav\" class=\"tab-content-card\"></div>\r\n}\r\n@else {\r\n @if (title) {\r\n <h2>{{ title | translate }}</h2>\r\n }\r\n\r\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"activeId\" class=\"nav-tabs\" (activeIdChange)=\"onTabChange($event)\" appRwdTabs>\r\n @for (tab of tabs.toArray(); track tab; let i = $index) {\r\n <li [ngbNavItem]=\"i\" [disabled]=\"tab.disabled\">\r\n <a ngbNavLink [attr.data-test-ctw]=\"'link-tab-' + i\">\r\n {{ tab.title | translate }}\r\n </a>\r\n <ng-template ngbNavContent>\r\n <ng-container *ngTemplateOutlet=\"tab.templateRef\"></ng-container>\r\n </ng-template>\r\n </li>\r\n }\r\n\r\n <li ngbDropdown class=\"nav-item d-none\" placement=\"bottom-right\">\r\n <button (click)=\"false\" class=\"nav-link\" ngbDropdownToggle>\r\n {{ '_COMMON._ACTION.MORE' | translate }}\r\n </button>\r\n <ul ngbDropdownMenu placement=\"bottom right\"></ul>\r\n </li>\r\n </ul>\r\n\r\n <div [ngbNavOutlet]=\"nav\" class=\"tab-content\"></div>\r\n}\r\n","import { AfterViewChecked, Directive, ElementRef, HostListener, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDoubleScroll]'\r\n})\r\n\r\nexport class DoubleScrollDirective implements OnInit, AfterViewChecked, OnDestroy {\r\n\r\n scroll: any;\r\n div: any;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize() {\r\n this.adaptScrollWidth();\r\n }\r\n\r\n // Si scroll le tableau on scroll aussi div.table-responsive-double-scroll\r\n @HostListener('scroll', ['$event'])\r\n onScroll() {\r\n this.div.scrollLeft = this.el.nativeElement.scrollLeft;\r\n }\r\n\r\n ngOnInit() {\r\n\r\n // On applique un margin-top à 0 à la table.\r\n this.el.nativeElement.style.marginTop = '0';\r\n\r\n // On crée le div.table-responsive-double-scroll et on l'insère avant le tableau\r\n this.div = this.renderer.createElement('div');\r\n this.renderer.addClass(this.div, 'table-responsive-double-scroll');\r\n this.renderer.insertBefore(this.el.nativeElement.parentNode, this.div, this.el.nativeElement);\r\n\r\n // On crée le div.scroll et on l'insère dans le div.table-responsive-double-scroll\r\n this.scroll = this.renderer.createElement('div');\r\n this.renderer.addClass(this.scroll, 'scroll');\r\n this.renderer.appendChild(this.div, this.scroll);\r\n\r\n // Si on scroll div.table-responsive-double-scroll on scroll aussi le tableau\r\n this.div.addEventListener('scroll', function() {\r\n //this.nextSibling.scrollLeft = this.scrollLeft;\r\n this.nextSibling.style.transform = \"translateX(-\" + this.scrollLeft + \"px)\";\r\n });\r\n }\r\n\r\n adaptScrollWidth() {\r\n // On donne à div.scroll la taille du tableau\r\n if (this.el.nativeElement.firstChild.offsetWidth > this.el.nativeElement.offsetWidth) {\r\n this.scroll.style.width = (this.el.nativeElement.firstChild.offsetWidth + 17) + 'px';\r\n } else {\r\n this.scroll.style.widdth = 'auto';\r\n }\r\n }\r\n\r\n ngAfterViewChecked() {\r\n this.adaptScrollWidth();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.div.removeEventListener('scroll', null);\r\n }\r\n}\r\n","import { FormFieldOption, FormFieldTypeEnum } from '../../enum/field-type.enum';\r\nimport { UiTypeEnum } from '../../enum/ui-type.enum';\r\n// import { IFilter } from '../table/IFilter';\r\n// import { SortType } from '../table/sort-type';\r\n\r\nexport interface TableColumn {\r\n key: string;\r\n label: string;\r\n sort?: boolean;\r\n filter?: TableFilter;\r\n}\r\n\r\nexport interface TableFilter {\r\n type: FormFieldTypeEnum;\r\n options?: FormFieldOption[];\r\n defaultFilter?: boolean;\r\n //defaultOrder?: SortType;\r\n}\r\n\r\nexport enum ActionOnTableType {\r\n add = 'add',\r\n exportPage = 'exportPage',\r\n exportAll = 'exportAll',\r\n custom1 = 'custom1',\r\n custom2 = 'custom2',\r\n}\r\n\r\nexport interface ActionOnTable {\r\n action: ActionOnTableType;\r\n type?: UiTypeEnum;\r\n label?: string;\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\r\nimport { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { ActionOnTable, ActionOnTableType } from '../../../../models/ui/table.model';\r\n\r\n@Component({\r\n selector: 'app-actions-on-table',\r\n templateUrl: './actions-on-table.component.html',\r\n standalone: true,\r\n imports: [\r\n TranslateModule,\r\n CommonModule,\r\n NgbDropdownModule\r\n ]\r\n})\r\n\r\nexport class ActionsOnTableComponent {\r\n\r\n @Input() actionOnTable: ActionOnTable[] = [];\r\n @Input() customContent?: TemplateRef<any>;\r\n\r\n @Output() actionClick = new EventEmitter<ActionOnTableType>();\r\n\r\n public actionOnTableAction = ActionOnTableType;\r\n\r\n constructor() { }\r\n\r\n public onActionClick(action: ActionOnTableType): void {\r\n this.actionClick.emit(action);\r\n }\r\n\r\n}\r\n","<div class=\"actions-on-table\" *ngIf=\"actionOnTable?.length || customContent\">\r\n <div class=\"me-auto\">\r\n @if (customContent) {\r\n <ng-container [ngTemplateOutlet]=\"customContent\"></ng-container>\r\n }\r\n </div>\r\n <div class=\"btn-group\">\r\n @for (action of actionOnTable; track action) {\r\n @if (action.action === actionOnTableAction.add) {\r\n <a (click)=\"onActionClick(actionOnTableAction.add)\" href=\"javascript:void(0)\" class=\"btn btn-primary btn-min-width\">\r\n {{ '_COMMON._ACTION.ADD' | translate }}\r\n </a>\r\n }\r\n\r\n @if (action.action === actionOnTableAction.exportAll) {\r\n <div class=\"btn-group\" ngbDropdown placement=\"bottom-right\">\r\n <button class=\"btn btn-secondary btn-min-width\" id=\"dd-export\" ngbDropdownToggle>\r\n {{ '_COMMON._ACTION.EXPORT' | translate }}\r\n </button>\r\n <ul ngbDropdownMenu aria-labelledby=\"dd-export\">\r\n <li>\r\n <button class=\"dropdown-item\" (click)=\"onActionClick(actionOnTableAction.exportPage)\">\r\n {{ '_COMMON._TABLE.EXPORT_CURRENT' | translate }}\r\n </button>\r\n </li>\r\n <li>\r\n <button class=\"dropdown-item\" (click)=\"onActionClick(actionOnTableAction.exportAll)\">\r\n {{ '_COMMON._TABLE.EXPORT_ALL' | translate }}\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n }\r\n\r\n @if (action.action === actionOnTableAction.custom1) {\r\n <a (click)=\"onActionClick(actionOnTableAction.custom1)\" href=\"javascript:void(0)\" class=\"btn btn-min-width\"\r\n [ngClass]=\"'btn-' + action.type\">\r\n {{ action.label }}\r\n </a>\r\n }\r\n\r\n @if (action.action === actionOnTableAction.custom2) {\r\n <a (click)=\"onActionClick(actionOnTableAction.custom2)\" href=\"javascript:void(0)\" class=\"btn btn-min-width\"\r\n [ngClass]=\"'btn-' + action.type\">\r\n {{ action.label }}\r\n </a>\r\n }\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { DoubleScrollDirective } from '../../directives/double-scroll';\r\n// import { PaginedComponent } from '../../../extensions/pagined-component.extends';\r\n// import { PaginationInfo } from '../../../models/pagination/pagination-info';\r\n// import { ActiveFilter, ListFilter } from '../../models/table/IFilter';\r\n// import { SortType } from '../../../models/table/sort-type';\r\nimport { Legend } from '../../models/ui/legend.model';\r\nimport { ActionOnTable, ActionOnTableType, TableColumn } from '../../models/ui/table.model';\r\n// import { XpaginationComponent } from '../../xpagination/xpagination.component';\r\nimport { FormFieldComponent } from '../form-field/form-field.component';\r\nimport { LegendComponent } from \"../legend/legend.component\";\r\nimport { ActionsOnTableComponent } from './components/actions-on-table/actions-on-table.component';\r\n\r\n@Component({\r\n selector: 'app-table',\r\n templateUrl: './table.component.html',\r\n standalone: true,\r\n imports: [\r\n ActionsOnTableComponent,\r\n TranslateModule,\r\n FormsModule,\r\n CommonModule,\r\n // XpaginationComponent,\r\n ReactiveFormsModule,\r\n DoubleScrollDirective,\r\n LegendComponent,\r\n FormFieldComponent\r\n ]\r\n})\r\n\r\nexport class TableComponent {}\r\n\r\n// export class TableComponent extends PaginedComponent<Array<ListFilter>> implements OnInit {\r\n\r\n// @Input() checkbox = true;\r\n// @Input() title: string;\r\n// @Input() columns: TableColumn[] = [];\r\n// @Input() actionOnTable?: ActionOnTable[] = [];\r\n// @Input() legend?: Legend;\r\n\r\n// @Output() actionClick = new EventEmitter<ActionOnTableType>();\r\n\r\n// @ContentChild('customActions') customActionsTemplate?: TemplateRef<any>;\r\n\r\n// public filter: ListFilter;\r\n// public actionOnTableAction = ActionOnTableType;\r\n\r\n// constructor(fb: UntypedFormBuilder) {\r\n// super(fb);\r\n// }\r\n\r\n// ngOnInit(): void {\r\n// this.filter = this.getSavedFilters(new ListFilter(this.columns));\r\n// this.pagination = new PaginationInfo();\r\n// this.pagination.filter = this.filter;\r\n\r\n// // Identifier la colonne ayant defaultFilter = true\r\n// const defaultCol = this.columns.find(col => col.filter?.defaultFilter);\r\n\r\n// if (defaultCol?.filter) {\r\n// this.pagination.sortInfo.sortColumnName = defaultCol.key;\r\n// this.pagination.sortInfo.sortType = defaultCol.filter.defaultOrder ?? SortType.Asc;\r\n// } else {\r\n// // fallback si aucune colonne par défaut\r\n// this.pagination.sortInfo.sortColumnName = this.columns[0]?.key ?? '';\r\n// this.pagination.sortInfo.sortType = SortType.Asc;\r\n// }\r\n\r\n// this.initFilterForm(this.filter);\r\n// //this.loadData();\r\n\r\n// console.log('FORM ==> ', this.filterForm.value);\r\n// console.log('FORM ==> ', this.filterForm.controls['createdAt']);\r\n// console.log('FORM ==> ', this.filterForm.controls['createdAt'] instanceof FormGroup); // doit être true\r\n\r\n// }\r\n\r\n// public onActionClick(action: ActionOnTableType): void {\r\n// this.actionClick.emit(action);\r\n// }\r\n\r\n// }\r\n","<!-- <app-actions-on-table [actionOnTable]=\"actionOnTable\" (actionClick)=\"onActionClick($event)\"\r\n [customContent]=\"customActionsTemplate\"></app-actions-on-table> -->\r\n\r\n<!-- <div *ngIf=\"checkbox\" class=\"actions-on-table on-selection\">\r\n <div class=\"on-selection-info\"> -->\r\n <!-- If one selected item on the current page -->\r\n <!-- <span class=\"fw-bold\">1</span>\r\n {{ '_COMMON._TABLE._BULK_ACTION.SELECTED_ITEM_CURRENT_PAGE' | translate }} -->\r\n\r\n <!-- If one selected item on all pages -->\r\n <!-- <span class=\"fw-bold\">1</span>\r\n {{ '_COMMON._TABLE._BULK_ACTION.SELECTED_ITEM_ALL_PAGES' | translate }}\r\n <span class=\"fw-bold\">{{total}}</span> -->\r\n\r\n <!-- If several selected items on the current page -->\r\n <!-- <span class=\"fw-bold\">{{number}}</span>\r\n {{ '_COMMON._TABLE._BULK_ACTION.SELECTED_ITEMS_CURRENT_PAGE' | translate }} -->\r\n\r\n <!-- If several selected items on all pages -->\r\n <!-- <span class=\"fw-bold\">{{number}}</span>\r\n {{ '_COMMON._TABLE._BULK_ACTION.SELECTED_ITEMS_ALL_PAGES' | translate }}\r\n <span class=\"fw-bold\">{{total}}</span> -->\r\n <!-- </div>\r\n\r\n <button class=\"btn btn-secondary btn-min-width\" type=\"button\">\r\n {{ '_COMMON._TABLE._BULK_ACTION.EXPORT_SELECTION' | translate }}\r\n </button>\r\n <button class=\"btn btn-danger btn-min-width\" type=\"button\">\r\n {{ '_COMMON._TABLE._BULK_ACTION.DELETE_SELECTION' | translate }}\r\n </button>\r\n</div>\r\n\r\n<div class=\"table-responsive table-responsive-full-width mb-3\" appDoubleScroll>\r\n <table class=\"table table-bordered table-striped table-hover table-full-width\">\r\n <caption class=\"visually-hidden\" [innerHTML]=\"'_COMMON._TABLE.CAPTION' | translate: { label: title } \"></caption>\r\n <thead>\r\n <tr>\r\n <th *ngIf=\"checkbox\" scope=\"col\" width=\"10\">\r\n <div class=\"form-check\">\r\n <input class=\"form-check-input\" type=\"checkbox\" id=\"checkme\">\r\n <label class=\"form-label\" class=\"form-check-label\" for=\"checkme\">\r\n <span class=\"visually-hidden\">{{ '_COMMON._TABLE._THEAD.CHECK_LINE' | translate }}</span>\r\n </label>\r\n </div>\r\n </th>\r\n <ng-container *ngFor=\"let column of columns\">\r\n <th scope=\"col\" [ngClass]=\"{'p-0': column.sort}\">\r\n <button *ngIf=\"column.sort\" class=\"sorting-btn\"\r\n [ngClass]=\"getSortIcon(column.key)\"\r\n (click)=\"setSortProperty(column.key)\">\r\n {{column.label}}\r\n <span class=\"sorting-icons\">\r\n <span class=\"bo-icons bo-sort\"></span>\r\n </span>\r\n </button>\r\n <ng-container *ngIf=\"!column.sort\">\r\n {{ column.label }}\r\n </ng-container>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n <tr *ngIf=\"filterForm\" [formGroup]=\"filterForm\" class=\"table-filter\">\r\n <th *ngIf=\"checkbox\"></th>\r\n <ng-container *ngFor=\"let column of columns\">\r\n <th>\r\n <app-form-field *ngIf=\"column.filter\" [type]=\"column.filter?.type\" [name]=\"column.key\" [control]=\"filterForm.get(column.key)\"\r\n [options]=\"column.filter?.options\" [inTableFilter]=\"true\" [cssClass]=\"filterForm.get(column.key).value ? 'has-value' : ''\"\r\n [placeholder]=\"'_COMMON._ACTION.FILTER_BY' | translate\"\r\n (clearFieldFilter)=\"filterForm.get(column.key).setValue('')\"></app-form-field>\r\n </th>\r\n </ng-container>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td colspan=\"100\"> -->\r\n <!-- <app-loader></app-loader> -->\r\n <!-- </td>\r\n </tr>\r\n <ng-container> -->\r\n <!-- <tr *ngIf=\"paginedResult && paginedResult.result?.length <= 0\">\r\n <td class=\"table-info no-result\" colspan=\"100\">\r\n {{ '_COMMON._TABLE.NO_RESULT' | translate }}\r\n </td>\r\n </tr> -->\r\n <!-- </ng-container>\r\n </tbody>\r\n\r\n @if (legend) {\r\n <tfoot>\r\n <tr>\r\n <td class=\"table-legend\" colspan=\"100\">\r\n <app-legend [legend]=\"legend\"></app-legend>\r\n </td>\r\n </tr>\r\n </tfoot>\r\n }\r\n </table>\r\n</div> -->\r\n\r\n<!-- <cw-xpagination *ngIf=\"paginedResult && paginedResult?.pagination.PageCount >= 0\"\r\n [pagination]=\"paginedResult?.pagination\" [pagesToShow]=\"pageToShow\" (goPage)=\"goToPage($event)\" (goNext)=\"onNext()\"\r\n (goPrev)=\"onPrev()\" (nbResultChange)=\"onNbResultChange($event)\">\r\n</cw-xpagination> -->\r\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-wizard-step',\r\n template: '<ng-template #content><ng-content></ng-content></ng-template>',\r\n standalone: true\r\n})\r\n\r\nexport class WizardStepComponent {\r\n\r\n @Input() title!: string;\r\n @Input() completed = false;\r\n\r\n @ViewChild('content', { static: true }) templateRef!: TemplateRef<any>;\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ContentChildren, EventEmitter, Output, QueryList } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { WizardStepComponent } from './components/wizard-step.component';\r\n\r\n@Component({\r\n selector: 'app-wizard-stepper',\r\n templateUrl: './wizard-stepper.component.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslateModule\r\n ]\r\n})\r\nexport class WizardStepperComponent {\r\n @ContentChildren(WizardStepComponent) steps!: QueryList<WizardStepComponent>;\r\n\r\n @Output() stepChange = new EventEmitter<number>();\r\n @Output() stepNext = new EventEmitter<number>();\r\n @Output() stepPrevious = new EventEmitter<number>();\r\n @Output() stepEnd = new EventEmitter<number>();\r\n\r\n public selectedIndex = 0;\r\n\r\n public get stepList(): WizardStepComponent[] {\r\n return this.steps.toArray();\r\n }\r\n\r\n public goToStep(index: number) {\r\n if (index < 0 || index >= this.steps.length) return;\r\n\r\n // Vérifier que toutes les étapes précédentes sont complétées\r\n for (let i = 0; i < index; i++) {\r\n if (!this.steps.toArray()[i].completed) {\r\n return; // Empêche d'aller à cette étape si une étape précédente n'est pas validée\r\n }\r\n }\r\n\r\n this.selectedIndex = index;\r\n this.stepChange.emit(this.selectedIndex);\r\n }\r\n\r\n public nextStep() {\r\n if (this.selectedIndex < this.steps.length - 1) {\r\n const currentStep = this.steps.toArray()[this.selectedIndex];\r\n if (!currentStep.completed) {\r\n // Si l'étape courante n'est pas validée, on bloque\r\n return;\r\n }\r\n this.selectedIndex++;\r\n this.stepNext.emit(this.selectedIndex);\r\n this.stepChange.emit(this.selectedIndex);\r\n }\r\n }\r\n\r\n public previousStep() {\r\n if (this.selectedIndex > 0) {\r\n this.selectedIndex--;\r\n this.stepPrevious.emit(this.selectedIndex);\r\n this.stepChange.emit(this.selectedIndex);\r\n }\r\n }\r\n\r\n public endWizard() {\r\n if (this.selectedIndex > 0) {\r\n this.stepEnd.emit(this.selectedIndex);\r\n this.stepChange.emit(this.selectedIndex);\r\n }\r\n }\r\n}\r\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 { 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 bo-ui\r\n */\r\n\r\n// LIB UI\r\n//---------------------------------------------------------\r\n// Layout\r\nexport * from './lib/components/layout/admin-layout/admin-layout.component';\r\nexport * from './lib/components/layout/footer/footer.component';\r\nexport * from './lib/components/layout/header/header.component';\r\nexport * from './lib/components/layout/menu/menu.component';\r\nexport * from './lib/components/layout/sidebar/sidebar.component';\r\nexport * from './lib/components/layout/skip-links/skip-links.component';\r\nexport * from './lib/components/layout/title-breadcrumb/title-breadcrumb.component';\r\n\r\n// Lib ui components\r\nexport * from './lib/components/accordions/accordions.component';\r\nexport * from './lib/components/accordions/components/accordions-content.component';\r\nexport * from './lib/components/alert/alert.component';\r\nexport * from './lib/components/badge/badge.component';\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/card/card.component';\r\nexport * from './lib/components/custom-list/custom-list.component';\r\nexport * from './lib/components/drag-n-drop-list/drag-n-drop-list.component';\r\nexport * from './lib/components/form-field/form-field.component';\r\nexport * from './lib/components/icon/icon.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/tab.component';\r\nexport * from './lib/components/tab/components/tab-content.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/wizard-stepper/wizard-stepper.component';\r\nexport * from './lib/components/wizard-stepper/components/wizard-step.component';\r\n\r\n// Lib UI Enum\r\nexport * from './lib/enum/drag-item.enum';\r\nexport * from './lib/enum/field-type.enum';\r\nexport * from './lib/enum/modals.enum';\r\nexport * from './lib/enum/ui-type.enum';\r\nexport * from './lib/enum/legend-type.enum';\r\n\r\n// Lib Services\r\nexport * from './lib/services/ui/modals.service';\r\n\r\n// Lib Models\r\nexport * from './lib/models/ui/custom-list.model';\r\nexport * from './lib/models/ui/table.model';\r\nexport * from './lib/models/ui/legend.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5"],"mappings":"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"}
|