23/07/2023 - 17h

recette2
cherif 2023-07-23 18:02:59 +02:00
parent b0db0b0b5f
commit 0ed4c2471c
10 changed files with 1810 additions and 727 deletions

857
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,8 @@
"private": true,
"dependencies": {
"@dr.pogodin/react-global-state": "^0.6.5",
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@fortawesome/fontawesome": "^1.1.8",
"@fortawesome/fontawesome-free-solid": "^5.0.13",
"@fortawesome/fontawesome-svg-core": "^6.1.1",
@ -17,8 +19,8 @@
"@material-ui/core": "^4.12.4",
"@material/tooltip": "^14.0.0",
"@mui/icons-material": "^5.4.2",
"@mui/material": "^5.4.2",
"@mui/x-data-grid": "^5.5.1",
"@mui/material": "^5.14.1",
"@mui/x-data-grid": "^5.17.26",
"@mui/x-date-pickers": "^5.0.0",
"@mui/x-date-pickers-pro": "^5.0.0",
"@stripe/react-stripe-js": "^1.12.0",
@ -48,6 +50,7 @@
"js-file-download": "^0.4.12",
"js-video-url-parser": "^0.5.1",
"moment": "^2.29.4",
"mui-datatables": "^4.3.0",
"mui-daterange-picker": "^1.0.5",
"next": "^12.0.10",
"next-link": "^2.0.0",
@ -73,7 +76,6 @@
"react-dom": "^17.0.2",
"react-draft-wysiwyg": "^1.14.7",
"react-dropdown-select": "^4.8.0",
"react-dual-range-slider": "^1.0.4",
"react-dual-rangeslider": "^1.2.16",
"react-elastic-carousel": "^0.11.5",
"react-facebook": "^8.1.4",

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,47 @@
import React, { useRef, useState, useEffect } from "react";
import Box from '@mui/material/Box';
import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem';
import { confirmAlert } from 'react-confirm-alert'; // Import
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button';
import axios from "axios";
import DeleteIcon from '@mui/icons-material/Delete';
import { getCookie, setCookie } from 'react-use-cookie';
import { Alert } from "@mui/material";
import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
import profileimg from "../mysy_img/MYSY-profil-2.png";
import Abonnement from "./Abonnement";
import { PropaneSharp } from "@mui/icons-material";
import { useHistory } from "react-router-dom";
import CheckOut from "./CheckOut";
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import { RichTextEditor } from '@mantine/rte';
import { Editor } from '@tinymce/tinymce-react';
import { IoArrowUndoCircle } from "react-icons/io5";
import { GrUserAdmin, GrOrderedList } from "react-icons/gr";
import parse from 'html-react-parser';
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import GestionAdministrative from "./GestionAdministrative";
import { IoMdAddCircle, IoIosRemoveCircleOutline } from "react-icons/io";
import { Fab } from "@material-ui/core";
import { ConsoleView } from "react-device-detect";
import fileDownload from 'js-file-download'
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
const Contact_Partner_Client = (props) => {
const history = useHistory();
return (
<div className="contact_partner_client">
</div>
);
}
export default Contact_Partner_Client;

View File

@ -17,7 +17,8 @@ import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
import downarrow from "../mysy_img/downarrow.png";
import uparrow from "../mysy_img/uparrow.png";
import excel_icone from "../mysy_img/excel_icone.png";
import participants from "../mysy_img/participants.png";
import Footer from "./Fotter";
import { confirmAlert } from 'react-confirm-alert'; // Import
@ -39,9 +40,16 @@ import {
} from "react-icons/fc";
import { DataGrid, GridToolbar, frFR, GridCellParams } from '@mui/x-data-grid';
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcDeleteDatabase } from "react-icons/fc";
import { darken, lighten, styled } from '@mui/material/styles';
import AddParnerClient from "./AddPartnerClient";
//import { FcHome} from "react-icons/fc";
import { alpha } from '@mui/material/styles';
import { gridClasses } from '@mui/x-data-grid';
import { AiOutlineUserAdd } from "react-icons/ai";
const Partner_Client = (props) => {
@ -59,10 +67,10 @@ const Partner_Client = (props) => {
renderCell: (cellValues) => {
return (
<div style={{ "width": "45%", "float": "center" }} onClick={(event) => {
<div style={{ "marginLeft": "auto", "marginRight": "auto", }} onClick={(event) => {
handleClick_modifier(event, cellValues);
}}>
<FcAcceptDatabase />
<FcAcceptDatabase style={{ "fontSize": "x-large" }} />
</div>
);
@ -73,10 +81,10 @@ const Partner_Client = (props) => {
renderCell: (cellValues) => {
return (
<div style={{ "width": "45%", "float": "center" }} onClick={(event) => {
<div style={{ "marginLeft": "auto", "marginRight": "auto", }} onClick={(event) => {
handleClick_supprimer(event, cellValues);
}}>
<FcDeleteDatabase />
<FcDeleteDatabase style={{ "fontSize": "x-large" }} />
</div>
);
@ -86,6 +94,9 @@ const Partner_Client = (props) => {
]
const [rowSelectionModel, setRowSelectionModel] = React.useState([]);
const [Edite_Client, setEdite_Client] = useState("");
const [Client_email, setClient_email] = useState("");
function handleClick_modifier(event, cellValues) {
@ -94,15 +105,17 @@ const Partner_Client = (props) => {
setEdite_Client("1");
}
function handleClick_add_new_client(event, cellValues) {
setEdite_Client("2");
}
function handleClick_supprimer(event, cellValues) {
var clientmail = String(cellValues.row.email);
alert(" en cours de dev");
}
const [Get_List_Partner_Clients_api, setGet_List_Partner_Clients_api] = useState();
const [Get_List_Partner_Clients_message, setGet_List_Partner_Clients_message] = useState();
const [Get_List_Partner_Clients_result, setGet_List_Partner_Clients_result] = useState();
@ -117,8 +130,8 @@ const Partner_Client = (props) => {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_List_Partner_Client/";
axios.post(myurl, form).then(res => {
console.log(" In Get_List_Partner_Clients res.data.status = " + res.data.status);
console.log(" In Get_List_Partner_Clients res.data.message r_class = " + res.data.message);
//console.log(" In Get_List_Partner_Clients res.data.status = " + res.data.status);
//console.log(" In Get_List_Partner_Clients res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setGet_List_Partner_Clients_api("true");
@ -141,6 +154,11 @@ const Partner_Client = (props) => {
})
}
function close_detail_client() {
setEdite_Client("0");
}
useEffect(() => {
@ -149,6 +167,7 @@ const Partner_Client = (props) => {
}, []);
return (
<div className="partner_client">
@ -158,8 +177,17 @@ const Partner_Client = (props) => {
{String(Edite_Client) === "1" && <div className="div_row">
<div className="titre1"> Detail client : {Client_email}</div>
<AddParnerClient client_mail={Client_email}/>
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} />
</div>}
{String(Edite_Client) === "2" && <div className="div_row">
<div className="titre1"> Detail client : {Client_email}</div>
<AddParnerClient client_mail={Client_email} close_detail_client={close_detail_client} new_customer="1"
Get_List_Partner_Clients={Get_List_Partner_Clients} />
</div>}
@ -168,13 +196,17 @@ const Partner_Client = (props) => {
<div className="div_row">
<div style={{ height: 500, width: '100%' }}>
<div className="div_row">
<Button variant="outlined" onClick={handleClick_add_new_client}
className="detail_class_submenu bton_add_session"
id='menu_one_participant' name='menu_one_participant'><img src={participants} alt="ajout un client" className="icon_plus" /> &nbsp;
Ajouter 1 Client
</Button>
</div>
<DataGrid
checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setSelectionModel(newSelectionModel);
//console.log("ch selected--" + newSelectionModel);
}}
selectionModel={selectionModel}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={rows_list_clients.map((item, index) => (
@ -206,6 +238,27 @@ const Partner_Client = (props) => {
</div>
</div>
<div className="titre1"> Grid des clients</div>
<div className="div_row" style={{"marginLeft":"5px", "marginRight":"5px"}}>
<div className="client_grid">
{Get_List_Partner_Clients_result && String(Get_List_Partner_Clients_api) === "true" &&
Get_List_Partner_Clients_result.map((client) => (
<div>
mail = {String(JSON.parse(client).email)} <br/>
nom = {String(JSON.parse(client).nom)} <br/>
Tel = {String(JSON.parse(client).telephone)} <br/>
Adresse = {String(JSON.parse(client).adr_adresse)} - {String(JSON.parse(client).adr_ville)} <br/>
</div>
))}
</div>
</div>
</div>

View File

@ -11,11 +11,13 @@ import bannerimg from "../mysy_img/MYSY_banner_compte.png";
import bannerimg2 from "../mysy_img/MYSY-LOGO-BLUE.png";
import { useParams } from 'react-router-dom'
import Select, { StylesConfig } from 'react-select';
import IconButton from '@mui/material/IconButton';
import { Fade } from 'react-slideshow-image';
import { getCookie, setCookie } from 'react-use-cookie';
import Button from '@mui/material/Button';
import { FaHandPointRight } from "react-icons/fa";
import Header from "./Header";
import { useLocation } from "react-router-dom";
import fileDownload from 'js-file-download'
@ -55,12 +57,19 @@ import {
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import MUIDataTable from "mui-datatables";
import { createTheme, ThemeProvider } from '@mui/material/styles';
// pour le payement stripe : https://stripe.com/docs/payments/quickstart?client=react&lang=python
const stripePromise = loadStripe('pk_test_51LUUfAAbmaEugrFTI25uZBD3IFjbtaL6jUfRV83diDf7nco8worna4NGKhMHbPP71WCwT5EHFRdDNatxPrJWwgZ300kgH5EO4p');
const TestUrl = (props) => {
const stripe = useStripe();
const elements = useElements();
@ -71,153 +80,14 @@ const TestUrl = (props) => {
clientSecret: '{{CLIENT_SECRET}}',
};
const particleOptions = [
{
'maxParticles': 50,
'colors': ['#2E1D62', '#513D91', '#487EEF', '#11A887', '#fc5c65', '#fed330'],
'shapes': ['circle', 'square'],
'size': 10,
'minSpeed': 0.05,
'maxSpeed': 0.20,
'alpha': 0.70,
'backgroundColor': '#1E1F29'
}
]
const data = [
{ x: 0, y: 0 },
{ x: 1, y: 2 },
{ x: 2, y: 1 },
{ x: 3, y: 4 },
{ x: 4, y: 3 },
{ x: 5, y: 5 }
];
const cartesianInterpolations = [
"basis",
"bundle",
"cardinal",
"catmullRom",
"linear",
"monotoneX",
"monotoneY",
"natural",
"step",
"stepAfter",
"stepBefore"
];
const polarInterpolations = [
"basis",
"cardinal",
"catmullRom",
"linear"
];
const InterpolationSelect = ({ currentValue, values, onChange }) => (
<select onChange={onChange} value={currentValue} style={{ width: 75 }}>
{values.map(
(value) => <option value={value} key={value}>{value}</option>
)}
</select>
);
const [interpolation, setinterpolation] = useState("linear");
const [polar, setpolar] = useState(false);
// note: the id field is mandatory
const items = [
{
id: 0,
name: 'Cobol'
},
{
id: 1,
name: 'JavaScript'
},
{
id: 2,
name: 'Basic'
},
{
id: 3,
name: 'PHP'
},
{
id: 4,
name: 'Java'
}
]
// note: the id field is mandatory
const items2 = [
{ id: 1, name: "ADN" },
{ id: 2, name: "AFP" },
{ id: 3, name: "ANC" },
{ id: 4, name: "Aaron" },
{ id: 5, name: "Abdel" },
{ id: 6, name: "Abidjan" },
{ id: 7, name: "Abyssin" },
{ id: 8, name: "Abyssine" },
{ id: 9, name: "Abyssinie" },
{ id: 10, name: "Abyssinien" },
{ id: 11, name: "Abyssinienne" },
{ id: 12, name: "Academie" },
{ id: 13, name: "Adam" },
{ id: 14, name: "Adams" },
{ id: 15, name: "Afghan" },
{ id: 16, name: "Afghane" },
{ id: 17, name: "Afghanistan" },
{ id: 18, name: "Afghans" },
{ id: 19, name: "Afrique" },
{ id: 20, name: "Agathe" },
{ id: 21, name: "Agen" },
{ id: 22, name: "Agnes" },
{ id: 23, name: "Ahmed" },
{ id: 24, name: "Ain" },
{ id: 25, name: "Aisne" },
{ id: 26, name: "Aix" },
{ id: 27, name: "Ajaccio" },
{ id: 28, name: "Ajax" },
{ id: 29, name: "Akbar" },
{ id: 30, name: "Alain" },
{ id: 31, name: "Albanais" },
{ id: 32, name: "Albanaise" },
{ id: 33, name: "Albanie" },
{ id: 34, name: "Albert" },
{ id: 35, name: "Albin" },
{ id: 36, name: "Alexandra" },
]
const handleOnSearch = (string, results) => {
// onSearch will have as the first callback parameter
// the string searched and for the second the results.
//console.log(string, results)
}
const handleOnHover = (result) => {
// the item hovered
//console.log(result)
}
const handleOnSelect = (item) => {
// the item selected
//console.log(item)
}
const handleOnFocus = () => {
//console.log('Focused')
}
const formatResult = (item) => {
return (
<>
<span style={{ display: 'block', textAlign: 'left' }}> {item.name}</span>
</>
)
}
const [suggestedwords, setsuggestedwords] = useState([]);
const [texte, settext] = useState("");
@ -489,116 +359,6 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
const [my_tabb, setmy_tabb] = useState([]);
function Get_Top_test_Stat() {
var form = new FormData();
var date_start = ""
var date_end = ""
var my_tab = [];
if (state[0].startDate) {
//console.log("Start = " + state[0].startDate);
//console.log("Start = " + moment(state[0].startDate).format('YYYY-MM-DD'));
date_start = moment(state[0].startDate).format('YYYY-MM-DD');
}
if (state[0].endDate) {
//console.log("endDate = " + state[0].endDate);
//console.log("END = " + moment(state[0].endDate).format('YYYY-MM-DD'));
date_end = moment(state[0].endDate).format('YYYY-MM-DD');
}
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetStat_class_view_topX/";
form.append("date_start", date_start);
form.append("date_end", date_end);
form.append('token', 'cherif');
form.append('topX', '5');
//alert("myurl = "+myurl);
axios.post(myurl, form).then(res => {
if (String(res.data.status) != String("false")) {
//console.log(" In test res.data.status = " + res.data.status);
//console.log(" In test res.data.message = " + res.data.message);
res.data.message.map(obj => {
if (JSON.parse(obj).name1) {
//console.log(" ---name_serie = " + JSON.parse(obj).name1 + " data_series = " + JSON.parse(obj).data1);
var ch_data2 = JSON.parse(obj).data1;
let new_data2 = ch_data2.map(i => Number(i));
setdetail_view_data1(new_data2);
var nom = JSON.parse(obj).name1;
setdetail_view_data1_name(nom);
//console.log("new_data2 = ", ch_data2);
//console.log("result = ", new_data2);
}
if (JSON.parse(obj).name2) {
//console.log(" ---name_serie = " + JSON.parse(obj).name2 + " data_series = " + JSON.parse(obj).data2);
var ch_data2 = JSON.parse(obj).data2;
let new_data2 = ch_data2.map(i => Number(i));
setdetail_view_data2(new_data2);
var nom = JSON.parse(obj).name2;
setdetail_view_data2_name(nom);
}
if (JSON.parse(obj).name3) {
//console.log(" ---name_serie = " + JSON.parse(obj).name3 + " data_series = " + JSON.parse(obj).data3);
var ch_data2 = JSON.parse(obj).data3;
let new_data2 = ch_data2.map(i => Number(i));
setdetail_view_data3(new_data2);
var nom = JSON.parse(obj).name3;
setdetail_view_data3_name(nom);
}
if (JSON.parse(obj).name4) {
//console.log(" ---name_serie = " + JSON.parse(obj).name4 + " data_series = " + JSON.parse(obj).data4);
var ch_data2 = JSON.parse(obj).data4;
let new_data2 = ch_data2.map(i => Number(i));
setdetail_view_data4(new_data2);
var nom = JSON.parse(obj).name4;
setdetail_view_data4_name(nom);
}
if (JSON.parse(obj).categories) {
//console.log(" ---categories = " + JSON.parse(obj).categories);
var ch_data2 = JSON.parse(obj).categories;
var new_data2 = ch_data2.split(',');
setdetail_view_categorie(new_data2);
}
});
}
else {
//console.log(" In test res.data.status = " + res.data.status);
//console.log(" In test res.data.message = " + res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( mysearchtext sss= ');
//setmyApimyApiMessage("")
})
}
function ici() {
}
const [topX_formation, settopX_formation] = useState([]);
@ -693,21 +453,7 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
key: 'selection',
}
function handleSelect(ranges) {
//console.log("Start = " + moment(ranges.selection.startDate).format('DD/MM/YYYY'));
//console.log("END = " + moment(ranges.selection.endDate).format('DD/MM/YYYY'));
//console.log("Start = "+ranges.selection.startDate.format('YYYY-MM-DD'));
//console.log("Start = " + ranges.selection.startDate);
//console.log("END = " + ranges.selection.endDate);
// {
// selection: {
// startDate: [native Date Object],
// endDate: [native Date Object],
// }
// }
}
const today = new Date();
const tomorrow = new Date(today);
const [state, setState] = useState([
@ -830,18 +576,7 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
}
const PopupExample = () => (
<Popup trigger={<button>Trigger</button>} position="top left">
{close => (
<div>
Content here
<a className="close" onClick={close}>
&times;
</a>
</div>
)}
</Popup>
);
@ -878,6 +613,102 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
}
const columns = ["Name", "Company", "City", "State"];
const data11 = [
["Joe James", "Test Corp", "Yonkers", "NY"],
["John Walsh", "Test Corp", "Hartford", "CT"],
["Bob Herm", "Test Corp", "Tampa", "FL"],
["James Houston", "Test Corp", "Dallas", "TX"],
];
function hellofoo(){
alert(" hellooooooooo");
}
const options11 = {
filterType: 'checkbox',
selectableRows: 'single',
selectableRowsOnClick: true,
customToolbar: () => {
return (
<IconButton style={{ order: -1 }} onClick={hellofoo}>
<FaHandPointRight />
</IconButton>
);
},
selectedRows: {
text: "ligne(s) selectionée(s)",
delete: "Supprimer",
deleteAria: "Delete Selected Rows",
},
toolbar: {
search: "Recherche",
downloadCsv: "Download CSV",
print: "Imprimer",
viewColumns: "Voir Columns",
filterTable: "Filtrer Table",
},
pagination: {
next: "Prochaine Page",
previous: "Page Precedente",
rowsPerPage: "ligne par page:",
displayRows: "of",
},
};
const getMuiTheme = () =>
createTheme({
components: {
MuiTableCell: {
styleOverrides: {
root: {
padding: '8px',
//backgroundColor: '#CDCAC6',
}
}
},
MUIDataTableToolbar: {
actions: {
display: 'flex',
flexDirection: 'row',
flex: 'initial',
},
},
MuiToolbar: {
styleOverrides: {
regular: {
minHeight: '8px',
}
}
},
MuiTableRow: {
root: {
"&.MuiTableRow-hover": {
"&:hover": {
backgroundColor: "yellow",
}
}
}
}
}
});
return (
<div className="test_page2">
<Helmet>
@ -893,10 +724,25 @@ Cette fonction recuperer les stats des TOP 5 formations sur la periode saisie pa
<h2> cartouche formaion </h2>
<div style={{ "width": "100%", }}>
<ThemeProvider theme={getMuiTheme()}>
<MUIDataTable
title={"Employee List"}
data={data11}
columns={columns}
options={options11}
/>
<IconButton style={{ order: -1 }} onClick={hellofoo}>
<FaHandPointRight /> Ajouter une ligne
</IconButton>
</ThemeProvider>
</div>
<Tooltip id="my-tooltip" />
<a data-tooltip-id="my-tooltip" data-tooltip-content="Hello world!">
info bull infobulle
info bull infobulle
</a>
<button onClick={loading} id="finalise"> loading .....</button>

View File

@ -59,7 +59,7 @@
width: 100%;
}
.training_data {
float: left;
width: 100%;
@ -70,7 +70,7 @@
margin-bottom: 10px;
padding-top: 10px;
padding-bottom: 10px;
}
}
.training_caract {
width: 30%;
@ -93,11 +93,11 @@
padding-left: 5px;
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input{
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input {
padding-left: 5px !important;
}
.css-1sumxir-MuiFormLabel-root-MuiInputLabel-root{
.css-1sumxir-MuiFormLabel-root-MuiInputLabel-root {
margin-left: 1px !important;
}
@ -120,7 +120,7 @@
width: 40%;
margin-left: 10px;
margin-right: 10px;
}
}
.bton_enreg {
border-radius: 5rem;
@ -173,6 +173,15 @@
letter-spacing: 0.1rem;
font-weight: normal;
}
.detail_submenu:hover,
.detail_submenu:focus,
.detail_submenu:active,
.detail_submenu:checked {
background-color: #104277;
color: white;
}
}
}

View File

@ -0,0 +1,187 @@
.contact_partner_client {
.okUpdateData {
font-size: small;
color: green;
font-style: italic;
}
.koUpdateData {
font-size: small;
color: red;
font-style: italic;
}
@media only screen and (max-width: 600px) {}
@media only screen and (min-width: 601px) and (max-width: 991px) {}
@media only screen and (min-width: 992px) and (max-width: 1199px) {}
@media only screen and (min-width: 1200px) {
.div_row {
float: left;
//border:0px solid black;
border-width: 0.01rem;
width: 100%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.div_row_gauche {
float: left;
//border:0px solid black;
border-width: 0.01rem;
width: 48%;
border-radius: 1rem;
}
.div_row_droite {
float: right;
//border:0px solid black;
border-width: 0.01rem;
width: 48%;
border-radius: 1rem;
}
.titre1 {
font-family: "Quicksand", "Signika", sans-serif;
font-size: medium;
text-align: center;
margin-bottom: 0.8rem;
color: white;
cursor: pointer;
font-style: italic;
background-color: gray;
font-weight: normal;
float: left;
width: 100%;
}
.training_data {
float: left;
width: 100%;
box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
border-radius: 10px;
margin-top: 10px;
margin-bottom: 10px;
padding-top: 10px;
padding-bottom: 10px;
}
.training_caract {
width: 30%;
padding: 5px;
float: left;
}
.training_text {
width: 50%;
padding: 5px;
float: left;
height: 320px !important;
min-height: 320px !important;
max-height: 320px !important;
margin-bottom: 10px;
}
.titre_training_text {
font-size: small;
padding-left: 5px;
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input {
padding-left: 5px !important;
}
.css-1sumxir-MuiFormLabel-root-MuiInputLabel-root {
margin-left: 1px !important;
}
.disabled_style {
//background-color: #ECEFF1;
font-size: small !important;
color: black;
width: 90% !important;
height: 3rem !important;
margin: 5px !important;
}
.bton_suppr {
background: transparent;
color: red;
border-radius: 5rem;
font-size: small;
text-align: center;
height: 2.5rem;
width: 40%;
margin-left: 10px;
margin-right: 10px;
}
.bton_enreg {
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
text-align: right;
height: 2.5rem;
width: 40%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_edit {
border-radius: 5rem;
font-size: small;
background: black !important;
text-align: right;
height: 2.5rem;
width: 40%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_annule {
border-radius: 5rem;
font-size: small;
background: lightgray !important;
text-align: right;
height: 2.5rem;
width: 40%;
color: black;
margin-left: 10px;
margin-right: 10px;
}
.detail_submenu {
background: #d8edfc;
border-radius: 15px;
margin-right: 1rem;
padding: 0.3rem;
margin-bottom: 0.5rem;
min-width: 10rem;
text-align: center;
border: 1px solid #9cf;
color: #3b3e40;
font-family: "verdana", "Quicksand", "Signika", sans-serif;
font-size: small;
letter-spacing: 0.1rem;
font-weight: normal;
}
.detail_submenu:hover,
.detail_submenu:focus,
.detail_submenu:active,
.detail_submenu:checked {
background-color: #104277;
color: white;
}
}
}

View File

@ -59,6 +59,58 @@
width: 100%;
}
.detail_submenu {
background: #d8edfc;
border-radius: 15px;
margin-right: 1rem;
padding: 0.3rem;
margin-bottom: 0.5rem;
min-width: 10rem;
text-align: center;
border: 1px solid #9cf;
color: #3b3e40;
font-family: "verdana", "Quicksand", "Signika", sans-serif;
font-size: small;
letter-spacing: 0.1rem;
font-weight: normal;
}
.bton_add_session {
background: #c8cfd5;
color: black;
width: 20% !important;
}
.icon_plus {
width: 8%;
}
.client_grid {
margin-right: 10px !important;
margin-left: 10px !important;
display: grid;
height: 200px;
grid-template: repeat(2, 1fr) / repeat(2, 1fr);
gap: 20px 10px;
}
.client_grid>div {
display: inline-block;
color: #444;
border: 1px solid #CCC;
background: #DDD;
box-shadow: 1px 1px 10px 1px rgb(0 0 0 / 15%);
cursor: pointer;
vertical-align: middle;
padding: 5px;
text-align: left;
}
.client_grid>div:hover {
box-shadow: 5px 1px 5px 1px rgb(0 0 0 / 25%);
}
}
}

View File

@ -66,3 +66,4 @@
@import "./components/hebergementlms";
@import "./components/addpartnerclient";
@import "./components/partnerclient";
@import "./components/contactpartnerclient"