phx-react 1.3.1759 → 1.3.1761
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,7 +9,13 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
9
9
|
var _a;
|
|
10
10
|
const containerRef = (0, react_1.useRef)(null);
|
|
11
11
|
const [isScrollX, setIsScrollX] = (0, react_1.useState)(false);
|
|
12
|
-
//
|
|
12
|
+
// Dùng ref để tránh onChangeTime gây infinite loop khi cha khai báo inline
|
|
13
|
+
const onChangeTimeRef = (0, react_1.useRef)(onChangeTime);
|
|
14
|
+
(0, react_1.useEffect)(() => {
|
|
15
|
+
onChangeTimeRef.current = onChangeTime;
|
|
16
|
+
}, [onChangeTime]);
|
|
17
|
+
// Ref để track lần đầu mount, tránh gọi onChangeTime khi init
|
|
18
|
+
const isFirstMount = (0, react_1.useRef)(true);
|
|
13
19
|
const buildDefaultTimeline = () => {
|
|
14
20
|
function getPreviousDays(baseDate, n) {
|
|
15
21
|
const result = [];
|
|
@@ -18,7 +24,7 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
18
24
|
d.setDate(baseDate.getDate() - i);
|
|
19
25
|
const dayOfWeek = d.getDay();
|
|
20
26
|
result.push({
|
|
21
|
-
title: daysOfWeek[dayOfWeek],
|
|
27
|
+
title: daysOfWeek[dayOfWeek],
|
|
22
28
|
date: `${d.getDate()}/${d.getMonth() + 1}`,
|
|
23
29
|
time: d,
|
|
24
30
|
});
|
|
@@ -27,10 +33,9 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
27
33
|
}
|
|
28
34
|
const today = new Date();
|
|
29
35
|
const past = getPreviousDays(today, 30);
|
|
30
|
-
// hôm nay vẫn giữ thứ
|
|
31
36
|
const todayDayOfWeek = today.getDay();
|
|
32
37
|
past.push({
|
|
33
|
-
title: daysOfWeek[todayDayOfWeek],
|
|
38
|
+
title: daysOfWeek[todayDayOfWeek],
|
|
34
39
|
date: `${today.getDate()}/${today.getMonth() + 1}`,
|
|
35
40
|
time: today,
|
|
36
41
|
});
|
|
@@ -46,14 +51,12 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
46
51
|
function handleCheckActive(newActiveIndex) {
|
|
47
52
|
setActiveIndex(newActiveIndex);
|
|
48
53
|
}
|
|
49
|
-
// nút trái
|
|
50
54
|
const handlePrevClick = () => {
|
|
51
55
|
if (startIndex - 1 >= 0) {
|
|
52
56
|
setStartIndex((pre) => pre - 1);
|
|
53
57
|
}
|
|
54
58
|
handleCheckActive(activeIndex - 1);
|
|
55
59
|
};
|
|
56
|
-
// nút phải
|
|
57
60
|
const handleNextClick = () => {
|
|
58
61
|
if (startIndex + windowSize < timeline.length) {
|
|
59
62
|
setStartIndex((prev) => prev + 1);
|
|
@@ -61,13 +64,13 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
61
64
|
handleCheckActive(activeIndex + 1);
|
|
62
65
|
};
|
|
63
66
|
const handleClickToday = () => {
|
|
64
|
-
|
|
67
|
+
var _a;
|
|
65
68
|
setActiveIndex(todayIndex);
|
|
66
|
-
// tính lại startIndex
|
|
67
69
|
const newStartIndex = Math.max(todayIndex - (windowSize - 1), 0);
|
|
68
70
|
setStartIndex(newStartIndex);
|
|
69
|
-
|
|
71
|
+
(_a = onChangeTimeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeTimeRef, new Date());
|
|
70
72
|
};
|
|
73
|
+
// Sync activeIndex khi selectedDate hoặc timeline thay đổi từ bên ngoài
|
|
71
74
|
(0, react_1.useEffect)(() => {
|
|
72
75
|
if (selectedDate) {
|
|
73
76
|
const selectedIndex = timeline.findIndex((t) => t.date === selectedDate);
|
|
@@ -87,6 +90,17 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
87
90
|
setTodayIndex(newTodayIndex);
|
|
88
91
|
setStartIndex(Math.max(newTodayIndex - (windowSize - 1), 0));
|
|
89
92
|
}, [selectedDate, timeline.length]);
|
|
93
|
+
// FIX: Bỏ onChangeTime khỏi dependency array, dùng ref thay thế
|
|
94
|
+
(0, react_1.useEffect)(() => {
|
|
95
|
+
const activeItem = timeline[activeIndex];
|
|
96
|
+
if (!activeItem || !onChangeTimeRef.current)
|
|
97
|
+
return;
|
|
98
|
+
if (isFirstMount.current) {
|
|
99
|
+
isFirstMount.current = false;
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
onChangeTimeRef.current(activeItem.time);
|
|
103
|
+
}, [(_a = timeline[activeIndex]) === null || _a === void 0 ? void 0 : _a.date]);
|
|
90
104
|
(0, react_1.useEffect)(() => {
|
|
91
105
|
const el = containerRef.current;
|
|
92
106
|
if (!el)
|
|
@@ -101,60 +115,42 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
101
115
|
window.removeEventListener('resize', checkScrollX);
|
|
102
116
|
};
|
|
103
117
|
}, []);
|
|
104
|
-
(0, react_1.useEffect)(() => {
|
|
105
|
-
var _a;
|
|
106
|
-
let timerId = null;
|
|
107
|
-
const time = (_a = timeline[activeIndex]) === null || _a === void 0 ? void 0 : _a.time;
|
|
108
|
-
if (time && onChangeTime) {
|
|
109
|
-
timerId = setTimeout(() => {
|
|
110
|
-
onChangeTime(time);
|
|
111
|
-
}, 200);
|
|
112
|
-
}
|
|
113
|
-
return () => {
|
|
114
|
-
if (timerId) {
|
|
115
|
-
clearTimeout(timerId);
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
}, [(_a = timeline[activeIndex]) === null || _a === void 0 ? void 0 : _a.title]);
|
|
119
118
|
return (react_1.default.createElement("div", null,
|
|
120
119
|
!hideTodayButton && (react_1.default.createElement(Button_1.PHXButton, { className: 'mb-3', iconPosition: 'before', onClick: handleClickToday, secondary: true, size: 'extra-micro', typeIcon: 'calendar' }, "H\u00F4m nay")),
|
|
121
120
|
react_1.default.createElement("div", { className: 'flex w-full items-start' },
|
|
122
121
|
!isHaveOnlyOneOption && (react_1.default.createElement("button", { style: {
|
|
123
122
|
height: isScrollX ? '58px' : '50px',
|
|
124
|
-
}, className: '\n
|
|
125
|
-
// chỉ check startIndex === 0 để disable
|
|
126
|
-
disabled: activeIndex === 0, onClick: handlePrevClick },
|
|
123
|
+
}, className: '\n mr-1 flex w-[1.875rem] flex-shrink-0 items-center justify-center \n rounded-lg border border-gray-300 bg-white hover:bg-gray-200\n disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-400\n ', disabled: activeIndex === 0, onClick: handlePrevClick },
|
|
127
124
|
react_1.default.createElement("svg", { fill: 'none', height: '24', stroke: 'currentColor', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg', className: 'w-4 h-4' },
|
|
128
125
|
react_1.default.createElement("path", { d: 'M15 18L9 12L15 6', strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: '2' })))),
|
|
129
126
|
react_1.default.createElement("style", null, `
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
`),
|
|
127
|
+
.scrollbar-thin::-webkit-scrollbar {
|
|
128
|
+
width: 8px;
|
|
129
|
+
height: 8px;
|
|
130
|
+
}
|
|
131
|
+
.scrollbar-thin::-webkit-scrollbar-thumb {
|
|
132
|
+
background: rgb(199 199 199);
|
|
133
|
+
border-radius: 16px;
|
|
134
|
+
border: 2px solid transparent;
|
|
135
|
+
background-clip: content-box;
|
|
136
|
+
}
|
|
137
|
+
.shadow-container {
|
|
138
|
+
box-shadow:
|
|
139
|
+
0rem 0.3125rem 0.3125rem -0.15625rem rgba(0, 0, 0, 0.03),
|
|
140
|
+
0rem 0.1875rem 0.1875rem -0.09375rem rgba(0, 0, 0, 0.02),
|
|
141
|
+
0rem 0.125rem 0.125rem -0.0625rem rgba(0, 0, 0, 0.02),
|
|
142
|
+
0rem 0.0625rem 0.0625rem -0.03125rem rgba(0, 0, 0, 0.03),
|
|
143
|
+
0rem 0.03125rem 0.03125rem 0rem rgba(0, 0, 0, 0.04),
|
|
144
|
+
0rem 0rem 0rem 0.0625rem rgba(0, 0, 0, 0.06);
|
|
145
|
+
}
|
|
146
|
+
`),
|
|
151
147
|
react_1.default.createElement("div", { ref: containerRef, className: (0, types_1.classNames)('overflow-x-auto scrollbar-thin rounded-lg shadow-container', isHaveOnlyOneOption ? 'w-[7.5rem]' : ' flex-1') },
|
|
152
148
|
react_1.default.createElement("div", { className: (0, types_1.classNames)('flex h-[3.125rem] overflow-y-hidden', isHaveOnlyOneOption ? 'w-[7.5rem]' : 'min-w-max') }, visibleDays.map((item, index) => {
|
|
153
149
|
const globalIndex = startIndex + index;
|
|
154
150
|
const isActive = activeIndex === globalIndex;
|
|
155
151
|
return (react_1.default.createElement("div", { key: globalIndex, className: 'w-full h-[3.125rem] min-w-[7.5rem]' },
|
|
156
|
-
react_1.default.createElement("button", { className:
|
|
157
|
-
h-full w-full
|
|
152
|
+
react_1.default.createElement("button", { className: `${index === 0 ? '' : 'border-l'}
|
|
153
|
+
h-full w-full border-gray-300 bg-white px-1.5 py-1 hover:bg-gray-100`, onClick: () => {
|
|
158
154
|
setActiveIndex(globalIndex);
|
|
159
155
|
} }, isActive ? (react_1.default.createElement("div", { className: 'flex h-full w-full flex-col items-center justify-center rounded-lg bg-gray-900 text-white' },
|
|
160
156
|
react_1.default.createElement("span", { className: 'text-xxs' }, item.title),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PHXTabDate.js","sourceRoot":"","sources":["../../../../src/components/TabDate/PHXTabDate.tsx"],"names":[],"mappings":";;;AAAA,uDAA0D;AAC1D,sCAAqC;AACrC,oCAAqC;AAkBrC,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAE5F,MAAM,UAAU,GAAG,CAAC,EAClB,UAAU,GAAG,iBAAiB,EAC9B,eAAe,GAAG,KAAK,EACvB,YAAY,EACZ,QAAQ,EAAE,YAAY,EACtB,UAAU,GAAG,CAAC,EACd,oBAAoB,GAAG,KAAK,EAC5B,YAAY,GACS,EAAE,EAAE;;IACzB,MAAM,YAAY,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAA;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"PHXTabDate.js","sourceRoot":"","sources":["../../../../src/components/TabDate/PHXTabDate.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,13 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
6
6
|
var _a;
|
|
7
7
|
const containerRef = useRef(null);
|
|
8
8
|
const [isScrollX, setIsScrollX] = useState(false);
|
|
9
|
-
//
|
|
9
|
+
// Dùng ref để tránh onChangeTime gây infinite loop khi cha khai báo inline
|
|
10
|
+
const onChangeTimeRef = useRef(onChangeTime);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
onChangeTimeRef.current = onChangeTime;
|
|
13
|
+
}, [onChangeTime]);
|
|
14
|
+
// Ref để track lần đầu mount, tránh gọi onChangeTime khi init
|
|
15
|
+
const isFirstMount = useRef(true);
|
|
10
16
|
const buildDefaultTimeline = () => {
|
|
11
17
|
function getPreviousDays(baseDate, n) {
|
|
12
18
|
const result = [];
|
|
@@ -15,7 +21,7 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
15
21
|
d.setDate(baseDate.getDate() - i);
|
|
16
22
|
const dayOfWeek = d.getDay();
|
|
17
23
|
result.push({
|
|
18
|
-
title: daysOfWeek[dayOfWeek],
|
|
24
|
+
title: daysOfWeek[dayOfWeek],
|
|
19
25
|
date: `${d.getDate()}/${d.getMonth() + 1}`,
|
|
20
26
|
time: d,
|
|
21
27
|
});
|
|
@@ -24,10 +30,9 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
24
30
|
}
|
|
25
31
|
const today = new Date();
|
|
26
32
|
const past = getPreviousDays(today, 30);
|
|
27
|
-
// hôm nay vẫn giữ thứ
|
|
28
33
|
const todayDayOfWeek = today.getDay();
|
|
29
34
|
past.push({
|
|
30
|
-
title: daysOfWeek[todayDayOfWeek],
|
|
35
|
+
title: daysOfWeek[todayDayOfWeek],
|
|
31
36
|
date: `${today.getDate()}/${today.getMonth() + 1}`,
|
|
32
37
|
time: today,
|
|
33
38
|
});
|
|
@@ -43,14 +48,12 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
43
48
|
function handleCheckActive(newActiveIndex) {
|
|
44
49
|
setActiveIndex(newActiveIndex);
|
|
45
50
|
}
|
|
46
|
-
// nút trái
|
|
47
51
|
const handlePrevClick = () => {
|
|
48
52
|
if (startIndex - 1 >= 0) {
|
|
49
53
|
setStartIndex((pre) => pre - 1);
|
|
50
54
|
}
|
|
51
55
|
handleCheckActive(activeIndex - 1);
|
|
52
56
|
};
|
|
53
|
-
// nút phải
|
|
54
57
|
const handleNextClick = () => {
|
|
55
58
|
if (startIndex + windowSize < timeline.length) {
|
|
56
59
|
setStartIndex((prev) => prev + 1);
|
|
@@ -58,13 +61,13 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
58
61
|
handleCheckActive(activeIndex + 1);
|
|
59
62
|
};
|
|
60
63
|
const handleClickToday = () => {
|
|
61
|
-
|
|
64
|
+
var _a;
|
|
62
65
|
setActiveIndex(todayIndex);
|
|
63
|
-
// tính lại startIndex
|
|
64
66
|
const newStartIndex = Math.max(todayIndex - (windowSize - 1), 0);
|
|
65
67
|
setStartIndex(newStartIndex);
|
|
66
|
-
|
|
68
|
+
(_a = onChangeTimeRef.current) === null || _a === void 0 ? void 0 : _a.call(onChangeTimeRef, new Date());
|
|
67
69
|
};
|
|
70
|
+
// Sync activeIndex khi selectedDate hoặc timeline thay đổi từ bên ngoài
|
|
68
71
|
useEffect(() => {
|
|
69
72
|
if (selectedDate) {
|
|
70
73
|
const selectedIndex = timeline.findIndex((t) => t.date === selectedDate);
|
|
@@ -84,6 +87,17 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
84
87
|
setTodayIndex(newTodayIndex);
|
|
85
88
|
setStartIndex(Math.max(newTodayIndex - (windowSize - 1), 0));
|
|
86
89
|
}, [selectedDate, timeline.length]);
|
|
90
|
+
// FIX: Bỏ onChangeTime khỏi dependency array, dùng ref thay thế
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
const activeItem = timeline[activeIndex];
|
|
93
|
+
if (!activeItem || !onChangeTimeRef.current)
|
|
94
|
+
return;
|
|
95
|
+
if (isFirstMount.current) {
|
|
96
|
+
isFirstMount.current = false;
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
onChangeTimeRef.current(activeItem.time);
|
|
100
|
+
}, [(_a = timeline[activeIndex]) === null || _a === void 0 ? void 0 : _a.date]);
|
|
87
101
|
useEffect(() => {
|
|
88
102
|
const el = containerRef.current;
|
|
89
103
|
if (!el)
|
|
@@ -98,60 +112,42 @@ const PHXTabDate = ({ daysOfWeek = defaultDaysOfWeek, hideTodayButton = false, o
|
|
|
98
112
|
window.removeEventListener('resize', checkScrollX);
|
|
99
113
|
};
|
|
100
114
|
}, []);
|
|
101
|
-
useEffect(() => {
|
|
102
|
-
var _a;
|
|
103
|
-
let timerId = null;
|
|
104
|
-
const time = (_a = timeline[activeIndex]) === null || _a === void 0 ? void 0 : _a.time;
|
|
105
|
-
if (time && onChangeTime) {
|
|
106
|
-
timerId = setTimeout(() => {
|
|
107
|
-
onChangeTime(time);
|
|
108
|
-
}, 200);
|
|
109
|
-
}
|
|
110
|
-
return () => {
|
|
111
|
-
if (timerId) {
|
|
112
|
-
clearTimeout(timerId);
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
}, [(_a = timeline[activeIndex]) === null || _a === void 0 ? void 0 : _a.title]);
|
|
116
115
|
return (React.createElement("div", null,
|
|
117
116
|
!hideTodayButton && (React.createElement(PHXButton, { className: 'mb-3', iconPosition: 'before', onClick: handleClickToday, secondary: true, size: 'extra-micro', typeIcon: 'calendar' }, "H\u00F4m nay")),
|
|
118
117
|
React.createElement("div", { className: 'flex w-full items-start' },
|
|
119
118
|
!isHaveOnlyOneOption && (React.createElement("button", { style: {
|
|
120
119
|
height: isScrollX ? '58px' : '50px',
|
|
121
|
-
}, className: '\n
|
|
122
|
-
// chỉ check startIndex === 0 để disable
|
|
123
|
-
disabled: activeIndex === 0, onClick: handlePrevClick },
|
|
120
|
+
}, className: '\n mr-1 flex w-[1.875rem] flex-shrink-0 items-center justify-center \n rounded-lg border border-gray-300 bg-white hover:bg-gray-200\n disabled:cursor-not-allowed disabled:bg-gray-100 disabled:text-gray-400\n ', disabled: activeIndex === 0, onClick: handlePrevClick },
|
|
124
121
|
React.createElement("svg", { fill: 'none', height: '24', stroke: 'currentColor', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg', className: 'w-4 h-4' },
|
|
125
122
|
React.createElement("path", { d: 'M15 18L9 12L15 6', strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: '2' })))),
|
|
126
123
|
React.createElement("style", null, `
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
`),
|
|
124
|
+
.scrollbar-thin::-webkit-scrollbar {
|
|
125
|
+
width: 8px;
|
|
126
|
+
height: 8px;
|
|
127
|
+
}
|
|
128
|
+
.scrollbar-thin::-webkit-scrollbar-thumb {
|
|
129
|
+
background: rgb(199 199 199);
|
|
130
|
+
border-radius: 16px;
|
|
131
|
+
border: 2px solid transparent;
|
|
132
|
+
background-clip: content-box;
|
|
133
|
+
}
|
|
134
|
+
.shadow-container {
|
|
135
|
+
box-shadow:
|
|
136
|
+
0rem 0.3125rem 0.3125rem -0.15625rem rgba(0, 0, 0, 0.03),
|
|
137
|
+
0rem 0.1875rem 0.1875rem -0.09375rem rgba(0, 0, 0, 0.02),
|
|
138
|
+
0rem 0.125rem 0.125rem -0.0625rem rgba(0, 0, 0, 0.02),
|
|
139
|
+
0rem 0.0625rem 0.0625rem -0.03125rem rgba(0, 0, 0, 0.03),
|
|
140
|
+
0rem 0.03125rem 0.03125rem 0rem rgba(0, 0, 0, 0.04),
|
|
141
|
+
0rem 0rem 0rem 0.0625rem rgba(0, 0, 0, 0.06);
|
|
142
|
+
}
|
|
143
|
+
`),
|
|
148
144
|
React.createElement("div", { ref: containerRef, className: classNames('overflow-x-auto scrollbar-thin rounded-lg shadow-container', isHaveOnlyOneOption ? 'w-[7.5rem]' : ' flex-1') },
|
|
149
145
|
React.createElement("div", { className: classNames('flex h-[3.125rem] overflow-y-hidden', isHaveOnlyOneOption ? 'w-[7.5rem]' : 'min-w-max') }, visibleDays.map((item, index) => {
|
|
150
146
|
const globalIndex = startIndex + index;
|
|
151
147
|
const isActive = activeIndex === globalIndex;
|
|
152
148
|
return (React.createElement("div", { key: globalIndex, className: 'w-full h-[3.125rem] min-w-[7.5rem]' },
|
|
153
|
-
React.createElement("button", { className:
|
|
154
|
-
h-full w-full
|
|
149
|
+
React.createElement("button", { className: `${index === 0 ? '' : 'border-l'}
|
|
150
|
+
h-full w-full border-gray-300 bg-white px-1.5 py-1 hover:bg-gray-100`, onClick: () => {
|
|
155
151
|
setActiveIndex(globalIndex);
|
|
156
152
|
} }, isActive ? (React.createElement("div", { className: 'flex h-full w-full flex-col items-center justify-center rounded-lg bg-gray-900 text-white' },
|
|
157
153
|
React.createElement("span", { className: 'text-xxs' }, item.title),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PHXTabDate.js","sourceRoot":"","sources":["../../../../src/components/TabDate/PHXTabDate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAkBrC,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAE5F,MAAM,UAAU,GAAG,CAAC,EAClB,UAAU,GAAG,iBAAiB,EAC9B,eAAe,GAAG,KAAK,EACvB,YAAY,EACZ,QAAQ,EAAE,YAAY,EACtB,UAAU,GAAG,CAAC,EACd,oBAAoB,GAAG,KAAK,EAC5B,YAAY,GACS,EAAE,EAAE;;IACzB,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"PHXTabDate.js","sourceRoot":"","sources":["../../../../src/components/TabDate/PHXTabDate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAkBrC,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAE5F,MAAM,UAAU,GAAG,CAAC,EAClB,UAAU,GAAG,iBAAiB,EAC9B,eAAe,GAAG,KAAK,EACvB,YAAY,EACZ,QAAQ,EAAE,YAAY,EACtB,UAAU,GAAG,CAAC,EACd,oBAAoB,GAAG,KAAK,EAC5B,YAAY,GACS,EAAE,EAAE;;IACzB,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACjD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEjD,2EAA2E;IAC3E,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,CAAC,OAAO,GAAG,YAAY,CAAA;IACxC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAElB,8DAA8D;IAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAEjC,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,SAAS,eAAe,CAAC,QAAc,EAAE,CAAS;YAChD,MAAM,MAAM,GAA+B,EAAE,CAAA;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC5B,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;gBACjC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAA;gBAC5B,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC;oBAC5B,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;oBAC1C,IAAI,EAAE,CAAC;iBACR,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAEvC,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,EAAE,CAAA;QACrC,IAAI,CAAC,IAAI,CAAC;YACR,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC;YACjC,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE;YAClD,IAAI,EAAE,KAAK;SACZ,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,YAAY,IAAI,oBAAoB,EAAE,CAAA;IACvD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAA;IAEjD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAChD,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IAC/D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;IAE1D,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,CAAA;IAEvE,SAAS,iBAAiB,CAAC,cAAsB;QAC/C,cAAc,CAAC,cAAc,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,aAAa,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;QACjC,CAAC;QACD,iBAAiB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,IAAI,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC9C,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QACnC,CAAC;QACD,iBAAiB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,GAAG,EAAE;;QAC5B,cAAc,CAAC,UAAU,CAAC,CAAA;QAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAChE,aAAa,CAAC,aAAa,CAAC,CAAA;QAC5B,MAAA,eAAe,CAAC,OAAO,gEAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC,CAAA;IAED,wEAAwE;IACxE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;YACxE,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzB,cAAc,CAAC,aAAa,CAAC,CAAA;gBAC7B,MAAM,SAAS,GAAG,aAAa,IAAI,UAAU,IAAI,aAAa,GAAG,UAAU,GAAG,UAAU,CAAA;gBACxF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACxE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,CAAA;oBAClE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;gBACvC,CAAC;YACH,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA;QACpG,cAAc,CAAC,aAAa,CAAC,CAAA;QAC7B,aAAa,CAAC,aAAa,CAAC,CAAA;QAC5B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC9D,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAEnC,gEAAgE;IAChE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;QACxC,IAAI,CAAC,UAAU,IAAI,CAAC,eAAe,CAAC,OAAO;YAAE,OAAM;QAEnD,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,YAAY,CAAC,OAAO,GAAG,KAAK,CAAA;YAC5B,OAAM;QACR,CAAC;QAED,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC,EAAE,CAAC,MAAA,QAAQ,CAAC,WAAW,CAAC,0CAAE,IAAI,CAAC,CAAC,CAAA;IAEjC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,EAAE;YAAE,OAAM;QAEf,MAAM,YAAY,GAAG,GAAG,EAAE;YACxB,MAAM,UAAU,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAA;YAClD,YAAY,CAAC,UAAU,CAAC,CAAA;QAC1B,CAAC,CAAA;QAED,YAAY,EAAE,CAAA;QACd,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QAE/C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;QACpD,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL;QACG,CAAC,eAAe,IAAI,CACnB,oBAAC,SAAS,IACR,SAAS,EAAC,MAAM,EAChB,YAAY,EAAC,QAAQ,EACrB,OAAO,EAAE,gBAAgB,EACzB,SAAS,QACT,IAAI,EAAC,aAAa,EAClB,QAAQ,EAAC,UAAU,mBAGT,CACb;QACD,6BAAK,SAAS,EAAC,yBAAyB;YAErC,CAAC,mBAAmB,IAAI,CACvB,gCACE,KAAK,EAAE;oBACL,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;iBACpC,EACD,SAAS,EAAC,oQAIT,EACD,QAAQ,EAAE,WAAW,KAAK,CAAC,EAC3B,OAAO,EAAE,eAAe;gBAExB,6BACE,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,IAAI,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,IAAI,EACV,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,SAAS;oBAEnB,8BAAM,CAAC,EAAC,kBAAkB,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,GAAG,GAAG,CACtF,CACC,CACV;YAED,mCACG;;;;;;;;;;;;;;;;;;;;WAoBA,CACK;YAGR,6BACE,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,UAAU,CACnB,4DAA4D,EAC5D,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAC/C;gBAED,6BACE,SAAS,EAAE,UAAU,CACnB,qCAAqC,EACrC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CACjD,IAEA,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;oBAC/B,MAAM,WAAW,GAAG,UAAU,GAAG,KAAK,CAAA;oBACtC,MAAM,QAAQ,GAAG,WAAW,KAAK,WAAW,CAAA;oBAE5C,OAAO,CACL,6BAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAC,oCAAoC;wBACnE,gCACE,SAAS,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;2FAC4B,EACvE,OAAO,EAAE,GAAG,EAAE;gCACZ,cAAc,CAAC,WAAW,CAAC,CAAA;4BAC7B,CAAC,IAEA,QAAQ,CAAC,CAAC,CAAC,CACV,6BAAK,SAAS,EAAC,2FAA2F;4BACxG,8BAAM,SAAS,EAAC,UAAU,IAAE,IAAI,CAAC,KAAK,CAAQ;4BAC9C,2BAAG,SAAS,EAAC,qBAAqB,IAAE,IAAI,CAAC,IAAI,CAAK,CAC9C,CACP,CAAC,CAAC,CAAC,CACF,6BAAK,SAAS,EAAC,yDAAyD;4BACtE,8BAAM,SAAS,EAAC,wBAAwB,IAAE,IAAI,CAAC,KAAK,CAAQ;4BAC5D,2BAAG,SAAS,EAAC,mCAAmC,IAAE,IAAI,CAAC,IAAI,CAAK,CAC5D,CACP,CACM,CACL,CACP,CAAA;gBACH,CAAC,CAAC,CACE,CACF;YAGL,CAAC,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAC9F,gCACE,KAAK,EAAE;oBACL,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;iBACpC,EACD,SAAS,EAAC,8NACoI,EAC9I,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,WAAW,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAE5C,6BACE,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,IAAI,EACV,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,SAAS;oBAEnB,8BACE,CAAC,EAAC,iBAAiB,EACnB,MAAM,EAAC,cAAc,EACrB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAC,GAAG,GACf,CACE,CACC,CACV,CACG,CACF,CACP,CAAA;AACH,CAAC,CAAA;AAED,eAAe,UAAU,CAAA"}
|