142 lines
3.1 KiB
Plaintext
142 lines
3.1 KiB
Plaintext
<template>
|
|
<div class="container-fluid py-4">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card mb-4">
|
|
<div class="card-header pb-0">
|
|
<div class="d-flex align-items-center">
|
|
<p class="mb-0 font-weight-bold text-lg">Gestion des Employés</p>
|
|
</div>
|
|
</div>
|
|
<div class="card-body px-0 pt-0 pb-2">
|
|
<div class="table-responsive p-0">
|
|
<!-- Filter and Action Bar -->
|
|
<div
|
|
class="d-flex justify-content-between align-items-center mb-4 px-4"
|
|
>
|
|
<div class="d-flex align-items-center">
|
|
<slot name="select-filter">
|
|
<filter-table />
|
|
</slot>
|
|
</div>
|
|
<div class="d-flex align-items-center gap-2">
|
|
<slot name="employee-other-action">
|
|
<table-action />
|
|
</slot>
|
|
<slot name="employee-new-action">
|
|
<add-button text="Ajouter" @click="goToEmployee" />
|
|
</slot>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Main Content Area -->
|
|
<div class="employee-content">
|
|
<slot name="employee-table">
|
|
<!-- Default table slot - will be overridden by specific implementations -->
|
|
</slot>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script setup>
|
|
import FilterTable from "@/components/molecules/Tables/FilterTable.vue";
|
|
import TableAction from "@/components/molecules/Tables/TableAction.vue";
|
|
import addButton from "@/components/molecules/new-button/addButton.vue";
|
|
import { useRouter } from "vue-router";
|
|
|
|
const router = useRouter();
|
|
|
|
const goToEmployee = () => {
|
|
router.push({
|
|
name: "Creation employé",
|
|
});
|
|
};
|
|
</script>
|
|
|
|
<style scoped>
|
|
.container-fluid {
|
|
padding-left: 1.5rem;
|
|
padding-right: 1.5rem;
|
|
}
|
|
|
|
.card {
|
|
border-radius: 0.5rem;
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
|
|
border: none;
|
|
}
|
|
|
|
.card-header {
|
|
background-color: transparent;
|
|
border-bottom: 1px solid #e9ecef;
|
|
padding: 1.5rem;
|
|
}
|
|
|
|
.card-body {
|
|
padding: 1.5rem;
|
|
}
|
|
|
|
.text-lg {
|
|
font-size: 1.125rem;
|
|
}
|
|
|
|
.employee-content {
|
|
position: relative;
|
|
}
|
|
|
|
.d-flex {
|
|
display: flex;
|
|
}
|
|
|
|
.align-items-center {
|
|
align-items: center;
|
|
}
|
|
|
|
.justify-content-between {
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.gap-2 {
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.mb-4 {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.px-4 {
|
|
padding-left: 1.5rem;
|
|
padding-right: 1.5rem;
|
|
}
|
|
|
|
.font-weight-bold {
|
|
font-weight: 600;
|
|
}
|
|
|
|
.text-primary {
|
|
color: #5e72e4 !important;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.container-fluid {
|
|
padding-left: 1rem;
|
|
padding-right: 1rem;
|
|
}
|
|
|
|
.d-flex {
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
gap: 1rem;
|
|
}
|
|
|
|
.d-flex.gap-2 {
|
|
flex-direction: row;
|
|
justify-content: center;
|
|
}
|
|
}
|
|
</style>
|