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.
- package/dist/components/molecules/ActionDropdown/ActionDropdown.css +2 -2
- package/dist/components/molecules/ActionDropdown/ActionDropdown.js +1 -1
- package/dist/components/molecules/Calendar/DateTime.d.ts +1 -0
- package/dist/components/molecules/Calendar/DateTime.js +5 -5
- package/dist/components/organisms/DateTimePicker/DateTimePicker.js +11 -3
- package/package.json +1 -1
- package/src/components/molecules/ActionDropdown/ActionDropdown.css +2 -2
- package/src/components/molecules/ActionDropdown/ActionDropdown.tsx +4 -4
- package/src/components/molecules/Calendar/DateTime.tsx +13 -8
- package/src/components/organisms/DateTimePicker/DateTimePicker.tsx +10 -2
|
@@ -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) {
|
|
@@ -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(
|
|
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 (
|
|
83
|
-
setMonth(
|
|
82
|
+
if (defaultMonth) {
|
|
83
|
+
setMonth(defaultMonth);
|
|
84
84
|
}
|
|
85
|
-
}, [
|
|
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
|
-
|
|
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
|
-
|
|
112
|
-
|
|
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,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>(
|
|
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
|
|
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 (
|
|
109
|
-
setMonth(
|
|
113
|
+
if (defaultMonth) {
|
|
114
|
+
setMonth(defaultMonth);
|
|
110
115
|
}
|
|
111
|
-
}, [
|
|
116
|
+
}, [defaultMonth]);
|
|
112
117
|
|
|
113
118
|
return (
|
|
114
119
|
<div className="calendar--dropdown">
|
|
115
120
|
{mode !== 'time' &&
|
|
116
121
|
(() => {
|
|
117
|
-
const calendarProps
|
|
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
|
-
|
|
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
|
-
|
|
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>
|