phx-react 1.3.1864 → 1.3.1866
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/cjs/components/DatePicker/DatePicker.js +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/TableSchedule/PHXScheduleTable.d.ts +1 -1
- package/dist/cjs/components/TableSchedule/PHXScheduleTable.js +2 -2
- package/dist/cjs/components/TableSchedule/PHXScheduleTable.js.map +1 -1
- package/dist/cjs/components/TableSchedule/components/PHXScheduleTableBody.d.ts +2 -2
- package/dist/cjs/components/TableSchedule/components/PHXScheduleTableBody.js +25 -14
- package/dist/cjs/components/TableSchedule/components/PHXScheduleTableBody.js.map +1 -1
- package/dist/cjs/components/TableSchedule/components/PHXScheduleTableHead.js +2 -0
- package/dist/cjs/components/TableSchedule/components/PHXScheduleTableHead.js.map +1 -1
- package/dist/cjs/components/TableSchedule/constants.d.ts +15 -3
- package/dist/cjs/components/TableSchedule/constants.js +19 -6
- package/dist/cjs/components/TableSchedule/constants.js.map +1 -1
- package/dist/cjs/components/TableSchedule/renderers.d.ts +2 -1
- package/dist/cjs/components/TableSchedule/renderers.js +299 -22
- package/dist/cjs/components/TableSchedule/renderers.js.map +1 -1
- package/dist/cjs/components/TableSchedule/types.d.ts +25 -0
- package/dist/cjs/components/TableSchedule/utils.d.ts +7 -3
- package/dist/cjs/components/TableSchedule/utils.js +38 -3
- package/dist/cjs/components/TableSchedule/utils.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/TableSchedule/PHXScheduleTable.d.ts +1 -1
- package/dist/esm/components/TableSchedule/PHXScheduleTable.js +2 -2
- package/dist/esm/components/TableSchedule/PHXScheduleTable.js.map +1 -1
- package/dist/esm/components/TableSchedule/components/PHXScheduleTableBody.d.ts +2 -2
- package/dist/esm/components/TableSchedule/components/PHXScheduleTableBody.js +26 -15
- package/dist/esm/components/TableSchedule/components/PHXScheduleTableBody.js.map +1 -1
- package/dist/esm/components/TableSchedule/components/PHXScheduleTableHead.js +2 -0
- package/dist/esm/components/TableSchedule/components/PHXScheduleTableHead.js.map +1 -1
- package/dist/esm/components/TableSchedule/constants.d.ts +15 -3
- package/dist/esm/components/TableSchedule/constants.js +17 -5
- package/dist/esm/components/TableSchedule/constants.js.map +1 -1
- package/dist/esm/components/TableSchedule/renderers.d.ts +2 -1
- package/dist/esm/components/TableSchedule/renderers.js +298 -22
- package/dist/esm/components/TableSchedule/renderers.js.map +1 -1
- package/dist/esm/components/TableSchedule/types.d.ts +25 -0
- package/dist/esm/components/TableSchedule/utils.d.ts +7 -3
- package/dist/esm/components/TableSchedule/utils.js +38 -3
- package/dist/esm/components/TableSchedule/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { CELL_BOX_BASE_CLASSNAME, CELL_BOX_VARIANT_CLASSNAME, DEFAULT_TOOLTIP_CLASSNAME, ROW_HEADER_ALIGN_CLASSNAME, ROW_HEADER_CONTENT_CLASSNAME, ROW_HEADER_DESCRIPTION_CLASSNAME, ROW_HEADER_TITLE_CLASSNAME, SCHEDULE_CELL_CLASSNAME, SCHEDULE_EMPTY_DESCRIPTION_CLASSNAME, SCHEDULE_EMPTY_TITLE_CLASSNAME, SCHEDULE_SECTION_CLASSNAME, SCHEDULE_SECTION_LABEL_CLASSNAME, SCHEDULE_SECTION_VALUE_CLASSNAME, SCHEDULE_TITLE_CLASSNAME, SCHEDULE_TITLE_DOTTED_CLASSNAME, TOOLTIP_CONTENT_CLASSNAME, TOOLTIP_LABEL_CLASSNAME, TOOLTIP_SECTION_CLASSNAME, TOOLTIP_TITLE_CLASSNAME, TOOLTIP_VALUE_CLASSNAME, } from './constants';
|
|
2
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { CELL_BOX_BASE_CLASSNAME, CELL_BOX_VARIANT_CLASSNAME, DEFAULT_TOOLTIP_CLASSNAME, ROW_HEADER_ALIGN_CLASSNAME, ROW_HEADER_CONTENT_CLASSNAME, ROW_HEADER_DESCRIPTION_CLASSNAME, ROW_HEADER_TITLE_CLASSNAME, SCHEDULE_CARD_BUTTON_CLASSNAME, SCHEDULE_CARD_BLOCK_CLASSNAME, SCHEDULE_CARD_CONTENT_CLASSNAME, SCHEDULE_CARD_CONTENT_BORDERLESS_INNER_CLASSNAME, SCHEDULE_CARD_CONTENT_BORDERLESS_CLASSNAME, SCHEDULE_CARD_CONTENT_INNER_CLASSNAME, SCHEDULE_CARD_SCROLL_CLASSNAME, SCHEDULE_CARD_SECTION_CLASSNAME, SCHEDULE_CARD_SECTION_LABEL_CLASSNAME, SCHEDULE_CARD_SECTION_VALUE_CLASSNAME, SCHEDULE_CARD_STACK_CLASSNAME, SCHEDULE_CARD_TITLE_CLASSNAME, SCHEDULE_CELL_CLASSNAME, SCHEDULE_EMPTY_DESCRIPTION_CLASSNAME, SCHEDULE_EMPTY_TITLE_CLASSNAME, SCHEDULE_SECTION_CLASSNAME, SCHEDULE_SECTION_LABEL_CLASSNAME, SCHEDULE_SECTION_VALUE_CLASSNAME, SCHEDULE_TITLE_CLASSNAME, SCHEDULE_TITLE_DOTTED_CLASSNAME, TOOLTIP_CONTENT_CLASSNAME, TOOLTIP_LABEL_CLASSNAME, TOOLTIP_SECTION_CLASSNAME, TOOLTIP_TITLE_CLASSNAME, TOOLTIP_VALUE_CLASSNAME, } from './constants';
|
|
4
|
+
import { PHXBadge } from '../Badge';
|
|
4
5
|
/**
|
|
5
6
|
* Checks whether a render value is a structured person-link object.
|
|
6
7
|
*
|
|
@@ -9,34 +10,108 @@ import { CELL_BOX_BASE_CLASSNAME, CELL_BOX_VARIANT_CLASSNAME, DEFAULT_TOOLTIP_CL
|
|
|
9
10
|
*/
|
|
10
11
|
const isGridPersonLink = (value) => !!value && typeof value === 'object' && 'type' in value && value.type === 'person-link';
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
+
* Trả về đường dẫn trang chi tiết của một người dùng nếu đủ dữ liệu điều hướng.
|
|
13
14
|
*
|
|
14
|
-
* @param {GridPersonLink} person
|
|
15
|
-
* @param {string} [userDetailPageUrl]
|
|
16
|
-
* @returns {
|
|
15
|
+
* @param {GridPersonLink} person Dữ liệu người dùng đang được hiển thị.
|
|
16
|
+
* @param {string} [userDetailPageUrl] Đường dẫn gốc để ghép tới trang chi tiết.
|
|
17
|
+
* @returns {string | undefined} URL đầy đủ của trang chi tiết, hoặc `undefined` nếu không thể điều hướng.
|
|
17
18
|
*/
|
|
18
|
-
|
|
19
|
+
function resolvePersonLinkHref(person, userDetailPageUrl) {
|
|
20
|
+
if (!userDetailPageUrl || !person.id) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return `${userDetailPageUrl}${person.id}`;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Hiển thị phần mã đi kèm tên người dùng khi dữ liệu có cung cấp mã.
|
|
27
|
+
*
|
|
28
|
+
* @param {GridPersonLink} person Dữ liệu người dùng cần dựng nhãn hiển thị.
|
|
29
|
+
* @returns {React.ReactNode} Phần nhãn tên và mã của người dùng.
|
|
30
|
+
*/
|
|
31
|
+
function renderPersonLinkLabel(person) {
|
|
32
|
+
return (React.createElement("span", { className: 'whitespace-normal break-words' },
|
|
33
|
+
person.name,
|
|
34
|
+
person.code ? ` (${person.code})` : ''));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Hiển thị icon dẫn tới trang chi tiết khi ô dữ liệu có thể điều hướng.
|
|
38
|
+
*
|
|
39
|
+
* @param {GridPersonLink} person Dữ liệu người dùng của ô hiện tại.
|
|
40
|
+
* @param {string | undefined} href Đường dẫn điều hướng đã được chuẩn hóa.
|
|
41
|
+
* @returns {React.ReactNode} Icon điều hướng hoặc `null` nếu không cần hiển thị.
|
|
42
|
+
*/
|
|
43
|
+
function renderPersonLinkIcon(person, href) {
|
|
44
|
+
if (!person.id || !href) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return React.createElement("span", { className: 'ml-1 inline-block align-baseline' }, person.icon);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Hiển thị một liên kết người dùng trong ô lịch, có thể mở sang trang chi tiết nếu đủ dữ liệu.
|
|
51
|
+
*
|
|
52
|
+
* @param {GridPersonLink} person Thông tin người dùng cần hiển thị.
|
|
53
|
+
* @param {string} [userDetailPageUrl] Đường dẫn gốc để ghép tới trang chi tiết người dùng.
|
|
54
|
+
* @returns {React.ReactNode} Nút liên kết đã dựng xong, hoặc `null` nếu không có tên để hiển thị.
|
|
55
|
+
*/
|
|
56
|
+
function renderPersonLinkNode(person, userDetailPageUrl) {
|
|
19
57
|
if (!person.name)
|
|
20
58
|
return null;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
59
|
+
const href = resolvePersonLinkHref(person, userDetailPageUrl);
|
|
60
|
+
return (React.createElement("a", { className: 'group/person-link block w-full min-w-0 font-semibold text-gray-800 hover:text-blue-500', href: href, rel: 'noopener noreferrer', target: '_blank' },
|
|
61
|
+
renderPersonLinkLabel(person),
|
|
62
|
+
renderPersonLinkIcon(person, href)));
|
|
63
|
+
}
|
|
27
64
|
/**
|
|
28
|
-
*
|
|
65
|
+
* Hiển thị danh sách nhiều người dùng theo dạng cột trong cùng một ô dữ liệu.
|
|
29
66
|
*
|
|
30
|
-
* @param {
|
|
31
|
-
* @param {string} [userDetailPageUrl]
|
|
32
|
-
* @returns {React.ReactNode}
|
|
67
|
+
* @param {GridPersonLink[]} people Danh sách người dùng cần hiển thị.
|
|
68
|
+
* @param {string} [userDetailPageUrl] Đường dẫn gốc để ghép tới trang chi tiết người dùng.
|
|
69
|
+
* @returns {React.ReactNode} Danh sách liên kết người dùng đã dựng xong.
|
|
70
|
+
*/
|
|
71
|
+
function renderPersonLinkListNode(people, userDetailPageUrl) {
|
|
72
|
+
return (React.createElement("div", { className: 'flex min-w-0 flex-col gap-1' }, people.map((person, index) => {
|
|
73
|
+
var _a;
|
|
74
|
+
return (React.createElement("div", { key: `${(_a = person.id) !== null && _a !== void 0 ? _a : 'person'}-${index}`, className: 'min-w-0' }, renderPersonLinkNode(person, userDetailPageUrl)));
|
|
75
|
+
})));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Hiển thị một phần tử giá trị bên trong danh sách nhiều dòng của ô dữ liệu.
|
|
79
|
+
*
|
|
80
|
+
* @param {RenderRichValueItem} item Giá trị đơn lẻ cần hiển thị.
|
|
81
|
+
* @param {number} index Chỉ số của giá trị trong danh sách.
|
|
82
|
+
* @param {string} [userDetailPageUrl] Đường dẫn gốc để ghép tới trang chi tiết người dùng.
|
|
83
|
+
* @returns {React.ReactNode} Dòng hiển thị của giá trị tương ứng.
|
|
33
84
|
*/
|
|
34
|
-
|
|
85
|
+
function renderRichValueListItem(item, index, userDetailPageUrl) {
|
|
86
|
+
return (React.createElement("div", { key: index, className: 'min-w-0' }, isGridPersonLink(item) ? renderPersonLinkNode(item, userDetailPageUrl) : item));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Hiển thị danh sách nhiều giá trị giàu định dạng theo từng dòng riêng biệt.
|
|
90
|
+
*
|
|
91
|
+
* @param {RenderRichValueItem[]} values Danh sách giá trị cần hiển thị.
|
|
92
|
+
* @param {string} [userDetailPageUrl] Đường dẫn gốc để ghép tới trang chi tiết người dùng.
|
|
93
|
+
* @returns {React.ReactNode} Danh sách giá trị đã dựng xong.
|
|
94
|
+
*/
|
|
95
|
+
function renderRichValueList(values, userDetailPageUrl) {
|
|
96
|
+
return (React.createElement("div", { className: 'flex min-w-0 flex-col gap-1' }, values.map((item, index) => renderRichValueListItem(item, index, userDetailPageUrl))));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Hiển thị giá trị của tooltip hoặc lịch học, hỗ trợ node thô, một người dùng, hoặc danh sách người dùng.
|
|
100
|
+
*
|
|
101
|
+
* @param {ReactNode | GridPersonLink | GridPersonLink[]} value Giá trị cần dựng giao diện.
|
|
102
|
+
* @param {string} [userDetailPageUrl] Đường dẫn gốc để ghép tới trang chi tiết người dùng.
|
|
103
|
+
* @returns {React.ReactNode} Giá trị đã được dựng theo đúng kiểu dữ liệu đầu vào.
|
|
104
|
+
*/
|
|
105
|
+
function renderRichValue(value, userDetailPageUrl) {
|
|
35
106
|
if (Array.isArray(value)) {
|
|
36
|
-
|
|
107
|
+
const values = value;
|
|
108
|
+
if (values.every(isGridPersonLink)) {
|
|
109
|
+
return renderPersonLinkListNode(values, userDetailPageUrl);
|
|
110
|
+
}
|
|
111
|
+
return renderRichValueList(values, userDetailPageUrl);
|
|
37
112
|
}
|
|
38
|
-
return isGridPersonLink(value) ?
|
|
39
|
-
}
|
|
113
|
+
return isGridPersonLink(value) ? renderPersonLinkNode(value, userDetailPageUrl) : value;
|
|
114
|
+
}
|
|
40
115
|
/**
|
|
41
116
|
* Renders the content displayed inside a sticky row-header cell.
|
|
42
117
|
*
|
|
@@ -84,8 +159,209 @@ export const renderScheduleContent = (scheduleContent, userDetailPageUrl) => {
|
|
|
84
159
|
section.label && (React.createElement("div", { className: SCHEDULE_SECTION_LABEL_CLASSNAME },
|
|
85
160
|
section.labelPrefix,
|
|
86
161
|
React.createElement("span", null, section.label))),
|
|
87
|
-
section.items.map((item, itemIndex) => (React.createElement("div", { key: itemIndex, className: SCHEDULE_SECTION_VALUE_CLASSNAME }, isGridPersonLink(item) ?
|
|
162
|
+
section.items.map((item, itemIndex) => (React.createElement("div", { key: itemIndex, className: SCHEDULE_SECTION_VALUE_CLASSNAME }, isGridPersonLink(item) ? renderPersonLinkNode(item, userDetailPageUrl) : item))))))));
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Hiển thị một dòng section trong card lịch với nhãn và giá trị đi kèm.
|
|
166
|
+
*
|
|
167
|
+
* @param {GridScheduleCardSection} section Dữ liệu section cần hiển thị.
|
|
168
|
+
* @param {number} sectionIndex Chỉ số section trong danh sách hiện tại.
|
|
169
|
+
* @param {string} [userDetailPageUrl] Đường dẫn gốc để ghép tới trang chi tiết người dùng.
|
|
170
|
+
* @returns {React.ReactNode} Section đã được dựng xong để gắn vào card lịch.
|
|
171
|
+
*/
|
|
172
|
+
function renderScheduleCardSection(section, sectionIndex, userDetailPageUrl) {
|
|
173
|
+
return (React.createElement("div", { key: sectionIndex, className: SCHEDULE_CARD_SECTION_CLASSNAME },
|
|
174
|
+
React.createElement("div", { className: SCHEDULE_CARD_SECTION_LABEL_CLASSNAME },
|
|
175
|
+
section.labelPrefix,
|
|
176
|
+
React.createElement("span", null, section.label)),
|
|
177
|
+
React.createElement("div", { className: SCHEDULE_CARD_SECTION_VALUE_CLASSNAME }, renderRichValue(section.value, userDetailPageUrl))));
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Hiển thị danh sách section dùng chung cho block hoặc card lịch.
|
|
181
|
+
*
|
|
182
|
+
* @param {GridScheduleCardSection[] | undefined} sections Danh sách section cần hiển thị.
|
|
183
|
+
* @param {string} [userDetailPageUrl] Đường dẫn gốc để ghép tới trang chi tiết người dùng.
|
|
184
|
+
* @returns {React.ReactNode} Danh sách section đã dựng xong.
|
|
185
|
+
*/
|
|
186
|
+
function renderScheduleCardSections(sections, userDetailPageUrl) {
|
|
187
|
+
return (sections !== null && sections !== void 0 ? sections : []).map((section, sectionIndex) => renderScheduleCardSection(section, sectionIndex, userDetailPageUrl));
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Hiển thị một block thông tin bên trong card lịch.
|
|
191
|
+
*
|
|
192
|
+
* @param {GridScheduleCardBlock} block Dữ liệu block cần hiển thị.
|
|
193
|
+
* @param {string} [userDetailPageUrl] Đường dẫn gốc để ghép tới trang chi tiết người dùng.
|
|
194
|
+
* @returns {React.ReactNode} Nội dung block đã được dựng xong.
|
|
195
|
+
*/
|
|
196
|
+
function renderScheduleCardBlock(block, userDetailPageUrl) {
|
|
197
|
+
return (React.createElement(React.Fragment, null,
|
|
198
|
+
renderScheduleCardTitle(block.title),
|
|
199
|
+
renderScheduleCardSections(block.sections, userDetailPageUrl)));
|
|
200
|
+
}
|
|
201
|
+
const DEFAULT_SCHEDULE_CARD_SIZE = {
|
|
202
|
+
width: '100%',
|
|
203
|
+
height: 156,
|
|
204
|
+
};
|
|
205
|
+
const resolveBadgeText = (value) => {
|
|
206
|
+
if (typeof value === 'string' || typeof value === 'number') {
|
|
207
|
+
return String(value);
|
|
208
|
+
}
|
|
209
|
+
return undefined;
|
|
88
210
|
};
|
|
211
|
+
/**
|
|
212
|
+
* Hiển thị tiêu đề của card lịch dưới dạng badge hoặc tiêu đề văn bản thường.
|
|
213
|
+
*
|
|
214
|
+
* @param {ReactNode} [title] Giá trị tiêu đề cần hiển thị.
|
|
215
|
+
* @returns {React.ReactNode} Badge hoặc tiêu đề đã dựng xong, hoặc `null` nếu không có dữ liệu.
|
|
216
|
+
*/
|
|
217
|
+
function renderScheduleCardTitle(title) {
|
|
218
|
+
if (!title)
|
|
219
|
+
return null;
|
|
220
|
+
const badgeText = resolveBadgeText(title);
|
|
221
|
+
if (badgeText) {
|
|
222
|
+
return React.createElement(PHXBadge, { hideIcon: true, text: badgeText, type: 'informational' });
|
|
223
|
+
}
|
|
224
|
+
return React.createElement("div", { className: SCHEDULE_CARD_TITLE_CLASSNAME }, title);
|
|
225
|
+
}
|
|
226
|
+
const resolveScheduleCardSize = (scheduleCardSize) => {
|
|
227
|
+
var _a, _b;
|
|
228
|
+
return ({
|
|
229
|
+
width: (_a = scheduleCardSize === null || scheduleCardSize === void 0 ? void 0 : scheduleCardSize.width) !== null && _a !== void 0 ? _a : DEFAULT_SCHEDULE_CARD_SIZE.width,
|
|
230
|
+
height: (_b = scheduleCardSize === null || scheduleCardSize === void 0 ? void 0 : scheduleCardSize.height) !== null && _b !== void 0 ? _b : DEFAULT_SCHEDULE_CARD_SIZE.height,
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
const buildScheduleCardStackStyle = (scheduleCardSize) => {
|
|
234
|
+
const resolvedSize = resolveScheduleCardSize(scheduleCardSize);
|
|
235
|
+
return {
|
|
236
|
+
width: resolvedSize.width,
|
|
237
|
+
height: resolvedSize.height,
|
|
238
|
+
};
|
|
239
|
+
};
|
|
240
|
+
const buildScheduleCardButtonStyle = (totalCards, scheduleCardSize) => {
|
|
241
|
+
if (totalCards !== 1) {
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
const resolvedSize = resolveScheduleCardSize(scheduleCardSize);
|
|
245
|
+
return {
|
|
246
|
+
width: resolvedSize.width,
|
|
247
|
+
minHeight: resolvedSize.height,
|
|
248
|
+
height: resolvedSize.height,
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
/**
|
|
252
|
+
* Trả về class cho nút card lịch theo biến thể giao diện đang dùng.
|
|
253
|
+
*
|
|
254
|
+
* @param {GridScheduleCardVariant} [scheduleCardVariant='default'] Biến thể hiển thị của card lịch.
|
|
255
|
+
* @returns {string} Chuỗi className áp dụng cho nút card.
|
|
256
|
+
*/
|
|
257
|
+
function getScheduleCardButtonClassName(scheduleCardVariant = 'default') {
|
|
258
|
+
return scheduleCardVariant === 'borderless'
|
|
259
|
+
? 'group w-full shrink-0 appearance-none overflow-hidden rounded-xl bg-white text-left transition'
|
|
260
|
+
: SCHEDULE_CARD_BUTTON_CLASSNAME;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Trả về class cho vùng nội dung ngoài của card lịch theo biến thể giao diện.
|
|
264
|
+
*
|
|
265
|
+
* @param {GridScheduleCardVariant} [scheduleCardVariant='default'] Biến thể hiển thị của card lịch.
|
|
266
|
+
* @returns {string} Chuỗi className áp dụng cho vùng nội dung ngoài.
|
|
267
|
+
*/
|
|
268
|
+
function getScheduleCardContentClassName(scheduleCardVariant = 'default') {
|
|
269
|
+
return scheduleCardVariant === 'borderless'
|
|
270
|
+
? SCHEDULE_CARD_CONTENT_BORDERLESS_CLASSNAME
|
|
271
|
+
: SCHEDULE_CARD_CONTENT_CLASSNAME;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Trả về class cho vùng nội dung trong cùng của card lịch theo biến thể giao diện.
|
|
275
|
+
*
|
|
276
|
+
* @param {GridScheduleCardVariant} [scheduleCardVariant='default'] Biến thể hiển thị của card lịch.
|
|
277
|
+
* @returns {string} Chuỗi className áp dụng cho vùng nội dung trong cùng.
|
|
278
|
+
*/
|
|
279
|
+
function getScheduleCardContentInnerClassName(scheduleCardVariant = 'default') {
|
|
280
|
+
return scheduleCardVariant === 'borderless'
|
|
281
|
+
? SCHEDULE_CARD_CONTENT_BORDERLESS_INNER_CLASSNAME
|
|
282
|
+
: SCHEDULE_CARD_CONTENT_INNER_CLASSNAME;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Tính trạng thái cuộn của phần nội dung card lịch để quyết định có hiển thị fade ở đáy hay không.
|
|
286
|
+
*
|
|
287
|
+
* @param {HTMLDivElement} element Phần tử cuộn đang được theo dõi.
|
|
288
|
+
* @returns {ScheduleCardScrollState} Trạng thái tràn dọc và vị trí hiện tại của thanh cuộn.
|
|
289
|
+
*/
|
|
290
|
+
function resolveScheduleCardScrollState(element) {
|
|
291
|
+
const hasVerticalOverflow = element.scrollHeight > element.clientHeight;
|
|
292
|
+
const maxScrollTop = element.scrollHeight - element.clientHeight;
|
|
293
|
+
const isAtBottom = maxScrollTop <= 1 || element.scrollTop >= maxScrollTop - 1;
|
|
294
|
+
return {
|
|
295
|
+
hasVerticalOverflow,
|
|
296
|
+
isAtBottom,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Đồng bộ state cuộn của card lịch từ kích thước và vị trí cuộn hiện tại của phần tử.
|
|
301
|
+
*
|
|
302
|
+
* @param {HTMLDivElement} element Phần tử cuộn đang được theo dõi.
|
|
303
|
+
* @param {(value: React.SetStateAction<boolean>) => void} setHasVerticalOverflow Hàm cập nhật trạng thái tràn dọc.
|
|
304
|
+
* @param {(value: React.SetStateAction<boolean>) => void} setIsAtBottom Hàm cập nhật trạng thái đã cuộn tới đáy.
|
|
305
|
+
* @returns {void}
|
|
306
|
+
*/
|
|
307
|
+
function syncScheduleCardScrollState(element, setHasVerticalOverflow, setIsAtBottom) {
|
|
308
|
+
const nextState = resolveScheduleCardScrollState(element);
|
|
309
|
+
setHasVerticalOverflow(nextState.hasVerticalOverflow);
|
|
310
|
+
setIsAtBottom(nextState.isAtBottom);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Hiển thị vùng nội dung có thể cuộn của card lịch và thêm hiệu ứng fade khi còn nội dung phía dưới.
|
|
314
|
+
*
|
|
315
|
+
* @param {ScheduleCardScrollableContentProps} props Thuộc tính render của vùng cuộn card lịch.
|
|
316
|
+
* @returns {React.ReactNode} Vùng nội dung card lịch có xử lý overflow theo chiều dọc.
|
|
317
|
+
*/
|
|
318
|
+
function ScheduleCardScrollableContent({ children, scheduleCardVariant, }) {
|
|
319
|
+
const scrollRef = useRef(null);
|
|
320
|
+
const [hasVerticalOverflow, setHasVerticalOverflow] = useState(false);
|
|
321
|
+
const [isAtBottom, setIsAtBottom] = useState(true);
|
|
322
|
+
useEffect(() => {
|
|
323
|
+
const element = scrollRef.current;
|
|
324
|
+
if (!element) {
|
|
325
|
+
return undefined;
|
|
326
|
+
}
|
|
327
|
+
const scrollElement = element;
|
|
328
|
+
/**
|
|
329
|
+
* Đồng bộ trạng thái cuộn mỗi khi kích thước hoặc vị trí cuộn của card thay đổi.
|
|
330
|
+
*
|
|
331
|
+
* @returns {void}
|
|
332
|
+
*/
|
|
333
|
+
function updateScrollState() {
|
|
334
|
+
syncScheduleCardScrollState(scrollElement, setHasVerticalOverflow, setIsAtBottom);
|
|
335
|
+
}
|
|
336
|
+
updateScrollState();
|
|
337
|
+
const resizeObserver = new ResizeObserver(() => {
|
|
338
|
+
updateScrollState();
|
|
339
|
+
});
|
|
340
|
+
resizeObserver.observe(scrollElement);
|
|
341
|
+
const innerElement = scrollElement.firstElementChild;
|
|
342
|
+
if (innerElement instanceof HTMLElement) {
|
|
343
|
+
resizeObserver.observe(innerElement);
|
|
344
|
+
}
|
|
345
|
+
scrollElement.addEventListener('scroll', updateScrollState, { passive: true });
|
|
346
|
+
window.addEventListener('resize', updateScrollState);
|
|
347
|
+
return () => {
|
|
348
|
+
resizeObserver.disconnect();
|
|
349
|
+
scrollElement.removeEventListener('scroll', updateScrollState);
|
|
350
|
+
window.removeEventListener('resize', updateScrollState);
|
|
351
|
+
};
|
|
352
|
+
}, [children, scheduleCardVariant]);
|
|
353
|
+
return (React.createElement("div", { className: getScheduleCardContentClassName(scheduleCardVariant) },
|
|
354
|
+
React.createElement("div", { ref: scrollRef, className: SCHEDULE_CARD_SCROLL_CLASSNAME },
|
|
355
|
+
React.createElement("div", { className: getScheduleCardContentInnerClassName(scheduleCardVariant) }, children)),
|
|
356
|
+
hasVerticalOverflow && !isAtBottom && (React.createElement("div", { className: 'pointer-events-none absolute inset-x-0 bottom-0 h-8 bg-gradient-to-t from-white via-white/90 to-transparent' }))));
|
|
357
|
+
}
|
|
358
|
+
export const renderScheduleCards = (scheduleCards, scheduleCardSize, scheduleCardVariant, userDetailPageUrl) => (React.createElement("div", { className: SCHEDULE_CARD_STACK_CLASSNAME, style: buildScheduleCardStackStyle(scheduleCardSize) }, scheduleCards.map((card, index) => {
|
|
359
|
+
var _a;
|
|
360
|
+
return (React.createElement("button", { key: (_a = card.id) !== null && _a !== void 0 ? _a : index, type: 'button', className: getScheduleCardButtonClassName(scheduleCardVariant), onClick: card.onClick, style: buildScheduleCardButtonStyle(scheduleCards.length, scheduleCardSize) },
|
|
361
|
+
React.createElement(ScheduleCardScrollableContent, { scheduleCardVariant: scheduleCardVariant }, card.blocks && card.blocks.length > 0 ? (card.blocks.map((block, blockIndex) => (React.createElement("div", { key: blockIndex, className: SCHEDULE_CARD_BLOCK_CLASSNAME }, renderScheduleCardBlock(block, userDetailPageUrl))))) : (React.createElement(React.Fragment, null,
|
|
362
|
+
renderScheduleCardTitle(card.title),
|
|
363
|
+
renderScheduleCardSections(card.sections, userDetailPageUrl))))));
|
|
364
|
+
})));
|
|
89
365
|
/**
|
|
90
366
|
* Renders the grouped tooltip sections for a cell.
|
|
91
367
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../../src/components/TableSchedule/renderers.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../../src/components/TableSchedule/renderers.tsx"],"names":[],"mappings":"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"}
|
|
@@ -31,11 +31,34 @@ export type GridScheduleContent = {
|
|
|
31
31
|
emptyTitle?: ReactNode;
|
|
32
32
|
emptyDescription?: ReactNode;
|
|
33
33
|
};
|
|
34
|
+
export type GridScheduleCardSection = {
|
|
35
|
+
label: ReactNode;
|
|
36
|
+
labelPrefix?: ReactNode;
|
|
37
|
+
value: ReactNode | GridPersonLink | GridPersonLink[];
|
|
38
|
+
};
|
|
39
|
+
export type GridScheduleCardBlock = {
|
|
40
|
+
title: ReactNode;
|
|
41
|
+
sections?: GridScheduleCardSection[];
|
|
42
|
+
};
|
|
43
|
+
export type GridScheduleCard = {
|
|
44
|
+
id?: number | string;
|
|
45
|
+
title?: ReactNode;
|
|
46
|
+
blocks?: GridScheduleCardBlock[];
|
|
47
|
+
sections?: GridScheduleCardSection[];
|
|
48
|
+
onClick?: () => void;
|
|
49
|
+
};
|
|
50
|
+
export type GridScheduleCardSize = {
|
|
51
|
+
width?: CSSProperties['width'];
|
|
52
|
+
height?: CSSProperties['height'];
|
|
53
|
+
};
|
|
54
|
+
export type GridScheduleCardVariant = 'default' | 'borderless';
|
|
34
55
|
export type GridCellData = {
|
|
35
56
|
content?: ReactNode;
|
|
36
57
|
variant?: GridCellVariant;
|
|
37
58
|
layout?: GridCellLayout;
|
|
38
59
|
scheduleContent?: GridScheduleContent;
|
|
60
|
+
scheduleCards?: GridScheduleCard[];
|
|
61
|
+
scheduleCardSize?: GridScheduleCardSize;
|
|
39
62
|
tooltipBlocks?: GridTooltipBlock[];
|
|
40
63
|
tooltip?: ReactNode;
|
|
41
64
|
tooltipClassName?: string;
|
|
@@ -107,6 +130,8 @@ export type PHXScheduleTableProps = {
|
|
|
107
130
|
legendItems?: GridLegendItem[];
|
|
108
131
|
userDetailPageUrl?: string;
|
|
109
132
|
className?: string;
|
|
133
|
+
scheduleCardSize?: GridScheduleCardSize;
|
|
134
|
+
scheduleCardVariant?: GridScheduleCardVariant;
|
|
110
135
|
TooltipComponent?: TooltipComponentType;
|
|
111
136
|
ButtonComponent?: ButtonComponentType;
|
|
112
137
|
};
|
|
@@ -5,6 +5,8 @@ type RowHeaderCellStyleParams = {
|
|
|
5
5
|
stickyWidths: number[];
|
|
6
6
|
width: number;
|
|
7
7
|
isLast: boolean;
|
|
8
|
+
stickyHeaderCount: number;
|
|
9
|
+
showStickyShadow: boolean;
|
|
8
10
|
customStyle?: CSSProperties;
|
|
9
11
|
};
|
|
10
12
|
/**
|
|
@@ -80,10 +82,12 @@ export declare const getStickyHeaderClassName: (index: number, stickyHeaderCount
|
|
|
80
82
|
* } The sticky header positioning inputs.
|
|
81
83
|
* @returns {CSSProperties} The computed sticky header styles.
|
|
82
84
|
*/
|
|
83
|
-
export declare const buildStickyHeaderCellStyle: ({ index, stickyWidths, zIndexBase, }: {
|
|
85
|
+
export declare const buildStickyHeaderCellStyle: ({ index, stickyWidths, zIndexBase, stickyHeaderCount, showStickyShadow, }: {
|
|
84
86
|
index: number;
|
|
85
87
|
stickyWidths: number[];
|
|
86
88
|
zIndexBase: number;
|
|
89
|
+
stickyHeaderCount: number;
|
|
90
|
+
showStickyShadow: boolean;
|
|
87
91
|
}) => CSSProperties;
|
|
88
92
|
/**
|
|
89
93
|
* Builds the shared style for grouped header cells.
|
|
@@ -124,7 +128,7 @@ export declare const getRowHeaderClassName: (className: string | undefined, head
|
|
|
124
128
|
* buildRowHeaderCellStyle({ headerIndex: 0, stickyWidths: [130], width: 130, isLast: false })
|
|
125
129
|
* // => { position: 'sticky', left: 0, width: 130, zIndex: 3, ... }
|
|
126
130
|
*/
|
|
127
|
-
export declare const buildRowHeaderCellStyle: ({ headerIndex, stickyWidths, width, isLast, customStyle, }: RowHeaderCellStyleParams) => CSSProperties;
|
|
131
|
+
export declare const buildRowHeaderCellStyle: ({ headerIndex, stickyWidths, width, isLast, stickyHeaderCount, showStickyShadow, customStyle, }: RowHeaderCellStyleParams) => CSSProperties;
|
|
128
132
|
/**
|
|
129
133
|
* Composes the class name for an interactive cell wrapper.
|
|
130
134
|
*
|
|
@@ -149,7 +153,7 @@ export declare const getStaticCellClassName: (layout: GridCellLayout, alignClass
|
|
|
149
153
|
* @param {CSSProperties} [cellStyle] Optional custom style overrides from the cell data.
|
|
150
154
|
* @returns {CSSProperties} The computed data-cell styles.
|
|
151
155
|
*/
|
|
152
|
-
export declare const buildDataCellStyle: (isLast: boolean, cellStyle?: CSSProperties) => CSSProperties;
|
|
156
|
+
export declare const buildDataCellStyle: (isLast: boolean, columnWidth?: number, cellStyle?: CSSProperties) => CSSProperties;
|
|
153
157
|
/**
|
|
154
158
|
* Composes the class name for a body data cell.
|
|
155
159
|
*
|
|
@@ -113,6 +113,34 @@ export const getCellSpan = (cell) => {
|
|
|
113
113
|
* @returns {string} The shadow class name, or an empty string when no shadow is needed.
|
|
114
114
|
*/
|
|
115
115
|
const getStickyShadowClassName = (index, stickyHeaderCount, showStickyShadow) => index === stickyHeaderCount - 1 && showStickyShadow ? STICKY_SHADOW_CLASSNAME : '';
|
|
116
|
+
/**
|
|
117
|
+
* Builds the vertical separators for sticky columns.
|
|
118
|
+
*
|
|
119
|
+
* Internal separators between sticky columns are drawn on the left edge of every sticky column after the first.
|
|
120
|
+
* The trailing edge after the final sticky column is only drawn while horizontally scrolled.
|
|
121
|
+
*
|
|
122
|
+
* @param {number} index The sticky column index being rendered.
|
|
123
|
+
* @param {number} stickyHeaderCount The total number of sticky columns.
|
|
124
|
+
* @param {boolean} showStickyShadow Whether the trailing sticky separator should be visible.
|
|
125
|
+
* @returns {CSSProperties | undefined} The sticky separator styles, or undefined when no separator applies.
|
|
126
|
+
*/
|
|
127
|
+
const getStickySeparatorStyle = (index, stickyHeaderCount, showStickyShadow) => {
|
|
128
|
+
const hasInternalSeparator = index > 0;
|
|
129
|
+
const isLastStickyColumn = index === stickyHeaderCount - 1;
|
|
130
|
+
if (isLastStickyColumn && showStickyShadow) {
|
|
131
|
+
return {
|
|
132
|
+
borderLeft: hasInternalSeparator ? BORDER : undefined,
|
|
133
|
+
borderRight: BORDER,
|
|
134
|
+
boxShadow: '1px 0 0 var(--color-border-tertiary, #e5e7eb)',
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
if (hasInternalSeparator) {
|
|
138
|
+
return {
|
|
139
|
+
borderLeft: BORDER,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
return undefined;
|
|
143
|
+
};
|
|
116
144
|
/**
|
|
117
145
|
* Composes the class name for a sticky header placeholder cell.
|
|
118
146
|
*
|
|
@@ -136,7 +164,7 @@ export const getStickyHeaderClassName = (index, stickyHeaderCount, showStickySha
|
|
|
136
164
|
* } The sticky header positioning inputs.
|
|
137
165
|
* @returns {CSSProperties} The computed sticky header styles.
|
|
138
166
|
*/
|
|
139
|
-
export const buildStickyHeaderCellStyle = ({ index, stickyWidths, zIndexBase, }) => ({
|
|
167
|
+
export const buildStickyHeaderCellStyle = ({ index, stickyWidths, zIndexBase, stickyHeaderCount, showStickyShadow, }) => ({
|
|
140
168
|
...stickyBase,
|
|
141
169
|
...thBase,
|
|
142
170
|
zIndex: zIndexBase + (stickyWidths.length - index),
|
|
@@ -144,6 +172,7 @@ export const buildStickyHeaderCellStyle = ({ index, stickyWidths, zIndexBase, })
|
|
|
144
172
|
width: stickyWidths[index],
|
|
145
173
|
minWidth: stickyWidths[index],
|
|
146
174
|
textAlign: 'left',
|
|
175
|
+
...getStickySeparatorStyle(index, stickyHeaderCount, showStickyShadow),
|
|
147
176
|
});
|
|
148
177
|
/**
|
|
149
178
|
* Builds the shared style for grouped header cells.
|
|
@@ -164,7 +193,9 @@ export const buildHeaderGroupCellStyle = () => ({
|
|
|
164
193
|
export const buildColumnHeaderCellStyle = (align, minWidth) => ({
|
|
165
194
|
...thBase,
|
|
166
195
|
textAlign: align,
|
|
196
|
+
width: minWidth,
|
|
167
197
|
minWidth,
|
|
198
|
+
maxWidth: minWidth,
|
|
168
199
|
borderLeft: BORDER,
|
|
169
200
|
});
|
|
170
201
|
/**
|
|
@@ -192,7 +223,7 @@ export const getRowHeaderClassName = (className, headerIndex, stickyHeaderCount,
|
|
|
192
223
|
* buildRowHeaderCellStyle({ headerIndex: 0, stickyWidths: [130], width: 130, isLast: false })
|
|
193
224
|
* // => { position: 'sticky', left: 0, width: 130, zIndex: 3, ... }
|
|
194
225
|
*/
|
|
195
|
-
export const buildRowHeaderCellStyle = ({ headerIndex, stickyWidths, width, isLast, customStyle, }) => ({
|
|
226
|
+
export const buildRowHeaderCellStyle = ({ headerIndex, stickyWidths, width, isLast, stickyHeaderCount, showStickyShadow, customStyle, }) => ({
|
|
196
227
|
...stickyBase,
|
|
197
228
|
zIndex: 2 + (stickyWidths.length - headerIndex),
|
|
198
229
|
left: getStickyLeft(stickyWidths, headerIndex),
|
|
@@ -201,6 +232,7 @@ export const buildRowHeaderCellStyle = ({ headerIndex, stickyWidths, width, isLa
|
|
|
201
232
|
padding: '8px 12px',
|
|
202
233
|
borderBottom: !isLast ? BORDER : 'none',
|
|
203
234
|
verticalAlign: 'middle',
|
|
235
|
+
...getStickySeparatorStyle(headerIndex, stickyHeaderCount, showStickyShadow),
|
|
204
236
|
...customStyle,
|
|
205
237
|
});
|
|
206
238
|
/**
|
|
@@ -250,7 +282,10 @@ export const getStaticCellClassName = (layout, alignClassName) => composeClassNa
|
|
|
250
282
|
* @param {CSSProperties} [cellStyle] Optional custom style overrides from the cell data.
|
|
251
283
|
* @returns {CSSProperties} The computed data-cell styles.
|
|
252
284
|
*/
|
|
253
|
-
export const buildDataCellStyle = (isLast, cellStyle) => ({
|
|
285
|
+
export const buildDataCellStyle = (isLast, columnWidth, cellStyle) => ({
|
|
286
|
+
width: columnWidth,
|
|
287
|
+
minWidth: columnWidth,
|
|
288
|
+
maxWidth: columnWidth,
|
|
254
289
|
borderBottom: !isLast ? BORDER : 'none',
|
|
255
290
|
...cellStyle,
|
|
256
291
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/TableSchedule/utils.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAGZ,OAAO,EACL,MAAM,EACN,mBAAmB,EACnB,4BAA4B,EAC5B,4BAA4B,EAC5B,qBAAqB,EACrB,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,UAAU,EACV,MAAM,GACP,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/components/TableSchedule/utils.ts"],"names":[],"mappings":"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"}
|