-
Toutes les actions
+
+
Toutes les actions
{!isReadonly && (
);
diff --git a/app.territoiresentransitions.react/src/ui/export-pdf/DocumentToExport.tsx b/app.territoiresentransitions.react/src/ui/export-pdf/DocumentToExport.tsx
index 7f73c633a4..dc0e27051c 100644
--- a/app.territoiresentransitions.react/src/ui/export-pdf/DocumentToExport.tsx
+++ b/app.territoiresentransitions.react/src/ui/export-pdf/DocumentToExport.tsx
@@ -2,43 +2,56 @@ import { Document, Image, Page, Text, View } from '@react-pdf/renderer';
import { styles } from './styles';
type DocumentToExportProps = {
- content: JSX.Element;
+ content: JSX.Element | JSX.Element[];
};
+const Header = () => (
+
+ {/* Logos */}
+
+
+
+ {/* Titles */}
+
+ Territoires en transitions
+
+ Accompagner la transition écologique des collectivités
+
+
+
+ {/* Pagination */}
+
+
+ `Page ${pageNumber}/${totalPages}`
+ }
+ />
+
+
+);
+
const DocumentToExport = ({ content }: DocumentToExportProps) => {
return (
-
- {/* Header */}
-
- {/* Logos */}
-
-
-
- {/* Titles */}
-
- Territoires en transitions
-
- Accompagner la transition écologique des collectivités
-
-
-
- {/* Pagination */}
-
-
- `Page ${pageNumber}/${totalPages}`
- }
- />
-
-
-
- {/* Body */}
- {content}
-
- {/* Footer */}
-
-
+ {Array.isArray(content) ? (
+ content.map((c, index) => (
+
+ {/* Header */}
+
+
+ {/* Body */}
+ {c}
+
+ ))
+ ) : (
+
+ {/* Header */}
+
+
+ {/* Body */}
+ {content}
+
+ )}
);
};
diff --git a/app.territoiresentransitions.react/src/ui/export-pdf/ExportPDFButton.tsx b/app.territoiresentransitions.react/src/ui/export-pdf/ExportPDFButton.tsx
index 2154fefa1f..8cafc0a7f4 100644
--- a/app.territoiresentransitions.react/src/ui/export-pdf/ExportPDFButton.tsx
+++ b/app.territoiresentransitions.react/src/ui/export-pdf/ExportPDFButton.tsx
@@ -1,24 +1,36 @@
import { useEffect, useState } from 'react';
import { usePDF } from '@react-pdf/renderer';
-import { Button } from '@tet/ui';
+import { Button, ButtonProps } from '@tet/ui';
import { saveBlob } from '../shared/preuves/Bibliotheque/saveBlob';
import DocumentToExport from './DocumentToExport';
const TEST_MODE = false;
-export type ExportPDFButtonType = {
+export type ExportPDFButtonType = Pick<
+ ButtonProps,
+ 'children' | 'title' | 'variant' | 'size' | 'icon' | 'iconPosition'
+> & {
/** Content of the pdf - Content shouldn't be undefined if requestData isn't used */
- content: JSX.Element | undefined;
+ content: JSX.Element | JSX.Element[] | undefined;
/** Name of the generated pdf */
fileName: string;
/** Allows to request data to the parent component when the user requests a download */
requestData?: () => void;
+ /** Action supplémentaire au click */
+ onClick?: () => void;
};
const ExportPDFButton = ({
content,
fileName,
+ children,
+ title = 'Exporter en PDF',
+ variant = 'white',
+ size = 'xs',
+ icon = 'download-fill',
+ iconPosition = 'left',
requestData,
+ onClick,
}: ExportPDFButtonType) => {
const [instance, updateInstance] = usePDF({ document: undefined });
const [isDownloadRequested, setIsDownloadRequested] = useState(false);
@@ -29,7 +41,11 @@ const ExportPDFButton = ({
};
useEffect(() => {
- if (content && !!requestData) {
+ if (
+ content &&
+ ((Array.isArray(content) && content.length) || !Array.isArray(content)) &&
+ !!requestData
+ ) {
updateInstance(
);
}
}, [content]);
@@ -47,18 +63,18 @@ const ExportPDFButton = ({
return (
);
};
diff --git a/app.territoiresentransitions.react/src/ui/export-pdf/assets/icons/EditIcon.tsx b/app.territoiresentransitions.react/src/ui/export-pdf/assets/icons/EditIcon.tsx
new file mode 100644
index 0000000000..f09e12d961
--- /dev/null
+++ b/app.territoiresentransitions.react/src/ui/export-pdf/assets/icons/EditIcon.tsx
@@ -0,0 +1,10 @@
+import { Icon, IconProps } from './Icon';
+
+export const EditIcon = ({ ...props }: Omit
) => {
+ return (
+
+ );
+};
diff --git a/app.territoiresentransitions.react/src/ui/export-pdf/assets/icons/index.ts b/app.territoiresentransitions.react/src/ui/export-pdf/assets/icons/index.ts
index b370b75f8e..04208ece1c 100644
--- a/app.territoiresentransitions.react/src/ui/export-pdf/assets/icons/index.ts
+++ b/app.territoiresentransitions.react/src/ui/export-pdf/assets/icons/index.ts
@@ -1,6 +1,7 @@
export * from './ArrowRightIcon';
export * from './CalendarIcon';
export * from './DiscussIcon';
+export * from './EditIcon';
export * from './FileIcon';
export * from './Icon';
export * from './LinkIcon';
diff --git a/app.territoiresentransitions.react/src/ui/export-pdf/styles.ts b/app.territoiresentransitions.react/src/ui/export-pdf/styles.ts
index d8aed73724..d616181e61 100644
--- a/app.territoiresentransitions.react/src/ui/export-pdf/styles.ts
+++ b/app.territoiresentransitions.react/src/ui/export-pdf/styles.ts
@@ -32,6 +32,7 @@ Font.register({
export const styles = StyleSheet.create({
page: {
fontFamily: 'Marianne',
+ paddingBottom: '25pt',
},
// Header
@@ -75,9 +76,4 @@ export const styles = StyleSheet.create({
padding: '0pt 25pt',
fontFamily: 'Marianne',
},
-
- // Footer
- footer: {
- paddingTop: '25pt',
- },
});
diff --git a/packages/ui/src/components/tracking/trackingPlan.ts b/packages/ui/src/components/tracking/trackingPlan.ts
index fdea84a407..f6fbaac80d 100644
--- a/packages/ui/src/components/tracking/trackingPlan.ts
+++ b/packages/ui/src/components/tracking/trackingPlan.ts
@@ -221,6 +221,15 @@ export interface TrackingPlan extends Record {
};
};
+ /** Actions groupées sur les fiches actions */
+ 'app/actions-groupees-fiches-action': {
+ properties: { collectivite_id: number };
+ onglets: never;
+ events: {
+ export_PDF_telechargement_groupe: {};
+ };
+ };
+
/** Page "créer un plan" */
'app/creer-plan': {
properties: { collectivite_id: number };
diff --git a/packages/ui/src/design-system/Alert/Alert.tsx b/packages/ui/src/design-system/Alert/Alert.tsx
index aa4bbeed06..4bd98f25ee 100644
--- a/packages/ui/src/design-system/Alert/Alert.tsx
+++ b/packages/ui/src/design-system/Alert/Alert.tsx
@@ -14,6 +14,8 @@ type AlertProps = {
state?: AlertState;
/** Remplace l'icône par défaut */
customIcon?: IconValue;
+ /** Supprime l'icône */
+ noIcon?: boolean;
/** Initialisation de l'état open */
isOpen?: boolean;
/** Gestion de l'affichage pour les alertes sur toute la largeur de page */
@@ -36,6 +38,7 @@ export const Alert = ({
footer,
state = 'info',
customIcon,
+ noIcon = false,
isOpen = true,
fullPageWidth = false,
rounded = false,
@@ -68,10 +71,12 @@ export const Alert = ({
)}
>
{/* Icône à gauche du bloc */}
-
+ {!noIcon && (
+
+ )}
{/* Titre et texte additionnel */}
@@ -80,11 +85,14 @@ export const Alert = ({
{title}
)}
- {!!description && (
-
- {description}
-
- )}
+ {!!description &&
+ (typeof description === 'string' ? (
+
+ {description}
+
+ ) : (
+ description
+ ))}
{!!footer && footer}
diff --git a/packages/ui/src/design-system/Button/ButtonMenu.tsx b/packages/ui/src/design-system/Button/ButtonMenu.tsx
index 95515680f4..cb0f09c2bf 100644
--- a/packages/ui/src/design-system/Button/ButtonMenu.tsx
+++ b/packages/ui/src/design-system/Button/ButtonMenu.tsx
@@ -108,7 +108,7 @@ export const ButtonMenu = ({
maxHeight: maxHeight - 16,
},
className:
- 'relative overflow-y-auto bg-white rounded-b-lg border border-grey-4 rounded-lg shadow-card',
+ 'relative z-[1] overflow-y-auto bg-white rounded-b-lg border border-grey-4 rounded-lg shadow-card',
})}
>
{children}
diff --git a/packages/ui/src/design-system/Button/types.ts b/packages/ui/src/design-system/Button/types.ts
index a982ff3d35..2c2360029d 100644
--- a/packages/ui/src/design-system/Button/types.ts
+++ b/packages/ui/src/design-system/Button/types.ts
@@ -36,8 +36,6 @@ export type ButtonContentProps = {
type BaseButtonProps = {
/** Position de l'icône dans le bouton */
iconPosition?: IconPosition;
- /** Affiche un loader à la place de l'icône */
- loading?: boolean;
/** Lien externe */
external?: boolean;
/** Donné par le dropdownfloater si utilisé pour afficher un élément floating-ui */