module-package-comp 2.3.1 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.prettierrc ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "trailingComma": "all",
3
+ "tabWidth": 2,
4
+ "semi": true
5
+ }
@@ -0,0 +1,6 @@
1
+ type ExtraInfoSectionProps = {
2
+ extraInfo: Record<string, unknown>;
3
+ setExtraInfo: React.Dispatch<React.SetStateAction<Record<string, unknown>>>;
4
+ };
5
+ export declare function ExtraInfoSection({ extraInfo, setExtraInfo, }: ExtraInfoSectionProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ export function ExtraInfoSection({ extraInfo, setExtraInfo, }) {
4
+ const [newKey, setNewKey] = useState("");
5
+ const [newValueType, setNewValueType] = useState("text");
6
+ const [newValue, setNewValue] = useState("");
7
+ const handleAdd = () => {
8
+ if (!newKey.trim())
9
+ return;
10
+ let parsedValue = newValue;
11
+ if (newValueType === "number") {
12
+ parsedValue = Number(newValue) || 0;
13
+ }
14
+ else if (newValueType === "boolean") {
15
+ parsedValue = newValue === "true";
16
+ }
17
+ setExtraInfo((prev) => (Object.assign(Object.assign({}, prev), { [newKey.trim()]: parsedValue })));
18
+ setNewKey("");
19
+ setNewValue("");
20
+ };
21
+ const handleRemove = (key) => {
22
+ setExtraInfo((prev) => {
23
+ const updated = Object.assign({}, prev);
24
+ delete updated[key];
25
+ return updated;
26
+ });
27
+ };
28
+ return (_jsxs("div", { className: "mb-6", children: [_jsx("h3", { className: "text-sm font-medium text-gray-700 mb-3", children: "Informations suppl\u00E9mentaires" }), Object.keys(extraInfo).length > 0 && (_jsx("div", { className: "flex flex-wrap gap-2 mb-3", children: Object.entries(extraInfo).map(([key, value]) => (_jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5 bg-blue-50 border border-blue-200 rounded-lg text-sm", children: [_jsxs("span", { className: "font-medium text-blue-700", children: [key, ":"] }), _jsx("span", { className: "text-blue-600", children: String(value) }), _jsx("button", { type: "button", onClick: () => handleRemove(key), className: "ml-1 text-blue-400 hover:text-blue-600", children: _jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }, key))) })), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "text", value: newKey, onChange: (e) => setNewKey(e.target.value), placeholder: "Cl\u00E9", className: "flex-1 px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" }), _jsxs("select", { value: newValueType, onChange: (e) => setNewValueType(e.target.value), className: "px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500", children: [_jsx("option", { value: "text", children: "Texte" }), _jsx("option", { value: "number", children: "Nombre" }), _jsx("option", { value: "date", children: "Date" }), _jsx("option", { value: "boolean", children: "Oui/Non" })] }), newValueType === "boolean" ? (_jsxs("select", { value: newValue, onChange: (e) => setNewValue(e.target.value), className: "flex-1 px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500", children: [_jsx("option", { value: "", children: "Choisir..." }), _jsx("option", { value: "true", children: "Oui" }), _jsx("option", { value: "false", children: "Non" })] })) : (_jsx("input", { type: newValueType === "date" ? "date" : newValueType, value: newValue, onChange: (e) => setNewValue(e.target.value), placeholder: "Valeur", className: "flex-1 px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" })), _jsx("button", { type: "button", onClick: handleAdd, disabled: !newKey.trim() || !newValue, className: "px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-lg hover:bg-blue-700 disabled:bg-gray-300 disabled:cursor-not-allowed transition-colors", children: "OK" })] })] }));
29
+ }
30
+ //# sourceMappingURL=ExtraInfoSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtraInfoSection.js","sourceRoot":"","sources":["../../src/component/ExtraInfoSection.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import { Component, RubricDataValues } from "../util/type";
1
+ import { RubricDataValues } from "../util/type";
2
2
  type PdfExportModalProps = {
3
3
  isOpen: boolean;
4
4
  onClose: () => void;
5
- components: Component[];
6
5
  dataValues: RubricDataValues;
7
6
  title?: string;
8
7
  extra?: Record<string, unknown>;
9
8
  };
10
- export declare function PdfExportModal({ isOpen, onClose, components, dataValues, title, extra, }: PdfExportModalProps): import("react/jsx-runtime").JSX.Element | null;
9
+ export declare function PdfExportModal({ isOpen, onClose, dataValues, title, extra, }: PdfExportModalProps): import("react/jsx-runtime").JSX.Element | null;
11
10
  export {};
@@ -1,292 +1,71 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useMemo, useRef, useEffect } from "react";
3
- export function PdfExportModal({ isOpen, onClose, components, dataValues, title, extra, }) {
4
- // Track which attributes are selected for export
2
+ import { useState } from "react";
3
+ import { formatValue, generatePdfHtml, openPdfPrintWindow, } from "../util/pdfExport";
4
+ import { ExtraInfoSection } from "./ExtraInfoSection";
5
+ export function PdfExportModal({ isOpen, onClose, dataValues, title, extra, }) {
6
+ // All attributes selected by default
5
7
  const [selectedAttributes, setSelectedAttributes] = useState(() => {
6
8
  const initial = {};
7
- components.forEach((comp) => {
8
- const compData = dataValues[comp._id];
9
+ for (const [compName, compData] of Object.entries(dataValues)) {
9
10
  if (compData) {
10
- initial[comp._id] = {};
11
- Object.keys(compData).forEach((attrName) => {
12
- initial[comp._id][attrName] = true;
13
- });
11
+ initial[compName] = {};
12
+ for (const attrName of Object.keys(compData)) {
13
+ initial[compName][attrName] = true;
14
+ }
14
15
  }
15
- });
16
+ }
16
17
  return initial;
17
18
  });
18
- const printRef = useRef(null);
19
- // Sync selectedAttributes when dataValues changes (add new attributes as selected)
20
- useEffect(() => {
21
- setSelectedAttributes((prev) => {
22
- const updated = Object.assign({}, prev);
23
- components.forEach((comp) => {
24
- const compData = dataValues[comp._id];
25
- if (compData) {
26
- if (!updated[comp._id]) {
27
- updated[comp._id] = {};
28
- }
29
- Object.keys(compData).forEach((attrName) => {
30
- // Only add if not already tracked (preserve user's selection)
31
- if (updated[comp._id][attrName] === undefined) {
32
- updated[comp._id][attrName] = true;
33
- }
34
- });
35
- }
36
- });
37
- return updated;
38
- });
39
- }, [components, dataValues]);
40
- // Get components that have data
41
- const componentsWithData = useMemo(() => {
42
- return components.filter((comp) => {
43
- const data = dataValues[comp._id];
44
- return data && Object.keys(data).length > 0;
45
- });
46
- }, [components, dataValues]);
47
- // Toggle attribute selection
48
- const toggleAttribute = (componentId, attributeName) => {
19
+ const [pdfTitle, setPdfTitle] = useState(() => title !== null && title !== void 0 ? title : "");
20
+ const [extraInfo, setExtraInfo] = useState(() => extra !== null && extra !== void 0 ? extra : {});
21
+ // Components that have data (keys are now labels)
22
+ const componentNames = Object.entries(dataValues)
23
+ .filter(([, data]) => data && Object.keys(data).length > 0)
24
+ .map(([name]) => name);
25
+ const toggleAttribute = (compName, attrName) => {
49
26
  setSelectedAttributes((prev) => {
50
27
  var _a;
51
- return (Object.assign(Object.assign({}, prev), { [componentId]: Object.assign(Object.assign({}, prev[componentId]), { [attributeName]: !((_a = prev[componentId]) === null || _a === void 0 ? void 0 : _a[attributeName]) }) }));
28
+ return (Object.assign(Object.assign({}, prev), { [compName]: Object.assign(Object.assign({}, prev[compName]), { [attrName]: !((_a = prev[compName]) === null || _a === void 0 ? void 0 : _a[attrName]) }) }));
52
29
  });
53
30
  };
54
- // Toggle all attributes for a component
55
- const toggleAllForComponent = (componentId, selected) => {
56
- const compData = dataValues[componentId];
31
+ const toggleAllForComponent = (compName, selected) => {
32
+ const compData = dataValues[compName];
57
33
  if (!compData)
58
34
  return;
59
- setSelectedAttributes((prev) => (Object.assign(Object.assign({}, prev), { [componentId]: Object.keys(compData).reduce((acc, attrName) => {
35
+ setSelectedAttributes((prev) => (Object.assign(Object.assign({}, prev), { [compName]: Object.keys(compData).reduce((acc, attrName) => {
60
36
  acc[attrName] = selected;
61
37
  return acc;
62
38
  }, {}) })));
63
39
  };
64
- // Get attribute label from component
65
- const getAttributeLabel = (component, attrName) => {
66
- const attr = component.attributes.find((a) => a.name === attrName);
67
- return (attr === null || attr === void 0 ? void 0 : attr.label) || attrName;
68
- };
69
- // Format value for display
70
- const formatValue = (value) => {
71
- if (typeof value === "object") {
72
- if (Array.isArray(value)) {
73
- return value.join(", ");
74
- }
75
- return JSON.stringify(value, null, 2);
76
- }
77
- return String(value);
78
- };
79
- // Check if all attributes are selected for a component
80
- const areAllSelected = (componentId) => {
81
- const compData = dataValues[componentId];
40
+ const areAllSelected = (compName) => {
41
+ const compData = dataValues[compName];
82
42
  if (!compData)
83
43
  return false;
84
- return Object.keys(compData).every((attrName) => { var _a; return (_a = selectedAttributes[componentId]) === null || _a === void 0 ? void 0 : _a[attrName]; });
44
+ return Object.keys(compData).every((attrName) => { var _a; return (_a = selectedAttributes[compName]) === null || _a === void 0 ? void 0 : _a[attrName]; });
85
45
  };
86
- // Generate PDF content and download
87
46
  const handleDownload = () => {
88
- const content = generatePdfContent();
89
- const printWindow = window.open("", "_blank");
90
- if (!printWindow) {
91
- alert("Veuillez autoriser les popups pour télécharger le PDF");
92
- return;
93
- }
94
- printWindow.document.write(`
95
- <!DOCTYPE html>
96
- <html>
97
- <head>
98
- <title>Sauvegarde</title>
99
- <style>
100
- * {
101
- margin: 0;
102
- padding: 0;
103
- box-sizing: border-box;
104
- }
105
- body {
106
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
107
- padding: 40px;
108
- color: #333;
109
- line-height: 1.6;
110
- }
111
- .header {
112
- text-align: center;
113
- margin-bottom: 30px;
114
- padding-bottom: 20px;
115
- border-bottom: 2px solid #2563eb;
116
- }
117
- .header h1 {
118
- color: #1e40af;
119
- font-size: 24px;
120
- margin-bottom: 5px;
121
- }
122
- .header p {
123
- color: #6b7280;
124
- font-size: 12px;
125
- }
126
- .component {
127
- margin-bottom: 30px;
128
- page-break-inside: avoid;
129
- }
130
- .component-title {
131
- background: #2563eb;
132
- color: white;
133
- padding: 10px 15px;
134
- font-size: 16px;
135
- font-weight: 600;
136
- border-radius: 8px 8px 0 0;
137
- }
138
- .component-content {
139
- border: 1px solid #e5e7eb;
140
- border-top: none;
141
- border-radius: 0 0 8px 8px;
142
- padding: 15px;
143
- }
144
- .attribute {
145
- display: flex;
146
- padding: 10px 0;
147
- border-bottom: 1px solid #f3f4f6;
148
- }
149
- .attribute:last-child {
150
- border-bottom: none;
151
- }
152
- .attribute-name {
153
- font-weight: 600;
154
- color: #374151;
155
- width: 200px;
156
- flex-shrink: 0;
157
- }
158
- .attribute-value {
159
- color: #4b5563;
160
- flex: 1;
161
- word-break: break-word;
162
- }
163
- .extra-info {
164
- margin-bottom: 30px;
165
- padding: 15px;
166
- background: #f9fafb;
167
- border-radius: 8px;
168
- border: 1px solid #e5e7eb;
169
- }
170
- .extra-item {
171
- display: inline-block;
172
- margin-right: 20px;
173
- margin-bottom: 5px;
174
- }
175
- .extra-label {
176
- font-weight: 600;
177
- color: #374151;
178
- }
179
- .extra-value {
180
- color: #4b5563;
181
- margin-left: 5px;
182
- }
183
- @media print {
184
- body { padding: 20px; }
185
- .component { page-break-inside: avoid; }
186
- @page {
187
- margin: 20mm;
188
- margin-top: 10mm;
189
- margin-bottom: 10mm;
190
- }
191
- }
192
- /* Hide browser headers/footers */
193
- @page {
194
- size: auto;
195
- margin: 10mm;
196
- }
197
- </style>
198
- </head>
199
- <body>
200
- ${content}
201
- <script>
202
- window.onload = function() {
203
- window.print();
204
- window.onafterprint = function() {
205
- window.close();
206
- };
207
- };
208
- </script>
209
- </body>
210
- </html>
211
- `);
212
- printWindow.document.close();
213
- };
214
- // Generate HTML content for PDF
215
- const generatePdfContent = () => {
216
- const date = new Date().toLocaleDateString("fr-FR", {
217
- year: "numeric",
218
- month: "long",
219
- day: "numeric",
220
- hour: "2-digit",
221
- minute: "2-digit",
222
- });
223
- let html = `
224
- <div class="header">
225
- <h1>${title || "Export de Rubrique"}</h1>
226
- <p>Généré le ${date}</p>
227
- </div>
228
- `;
229
- // Add extra fields if provided
230
- if (extra && Object.keys(extra).length > 0) {
231
- html += `
232
- <div class="extra-info">
233
- `;
234
- Object.entries(extra).forEach(([key, value]) => {
235
- html += `
236
- <div class="extra-item">
237
- <span class="extra-label">${key} :</span>
238
- <span class="extra-value">${String(value)}</span>
239
- </div>
240
- `;
241
- });
242
- html += `
243
- </div>
244
- `;
245
- }
246
- componentsWithData.forEach((component) => {
247
- const compData = dataValues[component._id];
248
- if (!compData)
249
- return;
250
- const selectedAttrs = Object.entries(compData).filter(([attrName]) => { var _a, _b; return (_b = (_a = selectedAttributes[component._id]) === null || _a === void 0 ? void 0 : _a[attrName]) !== null && _b !== void 0 ? _b : true; });
251
- if (selectedAttrs.length === 0)
252
- return;
253
- html += `
254
- <div class="component">
255
- <div class="component-title">${component.label || component.name}</div>
256
- <div class="component-content">
257
- `;
258
- selectedAttrs.forEach(([attrName, value]) => {
259
- const label = getAttributeLabel(component, attrName);
260
- const formattedValue = formatValue(value);
261
- html += `
262
- <div class="attribute">
263
- <div class="attribute-name">${label}</div>
264
- <div class="attribute-value">${formattedValue}</div>
265
- </div>
266
- `;
267
- });
268
- html += `
269
- </div>
270
- </div>
271
- `;
47
+ const html = generatePdfHtml({
48
+ title: pdfTitle,
49
+ extraInfo,
50
+ dataValues,
51
+ selectedAttributes,
272
52
  });
273
- return html;
53
+ openPdfPrintWindow(html);
274
54
  };
275
55
  if (!isOpen)
276
56
  return null;
277
- return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "absolute inset-0 bg-black/50", onClick: onClose }), _jsxs("div", { className: "relative bg-white rounded-xl shadow-2xl w-full max-w-3xl max-h-[90vh] flex flex-col mx-4", children: [_jsxs("div", { className: "flex items-center justify-between px-6 py-4 border-b border-gray-200", children: [_jsx("h2", { className: "text-xl font-semibold text-gray-800", children: "Exporter en PDF" }), _jsx("div", { className: "flex items-center gap-3", children: _jsx("button", { type: "button", onClick: onClose, className: "p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors", children: _jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) }) })] }), _jsxs("div", { className: "flex-1 overflow-y-auto p-6", children: [_jsx("p", { className: "text-sm text-gray-600 mb-4", children: "S\u00E9lectionnez les attributs \u00E0 inclure dans le PDF :" }), componentsWithData.length === 0 ? (_jsx("div", { className: "text-center py-8 text-gray-500", children: "Aucune donn\u00E9e \u00E0 exporter" })) : (_jsx("div", { className: "space-y-6", ref: printRef, children: componentsWithData.map((component) => {
278
- const compData = dataValues[component._id];
57
+ return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "absolute inset-0 bg-black/50", onClick: onClose }), _jsxs("div", { className: "relative bg-white rounded-xl shadow-2xl w-full max-w-3xl max-h-[90vh] flex flex-col mx-4", children: [_jsxs("div", { className: "flex items-center justify-between px-6 py-4 border-b border-gray-200", children: [_jsx("h2", { className: "text-xl font-semibold text-gray-800", children: "Exporter en PDF" }), _jsx("button", { type: "button", onClick: onClose, className: "p-2 text-gray-500 hover:text-gray-700 hover:bg-gray-100 rounded-lg transition-colors", children: _jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }), _jsxs("div", { className: "flex-1 overflow-y-auto p-6", children: [_jsxs("div", { className: "mb-6", children: [_jsx("label", { className: "block text-sm font-medium text-gray-700 mb-2", children: "Titre du document" }), _jsx("input", { type: "text", value: pdfTitle, onChange: (e) => setPdfTitle(e.target.value), placeholder: "Export de Rubrique", className: "w-full px-3 py-2 text-sm border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" })] }), _jsx(ExtraInfoSection, { extraInfo: extraInfo, setExtraInfo: setExtraInfo }), _jsx("hr", { className: "mb-4 border-gray-200" }), _jsx("p", { className: "text-sm text-gray-600 mb-4", children: "S\u00E9lectionnez les attributs \u00E0 inclure dans le PDF :" }), componentNames.length === 0 ? (_jsx("div", { className: "text-center py-8 text-gray-500", children: "Aucune donn\u00E9e \u00E0 exporter" })) : (_jsx("div", { className: "space-y-6", children: componentNames.map((compName) => {
58
+ const compData = dataValues[compName];
279
59
  if (!compData)
280
60
  return null;
281
- const allSelected = areAllSelected(component._id);
282
- return (_jsxs("div", { className: "border border-gray-200 rounded-lg overflow-hidden", children: [_jsxs("div", { className: "bg-gray-50 px-4 py-3 flex items-center justify-between border-b border-gray-200", children: [_jsx("h3", { className: "font-semibold text-gray-800", children: component.label || component.name }), _jsx("button", { type: "button", onClick: () => toggleAllForComponent(component._id, !allSelected), className: "text-sm text-blue-600 hover:text-blue-700 font-medium", children: allSelected
61
+ const allSelected = areAllSelected(compName);
62
+ return (_jsxs("div", { className: "border border-gray-200 rounded-lg overflow-hidden", children: [_jsxs("div", { className: "bg-gray-50 px-4 py-3 flex items-center justify-between border-b border-gray-200", children: [_jsx("h3", { className: "font-semibold text-gray-800", children: compName }), _jsx("button", { type: "button", onClick: () => toggleAllForComponent(compName, !allSelected), className: "text-sm text-blue-600 hover:text-blue-700 font-medium", children: allSelected
283
63
  ? "Tout désélectionner"
284
64
  : "Tout sélectionner" })] }), _jsx("div", { className: "divide-y divide-gray-100", children: Object.entries(compData).map(([attrName, value]) => {
285
65
  var _a, _b;
286
- const isSelected = (_b = (_a = selectedAttributes[component._id]) === null || _a === void 0 ? void 0 : _a[attrName]) !== null && _b !== void 0 ? _b : true;
287
- const label = getAttributeLabel(component, attrName);
288
- return (_jsxs("label", { className: `flex items-start gap-3 px-4 py-3 cursor-pointer hover:bg-gray-50 transition-colors ${!isSelected ? "opacity-50" : ""}`, children: [_jsx("input", { type: "checkbox", checked: isSelected, onChange: () => toggleAttribute(component._id, attrName), className: "mt-1 w-4 h-4 text-blue-600 rounded border-gray-300 focus:ring-blue-500" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("div", { className: "font-medium text-gray-700", children: label }), _jsx("div", { className: "text-sm text-gray-500 truncate", children: formatValue(value) })] })] }, attrName));
289
- }) })] }, component._id));
66
+ const isSelected = (_b = (_a = selectedAttributes[compName]) === null || _a === void 0 ? void 0 : _a[attrName]) !== null && _b !== void 0 ? _b : true;
67
+ return (_jsxs("label", { className: `flex items-start gap-3 px-4 py-3 cursor-pointer hover:bg-gray-50 transition-colors ${!isSelected ? "opacity-50" : ""}`, children: [_jsx("input", { type: "checkbox", checked: isSelected, onChange: () => toggleAttribute(compName, attrName), className: "mt-1 w-4 h-4 text-blue-600 rounded border-gray-300 focus:ring-blue-500" }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("div", { className: "font-medium text-gray-700", children: attrName }), _jsx("div", { className: "text-sm text-gray-500 truncate", children: formatValue(value) })] })] }, attrName));
68
+ }) })] }, compName));
290
69
  }) }))] }), _jsxs("div", { className: "px-6 py-4 border-t border-gray-200 bg-gray-50 flex justify-end gap-3", children: [_jsx("button", { type: "button", onClick: onClose, className: "px-4 py-2 text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors font-medium", children: "Annuler" }), _jsxs("button", { type: "button", onClick: handleDownload, className: "flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors font-medium", children: [_jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }), "T\u00E9l\u00E9charger le PDF"] })] })] })] }));
291
70
  }
292
71
  //# sourceMappingURL=PdfExportModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PdfExportModal.js","sourceRoot":"","sources":["../../src/component/PdfExportModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PdfExportModal.js","sourceRoot":"","sources":["../../src/component/PdfExportModal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAYtD,MAAM,UAAU,cAAc,CAAC,EAC7B,MAAM,EACN,OAAO,EACP,UAAU,EACV,KAAK,EACL,KAAK,GACe;IACpB,qCAAqC;IACrC,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAC/C,QAAQ,CAAqB,GAAG,EAAE;QAChC,MAAM,OAAO,GAAuB,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACvB,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEL,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CACxC,GAAG,EAAE,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAClB,CAAC;IAEF,kDAAkD;IAClD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;SAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1D,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAEzB,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,QAAgB,EAAE,EAAE;QAC7D,qBAAqB,CAAC,CAAC,IAAI,EAAE,EAAE;;YAAC,OAAA,iCAC3B,IAAI,KACP,CAAC,QAAQ,CAAC,kCACL,IAAI,CAAC,QAAQ,CAAC,KACjB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,0CAAG,QAAQ,CAAC,CAAA,OAEzC,CAAA;SAAA,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAE,QAAiB,EAAE,EAAE;QACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,qBAAqB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iCAC3B,IAAI,KACP,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;gBAChB,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;gBACzB,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAA6B,CAC9B,IACD,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAW,EAAE;QACnD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAChC,CAAC,QAAQ,EAAE,EAAE,WAAC,OAAA,MAAA,kBAAkB,CAAC,QAAQ,CAAC,0CAAG,QAAQ,CAAC,CAAA,EAAA,CACvD,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,KAAK,EAAE,QAAQ;YACf,SAAS;YACT,UAAU;YACV,kBAAkB;SACnB,CAAC,CAAC;QACH,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACL,eAAK,SAAS,EAAC,qDAAqD,aAElE,cAAK,SAAS,EAAC,8BAA8B,EAAC,OAAO,EAAE,OAAO,GAAI,EAGlE,eAAK,SAAS,EAAC,0FAA0F,aAEvG,eAAK,SAAS,EAAC,sEAAsE,aACnF,aAAI,SAAS,EAAC,qCAAqC,gCAE9C,EACL,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,sFAAsF,YAEhG,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,YAEnB,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,sBAAsB,GACxB,GACE,GACC,IACL,EAGN,eAAK,SAAS,EAAC,4BAA4B,aAEzC,eAAK,SAAS,EAAC,MAAM,aACnB,gBAAO,SAAS,EAAC,8CAA8C,kCAEvD,EACR,gBACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,WAAW,EAAC,oBAAoB,EAChC,SAAS,EAAC,mHAAmH,GAC7H,IACE,EAGN,KAAC,gBAAgB,IACf,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,GAC1B,EAEF,aAAI,SAAS,EAAC,sBAAsB,GAAG,EAGvC,YAAG,SAAS,EAAC,4BAA4B,6EAErC,EAEH,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7B,cAAK,SAAS,EAAC,gCAAgC,mDAEzC,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,WAAW,YACvB,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;oCAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;oCACtC,IAAI,CAAC,QAAQ;wCAAE,OAAO,IAAI,CAAC;oCAE3B,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;oCAE7C,OAAO,CACL,eAEE,SAAS,EAAC,mDAAmD,aAE7D,eAAK,SAAS,EAAC,iFAAiF,aAC9F,aAAI,SAAS,EAAC,6BAA6B,YACxC,QAAQ,GACN,EACL,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CACZ,qBAAqB,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAE/C,SAAS,EAAC,uDAAuD,YAEhE,WAAW;4DACV,CAAC,CAAC,qBAAqB;4DACvB,CAAC,CAAC,mBAAmB,GAChB,IACL,EAEN,cAAK,SAAS,EAAC,0BAA0B,YACtC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE;;oDAClD,MAAM,UAAU,GACd,MAAA,MAAA,kBAAkB,CAAC,QAAQ,CAAC,0CAAG,QAAQ,CAAC,mCAAI,IAAI,CAAC;oDAEnD,OAAO,CACL,iBAEE,SAAS,EAAE,sFACT,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAC/B,EAAE,aAEF,gBACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,GAAG,EAAE,CACb,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAErC,SAAS,EAAC,wEAAwE,GAClF,EACF,eAAK,SAAS,EAAC,gBAAgB,aAC7B,cAAK,SAAS,EAAC,2BAA2B,YACvC,QAAQ,GACL,EACN,cAAK,SAAS,EAAC,gCAAgC,YAC5C,WAAW,CAAC,KAAK,CAAC,GACf,IACF,KApBD,QAAQ,CAqBP,CACT,CAAC;gDACJ,CAAC,CAAC,GACE,KAnDD,QAAQ,CAoDT,CACP,CAAC;gCACJ,CAAC,CAAC,GACE,CACP,IACG,EAGN,eAAK,SAAS,EAAC,sEAAsE,aACnF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,mHAAmH,wBAGtH,EACT,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,qHAAqH,aAE/H,cACE,SAAS,EAAC,SAAS,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,YAEnB,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,iIAAiI,GACnI,GACE,oCAEC,IACL,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,13 +1,11 @@
1
- import { Component, Data, Permission, RubricDataValues } from "../util/type";
1
+ import { Component, Data, PermissionType, RubricDataValues } from "../util/type";
2
2
  type RubricDisplayerProps = {
3
3
  components: Component[];
4
4
  datas?: (Data | null)[];
5
- dataValues: RubricDataValues;
6
- setDataValues: (values: RubricDataValues) => void;
7
5
  onSubmit?: (modifiedValues: RubricDataValues) => void;
8
- permission?: Permission | null;
6
+ permissions?: PermissionType[];
9
7
  pdfTitle?: string;
10
8
  pdfExtra?: Record<string, unknown>;
11
9
  };
12
- export declare function RubricDisplayer({ components, datas, dataValues, setDataValues, onSubmit, permission, pdfTitle, pdfExtra, }: RubricDisplayerProps): import("react/jsx-runtime").JSX.Element | null;
10
+ export declare function RubricDisplayer({ components, datas, onSubmit, permissions, pdfTitle, pdfExtra, }: RubricDisplayerProps): import("react/jsx-runtime").JSX.Element | null;
13
11
  export {};
@@ -2,46 +2,35 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState, useMemo, useEffect } from "react";
3
3
  import { ComponentDisplayer } from "./ComponentDisplayer";
4
4
  import { PdfExportModal } from "./PdfExportModal";
5
- import { getComponentPermission, groupDataByComponentIndex, extractLatestDataValues, formatDate, } from "../util/rubricDisplayer";
6
- export function RubricDisplayer({ components, datas = [], dataValues, setDataValues, onSubmit, permission = null, pdfTitle, pdfExtra, }) {
5
+ import { groupDataByComponentIndex, extractLatestDataValues, formatDate, getComponentPermission, } from "../util/rubricDisplayer";
6
+ export function RubricDisplayer({ components, datas = [], onSubmit, permissions, pdfTitle, pdfExtra, }) {
7
7
  var _a, _b;
8
8
  const [selectedComponentIndex, setSelectedComponentIndex] = useState(0);
9
9
  const [selectedHistoryIndex, setSelectedHistoryIndex] = useState({});
10
- const [isInitialized, setIsInitialized] = useState(false);
11
10
  const [isPdfModalOpen, setIsPdfModalOpen] = useState(false);
12
- // Store the original values for diff comparison
13
- const [originalValues, setOriginalValues] = useState({});
11
+ const [pdfDataValues, setPdfDataValues] = useState({});
12
+ // Internal state for form values
13
+ const [dataValues, setDataValues] = useState(() => extractLatestDataValues(components, datas));
14
+ // Store original values for diff comparison
15
+ const [originalValues, setOriginalValues] = useState(() => structuredClone(extractLatestDataValues(components, datas)));
16
+ // Re-initialize when datas changes (e.g. navigating between rubrics)
17
+ useEffect(() => {
18
+ if (datas.length === 0)
19
+ return;
20
+ const initialValues = extractLatestDataValues(components, datas);
21
+ setDataValues(initialValues);
22
+ setOriginalValues(structuredClone(initialValues));
23
+ }, [datas, components]);
14
24
  // Group existing data by component (using index-based mapping)
15
25
  // Note: datas may contain null values - index position matters for component mapping
16
26
  const componentDataMap = useMemo(() => groupDataByComponentIndex(components, datas), [components, datas]);
17
- // Initialize dataValues from datas on first render (if datas exist and dataValues is empty)
18
- useEffect(() => {
19
- const hasValidData = datas.some((d) => d !== null);
20
- if (!isInitialized && hasValidData && components.length > 0) {
21
- const hasExistingData = Object.keys(dataValues).length > 0;
22
- if (!hasExistingData) {
23
- // Extract latest values from datas and initialize dataValues
24
- const initialValues = extractLatestDataValues(components, datas);
25
- if (Object.keys(initialValues).length > 0) {
26
- setDataValues(initialValues);
27
- // Store DEEP COPY of original values for later comparison
28
- setOriginalValues(JSON.parse(JSON.stringify(initialValues)));
29
- }
30
- }
31
- else {
32
- // If dataValues already has data, use DEEP COPY as original
33
- setOriginalValues(JSON.parse(JSON.stringify(dataValues)));
34
- }
35
- setIsInitialized(true);
36
- }
37
- }, [datas, components, dataValues, setDataValues, isInitialized]);
38
27
  // Get current component
39
28
  const currentComponent = components[selectedComponentIndex];
40
29
  if (!currentComponent)
41
30
  return null;
42
31
  const currentComponentId = currentComponent._id;
43
32
  // Get permission for current component
44
- const componentPermission = getComponentPermission(permission, currentComponent.name);
33
+ const componentPermission = getComponentPermission(permissions, currentComponent.name);
45
34
  const isDisabled = componentPermission === "read";
46
35
  // Get history for current component
47
36
  const componentHistory = ((_a = componentDataMap.get(currentComponentId)) === null || _a === void 0 ? void 0 : _a.history) || [];
@@ -101,9 +90,28 @@ export function RubricDisplayer({ components, datas = [], dataValues, setDataVal
101
90
  onSubmit(modifiedValues);
102
91
  }
103
92
  };
104
- return (_jsxs("div", { className: "w-full", children: [_jsx("div", { className: "flex justify-end mb-4", children: _jsxs("button", { type: "button", onClick: () => setIsPdfModalOpen(true), className: "flex items-center gap-2 px-4 py-2 bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors font-medium text-sm", children: [_jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }), "Exporter PDF"] }) }), _jsx("div", { className: "flex flex-wrap gap-2 mb-6 border-b border-gray-200 pb-4", children: components.map((component, index) => {
93
+ // Transform dataValues into display-ready format for PDF
94
+ // Component IDs → component labels, attribute names → attribute labels
95
+ const openPdfModal = () => {
96
+ const transformed = {};
97
+ for (const comp of components) {
98
+ const compData = dataValues[comp._id];
99
+ if (!compData || Object.keys(compData).length === 0)
100
+ continue;
101
+ const labeledData = {};
102
+ for (const [attrName, value] of Object.entries(compData)) {
103
+ const attr = comp.attributes.find((a) => a.name === attrName);
104
+ const label = (attr === null || attr === void 0 ? void 0 : attr.label) || attrName;
105
+ labeledData[label] = value;
106
+ }
107
+ transformed[comp.label || comp.name] = labeledData;
108
+ }
109
+ setPdfDataValues(transformed);
110
+ setIsPdfModalOpen(true);
111
+ };
112
+ return (_jsxs("div", { className: "w-full", children: [_jsx("div", { className: "flex justify-end mb-4", children: _jsxs("button", { type: "button", onClick: openPdfModal, className: "flex items-center gap-2 px-4 py-2 bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors font-medium text-sm", children: [_jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }) }), "Exporter PDF"] }) }), _jsx("div", { className: "flex flex-wrap gap-2 mb-6 border-b border-gray-200 pb-4", children: components.map((component, index) => {
105
113
  var _a;
106
- const compPermission = getComponentPermission(permission, component.name);
114
+ const compPermission = getComponentPermission(permissions, component.name);
107
115
  const hasData = (((_a = componentDataMap.get(component._id)) === null || _a === void 0 ? void 0 : _a.history.length) || 0) > 0;
108
116
  return (_jsxs("button", { type: "button", onClick: () => setSelectedComponentIndex(index), className: `
109
117
  px-4 py-2 rounded-lg font-medium text-sm transition-all
@@ -146,6 +154,6 @@ export function RubricDisplayer({ components, datas = [], dataValues, setDataVal
146
154
  ? "bg-blue-300"
147
155
  : "bg-gray-300"}
148
156
  `, title: comp.label || comp.name }, comp._id));
149
- }) }), _jsx(PdfExportModal, { isOpen: isPdfModalOpen, onClose: () => setIsPdfModalOpen(false), components: components, dataValues: dataValues, title: pdfTitle, extra: pdfExtra })] }));
157
+ }) }), _jsx(PdfExportModal, { isOpen: isPdfModalOpen, onClose: () => setIsPdfModalOpen(false), dataValues: pdfDataValues, title: pdfTitle, extra: pdfExtra })] }));
150
158
  }
151
159
  //# sourceMappingURL=RubricDisplayer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RubricDisplayer.js","sourceRoot":"","sources":["../../src/component/RubricDisplayer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RubricDisplayer.js","sourceRoot":"","sources":["../../src/component/RubricDisplayer.tsx"],"names":[],"mappings":"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"}
package/dist/index.css CHANGED
@@ -642,6 +642,10 @@ video {
642
642
  margin-bottom: 0.5rem;
643
643
  }
644
644
 
645
+ .mb-3 {
646
+ margin-bottom: 0.75rem;
647
+ }
648
+
645
649
  .mb-4 {
646
650
  margin-bottom: 1rem;
647
651
  }
@@ -654,6 +658,10 @@ video {
654
658
  margin-bottom: 2rem;
655
659
  }
656
660
 
661
+ .ml-1 {
662
+ margin-left: 0.25rem;
663
+ }
664
+
657
665
  .ml-2 {
658
666
  margin-left: 0.5rem;
659
667
  }
@@ -912,6 +920,11 @@ video {
912
920
  border-top-width: 1px;
913
921
  }
914
922
 
923
+ .border-blue-200 {
924
+ --tw-border-opacity: 1;
925
+ border-color: rgb(191 219 254 / var(--tw-border-opacity));
926
+ }
927
+
915
928
  .border-blue-500 {
916
929
  --tw-border-opacity: 1;
917
930
  border-color: rgb(59 130 246 / var(--tw-border-opacity));
@@ -1184,6 +1197,11 @@ video {
1184
1197
  color: rgb(0 0 0 / var(--tw-text-opacity));
1185
1198
  }
1186
1199
 
1200
+ .text-blue-400 {
1201
+ --tw-text-opacity: 1;
1202
+ color: rgb(96 165 250 / var(--tw-text-opacity));
1203
+ }
1204
+
1187
1205
  .text-blue-500 {
1188
1206
  --tw-text-opacity: 1;
1189
1207
  color: rgb(59 130 246 / var(--tw-text-opacity));
@@ -1329,6 +1347,11 @@ video {
1329
1347
  --tw-bg-opacity: 1;
1330
1348
  }
1331
1349
 
1350
+ .hover\:text-blue-600:hover {
1351
+ --tw-text-opacity: 1;
1352
+ color: rgb(37 99 235 / var(--tw-text-opacity));
1353
+ }
1354
+
1332
1355
  .hover\:text-blue-700:hover {
1333
1356
  --tw-text-opacity: 1;
1334
1357
  color: rgb(29 78 216 / var(--tw-text-opacity));
@@ -1353,6 +1376,12 @@ video {
1353
1376
  outline-offset: 2px;
1354
1377
  }
1355
1378
 
1379
+ .focus\:ring-2:focus {
1380
+ --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1381
+ --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
1382
+ box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
1383
+ }
1384
+
1356
1385
  .focus\:ring-blue-500:focus {
1357
1386
  --tw-ring-opacity: 1;
1358
1387
  --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
@@ -1362,6 +1391,15 @@ video {
1362
1391
  pointer-events: none;
1363
1392
  }
1364
1393
 
1394
+ .disabled\:cursor-not-allowed:disabled {
1395
+ cursor: not-allowed;
1396
+ }
1397
+
1398
+ .disabled\:bg-gray-300:disabled {
1399
+ --tw-bg-opacity: 1;
1400
+ background-color: rgb(209 213 219 / var(--tw-bg-opacity));
1401
+ }
1402
+
1365
1403
  .disabled\:bg-gray-400:disabled {
1366
1404
  --tw-bg-opacity: 1;
1367
1405
  background-color: rgb(156 163 175 / var(--tw-bg-opacity));
@@ -0,0 +1,21 @@
1
+ import { RubricDataValues } from "./type";
2
+ /**
3
+ * Format a value (string or object) for display
4
+ */
5
+ export declare function formatValue(value: string | object): string;
6
+ type GeneratePdfHtmlParams = {
7
+ title: string;
8
+ extraInfo: Record<string, unknown>;
9
+ dataValues: RubricDataValues;
10
+ selectedAttributes: Record<string, Record<string, boolean>>;
11
+ };
12
+ /**
13
+ * Build the full HTML content for the PDF document.
14
+ * dataValues keys are component labels, attribute keys are attribute labels.
15
+ */
16
+ export declare function generatePdfHtml({ title, extraInfo, dataValues, selectedAttributes, }: GeneratePdfHtmlParams): string;
17
+ /**
18
+ * Open a print window with the generated HTML and trigger browser print dialog
19
+ */
20
+ export declare function openPdfPrintWindow(htmlContent: string): void;
21
+ export {};
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Format a value (string or object) for display
3
+ */
4
+ export function formatValue(value) {
5
+ if (typeof value === "object") {
6
+ if (Array.isArray(value)) {
7
+ return value.join(", ");
8
+ }
9
+ return JSON.stringify(value, null, 2);
10
+ }
11
+ return String(value);
12
+ }
13
+ /**
14
+ * Build the full HTML content for the PDF document.
15
+ * dataValues keys are component labels, attribute keys are attribute labels.
16
+ */
17
+ export function generatePdfHtml({ title, extraInfo, dataValues, selectedAttributes, }) {
18
+ const date = new Date().toLocaleDateString("fr-FR", {
19
+ year: "numeric",
20
+ month: "long",
21
+ day: "numeric",
22
+ hour: "2-digit",
23
+ minute: "2-digit",
24
+ });
25
+ let html = `
26
+ <div class="header">
27
+ <h1>${title || "Export de Rubrique"}</h1>
28
+ <p>Généré le ${date}</p>
29
+ </div>
30
+ `;
31
+ // Extra fields
32
+ if (Object.keys(extraInfo).length > 0) {
33
+ html += `<div class="extra-info">`;
34
+ Object.entries(extraInfo).forEach(([key, value]) => {
35
+ html += `
36
+ <div class="extra-item">
37
+ <span class="extra-label">${key} :</span>
38
+ <span class="extra-value">${String(value)}</span>
39
+ </div>
40
+ `;
41
+ });
42
+ html += `</div>`;
43
+ }
44
+ // Iterate over components (keys are labels)
45
+ Object.entries(dataValues).forEach(([compName, compData]) => {
46
+ if (!compData || Object.keys(compData).length === 0)
47
+ return;
48
+ const selectedAttrs = Object.entries(compData).filter(([attrName]) => { var _a, _b; return (_b = (_a = selectedAttributes[compName]) === null || _a === void 0 ? void 0 : _a[attrName]) !== null && _b !== void 0 ? _b : true; });
49
+ if (selectedAttrs.length === 0)
50
+ return;
51
+ html += `
52
+ <div class="component">
53
+ <div class="component-title">${compName}</div>
54
+ <div class="component-content">
55
+ `;
56
+ selectedAttrs.forEach(([attrName, value]) => {
57
+ html += `
58
+ <div class="attribute">
59
+ <div class="attribute-name">${attrName}</div>
60
+ <div class="attribute-value">${formatValue(value)}</div>
61
+ </div>
62
+ `;
63
+ });
64
+ html += `
65
+ </div>
66
+ </div>
67
+ `;
68
+ });
69
+ return html;
70
+ }
71
+ const PDF_STYLES = `
72
+ * { margin: 0; padding: 0; box-sizing: border-box; }
73
+ body {
74
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
75
+ padding: 40px;
76
+ color: #333;
77
+ line-height: 1.6;
78
+ }
79
+ .header {
80
+ text-align: center;
81
+ margin-bottom: 30px;
82
+ padding-bottom: 20px;
83
+ border-bottom: 2px solid #2563eb;
84
+ }
85
+ .header h1 { color: #1e40af; font-size: 24px; margin-bottom: 5px; }
86
+ .header p { color: #6b7280; font-size: 12px; }
87
+ .component { margin-bottom: 30px; page-break-inside: avoid; }
88
+ .component-title {
89
+ background: #2563eb;
90
+ color: white;
91
+ padding: 10px 15px;
92
+ font-size: 16px;
93
+ font-weight: 600;
94
+ border-radius: 8px 8px 0 0;
95
+ }
96
+ .component-content {
97
+ border: 1px solid #e5e7eb;
98
+ border-top: none;
99
+ border-radius: 0 0 8px 8px;
100
+ padding: 15px;
101
+ }
102
+ .attribute {
103
+ display: flex;
104
+ padding: 10px 0;
105
+ border-bottom: 1px solid #f3f4f6;
106
+ }
107
+ .attribute:last-child { border-bottom: none; }
108
+ .attribute-name {
109
+ font-weight: 600;
110
+ color: #374151;
111
+ width: 200px;
112
+ flex-shrink: 0;
113
+ }
114
+ .attribute-value {
115
+ color: #4b5563;
116
+ flex: 1;
117
+ word-break: break-word;
118
+ }
119
+ .extra-info {
120
+ margin-bottom: 30px;
121
+ padding: 15px;
122
+ background: #f9fafb;
123
+ border-radius: 8px;
124
+ border: 1px solid #e5e7eb;
125
+ }
126
+ .extra-item { display: inline-block; margin-right: 20px; margin-bottom: 5px; }
127
+ .extra-label { font-weight: 600; color: #374151; }
128
+ .extra-value { color: #4b5563; margin-left: 5px; }
129
+ @media print {
130
+ body { padding: 20px; }
131
+ .component { page-break-inside: avoid; }
132
+ @page { margin: 20mm; margin-top: 10mm; margin-bottom: 10mm; }
133
+ }
134
+ @page { size: auto; margin: 10mm; }
135
+ `;
136
+ /**
137
+ * Open a print window with the generated HTML and trigger browser print dialog
138
+ */
139
+ export function openPdfPrintWindow(htmlContent) {
140
+ const printWindow = window.open("", "_blank");
141
+ if (!printWindow) {
142
+ alert("Veuillez autoriser les popups pour télécharger le PDF");
143
+ return;
144
+ }
145
+ printWindow.document.write(`
146
+ <!DOCTYPE html>
147
+ <html>
148
+ <head>
149
+ <title>Sauvegarde</title>
150
+ <style>${PDF_STYLES}</style>
151
+ </head>
152
+ <body>
153
+ ${htmlContent}
154
+ <script>
155
+ window.onload = function() {
156
+ window.print();
157
+ window.onafterprint = function() { window.close(); };
158
+ };
159
+ </script>
160
+ </body>
161
+ </html>
162
+ `);
163
+ printWindow.document.close();
164
+ }
165
+ //# sourceMappingURL=pdfExport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfExport.js","sourceRoot":"","sources":["../../src/util/pdfExport.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { Component, Data, Permission, ComponentDataHistory, RubricDataValues } from "./type";
1
+ import { Component, Data, ComponentDataHistory, RubricDataValues, PermissionType } from "./type";
2
2
  /**
3
3
  * Get permission level for a specific component
4
4
  */
5
- export declare function getComponentPermission(permission: Permission | null, componentName: string): "read" | "write" | null;
5
+ export declare function getComponentPermission(permissions: PermissionType[] | undefined, componentName: string): "read" | "write" | null;
6
6
  /**
7
7
  * Check if user can edit a component (has write permission)
8
8
  */
9
- export declare function canEditComponent(permission: Permission | null, componentName: string): boolean;
9
+ export declare function canEditComponent(permission: PermissionType[] | undefined, componentName: string): boolean;
10
10
  /**
11
11
  * Groups data by component using INDEX-BASED mapping for first N items,
12
12
  * then COMPONENT ID matching for historical items.
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Get permission level for a specific component
3
3
  */
4
- export function getComponentPermission(permission, componentName) {
5
- if (!permission)
4
+ export function getComponentPermission(permissions, componentName) {
5
+ if (!permissions)
6
6
  return null;
7
- const perm = permission.permissions.find((p) => p.component === componentName);
7
+ const perm = permissions.find((p) => p.component === componentName);
8
8
  return (perm === null || perm === void 0 ? void 0 : perm.permission) || null;
9
9
  }
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"rubricDisplayer.js","sourceRoot":"","sources":["../../src/util/rubricDisplayer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rubricDisplayer.js","sourceRoot":"","sources":["../../src/util/rubricDisplayer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "module-package-comp",
3
- "version": "2.3.1",
3
+ "version": "2.3.2",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",