mautourco-components 0.2.130 → 0.2.132

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.
@@ -2,7 +2,7 @@
2
2
  * Do not edit directly, this file was auto-generated.
3
3
  */
4
4
 
5
- .action-dropdown {
5
+ .mtc-action-dropdown {
6
6
  position: relative;
7
7
  width: var(--max-width, 153px);
8
8
  background-color: #fff;
@@ -35,7 +35,7 @@
35
35
  }
36
36
  }
37
37
 
38
- .action-dropdown-trigger {
38
+ .mtc-action-dropdown-trigger {
39
39
  display: flex;
40
40
  height: 2rem;
41
41
  width: 2rem;
@@ -19,7 +19,7 @@ export function ActionDropdown(props) {
19
19
  var _d = useState(false), open = _d[0], setOpen = _d[1];
20
20
  return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { className: triggerClassName, children: typeof children === 'function'
21
21
  ? children(open)
22
- : children !== null && children !== void 0 ? children : (_jsx("span", { className: "action-dropdown-trigger", children: _jsx(Icon, { name: "more-vertical" }) })) }), _jsx(PopoverContent, { className: cn('action-dropdown', popoverContentClassName), style: { '--max-width': maxWidth }, align: "end", side: "bottom", avoidCollisions: false, children: data.map(function (item, index) {
22
+ : (children !== null && children !== void 0 ? children : (_jsx("span", { className: "mtc-action-dropdown-trigger", children: _jsx(Icon, { name: "more-vertical" }) }))) }), _jsx(PopoverContent, { className: cn('mtc-action-dropdown', popoverContentClassName), style: { '--max-width': maxWidth }, align: "end", side: "bottom", avoidCollisions: false, children: data.map(function (item, index) {
23
23
  var defaultButton = (_jsx("button", { onClick: function () {
24
24
  var _a;
25
25
  if (item.disabled) {
@@ -19,6 +19,7 @@ export interface DateTimeProps {
19
19
  minute: string;
20
20
  meridiem: 'AM' | 'PM';
21
21
  };
22
+ defaultMonth?: Date;
22
23
  onChange?: (payload: DateTimeOnChangePayload) => void;
23
24
  }
24
25
  declare const DateTime: React.FC<DateTimeProps>;
@@ -17,9 +17,9 @@ import { Calendar } from '../../ui/calendar';
17
17
  import TimePicker from './TimePicker';
18
18
  var DateTime = function (_a) {
19
19
  var _b, _c, _d;
20
- var _e = _a.mode, mode = _e === void 0 ? 'both' : _e, _f = _a.selectionMode, selectionMode = _f === void 0 ? 'range' : _f, _g = _a.numberOfMonths, numberOfMonths = _g === void 0 ? 2 : _g, _h = _a.disableBeforeToday, disableBeforeToday = _h === void 0 ? true : _h, _j = _a.disableToday, disableToday = _j === void 0 ? false : _j, defaultDateRange = _a.defaultDateRange, defaultTime = _a.defaultTime, onChange = _a.onChange;
20
+ var _e = _a.mode, mode = _e === void 0 ? 'both' : _e, _f = _a.selectionMode, selectionMode = _f === void 0 ? 'range' : _f, _g = _a.numberOfMonths, numberOfMonths = _g === void 0 ? 2 : _g, _h = _a.disableBeforeToday, disableBeforeToday = _h === void 0 ? true : _h, _j = _a.disableToday, disableToday = _j === void 0 ? false : _j, defaultDateRange = _a.defaultDateRange, defaultTime = _a.defaultTime, defaultMonth = _a.defaultMonth, onChange = _a.onChange;
21
21
  var _k = useState(defaultDateRange), dateRange = _k[0], setDateRange = _k[1];
22
- var _l = useState(defaultDateRange === null || defaultDateRange === void 0 ? void 0 : defaultDateRange.from), month = _l[0], setMonth = _l[1];
22
+ var _l = useState(defaultMonth), month = _l[0], setMonth = _l[1];
23
23
  var _m = useState((_b = defaultTime === null || defaultTime === void 0 ? void 0 : defaultTime.hour) !== null && _b !== void 0 ? _b : '12'), hours = _m[0], setHours = _m[1];
24
24
  var _o = useState((_c = defaultTime === null || defaultTime === void 0 ? void 0 : defaultTime.minute) !== null && _c !== void 0 ? _c : '00'), minutes = _o[0], setMinutes = _o[1];
25
25
  var _p = useState((_d = defaultTime === null || defaultTime === void 0 ? void 0 : defaultTime.meridiem) !== null && _d !== void 0 ? _d : 'AM'), amPm = _p[0], setAmPm = _p[1];
@@ -79,10 +79,10 @@ var DateTime = function (_a) {
79
79
  };
80
80
  var disabledDays = buildDisabled();
81
81
  useEffect(function () {
82
- if (defaultDateRange) {
83
- setMonth(defaultDateRange === null || defaultDateRange === void 0 ? void 0 : defaultDateRange.from);
82
+ if (defaultMonth) {
83
+ setMonth(defaultMonth);
84
84
  }
85
- }, [defaultDateRange]);
85
+ }, [defaultMonth]);
86
86
  return (_jsxs("div", { className: "calendar--dropdown", children: [mode !== 'time' &&
87
87
  (function () {
88
88
  var calendarProps = {
@@ -19,6 +19,7 @@ var DateTimePicker = function (_a) {
19
19
  var _b = _a.placeholder, placeholder = _b === void 0 ? 'Select date' : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c, _d = _a.mode, mode = _d === void 0 ? 'both' : _d, _e = _a.selectionMode, selectionMode = _e === void 0 ? 'range' : _e, _f = _a.numberOfMonths, numberOfMonths = _f === void 0 ? 2 : _f, _g = _a.disableBeforeToday, disableBeforeToday = _g === void 0 ? true : _g, _h = _a.disableToday, disableToday = _h === void 0 ? false : _h, onValueChange = _a.onValueChange, defaultValue = _a.defaultValue, _j = _a.iconBGFull, iconBGFull = _j === void 0 ? true : _j, _k = _a.iconPosition, iconPosition = _k === void 0 ? 'right' : _k, _l = _a.showChevron, showChevron = _l === void 0 ? false : _l, icon = _a.icon, _m = _a.inputClassName, inputClassName = _m === void 0 ? '' : _m, _o = _a.calendarClassName, calendarClassName = _o === void 0 ? '' : _o, state = _a.state, _p = _a.scrollOnOpen, scrollOnOpen = _p === void 0 ? false : _p;
20
20
  var triggerRef = useRef(null);
21
21
  var popoverContentRef = useRef(null);
22
+ var openRef = useRef(false);
22
23
  // Parse default value and set initial state
23
24
  var parseDefaultValue = useMemo(function () {
24
25
  if (!defaultValue)
@@ -50,6 +51,7 @@ var DateTimePicker = function (_a) {
50
51
  var _r = useState([]), selectedDateRange = _r[0], setSelectedDateRange = _r[1];
51
52
  var _s = useState(undefined), selectedTime = _s[0], setSelectedTime = _s[1];
52
53
  var _t = useState(false), isOpen = _t[0], setIsOpen = _t[1];
54
+ var _u = useState(undefined), defaultMonth = _u[0], setDefaultMonth = _u[1];
53
55
  var handleDtChange = React.useCallback(function (payload) {
54
56
  var _a;
55
57
  var datePart = formatDateRange(payload.dateRange);
@@ -96,9 +98,11 @@ var DateTimePicker = function (_a) {
96
98
  }
97
99
  }, [onValueChange, selectionMode]);
98
100
  useEffect(function () {
101
+ var _a;
99
102
  setValue(parseDefaultValue.value);
100
103
  setSelectedDateRange(parseDefaultValue.dateRange);
101
- }, [defaultValue]);
104
+ setDefaultMonth((_a = parseDefaultValue.dateRange) === null || _a === void 0 ? void 0 : _a.from);
105
+ }, [parseDefaultValue]);
102
106
  // Scroll to input when calendar opens (if scrollOnOpen is true)
103
107
  useEffect(function () {
104
108
  scrollIntoViewOnOpen(triggerRef, isOpen, scrollOnOpen);
@@ -108,7 +112,11 @@ var DateTimePicker = function (_a) {
108
112
  if (isOpen) {
109
113
  ensurePopoverVisible(popoverContentRef, triggerRef, isOpen);
110
114
  }
111
- }, [isOpen]);
112
- return (_jsxs(Popover, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("div", { ref: triggerRef, children: _jsx(CalendarInput, { placeholder: placeholder, value: value, disabled: disabled, state: state, className: inputClassName, iconBGFull: iconBGFull, iconPosition: iconPosition, showChevron: showChevron, isOpen: isOpen, icon: icon }) }) }), _jsx(PopoverContent, { ref: popoverContentRef, className: "w-auto border-transparent !p-0 transfer-calendar", side: "bottom", align: "start", sideOffset: 8, avoidCollisions: false, children: _jsx(DateTime, { mode: mode, selectionMode: selectionMode, numberOfMonths: numberOfMonths, disableBeforeToday: disableBeforeToday, disableToday: disableToday, onChange: handleDtChange, defaultDateRange: selectedDateRange, defaultTime: selectedTime }) })] }));
115
+ if (openRef.current !== isOpen) {
116
+ setDefaultMonth(selectedDateRange.from);
117
+ }
118
+ openRef.current = isOpen;
119
+ }, [isOpen, selectedDateRange]);
120
+ return (_jsxs(Popover, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx("div", { ref: triggerRef, children: _jsx(CalendarInput, { placeholder: placeholder, value: value, disabled: disabled, state: state, className: inputClassName, iconBGFull: iconBGFull, iconPosition: iconPosition, showChevron: showChevron, isOpen: isOpen, icon: icon }) }) }), _jsx(PopoverContent, { ref: popoverContentRef, className: "w-auto border-transparent !p-0 transfer-calendar", side: "bottom", align: "start", sideOffset: 8, avoidCollisions: false, children: _jsx(DateTime, { mode: mode, selectionMode: selectionMode, numberOfMonths: numberOfMonths, disableBeforeToday: disableBeforeToday, disableToday: disableToday, onChange: handleDtChange, defaultDateRange: selectedDateRange, defaultTime: selectedTime, defaultMonth: defaultMonth }) })] }));
113
121
  };
114
122
  export default DateTimePicker;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mautourco-components",
3
- "version": "0.2.130",
3
+ "version": "0.2.132",
4
4
  "private": false,
5
5
  "description": "Bibliothèque de composants Mautourco pour le redesign",
6
6
  "main": "dist/index.js",
@@ -1,4 +1,4 @@
1
- .action-dropdown {
1
+ .mtc-action-dropdown {
2
2
  @apply relative;
3
3
  width: var(--max-width, 153px);
4
4
  background-color: #fff;
@@ -16,7 +16,7 @@
16
16
  }
17
17
  }
18
18
 
19
- .action-dropdown-trigger {
19
+ .mtc-action-dropdown-trigger {
20
20
  @apply w-8 h-8 flex items-center justify-center cursor-pointer;
21
21
  border-radius: var(--border-radius-rounded-lg);
22
22
  background-color: var(--color-neutral-100);
@@ -53,14 +53,14 @@ export function ActionDropdown(props: ActionDropdownProps) {
53
53
  <PopoverTrigger className={triggerClassName}>
54
54
  {typeof children === 'function'
55
55
  ? children(open)
56
- : children ?? (
57
- <span className="action-dropdown-trigger">
56
+ : (children ?? (
57
+ <span className="mtc-action-dropdown-trigger">
58
58
  <Icon name="more-vertical" />
59
59
  </span>
60
- )}
60
+ ))}
61
61
  </PopoverTrigger>
62
62
  <PopoverContent
63
- className={cn('action-dropdown', popoverContentClassName)}
63
+ className={cn('mtc-action-dropdown', popoverContentClassName)}
64
64
  style={{ '--max-width': maxWidth } as React.CSSProperties}
65
65
  align="end"
66
66
  side="bottom"
@@ -1,11 +1,13 @@
1
1
  import { Locale } from 'date-fns/locale';
2
2
  import { useEffect, useState } from 'react';
3
- import { DateRange } from 'react-day-picker';
3
+ import { DateRange, DayPicker } from 'react-day-picker';
4
4
  import Icon from '../../atoms/Icon/Icon';
5
5
  import { Button } from '../../ui/button';
6
6
  import { Calendar } from '../../ui/calendar';
7
7
  import TimePicker from './TimePicker';
8
8
 
9
+ type CalendarProps = React.ComponentProps<typeof DayPicker>;
10
+
9
11
  export interface DateTimeOnChangePayload {
10
12
  dateRange?: DateRange;
11
13
  time?: { hour: string; minute: string; meridiem: 'AM' | 'PM' };
@@ -19,6 +21,7 @@ export interface DateTimeProps {
19
21
  disableToday?: boolean;
20
22
  defaultDateRange?: DateRange;
21
23
  defaultTime?: { hour: string; minute: string; meridiem: 'AM' | 'PM' };
24
+ defaultMonth?: Date;
22
25
  onChange?: (payload: DateTimeOnChangePayload) => void;
23
26
  }
24
27
 
@@ -30,10 +33,11 @@ const DateTime: React.FC<DateTimeProps> = ({
30
33
  disableToday = false,
31
34
  defaultDateRange,
32
35
  defaultTime,
36
+ defaultMonth,
33
37
  onChange,
34
38
  }) => {
35
39
  const [dateRange, setDateRange] = useState<DateRange | undefined>(defaultDateRange);
36
- const [month, setMonth] = useState<Date | undefined>(defaultDateRange?.from);
40
+ const [month, setMonth] = useState<Date | undefined>(defaultMonth);
37
41
  const [hours, setHours] = useState<string>(defaultTime?.hour ?? '12');
38
42
  const [minutes, setMinutes] = useState<string>(defaultTime?.minute ?? '00');
39
43
  const [amPm, setAmPm] = useState<'AM' | 'PM'>(defaultTime?.meridiem ?? 'AM');
@@ -85,7 +89,8 @@ const DateTime: React.FC<DateTimeProps> = ({
85
89
  setDateRange({ from: today, to: today });
86
90
  };
87
91
 
88
- const calendarMode = selectionMode === 'single' ? 'single' : 'range';
92
+ const calendarMode: CalendarProps['mode'] =
93
+ selectionMode === 'single' ? 'single' : 'range';
89
94
 
90
95
  const buildDisabled = () => {
91
96
  const disabled: any[] = [];
@@ -105,16 +110,16 @@ const DateTime: React.FC<DateTimeProps> = ({
105
110
  const disabledDays = buildDisabled();
106
111
 
107
112
  useEffect(() => {
108
- if (defaultDateRange) {
109
- setMonth(defaultDateRange?.from);
113
+ if (defaultMonth) {
114
+ setMonth(defaultMonth);
110
115
  }
111
- }, [defaultDateRange]);
116
+ }, [defaultMonth]);
112
117
 
113
118
  return (
114
119
  <div className="calendar--dropdown">
115
120
  {mode !== 'time' &&
116
121
  (() => {
117
- const calendarProps: any = {
122
+ const calendarProps = {
118
123
  mode: calendarMode,
119
124
  selected: dateRange,
120
125
  onSelect: handleSelect,
@@ -132,7 +137,7 @@ const DateTime: React.FC<DateTimeProps> = ({
132
137
  .toUpperCase();
133
138
  },
134
139
  },
135
- };
140
+ } as CalendarProps;
136
141
 
137
142
  return <Calendar {...calendarProps} />;
138
143
  })()}
@@ -61,6 +61,7 @@ const DateTimePicker: React.FC<DateTimePickerProps> = ({
61
61
  }) => {
62
62
  const triggerRef = useRef<HTMLDivElement>(null);
63
63
  const popoverContentRef = useRef<HTMLDivElement>(null);
64
+ const openRef = useRef<boolean>(false);
64
65
 
65
66
  // Parse default value and set initial state
66
67
  const parseDefaultValue = useMemo(() => {
@@ -95,6 +96,7 @@ const DateTimePicker: React.FC<DateTimePickerProps> = ({
95
96
  { hour: string; minute: string; meridiem: 'AM' | 'PM' } | undefined
96
97
  >(undefined);
97
98
  const [isOpen, setIsOpen] = useState(false);
99
+ const [defaultMonth, setDefaultMonth] = useState<Date | undefined>(undefined);
98
100
 
99
101
  const handleDtChange = React.useCallback(
100
102
  (payload: {
@@ -148,7 +150,8 @@ const DateTimePicker: React.FC<DateTimePickerProps> = ({
148
150
  useEffect(() => {
149
151
  setValue(parseDefaultValue.value);
150
152
  setSelectedDateRange(parseDefaultValue.dateRange);
151
- }, [defaultValue]);
153
+ setDefaultMonth(parseDefaultValue.dateRange?.from);
154
+ }, [parseDefaultValue]);
152
155
 
153
156
  // Scroll to input when calendar opens (if scrollOnOpen is true)
154
157
  useEffect(() => {
@@ -160,7 +163,11 @@ const DateTimePicker: React.FC<DateTimePickerProps> = ({
160
163
  if (isOpen) {
161
164
  ensurePopoverVisible(popoverContentRef, triggerRef, isOpen);
162
165
  }
163
- }, [isOpen]);
166
+ if (openRef.current !== isOpen) {
167
+ setDefaultMonth(selectedDateRange.from);
168
+ }
169
+ openRef.current = isOpen;
170
+ }, [isOpen, selectedDateRange]);
164
171
 
165
172
  return (
166
173
  <Popover open={isOpen} onOpenChange={setIsOpen}>
@@ -197,6 +204,7 @@ const DateTimePicker: React.FC<DateTimePickerProps> = ({
197
204
  onChange={handleDtChange}
198
205
  defaultDateRange={selectedDateRange}
199
206
  defaultTime={selectedTime}
207
+ defaultMonth={defaultMonth}
200
208
  />
201
209
  </PopoverContent>
202
210
  </Popover>