allaw-ui 4.0.1 → 4.0.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.
@@ -9,6 +9,7 @@ export interface ContactCardEditProps {
9
9
  birthDate?: Date;
10
10
  hideActions?: boolean;
11
11
  controlled?: boolean;
12
+ hasExternalChanges?: boolean;
12
13
  datepickerYearDropdownItemNumber?: number;
13
14
  datepickerMaxDaysInPast?: number;
14
15
  datepickerMinDate?: Date;
@@ -16,8 +16,8 @@ import Select from "../../atoms/selects/Select";
16
16
  import Datepicker from "../../atoms/datepickers/Datepicker";
17
17
  import IconButton from "../../atoms/buttons/IconButton";
18
18
  var ContactCardEdit = function (_a) {
19
- var name = _a.name, status = _a.status, phone = _a.phone, email = _a.email, _b = _a.clientOfStudy, clientOfStudy = _b === void 0 ? false : _b, _c = _a.officeName, officeName = _c === void 0 ? "du cabinet" : _c, birthDate = _a.birthDate, _d = _a.hideActions, hideActions = _d === void 0 ? false : _d, _e = _a.controlled, controlled = _e === void 0 ? false : _e, _f = _a.datepickerYearDropdownItemNumber, datepickerYearDropdownItemNumber = _f === void 0 ? 10 : _f, datepickerMaxDaysInPast = _a.datepickerMaxDaysInPast, datepickerMinDate = _a.datepickerMinDate, datepickerMaxDate = _a.datepickerMaxDate, _g = _a.datepickerDisableFutur, datepickerDisableFutur = _g === void 0 ? true : _g, externalEditData = _a.editData, onEditDataChange = _a.onEditDataChange, onSave = _a.onSave, onCancel = _a.onCancel;
20
- var _h = useState({
19
+ var name = _a.name, status = _a.status, phone = _a.phone, email = _a.email, _b = _a.clientOfStudy, clientOfStudy = _b === void 0 ? false : _b, _c = _a.officeName, officeName = _c === void 0 ? "du cabinet" : _c, birthDate = _a.birthDate, _d = _a.hideActions, hideActions = _d === void 0 ? false : _d, _e = _a.controlled, controlled = _e === void 0 ? false : _e, _f = _a.hasExternalChanges, hasExternalChanges = _f === void 0 ? false : _f, _g = _a.datepickerYearDropdownItemNumber, datepickerYearDropdownItemNumber = _g === void 0 ? 10 : _g, datepickerMaxDaysInPast = _a.datepickerMaxDaysInPast, datepickerMinDate = _a.datepickerMinDate, datepickerMaxDate = _a.datepickerMaxDate, _h = _a.datepickerDisableFutur, datepickerDisableFutur = _h === void 0 ? true : _h, externalEditData = _a.editData, onEditDataChange = _a.onEditDataChange, onSave = _a.onSave, onCancel = _a.onCancel;
20
+ var _j = useState({
21
21
  firstName: "",
22
22
  lastName: "",
23
23
  status: status,
@@ -25,7 +25,9 @@ var ContactCardEdit = function (_a) {
25
25
  phone: phone,
26
26
  email: email,
27
27
  birthDate: birthDate,
28
- }), internalEditData = _h[0], setInternalEditData = _h[1];
28
+ }), internalEditData = _j[0], setInternalEditData = _j[1];
29
+ // État pour suivre les modifications
30
+ var _k = useState(false), hasChanges = _k[0], setHasChanges = _k[1];
29
31
  // Utiliser les données externes si contrôlé, sinon les données internes
30
32
  var editData = controlled && externalEditData ? externalEditData : internalEditData;
31
33
  var updateEditData = function (updater) {
@@ -59,6 +61,41 @@ var ContactCardEdit = function (_a) {
59
61
  officeName,
60
62
  controlled,
61
63
  ]);
64
+ // Détection des changements
65
+ useEffect(function () {
66
+ var _a, _b;
67
+ if (!controlled) {
68
+ var nameParts = name.split(" ");
69
+ var originalData = {
70
+ firstName: nameParts[0] || "",
71
+ lastName: nameParts.slice(1).join(" ") || "",
72
+ status: status,
73
+ clientType: clientOfStudy ? "Client ".concat(officeName) : "Non client",
74
+ phone: phone,
75
+ email: email,
76
+ birthDate: birthDate,
77
+ };
78
+ var currentData = editData;
79
+ var changed = originalData.firstName !== currentData.firstName ||
80
+ originalData.lastName !== currentData.lastName ||
81
+ originalData.status !== currentData.status ||
82
+ originalData.clientType !== currentData.clientType ||
83
+ originalData.phone !== currentData.phone ||
84
+ originalData.email !== currentData.email ||
85
+ ((_a = originalData.birthDate) === null || _a === void 0 ? void 0 : _a.getTime()) !== ((_b = currentData.birthDate) === null || _b === void 0 ? void 0 : _b.getTime());
86
+ setHasChanges(changed);
87
+ }
88
+ }, [
89
+ editData,
90
+ name,
91
+ status,
92
+ phone,
93
+ email,
94
+ birthDate,
95
+ clientOfStudy,
96
+ officeName,
97
+ controlled,
98
+ ]);
62
99
  var handleSave = function () {
63
100
  onSave === null || onSave === void 0 ? void 0 : onSave(editData);
64
101
  };
@@ -78,7 +115,7 @@ var ContactCardEdit = function (_a) {
78
115
  }
79
116
  onCancel === null || onCancel === void 0 ? void 0 : onCancel();
80
117
  };
81
- return (React.createElement("div", { className: styles.contactCardEdit },
118
+ return (React.createElement("div", { className: "".concat(styles.contactCardEdit, " ").concat((controlled ? hasExternalChanges : hasChanges) ? styles.modified : "") },
82
119
  React.createElement("div", { className: styles.contentContainer },
83
120
  React.createElement("div", { className: styles.nameTagContainer },
84
121
  React.createElement("div", { className: styles.nameInputsContainer },
@@ -11,6 +11,11 @@
11
11
  justify-content: space-between;
12
12
  align-items: stretch;
13
13
  align-self: stretch;
14
+ transition: border-color 0.3s ease;
15
+ }
16
+
17
+ .contactCardEdit.modified {
18
+ border-color: #25beeb;
14
19
  }
15
20
 
16
21
  .contentContainer {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "allaw-ui",
3
- "version": "4.0.1",
3
+ "version": "4.0.2",
4
4
  "description": "Composants UI pour l'application Allaw",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",