@rsuci/shared-form-components 1.0.112 → 1.0.114

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.
@@ -32,6 +32,6 @@ export const ValidationModal = ({ isOpen, onClose, onConfirm, action, enquetesCo
32
32
  const isValider = action === 'valider';
33
33
  const titre = isValider ? 'Valider l\'enquête' : 'Rejeter l\'enquête';
34
34
  const couleurBouton = isValider ? 'bg-green-600 hover:bg-green-700' : 'bg-red-600 hover:bg-red-700';
35
- return (_jsxs("div", { className: "fixed inset-0 z-50 overflow-y-auto", children: [_jsx("div", { className: "fixed inset-0 bg-black bg-opacity-50 transition-opacity", onClick: handleClose }), _jsx("div", { className: "flex min-h-full items-center justify-center p-4", children: _jsxs("div", { className: "relative bg-white rounded-lg shadow-xl max-w-md w-full p-6", children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsxs("div", { className: "flex items-center space-x-3", children: [_jsx("div", { className: `${isValider ? 'text-green-600' : 'text-red-600'}`, children: isValider ? (_jsx("svg", { className: "w-6 h-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" }) })) : (_jsx("svg", { className: "w-6 h-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) })) }), _jsx("h3", { className: "text-lg font-semibold text-gray-900", children: titre })] }), _jsx("button", { onClick: handleClose, disabled: isSubmitting, className: "text-gray-400 hover:text-gray-600 transition-colors disabled:opacity-50", children: _jsx("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }), _jsxs("div", { className: "mb-6", children: [_jsxs("p", { className: "text-gray-700 mb-4", children: ["\u00CAtes-vous s\u00FBr de vouloir ", isValider ? 'valider' : 'rejeter', ' ', _jsxs("span", { className: "font-semibold", children: [enquetesCount, " enqu\u00EAte", enquetesCount > 1 ? 's' : ''] }), " ?"] }), !isValider && (_jsxs("div", { children: [_jsx("label", { htmlFor: "commentaire", className: "block text-sm font-medium text-gray-700 mb-2", children: "Commentaire (optionnel)" }), _jsx("textarea", { id: "commentaire", value: commentaire, onChange: (e) => setCommentaire(e.target.value), disabled: isSubmitting, rows: 4, className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-red-500 disabled:bg-gray-100 disabled:cursor-not-allowed text-gray-900 placeholder:text-gray-400", placeholder: "Indiquez la raison du rejet (optionnel)..." }), _jsx("p", { className: "mt-1 text-xs text-gray-500", children: "Maximum 500 caract\u00E8res" })] }))] }), _jsxs("div", { className: "flex justify-end space-x-3", children: [_jsx("button", { onClick: handleClose, disabled: isSubmitting, className: "px-4 py-2 text-sm font-medium text-gray-700 bg-gray-100 rounded-lg hover:bg-gray-200 transition-colors disabled:opacity-50 disabled:cursor-not-allowed", children: "Annuler" }), _jsx("button", { onClick: handleConfirm, disabled: isSubmitting, className: `px-4 py-2 text-sm font-medium text-white rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed ${couleurBouton}`, children: isSubmitting ? (_jsxs("span", { className: "flex items-center", children: [_jsxs("svg", { className: "animate-spin -ml-1 mr-2 h-4 w-4 text-white", fill: "none", viewBox: "0 0 24 24", children: [_jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), _jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), "Traitement..."] })) : ('Confirmer') })] })] }) })] }));
35
+ return (_jsxs("div", { className: "fixed inset-0 z-50 overflow-y-auto", children: [_jsx("div", { className: "fixed inset-0 bg-black/30 backdrop-blur-sm transition-opacity", onClick: handleClose }), _jsx("div", { className: "flex min-h-full items-center justify-center p-4", children: _jsxs("div", { className: "relative bg-white rounded-lg shadow-xl max-w-md w-full p-6", children: [_jsxs("div", { className: "flex items-center justify-between mb-4", children: [_jsxs("div", { className: "flex items-center space-x-3", children: [_jsx("div", { className: `${isValider ? 'text-green-600' : 'text-red-600'}`, children: isValider ? (_jsx("svg", { className: "w-6 h-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" }) })) : (_jsx("svg", { className: "w-6 h-6", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) })) }), _jsx("h3", { className: "text-lg font-semibold text-gray-900", children: titre })] }), _jsx("button", { onClick: handleClose, disabled: isSubmitting, className: "text-gray-400 hover:text-gray-600 transition-colors disabled:opacity-50", children: _jsx("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }), _jsxs("div", { className: "mb-6", children: [_jsxs("p", { className: "text-gray-700 mb-4", children: ["\u00CAtes-vous s\u00FBr de vouloir ", isValider ? 'valider' : 'rejeter', ' ', _jsxs("span", { className: "font-semibold", children: [enquetesCount, " enqu\u00EAte", enquetesCount > 1 ? 's' : ''] }), " ?"] }), !isValider && (_jsxs("div", { children: [_jsx("label", { htmlFor: "commentaire", className: "block text-sm font-medium text-gray-700 mb-2", children: "Commentaire (optionnel)" }), _jsx("textarea", { id: "commentaire", value: commentaire, onChange: (e) => setCommentaire(e.target.value), disabled: isSubmitting, rows: 4, className: "w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-red-500 disabled:bg-gray-100 disabled:cursor-not-allowed text-gray-900 placeholder:text-gray-400", placeholder: "Indiquez la raison du rejet (optionnel)..." }), _jsx("p", { className: "mt-1 text-xs text-gray-500", children: "Maximum 500 caract\u00E8res" })] }))] }), _jsxs("div", { className: "flex justify-end space-x-3", children: [_jsx("button", { onClick: handleClose, disabled: isSubmitting, className: "px-4 py-2 text-sm font-medium text-gray-700 bg-gray-100 rounded-lg hover:bg-gray-200 transition-colors disabled:opacity-50 disabled:cursor-not-allowed", children: "Annuler" }), _jsx("button", { onClick: handleConfirm, disabled: isSubmitting, className: `px-4 py-2 text-sm font-medium text-white rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed ${couleurBouton}`, children: isSubmitting ? (_jsxs("span", { className: "flex items-center", children: [_jsxs("svg", { className: "animate-spin -ml-1 mr-2 h-4 w-4 text-white", fill: "none", viewBox: "0 0 24 24", children: [_jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), _jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), "Traitement..."] })) : ('Confirmer') })] })] }) })] }));
36
36
  };
37
37
  export default ValidationModal;
@@ -1 +1 @@
1
- {"version":3,"file":"condition-engine.d.ts","sourceRoot":"","sources":["../../src/lib/condition-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"condition-engine.d.ts","sourceRoot":"","sources":["../../src/lib/condition-engine.ts"],"names":[],"mappings":"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"}
@@ -837,6 +837,14 @@ export class ConditionEngine {
837
837
  return 'null';
838
838
  }
839
839
  if (typeof value === 'string') {
840
+ // Détecter les strings au format date (YYYY-MM-DD ou ISO 8601) et les convertir en Date
841
+ // pour que les comparaisons avec today() fonctionnent correctement
842
+ if (/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2})?/.test(value)) {
843
+ const parsed = new Date(value);
844
+ if (!isNaN(parsed.getTime())) {
845
+ return `new Date("${value}")`;
846
+ }
847
+ }
840
848
  return `"${value.replace(/"/g, '\\"')}"`;
841
849
  }
842
850
  if (typeof value === 'boolean') {
@@ -882,6 +890,51 @@ export class ConditionEngine {
882
890
  dateAdd: (date, value, unit) => {
883
891
  return calculateDateAdd(date, value, unit);
884
892
  },
893
+ // Fonctions de conversion
894
+ ConvertToDate: (value) => {
895
+ try {
896
+ if (value instanceof Date)
897
+ return isNaN(value.getTime()) ? null : value;
898
+ if (typeof value === 'number')
899
+ return new Date(value);
900
+ if (typeof value === 'string') {
901
+ const parsed = new Date(value);
902
+ return isNaN(parsed.getTime()) ? null : parsed;
903
+ }
904
+ return null;
905
+ }
906
+ catch {
907
+ return null;
908
+ }
909
+ },
910
+ ConvertToNumber: (value, decimals = 0) => {
911
+ try {
912
+ const num = Number(value);
913
+ if (isNaN(num))
914
+ return 0;
915
+ const factor = Math.pow(10, decimals);
916
+ return Math.round(num * factor) / factor;
917
+ }
918
+ catch {
919
+ return 0;
920
+ }
921
+ },
922
+ ConvertToBool: (value) => {
923
+ try {
924
+ if (typeof value === 'boolean')
925
+ return value;
926
+ if (typeof value === 'number')
927
+ return value !== 0;
928
+ if (typeof value === 'string') {
929
+ const lower = value.toLowerCase().trim();
930
+ return ['true', '1', 'oui', 'yes'].includes(lower);
931
+ }
932
+ return false;
933
+ }
934
+ catch {
935
+ return false;
936
+ }
937
+ },
885
938
  };
886
939
  try {
887
940
  // Créer une fonction sécurisée pour l'évaluation
@@ -1044,8 +1097,15 @@ export class ConditionEngine {
1044
1097
  "dateDiff(${DATE_NAISSANCE}, today(), 'y') >= 18",
1045
1098
  "today() > dateAdd(${DATE_ECHEANCE}, 30, 'd')"
1046
1099
  ];
1100
+ // Suggestions de fonctions de conversion
1101
+ const conversionFunctions = [
1102
+ 'ConvertToDate(${VARIABLE})',
1103
+ 'ConvertToNumber(${VARIABLE})',
1104
+ 'ConvertToNumber(${VARIABLE}, 2)',
1105
+ 'ConvertToBool(${VARIABLE})',
1106
+ ];
1047
1107
  // Combiner toutes les fonctions
1048
- const allFunctions = [...utilityFunctions, ...functions, ...dateFunctions];
1108
+ const allFunctions = [...utilityFunctions, ...functions, ...dateFunctions, ...conversionFunctions];
1049
1109
  allFunctions.forEach(func => {
1050
1110
  if (func.toLowerCase().includes(partialCondition.toLowerCase())) {
1051
1111
  suggestions.push(func);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsuci/shared-form-components",
3
- "version": "1.0.112",
3
+ "version": "1.0.114",
4
4
  "description": "Composants partagés de rendu de formulaires RSU v2 - Package local pour frontend Admin et Public",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",