From 73f55144e0f09dd00c6b1b5ebbbac73322326577 Mon Sep 17 00:00:00 2001
From: AlasDiablo <25723276+AlasDiablo@users.noreply.github.com>
Date: Fri, 22 Mar 2024 11:51:42 +0100
Subject: [PATCH 1/9] refactor: update header to match the figma file
---
tdm-fe/src/app/App.scss | 4 --
tdm-fe/src/app/App.tsx | 5 +-
tdm-fe/src/app/components/layout/Header.scss | 50 ++++++++++++-----
tdm-fe/src/app/components/layout/Header.tsx | 53 +++++++++++++++++--
.../pages/scss/ProcessingCreationForm.scss | 4 +-
tdm-fe/src/app/provider/ThemeProvider.tsx | 2 +
tdm-fe/src/app/scss/_colors.scss | 2 +
7 files changed, 93 insertions(+), 27 deletions(-)
diff --git a/tdm-fe/src/app/App.scss b/tdm-fe/src/app/App.scss
index f3b8f03..86ff3ea 100644
--- a/tdm-fe/src/app/App.scss
+++ b/tdm-fe/src/app/App.scss
@@ -33,7 +33,3 @@ h6 {
font-family: Montserrat, sans-serif;
color: $light-black;
}
-
-#app-container {
- margin: 12px 24px;
-}
diff --git a/tdm-fe/src/app/App.tsx b/tdm-fe/src/app/App.tsx
index 288031c..2131eb2 100644
--- a/tdm-fe/src/app/App.tsx
+++ b/tdm-fe/src/app/App.tsx
@@ -5,13 +5,14 @@ import ProcessingStatus from '~/app/pages/ProcessingStatus';
import ProcessingFormContextProvider from '~/app/provider/ProcessingFormContextProvider';
import { RouteProcessingStatus, RouteRoot } from '~/app/shared/routes';
+import Container from '@mui/material/Container';
import { Route, Routes } from 'react-router-dom';
const App = () => {
return (
<>
-
+
{
/>
} />
-
+
>
);
};
diff --git a/tdm-fe/src/app/components/layout/Header.scss b/tdm-fe/src/app/components/layout/Header.scss
index 9af9369..65c308a 100644
--- a/tdm-fe/src/app/components/layout/Header.scss
+++ b/tdm-fe/src/app/components/layout/Header.scss
@@ -6,28 +6,50 @@
background-position: center;
background-size: cover;
- #header-container {
- box-sizing: border-box;
- display: block;
- width: 100%;
- padding: 32px 16px 16px;
- margin-right: auto;
- margin-left: auto;
- }
+ #header-nav-bar {
+ background-color: $white;
+
+ #header-nav-bar-container {
+ display: flex;
+ }
+
+ #header-nav-bar-istex-link {
+ gap: 8px;
+ font-size: .625rem;
+ color: $text-primary;
+ text-decoration: none;
+ text-transform: uppercase;
+ border-radius: 0;
+ }
+
+ #header-nav-bar-navigation {
+ display: flex;
+ flex-grow: 1;
+ gap: 1px;
+ justify-content: flex-end;
+ padding: 0;
+ margin: 0;
+ list-style: none;
- @media (min-width: 600px) {
- #header-container {
- padding-right: 24px;
- padding-left: 24px;
+ .header-nav-bar-navigation-button {
+ height: 100%;
+ font-size: .625rem;
+ color: $text-primary;
+ border-radius: 0;
+ }
}
}
+ #header-container {
+ padding: 32px 24px 16px;
+ }
+
#header-title {
display: inline-block;
- margin: 0 0 0 16px;
+ margin: 0 0 0 12px;
font-size: 3.25rem;
font-weight: 400;
- line-height: 6rem;
+ line-height: 38px;
color: $white;
}
diff --git a/tdm-fe/src/app/components/layout/Header.tsx b/tdm-fe/src/app/components/layout/Header.tsx
index 07e3314..33af8f3 100644
--- a/tdm-fe/src/app/components/layout/Header.tsx
+++ b/tdm-fe/src/app/components/layout/Header.tsx
@@ -1,21 +1,64 @@
import '~/app/components/layout/Header.scss';
+import KeyboardBackspaceIcon from '@mui/icons-material/KeyboardBackspace';
+import { alpha } from '@mui/material';
+import AppBar from '@mui/material/AppBar';
+import Button from '@mui/material/Button';
+import Container from '@mui/material/Container';
import Link from '@mui/material/Link';
import istexLogo from '/istex.png';
+const navigations = [
+ { name: 'Objectif TDM', url: '#' },
+ { name: 'TDM Tools', url: '#' },
+ { name: 'Hébergement corpus', url: '#' },
+];
+
const Header = () => {
return (
);
};
diff --git a/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss b/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss
index 84c9844..a76f26d 100644
--- a/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss
+++ b/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss
@@ -2,8 +2,8 @@
margin-top: 40px;
#processing-form-content {
margin-top: 40px;
- margin-right: 10%;
- margin-left: 10%;
+ margin-right: 13%;
+ margin-left: 13%;
#processing-form-navigation {
display: flex;
diff --git a/tdm-fe/src/app/provider/ThemeProvider.tsx b/tdm-fe/src/app/provider/ThemeProvider.tsx
index b862b40..bfee41a 100644
--- a/tdm-fe/src/app/provider/ThemeProvider.tsx
+++ b/tdm-fe/src/app/provider/ThemeProvider.tsx
@@ -25,6 +25,8 @@ const injectCssVariable = () => {
style.setProperty('--very-light-black', colors.veryLightBlack);
style.setProperty('--red', colors.red);
style.setProperty('--white', colors.white);
+
+ style.setProperty('--text-primary', colors.lightBlack);
};
const ThemeProvider = ({ children }: ThemeProviderType) => {
diff --git a/tdm-fe/src/app/scss/_colors.scss b/tdm-fe/src/app/scss/_colors.scss
index a883d2a..36513c3 100644
--- a/tdm-fe/src/app/scss/_colors.scss
+++ b/tdm-fe/src/app/scss/_colors.scss
@@ -14,3 +14,5 @@ $light-black: var(--light-black) !default;
$very-light-black: var(--very-light-black) !default;
$red: var(--red) !default;
$white: var(--white) !default;
+
+$text-primary: var(--text-primary) !default;
From f42e3bc55944bde06aed4394ea340acc9e2ae53f Mon Sep 17 00:00:00 2001
From: AlasDiablo <25723276+AlasDiablo@users.noreply.github.com>
Date: Fri, 22 Mar 2024 14:12:33 +0100
Subject: [PATCH 2/9] feat: add footer and fix nav bar
---
tdm-fe/public/.keep | 0
tdm-fe/public/abes.svg | 387 ++++++++++++++++++
tdm-fe/public/cnrs.svg | 49 +++
tdm-fe/public/couperin.svg | 16 +
tdm-fe/public/france_universites.svg | 74 ++++
tdm-fe/public/investissement.png | Bin 0 -> 10269 bytes
tdm-fe/public/mesr.svg | 1 +
tdm-fe/public/ul.svg | 7 +
tdm-fe/src/app/App.scss | 4 +
tdm-fe/src/app/App.tsx | 4 +-
tdm-fe/src/app/components/layout/Footer.tsx | 83 ++++
tdm-fe/src/app/components/layout/Header.tsx | 37 +-
.../app/components/layout/scss/Footer.scss | 60 +++
.../components/layout/{ => scss}/Header.scss | 64 +--
14 files changed, 736 insertions(+), 50 deletions(-)
delete mode 100644 tdm-fe/public/.keep
create mode 100644 tdm-fe/public/abes.svg
create mode 100644 tdm-fe/public/cnrs.svg
create mode 100644 tdm-fe/public/couperin.svg
create mode 100644 tdm-fe/public/france_universites.svg
create mode 100644 tdm-fe/public/investissement.png
create mode 100644 tdm-fe/public/mesr.svg
create mode 100644 tdm-fe/public/ul.svg
create mode 100644 tdm-fe/src/app/components/layout/Footer.tsx
create mode 100644 tdm-fe/src/app/components/layout/scss/Footer.scss
rename tdm-fe/src/app/components/layout/{ => scss}/Header.scss (50%)
diff --git a/tdm-fe/public/.keep b/tdm-fe/public/.keep
deleted file mode 100644
index e69de29..0000000
diff --git a/tdm-fe/public/abes.svg b/tdm-fe/public/abes.svg
new file mode 100644
index 0000000..7bd75b0
--- /dev/null
+++ b/tdm-fe/public/abes.svg
@@ -0,0 +1,387 @@
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tdm-fe/public/cnrs.svg b/tdm-fe/public/cnrs.svg
new file mode 100644
index 0000000..b1f8542
--- /dev/null
+++ b/tdm-fe/public/cnrs.svg
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tdm-fe/public/couperin.svg b/tdm-fe/public/couperin.svg
new file mode 100644
index 0000000..b8a18a4
--- /dev/null
+++ b/tdm-fe/public/couperin.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tdm-fe/public/france_universites.svg b/tdm-fe/public/france_universites.svg
new file mode 100644
index 0000000..3b9d412
--- /dev/null
+++ b/tdm-fe/public/france_universites.svg
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tdm-fe/public/investissement.png b/tdm-fe/public/investissement.png
new file mode 100644
index 0000000000000000000000000000000000000000..5e9d0c01b135ff79757acef56ba697de9ae731f7
GIT binary patch
literal 10269
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
\ No newline at end of file
diff --git a/tdm-fe/public/ul.svg b/tdm-fe/public/ul.svg
new file mode 100644
index 0000000..3c50967
--- /dev/null
+++ b/tdm-fe/public/ul.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/tdm-fe/src/app/App.scss b/tdm-fe/src/app/App.scss
index 86ff3ea..5eea271 100644
--- a/tdm-fe/src/app/App.scss
+++ b/tdm-fe/src/app/App.scss
@@ -16,6 +16,10 @@ body {
font-family: "Open Sans", sans-serif;
}
+#app-container {
+ flex: 1;
+}
+
.text {
color: $light-black;
}
diff --git a/tdm-fe/src/app/App.tsx b/tdm-fe/src/app/App.tsx
index 2131eb2..9ac9fea 100644
--- a/tdm-fe/src/app/App.tsx
+++ b/tdm-fe/src/app/App.tsx
@@ -1,4 +1,5 @@
import '~/app/App.scss';
+import Footer from '~/app/components/layout/Footer';
import Header from '~/app/components/layout/Header';
import ProcessingCreationForm from '~/app/pages/ProcessingCreationForm';
import ProcessingStatus from '~/app/pages/ProcessingStatus';
@@ -12,7 +13,7 @@ const App = () => {
return (
<>
-
+
{
} />
+
>
);
};
diff --git a/tdm-fe/src/app/components/layout/Footer.tsx b/tdm-fe/src/app/components/layout/Footer.tsx
new file mode 100644
index 0000000..dcf58e5
--- /dev/null
+++ b/tdm-fe/src/app/components/layout/Footer.tsx
@@ -0,0 +1,83 @@
+import '~/app/components/layout/scss/Footer.scss';
+
+import Container from '@mui/material/Container';
+import Grid from '@mui/material/Grid';
+
+import abesLogo from '/abes.svg';
+import cnrsLogo from '/cnrs.svg';
+import couperinLogo from '/couperin.svg';
+import franceUniversitesLogo from '/france_universites.svg';
+import investissementLogo from '/investissement.png';
+import mesrLogo from '/mesr.svg';
+import ulLogo from '/ul.svg';
+
+const partners = [
+ {
+ logo: mesrLogo,
+ alt: "Ministère de l'Enseignement Supérieur et de la Recherche",
+ url: 'https://www.enseignementsup-recherche.gouv.fr/',
+ },
+ {
+ logo: cnrsLogo,
+ alt: 'Centre National de la Recherche Scientifique',
+ url: 'https://www.cnrs.fr/',
+ width: 64, // The CNRS logo grows more than the others, so it needs to be in a smaller container
+ },
+ {
+ logo: abesLogo,
+ alt: "Agence Bibliographique de l'Enseignement Supérieur",
+ url: 'https://www.abes.fr/',
+ },
+ {
+ logo: couperinLogo,
+ alt: 'Couperin',
+ url: 'https://www.couperin.org/',
+ },
+ {
+ logo: franceUniversitesLogo,
+ alt: 'France Universités',
+ url: 'https://franceuniversites.fr/',
+ },
+ {
+ logo: ulLogo,
+ alt: 'Université de Lorraine',
+ url: 'https://www.univ-lorraine.fr/',
+ },
+];
+
+const MAX_ITEMS_PER_LINE = 12;
+
+const Footer = () => {
+ return (
+
+ );
+};
+
+export default Footer;
diff --git a/tdm-fe/src/app/components/layout/Header.tsx b/tdm-fe/src/app/components/layout/Header.tsx
index 33af8f3..24b7af2 100644
--- a/tdm-fe/src/app/components/layout/Header.tsx
+++ b/tdm-fe/src/app/components/layout/Header.tsx
@@ -1,4 +1,5 @@
-import '~/app/components/layout/Header.scss';
+import '~/app/components/layout/scss/Header.scss';
+
import KeyboardBackspaceIcon from '@mui/icons-material/KeyboardBackspace';
import { alpha } from '@mui/material';
import AppBar from '@mui/material/AppBar';
@@ -16,14 +17,14 @@ const navigations = [
const Header = () => {
return (
-
+
+ >
);
};
diff --git a/tdm-fe/src/app/components/layout/scss/Footer.scss b/tdm-fe/src/app/components/layout/scss/Footer.scss
new file mode 100644
index 0000000..b2f710e
--- /dev/null
+++ b/tdm-fe/src/app/components/layout/scss/Footer.scss
@@ -0,0 +1,60 @@
+@import "../../../scss/colors";
+
+#footer {
+ background-color: #fff;
+
+ &::before {
+ display: block;
+ width: 100%;
+ height: .5rem;
+ content: "";
+ background: linear-gradient(to right, #458ca5 50%, #c4d733);
+ }
+
+ #footer-container {
+ padding: 24px;
+
+ ul {
+ padding: 0;
+ margin: -16px 0 0 -16px;
+ list-style: none;
+ }
+
+ .footer-collaborator {
+ position: relative;
+ width: 128px;
+ min-height: 100px;
+ margin: auto;
+
+ a {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ }
+
+ img {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ object-fit: contain;
+ }
+ }
+
+ #footer-financing {
+ padding: 24px;
+ text-align: center;
+
+ p {
+ margin: 0;
+ font-size: .875rem;
+ font-weight: 400;
+ line-height: 1.43;
+ color: $grey;
+ }
+ }
+ }
+}
diff --git a/tdm-fe/src/app/components/layout/Header.scss b/tdm-fe/src/app/components/layout/scss/Header.scss
similarity index 50%
rename from tdm-fe/src/app/components/layout/Header.scss
rename to tdm-fe/src/app/components/layout/scss/Header.scss
index 65c308a..835669a 100644
--- a/tdm-fe/src/app/components/layout/Header.scss
+++ b/tdm-fe/src/app/components/layout/scss/Header.scss
@@ -1,44 +1,44 @@
-@import "../../scss/colors";
+@import "../../../scss/colors";
-#header {
- background-image: url("/header-background.jpg");
- background-repeat: no-repeat;
- background-position: center;
- background-size: cover;
+#nav-bar {
+ background-color: $white;
- #header-nav-bar {
- background-color: $white;
+ #nav-bar-container {
+ display: flex;
+ }
- #header-nav-bar-container {
- display: flex;
- }
+ #nav-bar-istex-link {
+ gap: 8px;
+ font-size: .625rem;
+ color: $text-primary;
+ text-decoration: none;
+ text-transform: uppercase;
+ border-radius: 0;
+ }
+
+ #nav-bar-navigation {
+ display: flex;
+ flex-grow: 1;
+ gap: 1px;
+ justify-content: flex-end;
+ padding: 0;
+ margin: 0;
+ list-style: none;
- #header-nav-bar-istex-link {
- gap: 8px;
+ .nav-bar-navigation-button {
+ height: 100%;
font-size: .625rem;
color: $text-primary;
- text-decoration: none;
- text-transform: uppercase;
border-radius: 0;
}
-
- #header-nav-bar-navigation {
- display: flex;
- flex-grow: 1;
- gap: 1px;
- justify-content: flex-end;
- padding: 0;
- margin: 0;
- list-style: none;
-
- .header-nav-bar-navigation-button {
- height: 100%;
- font-size: .625rem;
- color: $text-primary;
- border-radius: 0;
- }
- }
}
+}
+
+#header {
+ background-image: url("/header-background.jpg");
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: cover;
#header-container {
padding: 32px 24px 16px;
From 2fc7aa5b1869792782dbf484236e4e7a0873531f Mon Sep 17 00:00:00 2001
From: AlasDiablo <25723276+AlasDiablo@users.noreply.github.com>
Date: Fri, 22 Mar 2024 14:18:21 +0100
Subject: [PATCH 3/9] feat: add link in nav bar
---
tdm-fe/src/app/components/layout/Header.tsx | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tdm-fe/src/app/components/layout/Header.tsx b/tdm-fe/src/app/components/layout/Header.tsx
index 24b7af2..9a4a7d6 100644
--- a/tdm-fe/src/app/components/layout/Header.tsx
+++ b/tdm-fe/src/app/components/layout/Header.tsx
@@ -10,9 +10,9 @@ import Link from '@mui/material/Link';
import istexLogo from '/istex.png';
const navigations = [
- { name: 'Objectif TDM', url: '#' },
- { name: 'TDM Tools', url: '#' },
- { name: 'Hébergement corpus', url: '#' },
+ { name: 'Objectif TDM', url: 'https://services.istex.fr/' },
+ { name: 'TDM Tools', url: 'https://tmtoolsfr-explorerfr.tdm.inist.fr/' },
+ { name: 'Hébergement corpus', url: 'https://www.lodex.fr/' },
];
const Header = () => {
From ad85e426346a440ddf223babb1bb1a12cd4cab90 Mon Sep 17 00:00:00 2001
From: AlasDiablo <25723276+AlasDiablo@users.noreply.github.com>
Date: Fri, 22 Mar 2024 15:05:53 +0100
Subject: [PATCH 4/9] refactor: update stepper to extend the line
---
.../components/form/ProcessingFormStepper.tsx | 80 +++++++++++++------
1 file changed, 54 insertions(+), 26 deletions(-)
diff --git a/tdm-fe/src/app/components/form/ProcessingFormStepper.tsx b/tdm-fe/src/app/components/form/ProcessingFormStepper.tsx
index 63e598b..7420018 100644
--- a/tdm-fe/src/app/components/form/ProcessingFormStepper.tsx
+++ b/tdm-fe/src/app/components/form/ProcessingFormStepper.tsx
@@ -16,6 +16,7 @@ import Stepper from '@mui/material/Stepper';
import { styled } from '@mui/material/styles';
import { useMemo } from 'react';
+import type { StepConnectorProps } from '@mui/material/StepConnector';
import type { StepIconProps } from '@mui/material/StepIcon';
export type ProcessingFormStepperProps = {
@@ -35,27 +36,48 @@ const steps = [
/**
* Istex themed step connector
*/
-const IstexStepConnector = styled(StepConnector)(({ theme }) => ({
- [`&.${stepConnectorClasses.alternativeLabel}`]: {
- top: 16,
- left: 'calc(-50% + 18px)',
- right: 'calc(50% + 18px)',
+const IstexStepConnector = (
+ props: StepConnectorProps & {
+ isExtended?: boolean;
+ isFirst?: boolean;
+ isLast?: boolean;
},
- [`&.${stepConnectorClasses.active}`]: {
- [`& .${stepConnectorClasses.line}`]: {
- borderColor: theme.palette.colors.blue,
- },
- },
- [`&.${stepConnectorClasses.completed}`]: {
- [`& .${stepConnectorClasses.line}`]: {
- borderColor: theme.palette.colors.blue,
- },
- },
- [`& .${stepConnectorClasses.line}`]: {
- borderColor: theme.palette.colors.grey,
- borderTopWidth: 2,
- },
-}));
+) => {
+ const { isExtended, isFirst, isLast, ...rest } = props;
+
+ const CustomStepConnector = useMemo(() => {
+ let left = 'calc(-50% + 18px)';
+
+ if (isExtended && (isFirst || isLast)) {
+ left = '8px';
+ }
+
+ return styled(StepConnector)(({ theme }) => ({
+ [`&.${stepConnectorClasses.alternativeLabel}`]: {
+ top: 16,
+ left: left,
+ right: 'calc(50% + 18px)',
+ transform: isExtended && isLast ? 'translateX(calc(100% + 36px))' : undefined,
+ },
+ [`&.${stepConnectorClasses.active}`]: {
+ [`& .${stepConnectorClasses.line}`]: {
+ borderColor: theme.palette.colors.blue,
+ },
+ },
+ [`&.${stepConnectorClasses.completed}`]: {
+ [`& .${stepConnectorClasses.line}`]: {
+ borderColor: theme.palette.colors.blue,
+ },
+ },
+ [`& .${stepConnectorClasses.line}`]: {
+ borderColor: theme.palette.colors.grey,
+ borderTopWidth: 2,
+ },
+ }));
+ }, [isExtended, isFirst, isLast]);
+
+ return ;
+};
/**
* Istex themed step label
@@ -87,16 +109,22 @@ const StepLabelIcon = ({ icon, completed, active }: StepIconProps) => {
if (completed) {
return (
-
-
-
+ <>
+
+
+
+
+ >
);
}
return (
-
+ <>
+
+
+ >
);
};
From 74fe2b8c3cb727dd2aeb3436884606c99289b54b Mon Sep 17 00:00:00 2001
From: AlasDiablo <25723276+AlasDiablo@users.noreply.github.com>
Date: Fri, 22 Mar 2024 15:20:13 +0100
Subject: [PATCH 5/9] refactor: update form validation button
---
tdm-fe/src/app/pages/ProcessingCreationForm.tsx | 14 ++++++++------
.../app/pages/scss/ProcessingCreationForm.scss | 16 +++++++++++++---
2 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/tdm-fe/src/app/pages/ProcessingCreationForm.tsx b/tdm-fe/src/app/pages/ProcessingCreationForm.tsx
index a3db3b2..9b194af 100644
--- a/tdm-fe/src/app/pages/ProcessingCreationForm.tsx
+++ b/tdm-fe/src/app/pages/ProcessingCreationForm.tsx
@@ -17,7 +17,7 @@ import { Button } from '@mui/material';
import { useContext } from 'react';
const ProcessingCreationForm = () => {
- const { step, isInvalid, isWaitingInput, next } = useContext(ProcessingFormContext);
+ const { step, isInvalid, isWaitingInput, isPending, next } = useContext(ProcessingFormContext);
return (
);
diff --git a/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss b/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss
index a76f26d..dfc7365 100644
--- a/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss
+++ b/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss
@@ -1,5 +1,9 @@
+@import "../../scss/colors";
+
#processing-form {
margin-top: 40px;
+ margin-bottom: 40px;
+
#processing-form-content {
margin-top: 40px;
margin-right: 13%;
@@ -9,10 +13,16 @@
display: flex;
flex-direction: row;
margin-top: 40px;
- }
- #processing-form-navigation > button:first-child {
- margin-right: auto;
+ button {
+ margin-left: auto;
+ }
+
+ button:hover {
+ color: $white;
+ background-color: $blue;
+ border-color: $blue;
+ }
}
}
}
From 447a80e43b715b7cd9036d73d22aaf1af774e0a1 Mon Sep 17 00:00:00 2001
From: AlasDiablo <25723276+AlasDiablo@users.noreply.github.com>
Date: Mon, 25 Mar 2024 10:36:09 +0100
Subject: [PATCH 6/9] feat: add ws header and footer
---
tdm-fe/src/app/App.scss | 4 +++
tdm-fe/src/app/App.tsx | 4 +++
.../form/ProcessingFormConfirmation.tsx | 2 +-
.../components/form/ProcessingFormEmail.tsx | 2 +-
.../components/form/ProcessingFormUpload.tsx | 2 +-
tdm-fe/src/app/components/layout/Header.tsx | 2 +-
.../components/layout/WebServicesFooter.tsx | 22 +++++++++++++++
.../components/layout/WebServicesHeader.tsx | 21 +++++++++++++++
.../layout/scss/WebServicesFooter.scss | 27 +++++++++++++++++++
.../layout/scss/WebServicesHeader.scss | 5 ++++
.../app/components/progress/FileUpload.tsx | 2 +-
.../pages/scss/ProcessingCreationForm.scss | 1 +
12 files changed, 89 insertions(+), 5 deletions(-)
create mode 100644 tdm-fe/src/app/components/layout/WebServicesFooter.tsx
create mode 100644 tdm-fe/src/app/components/layout/WebServicesHeader.tsx
create mode 100644 tdm-fe/src/app/components/layout/scss/WebServicesFooter.scss
create mode 100644 tdm-fe/src/app/components/layout/scss/WebServicesHeader.scss
diff --git a/tdm-fe/src/app/App.scss b/tdm-fe/src/app/App.scss
index 5eea271..34a588b 100644
--- a/tdm-fe/src/app/App.scss
+++ b/tdm-fe/src/app/App.scss
@@ -1,5 +1,9 @@
@import "src/app/scss/colors";
+/*
+ Note: The app can't render properly att under 500px
+*/
+
body {
min-height: 100vh;
margin: 0;
diff --git a/tdm-fe/src/app/App.tsx b/tdm-fe/src/app/App.tsx
index 9ac9fea..b097c0b 100644
--- a/tdm-fe/src/app/App.tsx
+++ b/tdm-fe/src/app/App.tsx
@@ -1,6 +1,8 @@
import '~/app/App.scss';
import Footer from '~/app/components/layout/Footer';
import Header from '~/app/components/layout/Header';
+import WebServicesFooter from '~/app/components/layout/WebServicesFooter';
+import WebServicesHeader from '~/app/components/layout/WebServicesHeader';
import ProcessingCreationForm from '~/app/pages/ProcessingCreationForm';
import ProcessingStatus from '~/app/pages/ProcessingStatus';
import ProcessingFormContextProvider from '~/app/provider/ProcessingFormContextProvider';
@@ -13,6 +15,7 @@ const App = () => {
return (
<>
+
{
} />
+
>
);
diff --git a/tdm-fe/src/app/components/form/ProcessingFormConfirmation.tsx b/tdm-fe/src/app/components/form/ProcessingFormConfirmation.tsx
index dd56b0e..e4bb3ac 100644
--- a/tdm-fe/src/app/components/form/ProcessingFormConfirmation.tsx
+++ b/tdm-fe/src/app/components/form/ProcessingFormConfirmation.tsx
@@ -56,7 +56,7 @@ const ProcessingFormConfirmation = () => {
<>
Le traitement a commencé. Vous allez recevoir un mail contenant un résumé.
- Vous pouvez voir l'avancement du traitement via la page de statut des traitements :{' '}
+ Vous pouvez voir l‘avancement du traitement via la page de statut des traitements :{' '}
{processingId}
>
diff --git a/tdm-fe/src/app/components/form/ProcessingFormEmail.tsx b/tdm-fe/src/app/components/form/ProcessingFormEmail.tsx
index 31cb6c8..ec6f31f 100644
--- a/tdm-fe/src/app/components/form/ProcessingFormEmail.tsx
+++ b/tdm-fe/src/app/components/form/ProcessingFormEmail.tsx
@@ -25,7 +25,7 @@ const ProcessingFormEmail = () => {
/>
{isInvalid ? (
- L'adresse électronique n'est pas valide
+ L‘adresse électronique n'est pas valide
) : null}
diff --git a/tdm-fe/src/app/components/form/ProcessingFormUpload.tsx b/tdm-fe/src/app/components/form/ProcessingFormUpload.tsx
index c093a23..04772e3 100644
--- a/tdm-fe/src/app/components/form/ProcessingFormUpload.tsx
+++ b/tdm-fe/src/app/components/form/ProcessingFormUpload.tsx
@@ -52,7 +52,7 @@ const ProcessingFormUpload = () => {
<>Fichier manquant>
) : (
<>
- Le fichier ne correspond pas a un format compatible, utilisé l'un de ces format :{' '}
+ Le fichier ne correspond pas a un format compatible, utilisé l‘un de ces format :{' '}
{stringifiesMineTypes}.
>
)}
diff --git a/tdm-fe/src/app/components/layout/Header.tsx b/tdm-fe/src/app/components/layout/Header.tsx
index 9a4a7d6..5f6c1d9 100644
--- a/tdm-fe/src/app/components/layout/Header.tsx
+++ b/tdm-fe/src/app/components/layout/Header.tsx
@@ -58,7 +58,7 @@ const Header = () => {
diff --git a/tdm-fe/src/app/components/layout/WebServicesFooter.tsx b/tdm-fe/src/app/components/layout/WebServicesFooter.tsx
new file mode 100644
index 0000000..1039f4d
--- /dev/null
+++ b/tdm-fe/src/app/components/layout/WebServicesFooter.tsx
@@ -0,0 +1,22 @@
+import '~/app/components/layout/scss/WebServicesFooter.scss';
+import Button from '@mui/material/Button';
+import Container from '@mui/material/Container';
+
+const WebServicesFooter = () => {
+ return (
+
+ );
+};
+
+export default WebServicesFooter;
diff --git a/tdm-fe/src/app/components/layout/WebServicesHeader.tsx b/tdm-fe/src/app/components/layout/WebServicesHeader.tsx
new file mode 100644
index 0000000..f6f77fc
--- /dev/null
+++ b/tdm-fe/src/app/components/layout/WebServicesHeader.tsx
@@ -0,0 +1,21 @@
+import '~/app/components/layout/scss/WebServicesHeader.scss';
+import Container from '@mui/material/Container';
+
+const WebServicesHeader = () => {
+ // Todo add the correcte text when available
+ return (
+
+ );
+};
+
+export default WebServicesHeader;
diff --git a/tdm-fe/src/app/components/layout/scss/WebServicesFooter.scss b/tdm-fe/src/app/components/layout/scss/WebServicesFooter.scss
new file mode 100644
index 0000000..657c8cf
--- /dev/null
+++ b/tdm-fe/src/app/components/layout/scss/WebServicesFooter.scss
@@ -0,0 +1,27 @@
+@import "../../../scss/colors";
+
+#ws-footer {
+ padding-top: 72px;
+ padding-bottom: 80px;
+ text-align: center;
+ // TODO add background image when available
+ background-color: #000;
+
+ #ws-footer-galaxy {
+ margin-bottom: 0;
+ }
+
+ #ws-footer-text {
+ margin-top: 32px;
+ margin-bottom: 48px;
+ }
+
+ h1 {
+ margin: 0;
+ color: $light-green;
+ }
+
+ p {
+ color: $white;
+ }
+}
diff --git a/tdm-fe/src/app/components/layout/scss/WebServicesHeader.scss b/tdm-fe/src/app/components/layout/scss/WebServicesHeader.scss
new file mode 100644
index 0000000..6b31f9f
--- /dev/null
+++ b/tdm-fe/src/app/components/layout/scss/WebServicesHeader.scss
@@ -0,0 +1,5 @@
+#ws-header {
+ padding-top: 72px;
+ padding-bottom: 24px;
+ text-align: center;
+}
diff --git a/tdm-fe/src/app/components/progress/FileUpload.tsx b/tdm-fe/src/app/components/progress/FileUpload.tsx
index d090d27..155ec9f 100644
--- a/tdm-fe/src/app/components/progress/FileUpload.tsx
+++ b/tdm-fe/src/app/components/progress/FileUpload.tsx
@@ -11,7 +11,7 @@ const FileUpload = ({ showError }: FileUploadProps) => {
return ;
}
- return Le fichier n'a pas pu être téléversé. ;
+ return Le fichier n‘a pas pu être téléversé. ;
};
export default FileUpload;
diff --git a/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss b/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss
index dfc7365..7a6d9d0 100644
--- a/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss
+++ b/tdm-fe/src/app/pages/scss/ProcessingCreationForm.scss
@@ -1,6 +1,7 @@
@import "../../scss/colors";
#processing-form {
+ min-height: 275px;
margin-top: 40px;
margin-bottom: 40px;
From ef94c6e1c1c07fd325a314bac34c21c999c44d07 Mon Sep 17 00:00:00 2001
From: AlasDiablo <25723276+AlasDiablo@users.noreply.github.com>
Date: Tue, 26 Mar 2024 10:02:42 +0100
Subject: [PATCH 7/9] typo: rephrase comment
---
tdm-fe/src/app/App.scss | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tdm-fe/src/app/App.scss b/tdm-fe/src/app/App.scss
index 34a588b..dabc1ed 100644
--- a/tdm-fe/src/app/App.scss
+++ b/tdm-fe/src/app/App.scss
@@ -1,7 +1,7 @@
@import "src/app/scss/colors";
/*
- Note: The app can't render properly att under 500px
+ Note: The app can't render properly under 500px
*/
body {
From 06589dab9efb311f911e9d881142a7246ad1ab8c Mon Sep 17 00:00:00 2001
From: AlasDiablo <25723276+AlasDiablo@users.noreply.github.com>
Date: Fri, 29 Mar 2024 07:55:13 +0100
Subject: [PATCH 8/9] feat: update image and add the footer background
---
tdm-fe/public/{ => logo}/abes.svg | 0
tdm-fe/public/{ => logo}/cnrs.svg | 0
tdm-fe/public/{ => logo}/couperin.svg | 0
.../public/{ => logo}/france_universites.svg | 0
tdm-fe/public/{ => logo}/investissement.png | Bin
tdm-fe/public/{ => logo}/istex.png | Bin
tdm-fe/public/{ => logo}/mesr.svg | 0
tdm-fe/public/{ => logo}/ul.svg | 0
tdm-fe/public/ws-footer-background.jpg | Bin 0 -> 137777 bytes
tdm-fe/src/app/components/layout/Footer.tsx | 14 +++++++-------
tdm-fe/src/app/components/layout/Header.tsx | 2 +-
.../components/layout/WebServicesFooter.tsx | 2 +-
.../layout/scss/WebServicesFooter.scss | 6 ++++--
13 files changed, 13 insertions(+), 11 deletions(-)
rename tdm-fe/public/{ => logo}/abes.svg (100%)
rename tdm-fe/public/{ => logo}/cnrs.svg (100%)
rename tdm-fe/public/{ => logo}/couperin.svg (100%)
rename tdm-fe/public/{ => logo}/france_universites.svg (100%)
rename tdm-fe/public/{ => logo}/investissement.png (100%)
rename tdm-fe/public/{ => logo}/istex.png (100%)
rename tdm-fe/public/{ => logo}/mesr.svg (100%)
rename tdm-fe/public/{ => logo}/ul.svg (100%)
create mode 100644 tdm-fe/public/ws-footer-background.jpg
diff --git a/tdm-fe/public/abes.svg b/tdm-fe/public/logo/abes.svg
similarity index 100%
rename from tdm-fe/public/abes.svg
rename to tdm-fe/public/logo/abes.svg
diff --git a/tdm-fe/public/cnrs.svg b/tdm-fe/public/logo/cnrs.svg
similarity index 100%
rename from tdm-fe/public/cnrs.svg
rename to tdm-fe/public/logo/cnrs.svg
diff --git a/tdm-fe/public/couperin.svg b/tdm-fe/public/logo/couperin.svg
similarity index 100%
rename from tdm-fe/public/couperin.svg
rename to tdm-fe/public/logo/couperin.svg
diff --git a/tdm-fe/public/france_universites.svg b/tdm-fe/public/logo/france_universites.svg
similarity index 100%
rename from tdm-fe/public/france_universites.svg
rename to tdm-fe/public/logo/france_universites.svg
diff --git a/tdm-fe/public/investissement.png b/tdm-fe/public/logo/investissement.png
similarity index 100%
rename from tdm-fe/public/investissement.png
rename to tdm-fe/public/logo/investissement.png
diff --git a/tdm-fe/public/istex.png b/tdm-fe/public/logo/istex.png
similarity index 100%
rename from tdm-fe/public/istex.png
rename to tdm-fe/public/logo/istex.png
diff --git a/tdm-fe/public/mesr.svg b/tdm-fe/public/logo/mesr.svg
similarity index 100%
rename from tdm-fe/public/mesr.svg
rename to tdm-fe/public/logo/mesr.svg
diff --git a/tdm-fe/public/ul.svg b/tdm-fe/public/logo/ul.svg
similarity index 100%
rename from tdm-fe/public/ul.svg
rename to tdm-fe/public/logo/ul.svg
diff --git a/tdm-fe/public/ws-footer-background.jpg b/tdm-fe/public/ws-footer-background.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..f4c38388c0a54ede480df9b8ffc11cc2f1622911
GIT binary patch
literal 137777
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Ǝz4vB-bnNy$+2U5ev&hT&4Di
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