allaw-ui 4.0.0 → 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.
- package/dist/components/atoms/datepickers/Datepicker.d.ts +1 -0
- package/dist/components/atoms/datepickers/Datepicker.js +2 -2
- package/dist/components/molecules/contactCard/ContactCardEdit.d.ts +6 -0
- package/dist/components/molecules/contactCard/ContactCardEdit.js +42 -5
- package/dist/components/molecules/contactCard/ContactCardEdit.stories.d.ts +16 -0
- package/dist/components/molecules/contactCard/ContactCardEdit.stories.js +16 -0
- package/dist/components/molecules/contactCard/contactCardEdit.module.css +5 -0
- package/package.json +1 -1
|
@@ -48,7 +48,7 @@ var CustomInput = forwardRef(function (_a, ref) {
|
|
|
48
48
|
});
|
|
49
49
|
CustomInput.displayName = "CustomInput";
|
|
50
50
|
var Datepicker = function (_a) {
|
|
51
|
-
var value = _a.value, onChange = _a.onChange, _b = _a.placeholder, placeholder = _b === void 0 ? "Sélectionner une date" : _b, _c = _a.yearDropdownItemNumber, yearDropdownItemNumber = _c === void 0 ? 10 : _c, maxDaysInPast = _a.maxDaysInPast, minDate = _a.minDate, _d = _a.disableFutur, disableFutur = _d === void 0 ? true : _d;
|
|
51
|
+
var value = _a.value, onChange = _a.onChange, _b = _a.placeholder, placeholder = _b === void 0 ? "Sélectionner une date" : _b, _c = _a.yearDropdownItemNumber, yearDropdownItemNumber = _c === void 0 ? 10 : _c, maxDaysInPast = _a.maxDaysInPast, minDate = _a.minDate, maxDate = _a.maxDate, _d = _a.disableFutur, disableFutur = _d === void 0 ? true : _d;
|
|
52
52
|
var _e = useState(value), selectedDate = _e[0], setSelectedDate = _e[1];
|
|
53
53
|
var _f = useState(false), isOpen = _f[0], setIsOpen = _f[1];
|
|
54
54
|
var _g = useState({ top: 0, left: 0 }), position = _g[0], setPosition = _g[1];
|
|
@@ -146,6 +146,6 @@ var Datepicker = function (_a) {
|
|
|
146
146
|
ReactDOM.createPortal(React.createElement("div", { ref: calendarRef, className: "datepicker-portal ".concat(placement), style: __assign({ left: "".concat(position.left, "px") }, (placement === "bottom"
|
|
147
147
|
? { top: "".concat(position.top, "px") }
|
|
148
148
|
: { top: "".concat(position.top, "px") })) },
|
|
149
|
-
React.createElement(ReactDatePicker, { selected: selectedDate, onChange: handleDateChange, locale: fr, inline: true, dateFormat: "dd MMMM yyyy", calendarClassName: "custom-calendar", showMonthDropdown: true, showYearDropdown: true, dropdownMode: "select", maxDate: disableFutur ? new Date() : undefined, minDate: calculatedMinDate })), document.body)));
|
|
149
|
+
React.createElement(ReactDatePicker, { selected: selectedDate, onChange: handleDateChange, locale: fr, inline: true, dateFormat: "dd MMMM yyyy", calendarClassName: "custom-calendar", showMonthDropdown: true, showYearDropdown: true, dropdownMode: "select", maxDate: maxDate || (disableFutur ? new Date() : undefined), minDate: calculatedMinDate })), document.body)));
|
|
150
150
|
};
|
|
151
151
|
export default Datepicker;
|
|
@@ -9,6 +9,12 @@ export interface ContactCardEditProps {
|
|
|
9
9
|
birthDate?: Date;
|
|
10
10
|
hideActions?: boolean;
|
|
11
11
|
controlled?: boolean;
|
|
12
|
+
hasExternalChanges?: boolean;
|
|
13
|
+
datepickerYearDropdownItemNumber?: number;
|
|
14
|
+
datepickerMaxDaysInPast?: number;
|
|
15
|
+
datepickerMinDate?: Date;
|
|
16
|
+
datepickerMaxDate?: Date;
|
|
17
|
+
datepickerDisableFutur?: boolean;
|
|
12
18
|
editData?: {
|
|
13
19
|
firstName: string;
|
|
14
20
|
lastName: string;
|
|
@@ -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, externalEditData = _a.editData, onEditDataChange = _a.onEditDataChange, onSave = _a.onSave, onCancel = _a.onCancel;
|
|
20
|
-
var
|
|
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 =
|
|
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 },
|
|
@@ -111,7 +148,7 @@ var ContactCardEdit = function (_a) {
|
|
|
111
148
|
React.createElement("i", { className: "allaw-icon-user ".concat(styles.infoIcon) }),
|
|
112
149
|
React.createElement(Datepicker, { value: editData.birthDate, onChange: function (date) {
|
|
113
150
|
return updateEditData(function (prev) { return (__assign(__assign({}, prev), { birthDate: date })); });
|
|
114
|
-
}, placeholder: "Date de naissance" })))))),
|
|
151
|
+
}, placeholder: "Date de naissance", yearDropdownItemNumber: datepickerYearDropdownItemNumber, maxDaysInPast: datepickerMaxDaysInPast, minDate: datepickerMinDate, maxDate: datepickerMaxDate, disableFutur: datepickerDisableFutur })))))),
|
|
115
152
|
!hideActions && (React.createElement("div", { className: styles.actionsContainer },
|
|
116
153
|
React.createElement("div", { className: styles.editActionsContainer },
|
|
117
154
|
React.createElement(IconButton, { style: "largeFilled", iconName: "allaw-icon-check", onClick: handleSave, color: "#29a36a" }),
|
|
@@ -33,6 +33,22 @@ declare namespace _default {
|
|
|
33
33
|
let control_6: string;
|
|
34
34
|
export { control_6 as control };
|
|
35
35
|
}
|
|
36
|
+
namespace datepickerYearDropdownItemNumber {
|
|
37
|
+
let control_7: string;
|
|
38
|
+
export { control_7 as control };
|
|
39
|
+
}
|
|
40
|
+
namespace datepickerMinDate {
|
|
41
|
+
let control_8: string;
|
|
42
|
+
export { control_8 as control };
|
|
43
|
+
}
|
|
44
|
+
namespace datepickerMaxDate {
|
|
45
|
+
let control_9: string;
|
|
46
|
+
export { control_9 as control };
|
|
47
|
+
}
|
|
48
|
+
namespace datepickerDisableFutur {
|
|
49
|
+
let control_10: string;
|
|
50
|
+
export { control_10 as control };
|
|
51
|
+
}
|
|
36
52
|
}
|
|
37
53
|
export namespace args {
|
|
38
54
|
let name_1: string;
|
|
@@ -29,6 +29,10 @@ export default {
|
|
|
29
29
|
},
|
|
30
30
|
},
|
|
31
31
|
birthDate: { control: "date" },
|
|
32
|
+
datepickerYearDropdownItemNumber: { control: "number" },
|
|
33
|
+
datepickerMinDate: { control: "date" },
|
|
34
|
+
datepickerMaxDate: { control: "date" },
|
|
35
|
+
datepickerDisableFutur: { control: "boolean" },
|
|
32
36
|
},
|
|
33
37
|
args: {
|
|
34
38
|
name: "Jane DOE",
|
|
@@ -63,6 +67,18 @@ export var Default = Template.bind({});
|
|
|
63
67
|
export var WithBirthDate = Template.bind({});
|
|
64
68
|
WithBirthDate.args = {
|
|
65
69
|
birthDate: new Date("1990-05-15"),
|
|
70
|
+
datepickerYearDropdownItemNumber: 120,
|
|
71
|
+
datepickerMinDate: (function () {
|
|
72
|
+
var date = new Date();
|
|
73
|
+
date.setFullYear(date.getFullYear() - 120);
|
|
74
|
+
return date;
|
|
75
|
+
})(),
|
|
76
|
+
datepickerMaxDate: (function () {
|
|
77
|
+
var date = new Date();
|
|
78
|
+
date.setFullYear(date.getFullYear() - 10);
|
|
79
|
+
return date;
|
|
80
|
+
})(),
|
|
81
|
+
datepickerDisableFutur: false,
|
|
66
82
|
};
|
|
67
83
|
export var WithoutBirthDate = Template.bind({});
|
|
68
84
|
WithoutBirthDate.args = {
|