@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.
Files changed (208) hide show
  1. package/cityway-bo-ui-1.0.3.tgz +0 -0
  2. package/fesm2022/cityway-bo-ui.mjs +1598 -0
  3. package/fesm2022/cityway-bo-ui.mjs.map +1 -0
  4. package/index.d.ts +509 -0
  5. package/package.json +34 -21
  6. package/styles.min.css +5 -0
  7. package/styles.min.css.map +1 -0
  8. package/.eslintrc.json +0 -37
  9. package/ng-package.json +0 -21
  10. package/src/lib/bo-ui.config.ts +0 -8
  11. package/src/lib/components/accordions/accordions.component.html +0 -16
  12. package/src/lib/components/accordions/accordions.component.spec.ts +0 -24
  13. package/src/lib/components/accordions/accordions.component.ts +0 -27
  14. package/src/lib/components/accordions/components/accordions-content.component.spec.ts +0 -24
  15. package/src/lib/components/accordions/components/accordions-content.component.ts +0 -28
  16. package/src/lib/components/alert/alert.component.html +0 -15
  17. package/src/lib/components/alert/alert.component.spec.ts +0 -24
  18. package/src/lib/components/alert/alert.component.ts +0 -36
  19. package/src/lib/components/badge/badge.component.html +0 -7
  20. package/src/lib/components/badge/badge.component.spec.ts +0 -24
  21. package/src/lib/components/badge/badge.component.ts +0 -24
  22. package/src/lib/components/button/button.component.html +0 -43
  23. package/src/lib/components/button/button.component.spec.ts +0 -25
  24. package/src/lib/components/button/button.component.ts +0 -47
  25. package/src/lib/components/card/card.component.html +0 -15
  26. package/src/lib/components/card/card.component.spec.ts +0 -25
  27. package/src/lib/components/card/card.component.ts +0 -30
  28. package/src/lib/components/custom-list/custom-list.component.html +0 -31
  29. package/src/lib/components/custom-list/custom-list.component.spec.ts +0 -24
  30. package/src/lib/components/custom-list/custom-list.component.ts +0 -42
  31. package/src/lib/components/drag-n-drop-list/drag-n-drop-list.component.html +0 -27
  32. package/src/lib/components/drag-n-drop-list/drag-n-drop-list.component.spec.ts +0 -24
  33. package/src/lib/components/drag-n-drop-list/drag-n-drop-list.component.ts +0 -40
  34. package/src/lib/components/form-field/form-field.component.html +0 -333
  35. package/src/lib/components/form-field/form-field.component.spec.ts +0 -24
  36. package/src/lib/components/form-field/form-field.component.ts +0 -256
  37. package/src/lib/components/icon/icon.component.html +0 -9
  38. package/src/lib/components/icon/icon.component.spec.ts +0 -25
  39. package/src/lib/components/icon/icon.component.ts +0 -31
  40. package/src/lib/components/layout/admin-layout/admin-layout.component.html +0 -17
  41. package/src/lib/components/layout/admin-layout/admin-layout.component.ts +0 -181
  42. package/src/lib/components/layout/footer/footer.component.html +0 -51
  43. package/src/lib/components/layout/footer/footer.component.ts +0 -65
  44. package/src/lib/components/layout/header/header.component.html +0 -71
  45. package/src/lib/components/layout/header/header.component.ts +0 -95
  46. package/src/lib/components/layout/menu/menu.component.html +0 -115
  47. package/src/lib/components/layout/menu/menu.component.ts +0 -75
  48. package/src/lib/components/layout/menu-accordion/accordion.directive.ts +0 -57
  49. package/src/lib/components/layout/menu-accordion/accordionanchor.directive.ts +0 -21
  50. package/src/lib/components/layout/menu-accordion/accordionlink.directive.ts +0 -45
  51. package/src/lib/components/layout/menu-accordion/index.ts +0 -3
  52. package/src/lib/components/layout/sidebar/sidebar.component.html +0 -62
  53. package/src/lib/components/layout/sidebar/sidebar.component.ts +0 -28
  54. package/src/lib/components/layout/skip-links/skip-links.component.html +0 -3
  55. package/src/lib/components/layout/skip-links/skip-links.component.spec.ts +0 -25
  56. package/src/lib/components/layout/skip-links/skip-links.component.ts +0 -19
  57. package/src/lib/components/layout/title-breadcrumb/title-breadcrumb.component.html +0 -10
  58. package/src/lib/components/layout/title-breadcrumb/title-breadcrumb.component.spec.ts +0 -25
  59. package/src/lib/components/layout/title-breadcrumb/title-breadcrumb.component.ts +0 -16
  60. package/src/lib/components/legend/legend.component.html +0 -23
  61. package/src/lib/components/legend/legend.component.spec.ts +0 -24
  62. package/src/lib/components/legend/legend.component.ts +0 -28
  63. package/src/lib/components/loader/loader.component.html +0 -4
  64. package/src/lib/components/loader/loader.component.ts +0 -16
  65. package/src/lib/components/modals/modals.component.html +0 -71
  66. package/src/lib/components/modals/modals.component.spec.ts +0 -25
  67. package/src/lib/components/modals/modals.component.ts +0 -49
  68. package/src/lib/components/tab/components/tab-content.component.spec.ts +0 -24
  69. package/src/lib/components/tab/components/tab-content.component.ts +0 -27
  70. package/src/lib/components/tab/tab.component.html +0 -59
  71. package/src/lib/components/tab/tab.component.spec.ts +0 -24
  72. package/src/lib/components/tab/tab.component.ts +0 -79
  73. package/src/lib/components/table/components/actions-on-table/actions-on-table.component.html +0 -50
  74. package/src/lib/components/table/components/actions-on-table/actions-on-table.component.spec.ts +0 -24
  75. package/src/lib/components/table/components/actions-on-table/actions-on-table.component.ts +0 -33
  76. package/src/lib/components/table/components/filter/filter.component.html +0 -21
  77. package/src/lib/components/table/components/filter/filter.component.spec.ts +0 -24
  78. package/src/lib/components/table/components/filter/filter.component.ts +0 -38
  79. package/src/lib/components/table/table.component.html +0 -104
  80. package/src/lib/components/table/table.component.spec.ts +0 -24
  81. package/src/lib/components/table/table.component.ts +0 -85
  82. package/src/lib/components/wizard-stepper/components/wizard-step.component.spec.ts +0 -25
  83. package/src/lib/components/wizard-stepper/components/wizard-step.component.ts +0 -16
  84. package/src/lib/components/wizard-stepper/wizard-stepper.component.html +0 -45
  85. package/src/lib/components/wizard-stepper/wizard-stepper.component.spec.ts +0 -25
  86. package/src/lib/components/wizard-stepper/wizard-stepper.component.ts +0 -70
  87. package/src/lib/directives/double-scroll.ts +0 -64
  88. package/src/lib/directives/rwd-tabs.ts +0 -99
  89. package/src/lib/directives/show-hide-password.ts +0 -61
  90. package/src/lib/enum/drag-item.enum.ts +0 -5
  91. package/src/lib/enum/field-type.enum.ts +0 -36
  92. package/src/lib/enum/legend-type.enum.ts +0 -5
  93. package/src/lib/enum/modals.enum.ts +0 -6
  94. package/src/lib/enum/ui-type.enum.ts +0 -11
  95. package/src/lib/models/ui/custom-list.model.ts +0 -14
  96. package/src/lib/models/ui/legend.model.ts +0 -17
  97. package/src/lib/models/ui/table.model.ts +0 -33
  98. package/src/lib/services/ui/modals.service.ts +0 -47
  99. package/src/lib/services/version.service.ts +0 -22
  100. package/src/public-api.ts +0 -49
  101. package/tsconfig.lib.json +0 -18
  102. package/tsconfig.lib.prod.json +0 -11
  103. package/tsconfig.spec.json +0 -14
  104. package/tslint.json +0 -17
  105. /package/{src/lib → lib}/assets/fonts/bo/_variables.scss +0 -0
  106. /package/{src/lib → lib}/assets/fonts/bo/bo.scss +0 -0
  107. /package/{src/lib → lib}/assets/fonts/bo/bo.woff +0 -0
  108. /package/{src/lib → lib}/assets/fonts/bo/bo.woff2 +0 -0
  109. /package/{src/lib → lib}/assets/fonts/nunito/_nunito.scss +0 -0
  110. /package/{src/lib → lib}/assets/fonts/nunito/nunito-bold.woff +0 -0
  111. /package/{src/lib → lib}/assets/fonts/nunito/nunito-bold.woff2 +0 -0
  112. /package/{src/lib → lib}/assets/fonts/nunito/nunito-extrabold.woff +0 -0
  113. /package/{src/lib → lib}/assets/fonts/nunito/nunito-extrabold.woff2 +0 -0
  114. /package/{src/lib → lib}/assets/fonts/nunito/nunito-regular.woff +0 -0
  115. /package/{src/lib → lib}/assets/fonts/nunito/nunito-regular.woff2 +0 -0
  116. /package/{src/lib → lib}/assets/fonts/nunito/nunito-semi-bold.woff +0 -0
  117. /package/{src/lib → lib}/assets/fonts/nunito/nunito-semi-bold.woff2 +0 -0
  118. /package/{src/lib → lib}/assets/fonts/optyweb/_variables.scss +0 -0
  119. /package/{src/lib → lib}/assets/fonts/optyweb/optyweb.scss +0 -0
  120. /package/{src/lib → lib}/assets/fonts/optyweb/optyweb.woff +0 -0
  121. /package/{src/lib → lib}/assets/fonts/optyweb/optyweb.woff2 +0 -0
  122. /package/{src/lib → lib}/assets/i18n/common.en.json +0 -0
  123. /package/{src/lib → lib}/assets/i18n/common.fr.json +0 -0
  124. /package/{src/lib → lib}/assets/i18n/label.en.json +0 -0
  125. /package/{src/lib → lib}/assets/i18n/label.fr.json +0 -0
  126. /package/{src/lib → lib}/assets/images/common/bg-loader.svg +0 -0
  127. /package/{src/lib → lib}/assets/images/common/bg-menu.svg +0 -0
  128. /package/{src/lib → lib}/assets/images/common/bg-round.svg +0 -0
  129. /package/{src/lib → lib}/assets/images/common/check-mark.svg +0 -0
  130. /package/{src/lib → lib}/assets/images/common/loader.svg +0 -0
  131. /package/{src/lib → lib}/assets/images/common/logo-en-bw.svg +0 -0
  132. /package/{src/lib → lib}/assets/images/common/logo-en.svg +0 -0
  133. /package/{src/lib → lib}/assets/images/common/logo-fr-bw.svg +0 -0
  134. /package/{src/lib → lib}/assets/images/common/logo-fr.svg +0 -0
  135. /package/{src/lib → lib}/assets/images/favicon/android-chrome-192x192.png +0 -0
  136. /package/{src/lib → lib}/assets/images/favicon/android-chrome-512x512.png +0 -0
  137. /package/{src/lib → lib}/assets/images/favicon/apple-touch-icon.png +0 -0
  138. /package/{src/lib → lib}/assets/images/favicon/favicon-16x16.png +0 -0
  139. /package/{src/lib → lib}/assets/images/favicon/favicon-32x32.png +0 -0
  140. /package/{src/lib → lib}/assets/images/favicon/favicon-96x96.png +0 -0
  141. /package/{src/lib → lib}/assets/images/favicon/favicon.ico +0 -0
  142. /package/{src/lib → lib}/assets/images/favicon/site.webmanifest +0 -0
  143. /package/{src/lib → lib}/assets/images/icon/referential-icon.svg +0 -0
  144. /package/{src/lib → lib}/assets/images/login/login-bg.jpg +0 -0
  145. /package/{src/lib → lib}/assets/images/login/logo-cityway-baseline.svg +0 -0
  146. /package/{src/lib → lib}/assets/images/toast/warning.svg +0 -0
  147. /package/{src/lib → lib}/assets/styles/scss/_components.scss +0 -0
  148. /package/{src/lib → lib}/assets/styles/scss/_core.scss +0 -0
  149. /package/{src/lib → lib}/assets/styles/scss/_custom-bootstrap.scss +0 -0
  150. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_accordion.scss +0 -0
  151. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_alert.scss +0 -0
  152. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_badge.scss +0 -0
  153. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_breadcrumb.scss +0 -0
  154. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_button-group.scss +0 -0
  155. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_buttons.scss +0 -0
  156. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_card.scss +0 -0
  157. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_close.scss +0 -0
  158. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_dropdown.scss +0 -0
  159. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_forms.scss +0 -0
  160. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_input-group.scss +0 -0
  161. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_lists.scss +0 -0
  162. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_modal.scss +0 -0
  163. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_pagination.scss +0 -0
  164. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_popover.scss +0 -0
  165. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_progress.scss +0 -0
  166. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_reboot.scss +0 -0
  167. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_tables.scss +0 -0
  168. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_tabs.scss +0 -0
  169. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_tooltip.scss +0 -0
  170. /package/{src/lib → lib}/assets/styles/scss/bootstrap/_type.scss +0 -0
  171. /package/{src/lib → lib}/assets/styles/scss/components/_forms-firefox.scss +0 -0
  172. /package/{src/lib → lib}/assets/styles/scss/components/_leaflet.scss +0 -0
  173. /package/{src/lib → lib}/assets/styles/scss/components/_legend.scss +0 -0
  174. /package/{src/lib → lib}/assets/styles/scss/components/_ng-select.scss +0 -0
  175. /package/{src/lib → lib}/assets/styles/scss/components/_ng2-dragula.scss +0 -0
  176. /package/{src/lib → lib}/assets/styles/scss/components/_ng2-validation.scss +0 -0
  177. /package/{src/lib → lib}/assets/styles/scss/components/_ng5-slider.scss +0 -0
  178. /package/{src/lib → lib}/assets/styles/scss/components/_ngb-datepicker.scss +0 -0
  179. /package/{src/lib → lib}/assets/styles/scss/components/_ngb-timepicker.scss +0 -0
  180. /package/{src/lib → lib}/assets/styles/scss/components/_ngx-chips.scss +0 -0
  181. /package/{src/lib → lib}/assets/styles/scss/components/_ngx-editor.scss +0 -0
  182. /package/{src/lib → lib}/assets/styles/scss/components/_ngx-file-drop.scss +0 -0
  183. /package/{src/lib → lib}/assets/styles/scss/components/_ngx-intl-tel-input.scss +0 -0
  184. /package/{src/lib → lib}/assets/styles/scss/components/_ngx-slider.scss +0 -0
  185. /package/{src/lib → lib}/assets/styles/scss/components/_ngx-toast.scss +0 -0
  186. /package/{src/lib → lib}/assets/styles/scss/components/_pwd-policy.scss +0 -0
  187. /package/{src/lib → lib}/assets/styles/scss/components/_table.scss +0 -0
  188. /package/{src/lib → lib}/assets/styles/scss/components/_vis.scss +0 -0
  189. /package/{src/lib → lib}/assets/styles/scss/components/_wizard-stepper.scss +0 -0
  190. /package/{src/lib → lib}/assets/styles/scss/components/table/_table-action.scss +0 -0
  191. /package/{src/lib → lib}/assets/styles/scss/components/table/_table-bg-cell.scss +0 -0
  192. /package/{src/lib → lib}/assets/styles/scss/components/table/_table-double-scroll.scss +0 -0
  193. /package/{src/lib → lib}/assets/styles/scss/components/table/_table-filter.scss +0 -0
  194. /package/{src/lib → lib}/assets/styles/scss/components/table/_table-pagination.scss +0 -0
  195. /package/{src/lib → lib}/assets/styles/scss/components/table/_table-popover.scss +0 -0
  196. /package/{src/lib → lib}/assets/styles/scss/components/table/_table-sorting.scss +0 -0
  197. /package/{src/lib → lib}/assets/styles/scss/core/_footer.scss +0 -0
  198. /package/{src/lib → lib}/assets/styles/scss/core/_header.scss +0 -0
  199. /package/{src/lib → lib}/assets/styles/scss/core/_layout.scss +0 -0
  200. /package/{src/lib → lib}/assets/styles/scss/core/_menu.scss +0 -0
  201. /package/{src/lib → lib}/assets/styles/scss/core/_sidebar.scss +0 -0
  202. /package/{src/lib → lib}/assets/styles/scss/mixins/_utilities.scss +0 -0
  203. /package/{src/lib → lib}/assets/styles/scss/styles.scss +0 -0
  204. /package/{src/lib → lib}/assets/styles/scss/tools/_focus.scss +0 -0
  205. /package/{src/lib → lib}/assets/styles/scss/tools/_loader.scss +0 -0
  206. /package/{src/lib → lib}/assets/styles/scss/variables/_colors.scss +0 -0
  207. /package/{src/lib → lib}/assets/styles/scss/variables/_custom.scss +0 -0
  208. /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
- }
@@ -1,5 +0,0 @@
1
- export interface DragItem {
2
- id: number;
3
- label: string;
4
- order: number;
5
- }