@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
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
|
2
|
-
import { AbstractControl } from '@angular/forms';
|
|
3
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
-
import { FormFieldComponent } from '../../../form-field/form-field.component';
|
|
5
|
-
import { TableColumn } from '../../../../models/ui/table.model';
|
|
6
|
-
import { CommonModule } from '@angular/common';
|
|
7
|
-
import { FormFieldTypeEnum } from '../../../../enum/field-type.enum';
|
|
8
|
-
|
|
9
|
-
@Component({
|
|
10
|
-
selector: 'app-filter',
|
|
11
|
-
templateUrl: './filter.component.html',
|
|
12
|
-
standalone: true,
|
|
13
|
-
imports: [
|
|
14
|
-
TranslateModule,
|
|
15
|
-
FormFieldComponent,
|
|
16
|
-
CommonModule
|
|
17
|
-
]
|
|
18
|
-
})
|
|
19
|
-
export class FilterComponent implements OnInit {
|
|
20
|
-
|
|
21
|
-
@Input() column: TableColumn;
|
|
22
|
-
@Input() control!: AbstractControl;
|
|
23
|
-
@Input() cssClass?: string;
|
|
24
|
-
|
|
25
|
-
@Output() clearFilter = new EventEmitter<string>();
|
|
26
|
-
|
|
27
|
-
public typeField = FormFieldTypeEnum;
|
|
28
|
-
|
|
29
|
-
constructor() { }
|
|
30
|
-
|
|
31
|
-
ngOnInit(): void {
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public onClearFilter() {
|
|
35
|
-
this.clearFilter.emit();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
<!-- <app-actions-on-table [actionOnTable]="actionOnTable" (actionClick)="onActionClick($event)"
|
|
2
|
-
[customContent]="customActionsTemplate"></app-actions-on-table> -->
|
|
3
|
-
|
|
4
|
-
<!-- <div *ngIf="checkbox" class="actions-on-table on-selection">
|
|
5
|
-
<div class="on-selection-info"> -->
|
|
6
|
-
<!-- If one selected item on the current page -->
|
|
7
|
-
<!-- <span class="fw-bold">1</span>
|
|
8
|
-
{{ '_COMMON._TABLE._BULK_ACTION.SELECTED_ITEM_CURRENT_PAGE' | translate }} -->
|
|
9
|
-
|
|
10
|
-
<!-- If one selected item on all pages -->
|
|
11
|
-
<!-- <span class="fw-bold">1</span>
|
|
12
|
-
{{ '_COMMON._TABLE._BULK_ACTION.SELECTED_ITEM_ALL_PAGES' | translate }}
|
|
13
|
-
<span class="fw-bold">{{total}}</span> -->
|
|
14
|
-
|
|
15
|
-
<!-- If several selected items on the current page -->
|
|
16
|
-
<!-- <span class="fw-bold">{{number}}</span>
|
|
17
|
-
{{ '_COMMON._TABLE._BULK_ACTION.SELECTED_ITEMS_CURRENT_PAGE' | translate }} -->
|
|
18
|
-
|
|
19
|
-
<!-- If several selected items on all pages -->
|
|
20
|
-
<!-- <span class="fw-bold">{{number}}</span>
|
|
21
|
-
{{ '_COMMON._TABLE._BULK_ACTION.SELECTED_ITEMS_ALL_PAGES' | translate }}
|
|
22
|
-
<span class="fw-bold">{{total}}</span> -->
|
|
23
|
-
<!-- </div>
|
|
24
|
-
|
|
25
|
-
<button class="btn btn-secondary btn-min-width" type="button">
|
|
26
|
-
{{ '_COMMON._TABLE._BULK_ACTION.EXPORT_SELECTION' | translate }}
|
|
27
|
-
</button>
|
|
28
|
-
<button class="btn btn-danger btn-min-width" type="button">
|
|
29
|
-
{{ '_COMMON._TABLE._BULK_ACTION.DELETE_SELECTION' | translate }}
|
|
30
|
-
</button>
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
<div class="table-responsive table-responsive-full-width mb-3" appDoubleScroll>
|
|
34
|
-
<table class="table table-bordered table-striped table-hover table-full-width">
|
|
35
|
-
<caption class="visually-hidden" [innerHTML]="'_COMMON._TABLE.CAPTION' | translate: { label: title } "></caption>
|
|
36
|
-
<thead>
|
|
37
|
-
<tr>
|
|
38
|
-
<th *ngIf="checkbox" scope="col" width="10">
|
|
39
|
-
<div class="form-check">
|
|
40
|
-
<input class="form-check-input" type="checkbox" id="checkme">
|
|
41
|
-
<label class="form-label" class="form-check-label" for="checkme">
|
|
42
|
-
<span class="visually-hidden">{{ '_COMMON._TABLE._THEAD.CHECK_LINE' | translate }}</span>
|
|
43
|
-
</label>
|
|
44
|
-
</div>
|
|
45
|
-
</th>
|
|
46
|
-
<ng-container *ngFor="let column of columns">
|
|
47
|
-
<th scope="col" [ngClass]="{'p-0': column.sort}">
|
|
48
|
-
<button *ngIf="column.sort" class="sorting-btn"
|
|
49
|
-
[ngClass]="getSortIcon(column.key)"
|
|
50
|
-
(click)="setSortProperty(column.key)">
|
|
51
|
-
{{column.label}}
|
|
52
|
-
<span class="sorting-icons">
|
|
53
|
-
<span class="bo-icons bo-sort"></span>
|
|
54
|
-
</span>
|
|
55
|
-
</button>
|
|
56
|
-
<ng-container *ngIf="!column.sort">
|
|
57
|
-
{{ column.label }}
|
|
58
|
-
</ng-container>
|
|
59
|
-
</th>
|
|
60
|
-
</ng-container>
|
|
61
|
-
</tr>
|
|
62
|
-
<tr *ngIf="filterForm" [formGroup]="filterForm" class="table-filter">
|
|
63
|
-
<th *ngIf="checkbox"></th>
|
|
64
|
-
<ng-container *ngFor="let column of columns">
|
|
65
|
-
<th>
|
|
66
|
-
<app-form-field *ngIf="column.filter" [type]="column.filter?.type" [name]="column.key" [control]="filterForm.get(column.key)"
|
|
67
|
-
[options]="column.filter?.options" [inTableFilter]="true" [cssClass]="filterForm.get(column.key).value ? 'has-value' : ''"
|
|
68
|
-
[placeholder]="'_COMMON._ACTION.FILTER_BY' | translate"
|
|
69
|
-
(clearFieldFilter)="filterForm.get(column.key).setValue('')"></app-form-field>
|
|
70
|
-
</th>
|
|
71
|
-
</ng-container>
|
|
72
|
-
</tr>
|
|
73
|
-
</thead>
|
|
74
|
-
<tbody>
|
|
75
|
-
<tr>
|
|
76
|
-
<td colspan="100"> -->
|
|
77
|
-
<!-- <app-loader></app-loader> -->
|
|
78
|
-
<!-- </td>
|
|
79
|
-
</tr>
|
|
80
|
-
<ng-container> -->
|
|
81
|
-
<!-- <tr *ngIf="paginedResult && paginedResult.result?.length <= 0">
|
|
82
|
-
<td class="table-info no-result" colspan="100">
|
|
83
|
-
{{ '_COMMON._TABLE.NO_RESULT' | translate }}
|
|
84
|
-
</td>
|
|
85
|
-
</tr> -->
|
|
86
|
-
<!-- </ng-container>
|
|
87
|
-
</tbody>
|
|
88
|
-
|
|
89
|
-
@if (legend) {
|
|
90
|
-
<tfoot>
|
|
91
|
-
<tr>
|
|
92
|
-
<td class="table-legend" colspan="100">
|
|
93
|
-
<app-legend [legend]="legend"></app-legend>
|
|
94
|
-
</td>
|
|
95
|
-
</tr>
|
|
96
|
-
</tfoot>
|
|
97
|
-
}
|
|
98
|
-
</table>
|
|
99
|
-
</div> -->
|
|
100
|
-
|
|
101
|
-
<!-- <cw-xpagination *ngIf="paginedResult && paginedResult?.pagination.PageCount >= 0"
|
|
102
|
-
[pagination]="paginedResult?.pagination" [pagesToShow]="pageToShow" (goPage)="goToPage($event)" (goNext)="onNext()"
|
|
103
|
-
(goPrev)="onPrev()" (nbResultChange)="onNbResultChange($event)">
|
|
104
|
-
</cw-xpagination> -->
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
import { TableComponent } from './table.component';
|
|
3
|
-
|
|
4
|
-
describe('TableComponent', () => {
|
|
5
|
-
let component: TableComponent;
|
|
6
|
-
let fixture: ComponentFixture<TableComponent>;
|
|
7
|
-
|
|
8
|
-
beforeEach(async () => {
|
|
9
|
-
await TestBed.configureTestingModule({
|
|
10
|
-
declarations: [ TableComponent ]
|
|
11
|
-
})
|
|
12
|
-
.compileComponents();
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
fixture = TestBed.createComponent(TableComponent);
|
|
17
|
-
component = fixture.componentInstance;
|
|
18
|
-
fixture.detectChanges();
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it('should create', () => {
|
|
22
|
-
expect(component).toBeTruthy();
|
|
23
|
-
});
|
|
24
|
-
});
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';
|
|
3
|
-
import { FormGroup, FormsModule, ReactiveFormsModule, UntypedFormBuilder } from '@angular/forms';
|
|
4
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
-
import { DoubleScrollDirective } from '../../directives/double-scroll';
|
|
6
|
-
// import { PaginedComponent } from '../../../extensions/pagined-component.extends';
|
|
7
|
-
// import { PaginationInfo } from '../../../models/pagination/pagination-info';
|
|
8
|
-
// import { ActiveFilter, ListFilter } from '../../models/table/IFilter';
|
|
9
|
-
// import { SortType } from '../../../models/table/sort-type';
|
|
10
|
-
import { Legend } from '../../models/ui/legend.model';
|
|
11
|
-
import { ActionOnTable, ActionOnTableType, TableColumn } from '../../models/ui/table.model';
|
|
12
|
-
// import { XpaginationComponent } from '../../xpagination/xpagination.component';
|
|
13
|
-
import { FormFieldComponent } from '../form-field/form-field.component';
|
|
14
|
-
import { LegendComponent } from "../legend/legend.component";
|
|
15
|
-
import { ActionsOnTableComponent } from './components/actions-on-table/actions-on-table.component';
|
|
16
|
-
|
|
17
|
-
@Component({
|
|
18
|
-
selector: 'app-table',
|
|
19
|
-
templateUrl: './table.component.html',
|
|
20
|
-
standalone: true,
|
|
21
|
-
imports: [
|
|
22
|
-
ActionsOnTableComponent,
|
|
23
|
-
TranslateModule,
|
|
24
|
-
FormsModule,
|
|
25
|
-
CommonModule,
|
|
26
|
-
// XpaginationComponent,
|
|
27
|
-
ReactiveFormsModule,
|
|
28
|
-
DoubleScrollDirective,
|
|
29
|
-
LegendComponent,
|
|
30
|
-
FormFieldComponent
|
|
31
|
-
]
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
export class TableComponent {}
|
|
35
|
-
|
|
36
|
-
// export class TableComponent extends PaginedComponent<Array<ListFilter>> implements OnInit {
|
|
37
|
-
|
|
38
|
-
// @Input() checkbox = true;
|
|
39
|
-
// @Input() title: string;
|
|
40
|
-
// @Input() columns: TableColumn[] = [];
|
|
41
|
-
// @Input() actionOnTable?: ActionOnTable[] = [];
|
|
42
|
-
// @Input() legend?: Legend;
|
|
43
|
-
|
|
44
|
-
// @Output() actionClick = new EventEmitter<ActionOnTableType>();
|
|
45
|
-
|
|
46
|
-
// @ContentChild('customActions') customActionsTemplate?: TemplateRef<any>;
|
|
47
|
-
|
|
48
|
-
// public filter: ListFilter;
|
|
49
|
-
// public actionOnTableAction = ActionOnTableType;
|
|
50
|
-
|
|
51
|
-
// constructor(fb: UntypedFormBuilder) {
|
|
52
|
-
// super(fb);
|
|
53
|
-
// }
|
|
54
|
-
|
|
55
|
-
// ngOnInit(): void {
|
|
56
|
-
// this.filter = this.getSavedFilters(new ListFilter(this.columns));
|
|
57
|
-
// this.pagination = new PaginationInfo();
|
|
58
|
-
// this.pagination.filter = this.filter;
|
|
59
|
-
|
|
60
|
-
// // Identifier la colonne ayant defaultFilter = true
|
|
61
|
-
// const defaultCol = this.columns.find(col => col.filter?.defaultFilter);
|
|
62
|
-
|
|
63
|
-
// if (defaultCol?.filter) {
|
|
64
|
-
// this.pagination.sortInfo.sortColumnName = defaultCol.key;
|
|
65
|
-
// this.pagination.sortInfo.sortType = defaultCol.filter.defaultOrder ?? SortType.Asc;
|
|
66
|
-
// } else {
|
|
67
|
-
// // fallback si aucune colonne par défaut
|
|
68
|
-
// this.pagination.sortInfo.sortColumnName = this.columns[0]?.key ?? '';
|
|
69
|
-
// this.pagination.sortInfo.sortType = SortType.Asc;
|
|
70
|
-
// }
|
|
71
|
-
|
|
72
|
-
// this.initFilterForm(this.filter);
|
|
73
|
-
// //this.loadData();
|
|
74
|
-
|
|
75
|
-
// console.log('FORM ==> ', this.filterForm.value);
|
|
76
|
-
// console.log('FORM ==> ', this.filterForm.controls['createdAt']);
|
|
77
|
-
// console.log('FORM ==> ', this.filterForm.controls['createdAt'] instanceof FormGroup); // doit être true
|
|
78
|
-
|
|
79
|
-
// }
|
|
80
|
-
|
|
81
|
-
// public onActionClick(action: ActionOnTableType): void {
|
|
82
|
-
// this.actionClick.emit(action);
|
|
83
|
-
// }
|
|
84
|
-
|
|
85
|
-
// }
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { WizardStepComponent } from './wizard-step.component';
|
|
4
|
-
|
|
5
|
-
describe('WizardStepComponent', () => {
|
|
6
|
-
let component: WizardStepComponent;
|
|
7
|
-
let fixture: ComponentFixture<WizardStepComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
await TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ WizardStepComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
fixture = TestBed.createComponent(WizardStepComponent);
|
|
18
|
-
component = fixture.componentInstance;
|
|
19
|
-
fixture.detectChanges();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should create', () => {
|
|
23
|
-
expect(component).toBeTruthy();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Component, Input, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
@Component({
|
|
4
|
-
selector: 'app-wizard-step',
|
|
5
|
-
template: '<ng-template #content><ng-content></ng-content></ng-template>',
|
|
6
|
-
standalone: true
|
|
7
|
-
})
|
|
8
|
-
|
|
9
|
-
export class WizardStepComponent {
|
|
10
|
-
|
|
11
|
-
@Input() title!: string;
|
|
12
|
-
@Input() completed = false;
|
|
13
|
-
|
|
14
|
-
@ViewChild('content', { static: true }) templateRef!: TemplateRef<any>;
|
|
15
|
-
|
|
16
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
<nav>
|
|
2
|
-
<ul class="list-inline step-list">
|
|
3
|
-
@for (step of steps.toArray(); track step; let i = $index) {
|
|
4
|
-
<li class="list-inline-item step-item">
|
|
5
|
-
<button class="btn step-button" [ngClass]="{
|
|
6
|
-
'step-active': selectedIndex === i,
|
|
7
|
-
'step-completed': step.completed,
|
|
8
|
-
'step-current': selectedIndex === i && step.completed === false
|
|
9
|
-
}" [disabled]="(i > 0 && !steps.toArray()[i - 1]?.completed)" (click)="goToStep(i)" type="button">
|
|
10
|
-
<span class="step-indicator bo-icons bo-alert-success" aria-hidden="true"></span>
|
|
11
|
-
<span class="step-label">
|
|
12
|
-
{{ step.title || ('_COMMON._STEPPER.STEP' | translate) + (i + 1) }}
|
|
13
|
-
</span>
|
|
14
|
-
</button>
|
|
15
|
-
</li>
|
|
16
|
-
}
|
|
17
|
-
</ul>
|
|
18
|
-
</nav>
|
|
19
|
-
|
|
20
|
-
@for (step of steps.toArray(); track step; let i = $index) {
|
|
21
|
-
<section class="tab-pane" [class.active]="selectedIndex === i" [hidden]="selectedIndex !== i" role="tabpanel">
|
|
22
|
-
<ng-container *ngTemplateOutlet="step.templateRef"></ng-container>
|
|
23
|
-
</section>
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
<div class="text-center mt-5">
|
|
27
|
-
<div class="btn-group">
|
|
28
|
-
<button class="btn btn-secondary btn-min-width" (click)="previousStep()" [disabled]="selectedIndex === 0"
|
|
29
|
-
type="button">
|
|
30
|
-
{{ '_COMMON._STEPPER.PREVIOUS_STEP' | translate }}
|
|
31
|
-
</button>
|
|
32
|
-
|
|
33
|
-
@if (selectedIndex !== steps.length - 1) {
|
|
34
|
-
<button class="btn btn-primary btn-min-width" (click)="nextStep()"
|
|
35
|
-
[disabled]="!steps.toArray()[selectedIndex]?.completed" type="button">
|
|
36
|
-
{{ '_COMMON._STEPPER.NEXT_STEP' | translate }}
|
|
37
|
-
</button>
|
|
38
|
-
}
|
|
39
|
-
@else {
|
|
40
|
-
<button class="btn btn-primary btn-min-width" (click)="endWizard()" type="button">
|
|
41
|
-
{{ '_COMMON._ACTION.END' | translate }}
|
|
42
|
-
</button>
|
|
43
|
-
}
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
-
|
|
3
|
-
import { WizardStepperComponent } from './wizard-stepper.component';
|
|
4
|
-
|
|
5
|
-
describe('WizardStepperComponent', () => {
|
|
6
|
-
let component: WizardStepperComponent;
|
|
7
|
-
let fixture: ComponentFixture<WizardStepperComponent>;
|
|
8
|
-
|
|
9
|
-
beforeEach(async () => {
|
|
10
|
-
await TestBed.configureTestingModule({
|
|
11
|
-
declarations: [ WizardStepperComponent ]
|
|
12
|
-
})
|
|
13
|
-
.compileComponents();
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
fixture = TestBed.createComponent(WizardStepperComponent);
|
|
18
|
-
component = fixture.componentInstance;
|
|
19
|
-
fixture.detectChanges();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should create', () => {
|
|
23
|
-
expect(component).toBeTruthy();
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, ContentChildren, EventEmitter, Output, QueryList } from '@angular/core';
|
|
3
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
-
import { WizardStepComponent } from './components/wizard-step.component';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'app-wizard-stepper',
|
|
8
|
-
templateUrl: './wizard-stepper.component.html',
|
|
9
|
-
standalone: true,
|
|
10
|
-
imports: [
|
|
11
|
-
CommonModule,
|
|
12
|
-
TranslateModule
|
|
13
|
-
]
|
|
14
|
-
})
|
|
15
|
-
export class WizardStepperComponent {
|
|
16
|
-
@ContentChildren(WizardStepComponent) steps!: QueryList<WizardStepComponent>;
|
|
17
|
-
|
|
18
|
-
@Output() stepChange = new EventEmitter<number>();
|
|
19
|
-
@Output() stepNext = new EventEmitter<number>();
|
|
20
|
-
@Output() stepPrevious = new EventEmitter<number>();
|
|
21
|
-
@Output() stepEnd = new EventEmitter<number>();
|
|
22
|
-
|
|
23
|
-
public selectedIndex = 0;
|
|
24
|
-
|
|
25
|
-
public get stepList(): WizardStepComponent[] {
|
|
26
|
-
return this.steps.toArray();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
public goToStep(index: number) {
|
|
30
|
-
if (index < 0 || index >= this.steps.length) return;
|
|
31
|
-
|
|
32
|
-
// Vérifier que toutes les étapes précédentes sont complétées
|
|
33
|
-
for (let i = 0; i < index; i++) {
|
|
34
|
-
if (!this.steps.toArray()[i].completed) {
|
|
35
|
-
return; // Empêche d'aller à cette étape si une étape précédente n'est pas validée
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
this.selectedIndex = index;
|
|
40
|
-
this.stepChange.emit(this.selectedIndex);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
public nextStep() {
|
|
44
|
-
if (this.selectedIndex < this.steps.length - 1) {
|
|
45
|
-
const currentStep = this.steps.toArray()[this.selectedIndex];
|
|
46
|
-
if (!currentStep.completed) {
|
|
47
|
-
// Si l'étape courante n'est pas validée, on bloque
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
this.selectedIndex++;
|
|
51
|
-
this.stepNext.emit(this.selectedIndex);
|
|
52
|
-
this.stepChange.emit(this.selectedIndex);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
public previousStep() {
|
|
57
|
-
if (this.selectedIndex > 0) {
|
|
58
|
-
this.selectedIndex--;
|
|
59
|
-
this.stepPrevious.emit(this.selectedIndex);
|
|
60
|
-
this.stepChange.emit(this.selectedIndex);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
public endWizard() {
|
|
65
|
-
if (this.selectedIndex > 0) {
|
|
66
|
-
this.stepEnd.emit(this.selectedIndex);
|
|
67
|
-
this.stepChange.emit(this.selectedIndex);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { AfterViewChecked, Directive, ElementRef, HostListener, OnDestroy, OnInit, Renderer2 } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
@Directive({
|
|
4
|
-
selector: '[appDoubleScroll]'
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export class DoubleScrollDirective implements OnInit, AfterViewChecked, OnDestroy {
|
|
8
|
-
|
|
9
|
-
scroll: any;
|
|
10
|
-
div: any;
|
|
11
|
-
|
|
12
|
-
constructor(private el: ElementRef, private renderer: Renderer2) {
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
@HostListener('window:resize', ['$event'])
|
|
16
|
-
onResize() {
|
|
17
|
-
this.adaptScrollWidth();
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Si scroll le tableau on scroll aussi div.table-responsive-double-scroll
|
|
21
|
-
@HostListener('scroll', ['$event'])
|
|
22
|
-
onScroll() {
|
|
23
|
-
this.div.scrollLeft = this.el.nativeElement.scrollLeft;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
ngOnInit() {
|
|
27
|
-
|
|
28
|
-
// On applique un margin-top à 0 à la table.
|
|
29
|
-
this.el.nativeElement.style.marginTop = '0';
|
|
30
|
-
|
|
31
|
-
// On crée le div.table-responsive-double-scroll et on l'insère avant le tableau
|
|
32
|
-
this.div = this.renderer.createElement('div');
|
|
33
|
-
this.renderer.addClass(this.div, 'table-responsive-double-scroll');
|
|
34
|
-
this.renderer.insertBefore(this.el.nativeElement.parentNode, this.div, this.el.nativeElement);
|
|
35
|
-
|
|
36
|
-
// On crée le div.scroll et on l'insère dans le div.table-responsive-double-scroll
|
|
37
|
-
this.scroll = this.renderer.createElement('div');
|
|
38
|
-
this.renderer.addClass(this.scroll, 'scroll');
|
|
39
|
-
this.renderer.appendChild(this.div, this.scroll);
|
|
40
|
-
|
|
41
|
-
// Si on scroll div.table-responsive-double-scroll on scroll aussi le tableau
|
|
42
|
-
this.div.addEventListener('scroll', function() {
|
|
43
|
-
//this.nextSibling.scrollLeft = this.scrollLeft;
|
|
44
|
-
this.nextSibling.style.transform = "translateX(-" + this.scrollLeft + "px)";
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
adaptScrollWidth() {
|
|
49
|
-
// On donne à div.scroll la taille du tableau
|
|
50
|
-
if (this.el.nativeElement.firstChild.offsetWidth > this.el.nativeElement.offsetWidth) {
|
|
51
|
-
this.scroll.style.width = (this.el.nativeElement.firstChild.offsetWidth + 17) + 'px';
|
|
52
|
-
} else {
|
|
53
|
-
this.scroll.style.widdth = 'auto';
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
ngAfterViewChecked() {
|
|
58
|
-
this.adaptScrollWidth();
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
ngOnDestroy() {
|
|
62
|
-
this.div.removeEventListener('scroll', null);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { AfterViewChecked, AfterViewInit, Directive, ElementRef, HostListener, OnInit, Renderer2 } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
@Directive({
|
|
4
|
-
selector: '[appRwdTabs]',
|
|
5
|
-
standalone: true
|
|
6
|
-
})
|
|
7
|
-
|
|
8
|
-
export class RwdTabsDirective implements OnInit, AfterViewInit, AfterViewChecked {
|
|
9
|
-
parentEl = this.el.nativeElement;
|
|
10
|
-
arrayLi = [];
|
|
11
|
-
goodOnViewInit = false;
|
|
12
|
-
dropdownDisplay = false;
|
|
13
|
-
goodOnViewChecked = false;
|
|
14
|
-
|
|
15
|
-
rwdTabsOk = false;
|
|
16
|
-
|
|
17
|
-
constructor(private el: ElementRef, private renderer: Renderer2) {
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
@HostListener('window:resize', ['$event'])
|
|
21
|
-
onResize() {
|
|
22
|
-
this.rwdTabs();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
ngOnInit() {
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
ngAfterViewInit() {
|
|
29
|
-
this.liOnLoad();
|
|
30
|
-
// Si on a bien joué la fonction liOnLoad
|
|
31
|
-
if (this.goodOnViewInit) {
|
|
32
|
-
this.rwdTabs();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
ngAfterViewChecked() {
|
|
37
|
-
// si on a pas réussi à récupérer les marges et les tailles
|
|
38
|
-
// sur le init, on le fait sur le check
|
|
39
|
-
if (!this.goodOnViewInit) {
|
|
40
|
-
this.liOnLoad();
|
|
41
|
-
}
|
|
42
|
-
// si on a pas déjà joué la fonction
|
|
43
|
-
if (!this.rwdTabsOk) {
|
|
44
|
-
this.rwdTabs();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
liOnLoad() {
|
|
49
|
-
Array.prototype.forEach.call(this.parentEl.children, child => {
|
|
50
|
-
// On récupère la taille des marges
|
|
51
|
-
const styleChild = child.currentStyle || window.getComputedStyle(child);
|
|
52
|
-
const childMarginSum = parseFloat(styleChild.marginLeft);
|
|
53
|
-
|
|
54
|
-
// on teste si on arrive à récupérer les marges sur le init
|
|
55
|
-
if (styleChild.marginLeft !== '') {
|
|
56
|
-
// On stock les li et ça taille dans un tableau arrayLi
|
|
57
|
-
this.arrayLi.push([child, child.offsetWidth + childMarginSum]);
|
|
58
|
-
this.goodOnViewInit = true;
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
if (this.goodOnViewInit) {
|
|
62
|
-
// On supprime le dernier élément du tableau qui correspond au dropdown
|
|
63
|
-
this.arrayLi.pop();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
rwdTabs() {
|
|
68
|
-
this.rwdTabsOk = true; // flag la fonction comme lancée
|
|
69
|
-
|
|
70
|
-
const widthUl = this.parentEl.offsetWidth;
|
|
71
|
-
// Largeur du dropdown à prendre en compte (ancienne charte = 90, Manett = 150)
|
|
72
|
-
let widthLi = !this.dropdownDisplay ? 0 : 150;
|
|
73
|
-
const dropDown = this.parentEl.lastChild.querySelector('.dropdown-menu');
|
|
74
|
-
|
|
75
|
-
// On parcourt le tableau de li
|
|
76
|
-
this.arrayLi.forEach(element => {
|
|
77
|
-
widthLi += element[1];
|
|
78
|
-
// Quand les li ne rentreent plus dans le ul
|
|
79
|
-
if (widthLi > widthUl) {
|
|
80
|
-
// On les déplace dans le dropdown
|
|
81
|
-
dropDown.appendChild(element[0]);
|
|
82
|
-
this.dropdownDisplay = true; // on indique que le dropdown doit apparaitre
|
|
83
|
-
} else {
|
|
84
|
-
// Sinon on replace l'onglet à sa place initale
|
|
85
|
-
this.renderer.insertBefore(this.parentEl, element[0], this.parentEl.lastChild);
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
// On fait apparaître le dropdown
|
|
90
|
-
if (this.dropdownDisplay) {
|
|
91
|
-
this.parentEl.lastChild.style.setProperty('display', 'block', 'important');
|
|
92
|
-
}
|
|
93
|
-
// Si le dropdown est vide on le cache de nouveau
|
|
94
|
-
if (dropDown.firstChild == null) {
|
|
95
|
-
this.parentEl.lastChild.style.setProperty('display', 'none', 'important');
|
|
96
|
-
this.dropdownDisplay = false;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { Directive, ElementRef, Renderer2, OnInit } from '@angular/core';
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
-
|
|
4
|
-
@Directive({
|
|
5
|
-
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
6
|
-
selector: '[showHidePassword]',
|
|
7
|
-
standalone: true
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
export class ShowHidePasswordDirective implements OnInit {
|
|
11
|
-
|
|
12
|
-
private isShown = false;
|
|
13
|
-
|
|
14
|
-
constructor(
|
|
15
|
-
private el: ElementRef,
|
|
16
|
-
private renderer: Renderer2,
|
|
17
|
-
private translateService: TranslateService
|
|
18
|
-
) {
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
ngOnInit() {
|
|
22
|
-
this.setup();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
setup() {
|
|
26
|
-
const div = this.renderer.createElement('div');
|
|
27
|
-
this.renderer.insertBefore(this.el.nativeElement.parentNode, div, this.el.nativeElement);
|
|
28
|
-
|
|
29
|
-
this.renderer.appendChild(div, this.el.nativeElement);
|
|
30
|
-
this.renderer.addClass(div, 'see-password-container');
|
|
31
|
-
|
|
32
|
-
const button = this.renderer.createElement('button');
|
|
33
|
-
this.renderer.appendChild(this.el.nativeElement.parentNode, button);
|
|
34
|
-
this.renderer.addClass(button, 'btn');
|
|
35
|
-
this.renderer.setAttribute(button, 'type', 'button');
|
|
36
|
-
this.renderer.addClass(button, 'optyweb');
|
|
37
|
-
this.renderer.addClass(button, 'cw-hide-map');
|
|
38
|
-
this.renderer.addClass(button, 'py-2');
|
|
39
|
-
this.renderer.addClass(button, 'see-password');
|
|
40
|
-
|
|
41
|
-
const srOnly = this.renderer.createElement('span');
|
|
42
|
-
this.renderer.appendChild(button, srOnly);
|
|
43
|
-
this.renderer.addClass(srOnly, 'visually-hidden');
|
|
44
|
-
this.renderer.setProperty(srOnly,'innerHTML', this.translateService.instant('_COMMON._FORM._SHOW_HIDE_PWD.SHOW'));
|
|
45
|
-
|
|
46
|
-
this.renderer.listen(button, 'click', (event) => {
|
|
47
|
-
this.isShown = !this.isShown;
|
|
48
|
-
if (this.isShown) {
|
|
49
|
-
this.el.nativeElement.setAttribute('type', 'text');
|
|
50
|
-
this.renderer.removeClass(button, 'cw-hide-map');
|
|
51
|
-
this.renderer.addClass(button, 'cw-show-map');
|
|
52
|
-
this.renderer.setProperty(srOnly,'innerHTML', this.translateService.instant('_COMMON._FORM._SHOW_HIDE_PWD.HIDE'));
|
|
53
|
-
} else {
|
|
54
|
-
this.el.nativeElement.setAttribute('type', 'password');
|
|
55
|
-
this.renderer.addClass(button, 'cw-hide-map');
|
|
56
|
-
this.renderer.removeClass(button, 'cw-show-map');
|
|
57
|
-
this.renderer.setProperty(srOnly,'innerHTML', this.translateService.instant('_COMMON._FORM._SHOW_HIDE_PWD.SHOW'));
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
}
|