diff --git a/src/app/components/deliverer-form/deliverer-form.css b/src/app/components/deliverer-form/deliverer-form.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/components/deliverer-form/deliverer-form.html b/src/app/components/deliverer-form/deliverer-form.html
new file mode 100644
index 0000000..52d1834
--- /dev/null
+++ b/src/app/components/deliverer-form/deliverer-form.html
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/src/app/components/deliverer-form/deliverer-form.ts b/src/app/components/deliverer-form/deliverer-form.ts
new file mode 100644
index 0000000..0125282
--- /dev/null
+++ b/src/app/components/deliverer-form/deliverer-form.ts
@@ -0,0 +1,38 @@
+import { Component } from '@angular/core';
+import {NzColDirective} from "ng-zorro-antd/grid";
+import {NzFlexDirective} from "ng-zorro-antd/flex";
+import {NzFormControlComponent, NzFormDirective, NzFormItemComponent, NzFormLabelComponent} from "ng-zorro-antd/form";
+import {NzInputDirective} from "ng-zorro-antd/input";
+import {FormControl, FormGroup, ReactiveFormsModule, Validators} from "@angular/forms";
+
+@Component({
+ selector: 'app-deliverer-form',
+ imports: [
+ NzColDirective,
+ NzFlexDirective,
+ NzFormControlComponent,
+ NzFormDirective,
+ NzFormItemComponent,
+ NzFormLabelComponent,
+ NzInputDirective,
+ ReactiveFormsModule
+ ],
+ templateUrl: './deliverer-form.html',
+ styleUrl: './deliverer-form.css',
+})
+export class DelivererForm {
+ delivererForm: FormGroup = new FormGroup({
+ transporter: new FormControl(null, [Validators.required])
+ })
+
+ submitForm() {
+ // Pour annuler si le formulaire est invalide
+ if (this.delivererForm.invalid) return;
+
+ // Pour obtenir la valeur du formulaire
+ console.log(this.delivererForm.getRawValue())
+
+ // Pour vider le formulaire
+ this.delivererForm.reset()
+ }
+}
diff --git a/src/app/components/deliverer-table/deliverer-table.css b/src/app/components/deliverer-table/deliverer-table.css
new file mode 100644
index 0000000..7ae664f
--- /dev/null
+++ b/src/app/components/deliverer-table/deliverer-table.css
@@ -0,0 +1,85 @@
+/* Table globale */
+nz-table {
+ width: 100%;
+ border-collapse: separate;
+ border-spacing: 0 8px; /* espace entre les lignes */
+ background: #fff;
+ border-radius: 8px;
+ overflow: hidden;
+ box-shadow: 0 2px 6px rgba(0,0,0,0.1);
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+}
+
+/* En-tête */
+nz-table thead tr {
+ background-color: #f5f5f5;
+ text-align: left;
+ font-weight: 600;
+ color: #333;
+ border-bottom: 2px solid #e0e0e0;
+}
+
+nz-table thead th {
+ padding: 12px 16px;
+}
+
+/* Lignes du tableau */
+nz-table tbody tr {
+ background-color: #fff;
+ transition: background 0.2s ease;
+}
+
+nz-table tbody tr:nth-child(even) {
+ background-color: #f9f9f9;
+}
+
+nz-table tbody tr:hover {
+ background-color: #e6f7ff; /* survol */
+}
+
+/* Cellules */
+nz-table tbody td {
+ padding: 12px 16px;
+ vertical-align: middle;
+ color: #444;
+}
+
+/* Boutons */
+nz-table button[nz-button] {
+ margin-right: 8px;
+}
+
+/* Modals dans le tableau */
+nz-table app-modal {
+ margin-right: 8px;
+}
+
+/* Dates (pour alignement et style) */
+nz-table tbody td p {
+ margin: 0;
+ font-size: 14px;
+ color: #555;
+}
+
+/* Responsive */
+@media (max-width: 768px) {
+ nz-table thead {
+ display: none;
+ }
+ nz-table tbody tr {
+ display: block;
+ margin-bottom: 16px;
+ box-shadow: 0 1px 3px rgba(0,0,0,0.1);
+ border-radius: 8px;
+ padding: 12px;
+ }
+ nz-table tbody td {
+ display: flex;
+ justify-content: space-between;
+ padding: 6px 12px;
+ }
+ nz-table tbody td::before {
+ content: attr(data-label);
+ font-weight: 600;
+ }
+}
diff --git a/src/app/components/deliverer-table/deliverer-table.html b/src/app/components/deliverer-table/deliverer-table.html
new file mode 100644
index 0000000..0c3184d
--- /dev/null
+++ b/src/app/components/deliverer-table/deliverer-table.html
@@ -0,0 +1,53 @@
+
+
+
+ | Transporteur |
+ Bon de livraison |
+ Action |
+
+
+
+ @for (data of basicTable.data; track data) {
+
+ | {{data.transporter}} |
+
+
+
+
+
+
+ | Numéro de livraison |
+ Date d'expédition |
+ Date de livraison estimée |
+ Date de livraison finale |
+
+
+
+ @for (deliveryInfo of data.deliveryNote; track deliveryInfo) {
+
+ | {{deliveryInfo.trackingNumber}} |
+ {{deliveryInfo.expeditionDate | date: 'dd/MM/yyyy'}} |
+ {{deliveryInfo.estimateDeliveryDate | date: 'dd/MM/yyyy'}} |
+ {{deliveryInfo.realDeliveryDate | date: 'dd/MM/yyyy'}} |
+
+ }
+
+
+
+
+ |
+
+
+ |
+
+ }
+
+
diff --git a/src/app/components/deliverer-table/deliverer-table.ts b/src/app/components/deliverer-table/deliverer-table.ts
new file mode 100644
index 0000000..919c615
--- /dev/null
+++ b/src/app/components/deliverer-table/deliverer-table.ts
@@ -0,0 +1,300 @@
+import { Component } from '@angular/core';
+import {ProductTable} from "../product-table/product-table";
+import {DelivererInfo} from "../../interfaces/deliverer.interface";
+import {ModalNav} from "../modal-nav/modal-nav";
+import {NzDividerComponent} from "ng-zorro-antd/divider";
+import {NzIconDirective} from "ng-zorro-antd/icon";
+import {NzTableComponent} from "ng-zorro-antd/table";
+import {ProfilForm} from "../profil-form/profil-form";
+import {ModalButton} from "../modal-button/modal-button";
+import {DatePipe} from "@angular/common";
+import {DelivererForm} from "../deliverer-form/deliverer-form";
+
+@Component({
+ selector: 'app-deliverer-table',
+ imports: [
+ ModalNav,
+ NzDividerComponent,
+ NzIconDirective,
+ NzTableComponent,
+ ProfilForm,
+ ModalButton,
+ DatePipe,
+ DelivererForm
+ ],
+ templateUrl: './deliverer-table.html',
+ styleUrl: './deliverer-table.css',
+})
+export class DelivererTable {
+ listOfDeliverers: DelivererInfo[] = [
+ {
+ transporter: 'Transporteur 1',
+ deliveryNote: [
+ {
+ trackingNumber: 'TRK-1000',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-20'),
+ expeditionDate: new Date('2025-11-15'),
+ realDeliveryDate: new Date('2025-11-19'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[0], quantity: 5 },
+ { product: ProductTable.listOfProducts[1], quantity: 3 },
+ { product: ProductTable.listOfProducts[2], quantity: 7 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1001',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-22'),
+ expeditionDate: new Date('2025-11-16'),
+ realDeliveryDate: new Date('2025-11-21'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[3], quantity: 2 },
+ { product: ProductTable.listOfProducts[4], quantity: 4 },
+ { product: ProductTable.listOfProducts[5], quantity: 6 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1000',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-20'),
+ expeditionDate: new Date('2025-11-15'),
+ realDeliveryDate: new Date('2025-11-19'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[0], quantity: 5 },
+ { product: ProductTable.listOfProducts[1], quantity: 3 },
+ { product: ProductTable.listOfProducts[2], quantity: 7 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1001',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-22'),
+ expeditionDate: new Date('2025-11-16'),
+ realDeliveryDate: new Date('2025-11-21'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[3], quantity: 2 },
+ { product: ProductTable.listOfProducts[4], quantity: 4 },
+ { product: ProductTable.listOfProducts[5], quantity: 6 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1000',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-20'),
+ expeditionDate: new Date('2025-11-15'),
+ realDeliveryDate: new Date('2025-11-19'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[0], quantity: 5 },
+ { product: ProductTable.listOfProducts[1], quantity: 3 },
+ { product: ProductTable.listOfProducts[2], quantity: 7 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1001',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-22'),
+ expeditionDate: new Date('2025-11-16'),
+ realDeliveryDate: new Date('2025-11-21'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[3], quantity: 2 },
+ { product: ProductTable.listOfProducts[4], quantity: 4 },
+ { product: ProductTable.listOfProducts[5], quantity: 6 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1000',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-20'),
+ expeditionDate: new Date('2025-11-15'),
+ realDeliveryDate: new Date('2025-11-19'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[0], quantity: 5 },
+ { product: ProductTable.listOfProducts[1], quantity: 3 },
+ { product: ProductTable.listOfProducts[2], quantity: 7 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1001',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-22'),
+ expeditionDate: new Date('2025-11-16'),
+ realDeliveryDate: new Date('2025-11-21'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[3], quantity: 2 },
+ { product: ProductTable.listOfProducts[4], quantity: 4 },
+ { product: ProductTable.listOfProducts[5], quantity: 6 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1001',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-22'),
+ expeditionDate: new Date('2025-11-16'),
+ realDeliveryDate: new Date('2025-11-21'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[3], quantity: 2 },
+ { product: ProductTable.listOfProducts[4], quantity: 4 },
+ { product: ProductTable.listOfProducts[5], quantity: 6 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1001',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-22'),
+ expeditionDate: new Date('2025-11-16'),
+ realDeliveryDate: new Date('2025-11-21'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[3], quantity: 2 },
+ { product: ProductTable.listOfProducts[4], quantity: 4 },
+ { product: ProductTable.listOfProducts[5], quantity: 6 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1001',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-22'),
+ expeditionDate: new Date('2025-11-16'),
+ realDeliveryDate: new Date('2025-11-21'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[3], quantity: 2 },
+ { product: ProductTable.listOfProducts[4], quantity: 4 },
+ { product: ProductTable.listOfProducts[5], quantity: 6 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1001',
+ deliverer: 'Transporteur 1',
+ estimateDeliveryDate: new Date('2025-11-22'),
+ expeditionDate: new Date('2025-11-16'),
+ realDeliveryDate: new Date('2025-11-21'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[3], quantity: 2 },
+ { product: ProductTable.listOfProducts[4], quantity: 4 },
+ { product: ProductTable.listOfProducts[5], quantity: 6 },
+ ],
+ },
+ ]
+ },
+ {
+ transporter: 'Transporteur 2',
+ deliveryNote: [
+ {
+ trackingNumber: 'TRK-1002',
+ deliverer: 'Transporteur 2',
+ estimateDeliveryDate: new Date('2025-11-23'),
+ expeditionDate: new Date('2025-11-17'),
+ realDeliveryDate: new Date('2025-11-22'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[6], quantity: 3 },
+ { product: ProductTable.listOfProducts[7], quantity: 8 },
+ { product: ProductTable.listOfProducts[8], quantity: 5 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1003',
+ deliverer: 'Transporteur 2',
+ estimateDeliveryDate: new Date('2025-11-24'),
+ expeditionDate: new Date('2025-11-18'),
+ realDeliveryDate: new Date('2025-11-23'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[9], quantity: 4 },
+ { product: ProductTable.listOfProducts[10], quantity: 6 },
+ { product: ProductTable.listOfProducts[11], quantity: 7 },
+ ],
+ }
+ ]
+ },
+ {
+ transporter: 'Transporteur 3',
+ deliveryNote: [
+ {
+ trackingNumber: 'TRK-1004',
+ deliverer: 'Transporteur 3',
+ estimateDeliveryDate: new Date('2025-11-25'),
+ expeditionDate: new Date('2025-11-19'),
+ realDeliveryDate: new Date('2025-11-24'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[12], quantity: 2 },
+ { product: ProductTable.listOfProducts[13], quantity: 5 },
+ { product: ProductTable.listOfProducts[14], quantity: 6 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1005',
+ deliverer: 'Transporteur 3',
+ estimateDeliveryDate: new Date('2025-11-26'),
+ expeditionDate: new Date('2025-11-20'),
+ realDeliveryDate: new Date('2025-11-25'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[15], quantity: 3 },
+ { product: ProductTable.listOfProducts[16], quantity: 7 },
+ { product: ProductTable.listOfProducts[17], quantity: 4 },
+ ],
+ }
+ ]
+ },
+ {
+ transporter: 'Transporteur 4',
+ deliveryNote: [
+ {
+ trackingNumber: 'TRK-1006',
+ deliverer: 'Transporteur 4',
+ estimateDeliveryDate: new Date('2025-11-27'),
+ expeditionDate: new Date('2025-11-21'),
+ realDeliveryDate: new Date('2025-11-26'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[18], quantity: 5 },
+ { product: ProductTable.listOfProducts[19], quantity: 6 },
+ { product: ProductTable.listOfProducts[20], quantity: 7 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1007',
+ deliverer: 'Transporteur 4',
+ estimateDeliveryDate: new Date('2025-11-28'),
+ expeditionDate: new Date('2025-11-22'),
+ realDeliveryDate: new Date('2025-11-27'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[21], quantity: 3 },
+ { product: ProductTable.listOfProducts[22], quantity: 5 },
+ { product: ProductTable.listOfProducts[23], quantity: 4 },
+ ],
+ }
+ ]
+ },
+ {
+ transporter: 'Transporteur 5',
+ deliveryNote: [
+ {
+ trackingNumber: 'TRK-1008',
+ deliverer: 'Transporteur 5',
+ estimateDeliveryDate: new Date('2025-11-29'),
+ expeditionDate: new Date('2025-11-23'),
+ realDeliveryDate: new Date('2025-11-28'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[24], quantity: 6 },
+ { product: ProductTable.listOfProducts[25], quantity: 7 },
+ { product: ProductTable.listOfProducts[26], quantity: 3 },
+ ],
+ },
+ {
+ trackingNumber: 'TRK-1009',
+ deliverer: 'Transporteur 5',
+ estimateDeliveryDate: new Date('2025-11-30'),
+ expeditionDate: new Date('2025-11-24'),
+ realDeliveryDate: new Date('2025-11-29'),
+ productDelivery: [
+ { product: ProductTable.listOfProducts[27], quantity: 5 },
+ { product: ProductTable.listOfProducts[28], quantity: 4 },
+ { product: ProductTable.listOfProducts[29], quantity: 6 },
+ ],
+ }
+ ]
+ },
+ ];
+
+ delete(){
+ return
+ }
+}
diff --git a/src/app/interfaces/delivery-note.interface.ts b/src/app/interfaces/delivery-note.interface.ts
index 808567c..88610e0 100644
--- a/src/app/interfaces/delivery-note.interface.ts
+++ b/src/app/interfaces/delivery-note.interface.ts
@@ -1,5 +1,4 @@
import {productDeliveryInfo} from "./product-delivery.interface";
-import {DelivererInfo} from "./deliverer.interface";
export interface DeliveryNoteInfo {
trackingNumber: string;
diff --git a/src/app/pages/deliverer/deliverer.html b/src/app/pages/deliverer/deliverer.html
index fd81883..3fe4500 100644
--- a/src/app/pages/deliverer/deliverer.html
+++ b/src/app/pages/deliverer/deliverer.html
@@ -1 +1,7 @@
-deliverer works!
+
+
+
+
+
diff --git a/src/app/pages/deliverer/deliverer.ts b/src/app/pages/deliverer/deliverer.ts
index 9e36ced..766563c 100644
--- a/src/app/pages/deliverer/deliverer.ts
+++ b/src/app/pages/deliverer/deliverer.ts
@@ -1,8 +1,15 @@
import { Component } from '@angular/core';
+import {ModalButton} from "../../components/modal-button/modal-button";
+import {DelivererTable} from "../../components/deliverer-table/deliverer-table";
+import {DelivererForm} from "../../components/deliverer-form/deliverer-form";
@Component({
selector: 'app-deliverer',
- imports: [],
+ imports: [
+ ModalButton,
+ DelivererTable,
+ DelivererForm
+ ],
templateUrl: './deliverer.html',
styleUrl: './deliverer.css',
})