react-table-edit 1.4.68 → 1.5.1
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/component/modal-import-excel/index.d.ts +0 -4
- package/dist/component/modal-import-excel/tab-handle-error.d.ts +0 -2
- package/dist/component/modal-import-excel/tab-validate.d.ts +0 -2
- package/dist/component/modal-import-excel/type.d.ts +1 -0
- package/dist/component/table/button-handle.d.ts +5 -9
- package/dist/component/table/cell.d.ts +1 -1
- package/dist/component/table/data-table.d.ts +12 -7
- package/dist/component/table/index.d.ts +2 -3
- package/dist/component/table/key-handlers.d.ts +1 -3
- package/dist/component/table-view/content.d.ts +1 -1
- package/dist/component/type/index.d.ts +0 -2
- package/dist/component/utils.d.ts +5 -1
- package/dist/index.d.ts +19 -22
- package/dist/index.js +262 -296
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +262 -297
- package/dist/index.mjs.map +1 -1
- package/dist/styles/index.css +11 -2
- package/dist/styles/index.css.map +1 -1
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -19960,7 +19960,9 @@ const calculateTableStructure = (columns, settingColumns) => {
|
|
|
19960
19960
|
}, 0);
|
|
19961
19961
|
};
|
|
19962
19962
|
calcTotalRightWidth(columns);
|
|
19963
|
-
|
|
19963
|
+
if ((settingColumns?.length ?? 0) > 0) {
|
|
19964
|
+
applySetting(columns);
|
|
19965
|
+
}
|
|
19964
19966
|
traverse(columns);
|
|
19965
19967
|
// Danh sách các cột được hiển thị
|
|
19966
19968
|
const flatVisble = flat.filter((e) => e.visible !== false);
|
|
@@ -19971,7 +19973,6 @@ const calculateTableStructure = (columns, settingColumns) => {
|
|
|
19971
19973
|
// Tính toán vị trí đầu tiên và cuối cùng của các cột có thể sửa
|
|
19972
19974
|
const indexFirstEdit = flat.findIndex((item) => item.editEnable && item.visible !== false && !item.disabledCondition);
|
|
19973
19975
|
const indexLastEdit = flat.map((item, idx) => (item.editEnable && item.visible !== false && !item.disabledCondition ? idx : -1)).reduce((acc, val) => (val > acc ? val : acc), -1);
|
|
19974
|
-
console.log(flatVisble);
|
|
19975
19976
|
return {
|
|
19976
19977
|
levels,
|
|
19977
19978
|
flat,
|
|
@@ -19987,6 +19988,50 @@ const calculateTableStructure = (columns, settingColumns) => {
|
|
|
19987
19988
|
indexLastEdit
|
|
19988
19989
|
};
|
|
19989
19990
|
};
|
|
19991
|
+
/**
|
|
19992
|
+
* Kiểm tra row có thỏa mãn tất cả filter và chứa từ khóa tìm kiếm hay không
|
|
19993
|
+
*/
|
|
19994
|
+
const CheckRowMatch = (row, filters, keyword, searchKeys) => {
|
|
19995
|
+
const isFilterMatch = filters.every((filter) => {
|
|
19996
|
+
const { key, value, ope } = filter;
|
|
19997
|
+
const rowValue = row[key];
|
|
19998
|
+
if (rowValue === undefined || rowValue === null || value === undefined || value === null) {
|
|
19999
|
+
return false;
|
|
20000
|
+
}
|
|
20001
|
+
const valStr = String(rowValue).toLowerCase();
|
|
20002
|
+
const filterStr = String(value).toLowerCase();
|
|
20003
|
+
/*eslint-disable*/
|
|
20004
|
+
switch (ope) {
|
|
20005
|
+
case "startswith":
|
|
20006
|
+
return valStr.startsWith(filterStr);
|
|
20007
|
+
case "endswith":
|
|
20008
|
+
return valStr.endsWith(filterStr);
|
|
20009
|
+
case "contains":
|
|
20010
|
+
return valStr.includes(filterStr);
|
|
20011
|
+
case "equal":
|
|
20012
|
+
return rowValue == value;
|
|
20013
|
+
case "notequal":
|
|
20014
|
+
return rowValue != value;
|
|
20015
|
+
case "greaterthan":
|
|
20016
|
+
return rowValue > value;
|
|
20017
|
+
case "greaterthanorequal":
|
|
20018
|
+
return rowValue >= value;
|
|
20019
|
+
case "lessthan":
|
|
20020
|
+
return rowValue < value;
|
|
20021
|
+
case "lessthanorequal":
|
|
20022
|
+
return rowValue <= value;
|
|
20023
|
+
default:
|
|
20024
|
+
return false;
|
|
20025
|
+
}
|
|
20026
|
+
/*eslint-enable*/
|
|
20027
|
+
});
|
|
20028
|
+
const isSearchMatch = !keyword ||
|
|
20029
|
+
searchKeys.some((key) => {
|
|
20030
|
+
const val = row[key];
|
|
20031
|
+
return val?.toString().toLowerCase().includes(keyword.trim().toLowerCase());
|
|
20032
|
+
});
|
|
20033
|
+
return isFilterMatch && isSearchMatch;
|
|
20034
|
+
};
|
|
19990
20035
|
|
|
19991
20036
|
const defaultMaxHeight$1 = 250;
|
|
19992
20037
|
const SelectTable = React$5.forwardRef((props, ref) => {
|
|
@@ -20441,26 +20486,20 @@ const RenderToolbarTop = ({ toolbarTopOption }) => {
|
|
|
20441
20486
|
}) })] }) }));
|
|
20442
20487
|
};
|
|
20443
20488
|
|
|
20444
|
-
const handleAdd = (dataSource,
|
|
20489
|
+
const handleAdd = (dataSource, containerRef, indexFirstEdit,
|
|
20445
20490
|
/*eslint-disable*/
|
|
20446
|
-
changeDataSource,
|
|
20491
|
+
changeDataSource, handleFocusCell,
|
|
20447
20492
|
/*eslint-enable*/
|
|
20448
20493
|
numberOfRows) => {
|
|
20449
20494
|
const lengthData = dataSource.length;
|
|
20450
20495
|
changeDataSource(dataSource, numberOfRows ?? 1);
|
|
20451
|
-
if (
|
|
20452
|
-
pagingSetting?.setCurrentPage(Math.floor(lengthData / (pagingSetting?.pageSize ?? 0)) + 1);
|
|
20453
|
-
}
|
|
20454
|
-
if (tableElement) {
|
|
20496
|
+
if (containerRef) {
|
|
20455
20497
|
handleFocusCell(lengthData, indexFirstEdit);
|
|
20456
20498
|
}
|
|
20457
20499
|
};
|
|
20458
20500
|
const handleDuplicate = async (dataSource, indexFocus, fieldKey, defaultValue, fieldUniKey,
|
|
20459
20501
|
/*eslint-disable*/
|
|
20460
|
-
changeDataSource,
|
|
20461
|
-
pagingClient, pagingSetting
|
|
20462
|
-
/*eslint-enable*/
|
|
20463
|
-
) => {
|
|
20502
|
+
changeDataSource, containerRef, totalCount, toolbarSetting, buttonSetting, editDisable, addDisable, onDuplicate) => {
|
|
20464
20503
|
const newData = { ...dataSource[indexFocus] };
|
|
20465
20504
|
if (toolbarSetting?.showBottomToolbar && !buttonSetting?.duplicateDisable && !editDisable && !addDisable) {
|
|
20466
20505
|
if (fieldKey && defaultValue) {
|
|
@@ -20472,16 +20511,11 @@ pagingClient, pagingSetting
|
|
|
20472
20511
|
if (onDuplicate) {
|
|
20473
20512
|
await onDuplicate(newData, indexFocus);
|
|
20474
20513
|
}
|
|
20475
|
-
|
|
20476
|
-
dataSource.splice(((((pagingSetting?.currentPage ?? 1) - 1) * (pagingSetting?.pageSize ?? 0)) + indexFocus) + 1, 0, newData);
|
|
20477
|
-
}
|
|
20478
|
-
else {
|
|
20479
|
-
dataSource.splice(indexFocus + 1, 0, newData);
|
|
20480
|
-
}
|
|
20514
|
+
dataSource.splice(indexFocus + 1, 0, newData);
|
|
20481
20515
|
changeDataSource(dataSource);
|
|
20482
|
-
if (
|
|
20516
|
+
if (containerRef && indexFocus === totalCount) {
|
|
20483
20517
|
setTimeout(() => {
|
|
20484
|
-
|
|
20518
|
+
containerRef.current?.scrollTo(0, containerRef.current.scrollHeight);
|
|
20485
20519
|
}, 100);
|
|
20486
20520
|
}
|
|
20487
20521
|
}
|
|
@@ -20490,18 +20524,13 @@ const handleInsertAfter = (dataSource, indexFocus, defaultValue,
|
|
|
20490
20524
|
/*eslint-disable*/
|
|
20491
20525
|
changeDataSource,
|
|
20492
20526
|
/*eslint-enable*/
|
|
20493
|
-
|
|
20527
|
+
containerRef, totalCount, toolbarSetting, buttonSetting, editDisable, addDisable) => {
|
|
20494
20528
|
if (toolbarSetting?.showBottomToolbar && !buttonSetting?.insertAfterDisable && !editDisable && !addDisable) {
|
|
20495
|
-
|
|
20496
|
-
dataSource.splice(((((pagingSetting?.currentPage ?? 1) - 1) * (pagingSetting?.pageSize ?? 0)) + (indexFocus ?? -1) + 1), 0, { ...{ ...defaultValue } });
|
|
20497
|
-
}
|
|
20498
|
-
else {
|
|
20499
|
-
dataSource.splice((indexFocus ?? -1) + 1, 0, { ...defaultValue });
|
|
20500
|
-
}
|
|
20529
|
+
dataSource.splice((indexFocus ?? -1) + 1, 0, { ...defaultValue });
|
|
20501
20530
|
changeDataSource(dataSource);
|
|
20502
|
-
if (
|
|
20531
|
+
if (containerRef && indexFocus === totalCount) {
|
|
20503
20532
|
setTimeout(() => {
|
|
20504
|
-
|
|
20533
|
+
containerRef.current?.scrollTo(0, containerRef.current.scrollHeight);
|
|
20505
20534
|
}, 100);
|
|
20506
20535
|
}
|
|
20507
20536
|
}
|
|
@@ -20510,14 +20539,9 @@ const handleInsertBefore = (dataSource, indexFocus, defaultValue,
|
|
|
20510
20539
|
/*eslint-disable*/
|
|
20511
20540
|
changeDataSource,
|
|
20512
20541
|
/*eslint-enable*/
|
|
20513
|
-
|
|
20542
|
+
toolbarSetting, buttonSetting, editDisable, addDisable) => {
|
|
20514
20543
|
if (toolbarSetting?.showBottomToolbar && !buttonSetting?.insertBeforeDisable && !editDisable && !addDisable) {
|
|
20515
|
-
|
|
20516
|
-
dataSource.splice(((((pagingSetting?.currentPage ?? 1) - 1) * (pagingSetting?.pageSize ?? 0)) + (indexFocus ?? -1)), 0, { ...{ ...defaultValue } });
|
|
20517
|
-
}
|
|
20518
|
-
else {
|
|
20519
|
-
dataSource.splice((indexFocus ?? -1), 0, { ...defaultValue });
|
|
20520
|
-
}
|
|
20544
|
+
dataSource.splice((indexFocus ?? -1), 0, { ...defaultValue });
|
|
20521
20545
|
changeDataSource(dataSource);
|
|
20522
20546
|
}
|
|
20523
20547
|
};
|
|
@@ -41287,7 +41311,7 @@ function styleInject(css, ref) {
|
|
|
41287
41311
|
}
|
|
41288
41312
|
}
|
|
41289
41313
|
|
|
41290
|
-
var css_248z$2 = "@charset \"UTF-8\";\n.react-select-table .select-table-control {\n opacity: 1;\n border: 1px solid hsl(0, 0%, 80%);\n border-radius: 0.357rem;\n width: 100%;\n height: 28px;\n background-color: #FFFFFF;\n display: flex;\n align-items: center;\n padding: 2px 8px;\n}\n.react-select-table .select-table-control .select-table-indicator svg {\n fill: #c4c4c4 !important;\n}\n.react-select-table .select-table-control .icon-clear {\n font-size: 25px;\n margin-top: 2px;\n font-weight: 500;\n color: #c4c4c4;\n}\n.react-select-table .select-table-control .icon-clear:hover {\n color: rgba(0, 0, 0, 0.8705882353) !important;\n}\n.react-select-table .select-table-control.r-select-is-open .select-table-indicator svg {\n fill: rgba(0, 0, 0, 0.8705882353) !important;\n}\n.react-select-table .select-table-control.r-select-is-invalid {\n border: 1px solid red !important;\n}\n.react-select-table .select-table-control.r-select-is-focus {\n border: 1px solid #1989fa !important;\n}\n.react-select-table .select-table-control.r-select-is-disabled {\n background-color: #efefef !important;\n}\n.react-select-table .select-table-control .select-table-container {\n position: relative;\n flex: 1;\n}\n.react-select-table .select-table-control .select-table-container .input-container {\n background-color: transparent;\n white-space: nowrap;\n top: 0px;\n left: 0px;\n display: inline;\n}\n.react-select-table .select-table-control .select-table-container .input-container .select-input {\n background-color: transparent;\n text-align: center;\n width: 100%;\n box-sizing: border-box;\n margin-left: -3px;\n border: none;\n /* Loại bỏ border */\n outline: none;\n /* Loại bỏ outline khi input được chọn */\n}\n.react-select-table .select-table-control .select-table-container .input-container .select-input:focus {\n border-width: 0px !important;\n}\n.react-select-table .select-table-control .select-table-container .select-placeholder {\n position: absolute;\n color: #283046;\n margin-top: 1px;\n background-color: transparent;\n}\n.react-select-table .select-table-control .select-table-container .select-value {\n position: absolute;\n background-color: transparent;\n bottom: 0px;\n left: 0px;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.react-select-table .formula-dropdown {\n min-width: min-content !important;\n box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 15px;\n}\n.react-select-table input::placeholder {\n color: #000000 !important;\n opacity: 1;\n /* Firefox */\n}\n\n.r-select-grid.r-select-tree-grid .r-select-gridtable .r-select-row:hover {\n background-color: rgba(235, 70, 25, 0.1) !important;\n color: #eb4619;\n}\n\n.r-select-grid {\n font-size: 12px;\n font-family: Montserrat, Helvetica, Arial, serif;\n font-weight: 500 !important;\n border-radius: 4px !important;\n overflow: hidden;\n}\n.r-select-grid table {\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0px;\n}\n.r-select-grid .r-select-gridtable {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n overflow-y: auto;\n position: relative;\n background-color: #FFFFFF;\n color: rgba(0, 0, 0, 0.8705882353) !important;\n font-weight: 400 !important;\n font-size: 13px !important;\n /* Toàn bộ thanh cuộn */\n}\n.r-select-grid .r-select-gridtable::-webkit-scrollbar {\n width: 9px;\n height: 9px;\n}\n.r-select-grid .r-select-gridtable::-webkit-scrollbar-track {\n background: #FCFCFC;\n}\n.r-select-grid .r-select-gridtable::-webkit-scrollbar-thumb {\n background: #8B8B8B;\n border-radius: 6px;\n}\n.r-select-grid .r-select-gridtable::-webkit-scrollbar-thumb:hover {\n background: #636363;\n}\n.r-select-grid .r-select-gridtable .r-select-gridheader .r-select-row .r-select-headercell {\n color: rgba(0, 0, 0, 0.8705882353) !important;\n position: sticky;\n padding: 0px;\n height: 35px;\n z-index: 1;\n border-width: 0px;\n line-height: 16px;\n}\n.r-select-grid .r-select-gridtable .r-select-gridheader .r-select-row .r-select-headercell .r-select-headercell-div {\n border-bottom: 1px solid #e0e0e0;\n background-color: #fafafa;\n display: flex;\n align-items: center;\n text-align: center;\n padding: 5px 10px;\n height: 100%;\n}\n.r-select-grid .r-select-gridtable .r-select-gridheader .r-select-row .r-select-headercell .r-select-headercell-text {\n width: 100%;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row {\n background-color: #FFFFFF;\n cursor: pointer;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .cell-fixed {\n position: sticky;\n z-index: 1;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row.fisrt-row .r-select-rowcell {\n border-top-width: 0px !important;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row.last-row .r-select-rowcell {\n border-bottom: 1px solid #e0e0e0;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell {\n border-top: 1px solid #e0e0e0;\n height: 30px !important;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: 7px 9px;\n vertical-align: middle !important;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell.r-select-move {\n background-color: rgba(235, 70, 25, 0.1) !important;\n color: #eb4619 !important;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell.r-select-active {\n background-color: #eb4619 !important;\n color: #FFFFFF !important;\n}\n.r-tooltip .r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell.r-hidden {\n display: none;\n}\n.r-tooltip .r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell.r-hidden ::after {\n display: none;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell .r-icon-expand {\n transition: transform 0.3s ease !important;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell .r-icon-expand.is-open {\n transform: rotate(90deg) !important;\n -moz-transform: rotate(90deg);\n -webkit-transform: rotate(90deg);\n -o-transform: rotate(90deg);\n}\n.r-select-grid .r-select-gridtable.no-header .r-select-rowcell {\n border: none !important;\n}\n.r-select-grid .r-no-data {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n padding: 7px 9px;\n color: #8f8f8f;\n}\n.r-select-grid .r-select-footer {\n height: 30px;\n background-color: #fafafa;\n}\n.r-select-grid .r-select-footer button {\n font-weight: 400 !important;\n font-size: 13px;\n}\n.r-select-grid .r-select-footer .r-btn {\n border-width: 0px !important;\n}\n\n.r-pagesize .react-select-table .select-table-control {\n border-radius: 0px;\n border: 0px;\n border-bottom: 1px solid #e0e0e0 !important;\n}\n.r-pagesize .react-select-table .select-table-control.r-select-is-focus {\n border: 0px !important;\n border-bottom: 1px solid #1989fa !important;\n}\n\n.r-sidebar {\n width: 400px;\n right: -400px;\n padding: 0;\n background-color: #FFFFFF;\n z-index: 1051;\n position: fixed;\n top: 0;\n bottom: 0;\n height: 100vh;\n height: calc(var(--vh, 1vh) * 100);\n transition: right 0.4s cubic-bezier(0.05, 0.74, 0.2, 0.99);\n backface-visibility: hidden;\n border-left: 1px solid rgba(0, 0, 0, 0.05);\n}\n.r-sidebar.open {\n box-shadow: 0 15px 30px 0 rgba(0, 0, 0, 0.11), 0 5px 15px 0 rgba(0, 0, 0, 0.08);\n right: 0;\n}\n.r-sidebar .modal-header {\n background-color: #FFFFFF;\n}\n.r-sidebar .modal-header .btn-close {\n padding: 0.8rem;\n box-shadow: 0 5px 20px 0 rgba(0, 0, 0, 0.1);\n border-radius: 0.357rem;\n background-color: #FFFFFF;\n opacity: 1;\n transition: all 0.23s ease 0.1s;\n position: relative;\n transform: translate(18px, -10px);\n}\n.r-sidebar .modal-header .btn-close:hover, .r-sidebar .modal-header .btn-close:focus, .r-sidebar .modal-header .btn-close:active {\n opacity: 1;\n outline: none;\n transform: translate(15px, -2px);\n box-shadow: none;\n}\n\n.r-sidebar .react-select {\n max-width: 100%;\n}\n\n.r-sidebar {\n width: 400px;\n right: -100vw;\n height: 100vh;\n}\n.r-sidebar .r-handle {\n position: fixed;\n background-color: #FFFFFF;\n top: 50%;\n transform: translate(-50%, -50%);\n filter: drop-shadow(0.9px 0.9px 1.5px);\n height: 50px;\n display: flex;\n align-items: center;\n border-radius: 0px 5px 5px 0px;\n cursor: pointer;\n margin-left: 7px;\n z-index: 9;\n}\n.r-sidebar.customizer-md {\n width: 600px;\n}\n.r-sidebar.customizer-lg {\n width: 800px;\n}\n.r-sidebar.customizer-500 {\n width: 500px;\n}\n@media (max-width: 500px) {\n .r-sidebar.customizer-500 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-600 {\n width: 600px;\n}\n@media (max-width: 600px) {\n .r-sidebar.customizer-600 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-700 {\n width: 700px;\n}\n@media (max-width: 700px) {\n .r-sidebar.customizer-700 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-800 {\n width: 800px;\n}\n@media (max-width: 800px) {\n .r-sidebar.customizer-800 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-900 {\n width: 900px;\n}\n@media (max-width: 900px) {\n .r-sidebar.customizer-900 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-1000 {\n width: 1000px;\n}\n@media (max-width: 1000px) {\n .r-sidebar.customizer-1000 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-1500 {\n width: 1500px;\n}\n@media (max-width: 1500px) {\n .r-sidebar.customizer-1500 {\n width: 100vw;\n }\n}\n.r-sidebar.fullscreen {\n width: 100%;\n}\n.r-sidebar.open {\n right: 0;\n}\n\n.r-table-edit .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-year-read-view--down-arrow,\n.r-table-edit .react-datepicker__navigation-icon::before {\n border-color: #e0e0e0;\n border-style: solid;\n border-width: 3px 3px 0 0;\n content: \"\";\n display: block;\n height: 9px;\n position: absolute;\n top: 6px;\n width: 9px;\n}\n.r-table-edit .react-datepicker-wrapper {\n display: inline-block;\n width: 100% !important;\n padding: 0;\n border: 0;\n}\n.r-table-edit .react-datepicker-wrapper .react-datepicker__input-container input {\n height: 29px !important;\n}\n.r-table-edit .react-datepicker {\n font-family: \"Helvetica Neue\", helvetica, arial, sans-serif;\n font-size: 0.8rem;\n background-color: #FFFFFF;\n color: #000000;\n border: 1px solid #e0e0e0;\n border-radius: 0.3rem;\n display: inline-block;\n position: relative;\n line-height: initial;\n}\n.r-table-edit .react-datepicker--time-only .react-datepicker__time-container {\n border-left: 0;\n}\n.r-table-edit .react-datepicker--time-only .react-datepicker__time,\n.r-table-edit .react-datepicker--time-only .react-datepicker__time-box {\n border-bottom-left-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker-popper {\n position: relative;\n line-height: 0;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__triangle {\n stroke: #e0e0e0;\n}\n.r-table-edit .react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle {\n fill: #f0f0f0;\n color: #f0f0f0;\n}\n.r-table-edit .react-datepicker-popper[data-placement^=top] .react-datepicker__triangle {\n fill: #FFFFFF;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__header {\n text-align: center;\n background-color: #FFFFFF;\n border-bottom: 1px solid #e0e0e0;\n border-top-left-radius: 0.3rem;\n padding: 8px 0;\n position: relative;\n}\n.r-table-edit .react-datepicker__header--time {\n padding-bottom: 8px;\n padding-left: 5px;\n padding-right: 5px;\n}\n.r-table-edit .react-datepicker__header--time:not(.react-datepicker__header--time--only) {\n border-top-left-radius: 0;\n}\n.r-table-edit .react-datepicker__header:not(.react-datepicker__header--has-time-select) {\n border-top-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__year-dropdown-container--select,\n.r-table-edit .react-datepicker__month-dropdown-container--select,\n.r-table-edit .react-datepicker__month-year-dropdown-container--select,\n.r-table-edit .react-datepicker__year-dropdown-container--scroll,\n.r-table-edit .react-datepicker__month-dropdown-container--scroll,\n.r-table-edit .react-datepicker__month-year-dropdown-container--scroll {\n display: inline-block;\n margin: 0 15px;\n}\n.r-table-edit .react-datepicker__current-month,\n.r-table-edit .react-datepicker-time__header,\n.r-table-edit .react-datepicker-year-header {\n margin-top: 0;\n color: #000000;\n font-weight: bold;\n font-size: 0.944rem;\n}\n.r-table-edit h2.react-datepicker__current-month {\n padding: 0;\n margin: 0;\n}\n.r-table-edit .react-datepicker-time__header {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.r-table-edit .react-datepicker__navigation {\n align-items: center;\n background: none;\n display: flex;\n justify-content: center;\n text-align: center;\n cursor: pointer;\n position: absolute;\n top: 2px;\n padding: 0;\n border: none;\n z-index: 1;\n height: 32px;\n width: 32px;\n text-indent: -999em;\n overflow: hidden;\n}\n.r-table-edit .react-datepicker__navigation--previous {\n left: 2px;\n}\n.r-table-edit .react-datepicker__navigation--next {\n right: 2px;\n}\n.r-table-edit .react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button) {\n right: 85px;\n}\n.r-table-edit .react-datepicker__navigation--years {\n position: relative;\n top: 0;\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.r-table-edit .react-datepicker__navigation--years-previous {\n top: 4px;\n}\n.r-table-edit .react-datepicker__navigation--years-upcoming {\n top: -4px;\n}\n.r-table-edit .react-datepicker__navigation:hover *::before {\n border-color: #eb4619;\n}\n.r-table-edit .react-datepicker__navigation-icon {\n position: relative;\n top: -1px;\n font-size: 20px;\n width: 0;\n}\n.r-table-edit .react-datepicker__navigation-icon--next {\n left: -2px;\n}\n.r-table-edit .react-datepicker__navigation-icon--next::before {\n transform: rotate(45deg);\n left: -7px;\n}\n.r-table-edit .react-datepicker__navigation-icon--previous {\n right: -2px;\n}\n.r-table-edit .react-datepicker__navigation-icon--previous::before {\n transform: rotate(225deg);\n right: -7px;\n}\n.r-table-edit .react-datepicker__month-container {\n float: left;\n}\n.r-table-edit .react-datepicker__year {\n margin: 0.4rem;\n text-align: center;\n}\n.r-table-edit .react-datepicker__year-wrapper {\n display: flex;\n flex-wrap: wrap;\n max-width: 180px;\n}\n.r-table-edit .react-datepicker__year .react-datepicker__year-text {\n display: inline-block;\n width: 4rem;\n margin: 2px;\n}\n.r-table-edit .react-datepicker__month {\n margin: 0.4rem;\n text-align: center;\n}\n.r-table-edit .react-datepicker__month .react-datepicker__month-text,\n.r-table-edit .react-datepicker__month .react-datepicker__quarter-text {\n display: inline-block;\n width: 4rem;\n margin: 2px;\n}\n.r-table-edit .react-datepicker__input-time-container {\n clear: both;\n width: 100%;\n float: left;\n margin: 5px 0 10px 15px;\n text-align: left;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__caption {\n display: inline-block;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container {\n display: inline-block;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input {\n display: inline-block;\n margin-left: 10px;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input {\n width: auto;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter {\n margin-left: 5px;\n display: inline-block;\n}\n.r-table-edit .react-datepicker__time-container {\n float: right;\n border-left: 1px solid #e0e0e0;\n width: 85px;\n}\n.r-table-edit .react-datepicker__time-container--with-today-button {\n display: inline;\n border: 1px solid #e0e0e0;\n border-radius: 0.3rem;\n position: absolute;\n right: -87px;\n top: 0;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time {\n position: relative;\n background: white;\n border-bottom-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box {\n width: 85px;\n overflow-x: hidden;\n margin: 0 auto;\n text-align: center;\n border-bottom-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list {\n list-style: none;\n margin: 0;\n height: calc(195px + 0.85rem);\n overflow-y: scroll;\n padding-right: 0;\n padding-left: 0;\n width: 100%;\n box-sizing: content-box;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item {\n height: 30px;\n padding: 5px 10px;\n white-space: nowrap;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover {\n cursor: pointer;\n background-color: #f0f0f0;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected {\n background-color: #216ba5;\n color: white;\n font-weight: bold;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover {\n background-color: #216ba5;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled {\n color: #ccc;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover {\n cursor: default;\n background-color: transparent;\n}\n.r-table-edit .react-datepicker__week-number {\n color: #ccc;\n display: inline-block;\n width: 1.7rem;\n line-height: 1.7rem;\n text-align: center;\n margin: 0.166rem;\n}\n.r-table-edit .react-datepicker__week-number.react-datepicker__week-number--clickable {\n cursor: pointer;\n}\n.r-table-edit .react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected,\n.react-datepicker__week-number--keyboard-selected):hover {\n border-radius: 0.3rem;\n background-color: #f0f0f0;\n}\n.r-table-edit .react-datepicker__week-number--selected {\n border-radius: 0.3rem;\n background-color: #216ba5;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__week-number--selected:hover {\n background-color: rgb(28.75, 93.2196969697, 143.75);\n}\n.r-table-edit .react-datepicker__week-number--keyboard-selected {\n border-radius: 0.3rem;\n background-color: rgb(41.5, 134.5606060606, 207.5);\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__week-number--keyboard-selected:hover {\n background-color: rgb(28.75, 93.2196969697, 143.75);\n}\n.r-table-edit .react-datepicker__day-names {\n white-space: nowrap;\n margin-bottom: -8px;\n}\n.r-table-edit .react-datepicker__week {\n white-space: nowrap;\n}\n.r-table-edit .react-datepicker__day-name,\n.r-table-edit .react-datepicker__day,\n.r-table-edit .react-datepicker__time-name {\n color: #000000;\n display: inline-block;\n width: 1.7rem;\n line-height: 1.7rem;\n text-align: center;\n margin: 0.166rem;\n}\n.r-table-edit .react-datepicker__day,\n.r-table-edit .react-datepicker__month-text,\n.r-table-edit .react-datepicker__quarter-text,\n.r-table-edit .react-datepicker__year-text {\n cursor: pointer;\n}\n.r-table-edit .react-datepicker__day:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text:not([aria-disabled=true]):hover {\n border-radius: 0.3rem;\n background-color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__day--today,\n.r-table-edit .react-datepicker__month-text--today,\n.r-table-edit .react-datepicker__quarter-text--today,\n.r-table-edit .react-datepicker__year-text--today {\n font-weight: bold;\n}\n.r-table-edit .react-datepicker__day--highlighted,\n.r-table-edit .react-datepicker__month-text--highlighted,\n.r-table-edit .react-datepicker__quarter-text--highlighted,\n.r-table-edit .react-datepicker__year-text--highlighted {\n border-radius: 0.3rem;\n background-color: #3dcc4a;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__day--highlighted:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover {\n background-color: rgb(49.8551020408, 189.6448979592, 62.5632653061);\n}\n.r-table-edit .react-datepicker__day--highlighted-custom-1,\n.r-table-edit .react-datepicker__month-text--highlighted-custom-1,\n.r-table-edit .react-datepicker__quarter-text--highlighted-custom-1,\n.r-table-edit .react-datepicker__year-text--highlighted-custom-1 {\n color: magenta;\n}\n.r-table-edit .react-datepicker__day--highlighted-custom-2,\n.r-table-edit .react-datepicker__month-text--highlighted-custom-2,\n.r-table-edit .react-datepicker__quarter-text--highlighted-custom-2,\n.r-table-edit .react-datepicker__year-text--highlighted-custom-2 {\n color: green;\n}\n.r-table-edit .react-datepicker__day--holidays,\n.r-table-edit .react-datepicker__month-text--holidays,\n.r-table-edit .react-datepicker__quarter-text--holidays,\n.r-table-edit .react-datepicker__year-text--holidays {\n position: relative;\n border-radius: 0.3rem;\n background-color: #ff6803;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__day--holidays .overlay,\n.r-table-edit .react-datepicker__month-text--holidays .overlay,\n.r-table-edit .react-datepicker__quarter-text--holidays .overlay,\n.r-table-edit .react-datepicker__year-text--holidays .overlay {\n position: absolute;\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n background-color: #333;\n color: #FFFFFF;\n padding: 4px;\n border-radius: 4px;\n white-space: nowrap;\n visibility: hidden;\n opacity: 0;\n transition: visibility 0s, opacity 0.3s ease-in-out;\n}\n.r-table-edit .react-datepicker__day--holidays:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--holidays:not([aria-disabled=true]):hover {\n background-color: rgb(207, 82.9642857143, 0);\n}\n.r-table-edit .react-datepicker__day--holidays:hover .overlay,\n.r-table-edit .react-datepicker__month-text--holidays:hover .overlay,\n.r-table-edit .react-datepicker__quarter-text--holidays:hover .overlay,\n.r-table-edit .react-datepicker__year-text--holidays:hover .overlay {\n visibility: visible;\n opacity: 1;\n}\n.r-table-edit .react-datepicker__day--selected,\n.r-table-edit .react-datepicker__day--in-selecting-range,\n.r-table-edit .react-datepicker__day--in-range,\n.r-table-edit .react-datepicker__month-text--selected,\n.r-table-edit .react-datepicker__month-text--in-selecting-range,\n.r-table-edit .react-datepicker__month-text--in-range,\n.r-table-edit .react-datepicker__quarter-text--selected,\n.r-table-edit .react-datepicker__quarter-text--in-selecting-range,\n.r-table-edit .react-datepicker__quarter-text--in-range,\n.r-table-edit .react-datepicker__year-text--selected,\n.r-table-edit .react-datepicker__year-text--in-selecting-range,\n.r-table-edit .react-datepicker__year-text--in-range {\n border-radius: 0.3rem;\n background-color: #216ba5;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__day--selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__day--in-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--in-range:not([aria-disabled=true]):hover {\n background-color: rgb(28.75, 93.2196969697, 143.75);\n}\n.r-table-edit .react-datepicker__day--keyboard-selected,\n.r-table-edit .react-datepicker__month-text--keyboard-selected,\n.r-table-edit .react-datepicker__quarter-text--keyboard-selected,\n.r-table-edit .react-datepicker__year-text--keyboard-selected {\n border-radius: 0.3rem;\n background-color: rgb(186.25, 217.0833333333, 241.25);\n color: rgb(0, 0, 0);\n}\n.r-table-edit .react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover {\n background-color: rgb(28.75, 93.2196969697, 143.75);\n}\n.r-table-edit .react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range,\n.react-datepicker__month-text--in-range,\n.react-datepicker__quarter-text--in-range,\n.react-datepicker__year-text--in-range),\n.r-table-edit .react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range,\n.react-datepicker__month-text--in-range,\n.react-datepicker__quarter-text--in-range,\n.react-datepicker__year-text--in-range),\n.r-table-edit .react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range,\n.react-datepicker__month-text--in-range,\n.react-datepicker__quarter-text--in-range,\n.react-datepicker__year-text--in-range),\n.r-table-edit .react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range,\n.react-datepicker__month-text--in-range,\n.react-datepicker__quarter-text--in-range,\n.react-datepicker__year-text--in-range) {\n background-color: rgba(33, 107, 165, 0.5);\n}\n.r-table-edit .react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range) {\n background-color: #f0f0f0;\n color: #000000;\n}\n.r-table-edit .react-datepicker__day--disabled,\n.r-table-edit .react-datepicker__month-text--disabled,\n.r-table-edit .react-datepicker__quarter-text--disabled,\n.r-table-edit .react-datepicker__year-text--disabled {\n cursor: default;\n color: #ccc;\n}\n.r-table-edit .react-datepicker__day--disabled .overlay,\n.r-table-edit .react-datepicker__month-text--disabled .overlay,\n.r-table-edit .react-datepicker__quarter-text--disabled .overlay,\n.r-table-edit .react-datepicker__year-text--disabled .overlay {\n position: absolute;\n bottom: 70%;\n left: 50%;\n transform: translateX(-50%);\n background-color: #333;\n color: #FFFFFF;\n padding: 4px;\n border-radius: 4px;\n white-space: nowrap;\n visibility: hidden;\n opacity: 0;\n transition: visibility 0s, opacity 0.3s ease-in-out;\n}\n.r-table-edit .react-datepicker__input-container {\n position: relative;\n display: inline-block;\n width: 100%;\n}\n.r-table-edit .react-datepicker__input-container .react-datepicker__calendar-icon {\n position: absolute;\n padding: 0.5rem;\n box-sizing: content-box;\n}\n.r-table-edit .react-datepicker__view-calendar-icon input {\n padding: 6px 10px 5px 25px;\n}\n.r-table-edit .react-datepicker__year-read-view,\n.r-table-edit .react-datepicker__month-read-view,\n.r-table-edit .react-datepicker__month-year-read-view {\n border: 1px solid transparent;\n border-radius: 0.3rem;\n position: relative;\n}\n.r-table-edit .react-datepicker__year-read-view:hover,\n.r-table-edit .react-datepicker__month-read-view:hover,\n.r-table-edit .react-datepicker__month-year-read-view:hover {\n cursor: pointer;\n}\n.r-table-edit .react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow {\n border-top-color: rgb(178.5, 178.5, 178.5);\n}\n.r-table-edit .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-year-read-view--down-arrow {\n transform: rotate(135deg);\n right: -16px;\n top: 0;\n}\n.r-table-edit .react-datepicker__year-dropdown,\n.r-table-edit .react-datepicker__month-dropdown,\n.r-table-edit .react-datepicker__month-year-dropdown {\n background-color: #f0f0f0;\n position: absolute;\n width: 50%;\n left: 25%;\n top: 30px;\n z-index: 1;\n text-align: center;\n border-radius: 0.3rem;\n border: 1px solid #e0e0e0;\n}\n.r-table-edit .react-datepicker__year-dropdown:hover,\n.r-table-edit .react-datepicker__month-dropdown:hover,\n.r-table-edit .react-datepicker__month-year-dropdown:hover {\n cursor: pointer;\n}\n.r-table-edit .react-datepicker__year-dropdown--scrollable,\n.r-table-edit .react-datepicker__month-dropdown--scrollable,\n.r-table-edit .react-datepicker__month-year-dropdown--scrollable {\n height: 150px;\n overflow-y: scroll;\n}\n.r-table-edit .react-datepicker__year-option,\n.r-table-edit .react-datepicker__month-option,\n.r-table-edit .react-datepicker__month-year-option {\n line-height: 20px;\n width: 100%;\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.r-table-edit .react-datepicker__year-option:first-of-type,\n.r-table-edit .react-datepicker__month-option:first-of-type,\n.r-table-edit .react-datepicker__month-year-option:first-of-type {\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__year-option:last-of-type,\n.r-table-edit .react-datepicker__month-option:last-of-type,\n.r-table-edit .react-datepicker__month-year-option:last-of-type {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border-bottom-left-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__year-option:hover,\n.r-table-edit .react-datepicker__month-option:hover,\n.r-table-edit .react-datepicker__month-year-option:hover {\n background-color: #ccc;\n}\n.r-table-edit .react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,\n.r-table-edit .react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,\n.r-table-edit .react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming {\n border-bottom-color: rgb(178.5, 178.5, 178.5);\n}\n.r-table-edit .react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,\n.r-table-edit .react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,\n.r-table-edit .react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous {\n border-top-color: rgb(178.5, 178.5, 178.5);\n}\n.r-table-edit .react-datepicker__year-option--selected,\n.r-table-edit .react-datepicker__month-option--selected,\n.r-table-edit .react-datepicker__month-year-option--selected {\n position: absolute;\n left: 15px;\n}\n.r-table-edit .react-datepicker__close-icon {\n cursor: pointer;\n background-color: transparent;\n border: 0;\n outline: 0;\n padding: 0 6px 0 0;\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n display: table-cell;\n vertical-align: middle;\n}\n.r-table-edit .react-datepicker__close-icon::after {\n cursor: pointer;\n background-color: transparent;\n color: #c4c4c4;\n height: 16px;\n width: 16px;\n padding: 0px 2px;\n font-size: 25px;\n font-weight: 500;\n line-height: 0.5;\n text-align: center;\n display: table-cell;\n vertical-align: middle;\n content: \"×\";\n}\n.r-table-edit .react-datepicker__close-icon:hover::after {\n color: rgba(0, 0, 0, 0.8705882353) !important;\n}\n.r-table-edit .react-datepicker__close-icon--disabled {\n cursor: default;\n}\n.r-table-edit .react-datepicker__close-icon--disabled::after {\n cursor: default;\n background-color: #ccc;\n}\n.r-table-edit .react-datepicker__today-button {\n background: #f0f0f0;\n border-top: 1px solid #e0e0e0;\n cursor: pointer;\n text-align: center;\n font-weight: bold;\n padding: 5px 0;\n clear: left;\n}\n.r-table-edit .react-datepicker__portal {\n position: fixed;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.8);\n left: 0;\n top: 0;\n justify-content: center;\n align-items: center;\n display: flex;\n z-index: 2147483647;\n}\n.r-table-edit .react-datepicker__portal .react-datepicker__day-name,\n.r-table-edit .react-datepicker__portal .react-datepicker__day,\n.r-table-edit .react-datepicker__portal .react-datepicker__time-name {\n width: 3rem;\n line-height: 3rem;\n}\n@media (max-width: 400px), (max-height: 550px) {\n .r-table-edit .react-datepicker__portal .react-datepicker__day-name,\n .r-table-edit .react-datepicker__portal .react-datepicker__day,\n .r-table-edit .react-datepicker__portal .react-datepicker__time-name {\n width: 2rem;\n line-height: 2rem;\n }\n}\n.r-table-edit .react-datepicker__portal .react-datepicker__current-month,\n.r-table-edit .react-datepicker__portal .react-datepicker-time__header {\n font-size: 1.44rem;\n}\n.r-table-edit .react-datepicker__children-container {\n width: 13.8rem;\n margin: 0.4rem;\n padding-right: 0.2rem;\n padding-left: 0.2rem;\n height: auto;\n}\n.r-table-edit .react-datepicker__aria-live {\n position: absolute;\n clip-path: circle(0);\n border: 0;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n width: 1px;\n white-space: nowrap;\n}\n.r-table-edit .react-datepicker__calendar-icon {\n width: 1em;\n height: 1em;\n vertical-align: -0.125em;\n}\n.r-table-edit .react-datepicker-popper {\n z-index: 999 !important;\n position: fixed !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__current-month {\n color: rgba(0, 0, 0, 0.9) !important;\n font-weight: 500 !important;\n display: none;\n font-family: Montserrat, Helvetica, Arial, serif !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown {\n font-family: Montserrat, Helvetica, Arial, serif !important;\n /* Giao diện của menu dropdown (tháng và năm) */\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__month-dropdown-container {\n margin: 0px 3px 0px 0px;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__year-dropdown-container {\n margin: 0px 0px 0px 3px;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__month-select:focus,\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__year-select:focus {\n border: 1px solid #1989fa !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__month-select,\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__year-select {\n background-color: #FFFFFF;\n height: 22px;\n border-radius: 2px;\n padding: 2px 0;\n border: 1px solid hsl(0, 0%, 80%);\n outline: none;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__navigation {\n margin-top: 4px;\n color: #eb4619;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day-name {\n font-family: Montserrat, Helvetica, Arial, serif !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day {\n outline: none;\n border-radius: 20px !important;\n font-family: Montserrat, Helvetica, Arial, serif !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day:hover {\n background-color: rgba(235, 70, 25, 0.1) !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day--today {\n color: #eb4619;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day--today.react-datepicker__day--selected {\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day--today.react-datepicker__day--keyboard-selected {\n background-color: rgba(235, 70, 25, 0.1);\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day--selected {\n background-color: #eb4619 !important;\n}\n\n.tab-custom {\n font-family: Roboto, \"Segoe UI\", GeezaPro, \"DejaVu Serif\", \"sans-serif\", -apple-system, BlinkMacSystemFont;\n display: flex;\n}\n.tab-custom.tab-parent {\n border-bottom: solid 1px #c9c9c9;\n}\n.tab-custom .btn-scroll {\n cursor: pointer;\n display: flex;\n align-items: center;\n}\n.tab-custom .tab-component::-webkit-scrollbar {\n display: none;\n /* Ẩn thanh cuộn nếu không cần */\n}\n.tab-custom .tab-component {\n white-space: nowrap;\n overflow-x: hidden;\n scroll-behavior: smooth;\n}\n.tab-custom .tab-component > * {\n display: inline-block;\n}\n.tab-custom .tab-component .tab-custom-item {\n display: inline-block;\n padding: 3px 10px;\n line-height: 23px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n text-transform: uppercase;\n height: 30px;\n color: rgba(0, 0, 0, 0.5);\n}\n.tab-custom .tab-component .tab-custom-item.active {\n border-bottom: solid 2px #eb4619 !important;\n color: #eb4619;\n}\n.tab-custom.tab-child .tab-custom-item {\n font-size: 12px !important;\n line-height: 23px !important;\n border-radius: 5px 5px 0px 0px;\n margin: 8px 3px 0px 3px;\n box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 2px 6px 2px;\n}\n\n.bs-stepper {\n background-color: #FFFFFF;\n box-shadow: 0 4px 24px 0 rgba(0, 0, 0, 0.1);\n border-radius: 0.5rem;\n}\n.bs-stepper .bs-stepper-header {\n padding: 1.5rem 1.5rem;\n flex-wrap: wrap;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n margin: 0;\n}\n.bs-stepper .bs-stepper-header .line {\n flex: 0;\n min-width: auto;\n min-height: auto;\n background-color: transparent;\n margin: 0;\n padding: 0 1.75rem;\n color: #283046;\n font-size: 1.5rem;\n}\n.bs-stepper .bs-stepper-header .step {\n margin-bottom: 0.25rem;\n margin-top: 0.25rem;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger {\n flex-wrap: nowrap;\n padding: 0;\n font-weight: normal;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger .bs-stepper-box {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 38px;\n height: 38px;\n padding: 0.5em 0;\n font-weight: 500;\n color: #babfc7;\n background-color: rgba(186, 191, 199, 0.12);\n border-radius: 0.35rem;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger .bs-stepper-label {\n text-align: left;\n margin: 0;\n margin-top: 0.5rem;\n margin-left: 1rem;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger .bs-stepper-label .bs-stepper-title {\n display: inherit;\n color: #283046;\n font-weight: 600;\n line-height: 1rem;\n margin-bottom: 0rem;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger .bs-stepper-label .bs-stepper-subtitle {\n font-weight: 400;\n font-size: 0.85rem;\n color: #b9b9c3;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger:hover {\n background-color: transparent;\n}\n.bs-stepper .bs-stepper-header .step.active .step-trigger .bs-stepper-box {\n background-color: #eb4619;\n color: #FFFFFF;\n box-shadow: 0 3px 6px 0 rgba(235, 70, 25, 0.4);\n}\n.bs-stepper .bs-stepper-header .step.active .step-trigger .bs-stepper-label .bs-stepper-title {\n color: #eb4619;\n}\n.bs-stepper .bs-stepper-header .step.crossed .step-trigger .bs-stepper-box {\n background-color: rgba(235, 70, 25, 0.12);\n color: #eb4619;\n}\n.bs-stepper .bs-stepper-header .step.crossed .step-trigger .bs-stepper-label .bs-stepper-title {\n color: #b9b9c3;\n}\n.bs-stepper .bs-stepper-header .step.crossed + .line {\n color: #eb4619;\n}\n.bs-stepper .bs-stepper-content {\n padding: 1.5rem 1.5rem;\n}\n.bs-stepper .bs-stepper-content .content {\n margin-left: 0;\n}\n.bs-stepper .bs-stepper-content .content .content-header {\n margin-bottom: 1rem;\n}\n.bs-stepper.vertical .bs-stepper-header {\n border-right: 1px solid #e0e0e0;\n border-bottom: none;\n}\n.bs-stepper.vertical .bs-stepper-header .step .step-trigger {\n padding: 1rem 0;\n}\n.bs-stepper.vertical .bs-stepper-header .line {\n display: none;\n}\n.bs-stepper.vertical .bs-stepper-content {\n width: 100%;\n padding-top: 2.5rem;\n}\n.bs-stepper.vertical .bs-stepper-content .content:not(.active) {\n display: none;\n}\n.bs-stepper.vertical.wizard-icons .step {\n text-align: center;\n}\n.bs-stepper.wizard-modern {\n background-color: transparent;\n box-shadow: none;\n}\n.bs-stepper.wizard-modern .bs-stepper-header {\n border: none;\n}\n.bs-stepper.wizard-modern .bs-stepper-content {\n background-color: #FFFFFF;\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px 0 rgba(0, 0, 0, 0.1);\n}\n\n.horizontal-wizard,\n.vertical-wizard,\n.modern-horizontal-wizard,\n.modern-vertical-wizard {\n margin-bottom: 2.2rem;\n}\n\nhtml[data-textdirection=rtl] .btn-prev,\nhtml[data-textdirection=rtl] .btn-next {\n display: flex;\n}\nhtml[data-textdirection=rtl] .btn-prev i,\nhtml[data-textdirection=rtl] .btn-prev svg,\nhtml[data-textdirection=rtl] .btn-next i,\nhtml[data-textdirection=rtl] .btn-next svg {\n transform: rotate(-180deg);\n}\n\n@media (max-width: 992px) {\n .bs-stepper .bs-stepper-header {\n flex-direction: column;\n align-items: flex-start;\n }\n .bs-stepper .bs-stepper-header .step .step-trigger {\n padding: 0.5rem 0 !important;\n flex-direction: row;\n }\n .bs-stepper .bs-stepper-header .line {\n display: none;\n }\n .bs-stepper.vertical {\n flex-direction: column;\n }\n .bs-stepper.vertical .bs-stepper-header {\n align-items: flex-start;\n }\n .bs-stepper.vertical .bs-stepper-content {\n padding-top: 1.5rem;\n }\n}\n.r-table-edit .r-grid {\n font-size: 12px;\n}\n.r-table-edit .r-grid .r-search {\n display: flex;\n position: relative;\n align-items: center;\n}\n.r-table-edit .r-grid .r-search .input__value {\n z-index: 1;\n}\n.r-table-edit .r-grid .r-search .input__value.is-clearable {\n padding-right: 25px;\n}\n.r-table-edit .r-grid .r-search .input__clear-icon {\n position: absolute;\n right: 5px;\n z-index: 10;\n}\n.r-table-edit .r-grid .r-gridtable {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n overflow-y: scroll;\n position: relative;\n background-color: #FFFFFF;\n color: rgba(0, 0, 0, 0.8705882353);\n font-weight: 400;\n border: 1px solid #e0e0e0;\n /* Toàn bộ thanh cuộn */\n /* Nền của thanh cuộn */\n /* Thanh trượt (thumb) */\n /* Khi hover */\n}\n.r-table-edit .r-grid .r-gridtable table {\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0px;\n}\n.r-table-edit .r-grid .r-gridtable::-webkit-scrollbar {\n width: 9px;\n /* Độ rộng của thanh cuộn */\n height: 9px;\n /* Độ cao của thanh cuộn */\n}\n.r-table-edit .r-grid .r-gridtable::-webkit-scrollbar-track {\n background: #FCFCFC;\n /* Màu nền nhạt */\n}\n.r-table-edit .r-grid .r-gridtable::-webkit-scrollbar-thumb {\n background: #8B8B8B;\n /* Màu xám nhạt */\n border-radius: 6px;\n /* Bo góc giống Edge */\n}\n.r-table-edit .r-grid .r-gridtable::-webkit-scrollbar-thumb:hover {\n background: #636363;\n /* Màu đậm hơn khi hover */\n}\n.r-table-edit .r-grid .r-gridtable .react-resizable-handle.react-resizable-handle-se {\n position: absolute;\n right: 0px;\n top: 0px;\n width: 10px;\n height: 100%;\n cursor: col-resize;\n background-image: none;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter svg.active {\n color: #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter-popup .react-select-table .select-value {\n line-height: 20px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter-popup .react-select-table .select-placeholder {\n line-height: 20px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter-popup .react-select-table .r-select-is-focus {\n border-color: #eb4619 !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter-popup .form-control:focus {\n border-color: #eb4619 !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-no-data {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n padding: 20px 9px;\n color: #8f8f8f;\n}\n.r-table-edit .r-grid .r-gridtable .r-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.3);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 3;\n}\n.r-table-edit .r-grid .r-gridtable .r-loading-overlay .r-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n padding: 7px 9px;\n color: #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed {\n z-index: 2 !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed.fix-right .r-headercell-div {\n border-left: 1px solid #e0e0e0;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed.fix-left .r-headercell-div {\n border-right: 1px solid #e0e0e0;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed.fix-left.fixed-last .r-headercell-div {\n box-shadow: 2px 0 4px -1px rgba(0, 0, 0, 0.1);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed.fix-right.fixed-last .r-headercell-div {\n box-shadow: -2px 0 4px -1px rgba(0, 0, 0, 0.1);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .r-headercell {\n color: rgba(0, 0, 0, 0.8705882353);\n position: sticky;\n padding: 0px;\n height: 42px;\n z-index: 1;\n border-width: 0px;\n line-height: 16px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .r-headercell .r-headercell-div {\n border-right: 1px solid #e0e0e0;\n border-bottom: 1px solid #e0e0e0;\n background-color: #FFFFFF;\n display: flex;\n align-items: center;\n text-align: center;\n padding: 5px 10px;\n height: 100%;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .r-headercell .header-content {\n display: flex;\n flex: 1 1 0%;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .r-headercell .header-content .text-content {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row:first-of-type .r-rowcell-div {\n border-top-color: #FFFFFF;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row {\n font-size: 13px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .cell-fixed {\n position: sticky;\n z-index: 1;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell {\n background-color: #FFFFFF;\n border-bottom: 1px solid #e0e0e0;\n border-right: 1px solid #e0e0e0;\n vertical-align: middle;\n padding: 0;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell.fix-right {\n border-left: 1px solid #e0e0e0;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell.fix-right.fixed-last {\n border-left: 1px solid #e0e0e0;\n box-shadow: -2px 0 4px -1px rgba(0, 0, 0, 0.1);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell.fix-left.fixed-last {\n border-right: 1px solid #e0e0e0;\n box-shadow: 2px 0 4px -1px rgba(0, 0, 0, 0.1);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell.r-active-row {\n background-color: #fce6df;\n border-right: 2px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div {\n min-height: 28px !important;\n border: 1px solid transparent;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-icon-expand {\n transition: transform 0.3s ease;\n position: absolute;\n left: 3px;\n top: 8px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-icon-expand.is-open {\n transform: rotate(90deg);\n -moz-transform: rotate(90deg);\n -webkit-transform: rotate(90deg);\n -o-transform: rotate(90deg);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .arrow-context-menu {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 15px;\n width: 15px;\n background-color: #FFFFFF;\n border-radius: 10px;\n border: 1px solid #e0e0e0;\n box-shadow: 0px 0px 2px #e0e0e0;\n right: -5px;\n bottom: -5px;\n z-index: 10000;\n cursor: pointer;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.command {\n padding-top: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div:focus {\n outline: none;\n /* bỏ viền focus mặc định */\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-disable {\n background-color: #f9f9f9;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-active-cell {\n background-color: rgb(255, 240, 240);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-cell-text:focus {\n outline: none;\n /* bỏ viền focus mặc định */\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-icon-invalid {\n position: absolute;\n width: 10px;\n height: 10px;\n top: 0px;\n left: -6px;\n rotate: -90deg;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-drag-icon {\n position: absolute;\n border: 1px solid #FFFFFF;\n bottom: -2px;\n right: -2px;\n width: 7px;\n height: 7px;\n background-color: #eb4619;\n border-radius: 20%;\n cursor: crosshair;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-cell-text {\n padding: 0px 7px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: flex;\n align-items: center;\n min-width: 0;\n min-height: 28px;\n flex: 1;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-cell-text .r-drop-icon {\n position: absolute;\n fill: #c4c4c4 !important;\n right: 9px;\n top: 5px;\n cursor: pointer;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .is-invalid {\n border-width: 0px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .is-invalid .r-select-is-invalid {\n border-width: 0px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-selected-top {\n border-top: 1px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-selected-bottom {\n border-bottom: 1px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-selected-left {\n border-left: 1px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-selected-right {\n border-right: 1px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .react-select-table.is-invalid {\n border-width: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .react-select-table .r-select-is-focus {\n border-width: 0px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .react-select-table .select-table-control {\n border-radius: 0px;\n border-width: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .react-select-table .select-table-control.r-select-is-focus {\n border: 1px solid #1989fa;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit .display-value {\n cursor: pointer;\n border-radius: 0px;\n background-color: #FFFFFF;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit .input-display {\n border-width: 0px;\n box-sizing: border-box;\n border: none;\n /* Loại bỏ border */\n outline: none;\n /* Loại bỏ outline khi input được chọn */\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit .form-input-content .form-control {\n border-radius: 4px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit .form-input-content .form-control:focus {\n border: 1px solid #1989fa;\n outline: none;\n box-shadow: none;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit input::placeholder {\n color: #eb4619;\n opacity: 1;\n /* Firefox */\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__display {\n vertical-align: middle;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit {\n display: none;\n text-align: left;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit.active {\n display: flex;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit .form-label {\n font-size: 10px;\n margin-bottom: 0px;\n text-align: left;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit .form-control {\n border-radius: 0px;\n height: 23px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit .form__element {\n margin: 0px 2px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-date-input {\n text-align: center;\n height: 29px;\n border: 1px solid #ccc;\n border-radius: 4px;\n padding: 5px;\n font-size: 14px;\n background-color: #f9f9f9;\n color: #333;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-control:focus {\n border-radius: 0px;\n border-width: 0px;\n background-color: #f8f8f8;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div input {\n font-size: 13px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot {\n color: #283046;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot .r-row {\n bottom: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot .r-row .r-footer {\n background-color: #fafafa;\n font-size: 14px;\n font-weight: 600;\n width: 100px;\n position: sticky;\n z-index: 1;\n bottom: 0;\n border-width: 0px;\n padding: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot .r-row .r-footer.cell-fixed {\n z-index: 2;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot .r-row .r-footer .r-footer-div {\n height: 30px;\n padding: 5px 7px;\n}\n.r-table-edit .r-grid .r-gridtable .formula-dropdown {\n box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 15px;\n}\n.r-table-edit .r-grid .text-left .form-label {\n text-align: left;\n}\n.r-table-edit .r-grid .r-toolbar {\n border: 1px solid #e0e0e0;\n height: 44px;\n}\n.r-table-edit .r-grid .r-toolbar.r-toolbar-bottom {\n border-top-width: 0px;\n}\n.r-table-edit .r-grid .r-toolbar.r-toolbar-top {\n border-bottom-width: 0px;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-left {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-left .r-toolbar-item {\n margin: 7px 0px 7px 7px;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-center {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-center .r-toolbar-item {\n margin: 7px 3px 7px 3px;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-right {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-right .r-toolbar-item {\n margin: 7px 7px 7px 0px;\n}\n.r-table-edit .r-setting-container {\n margin: 0px 15px;\n}\n.r-table-edit .r-setting-container .r-setting-content {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n overflow-y: scroll;\n position: relative;\n background-color: #FFFFFF;\n color: rgba(0, 0, 0, 0.8705882353);\n font-weight: 400;\n border-left: 1px solid #e0e0e0;\n border-right: 1px solid #e0e0e0;\n /* Toàn bộ thanh cuộn */\n /* Nền của thanh cuộn */\n /* Thanh trượt (thumb) */\n /* Khi hover */\n}\n.r-table-edit .r-setting-container .r-setting-content::-webkit-scrollbar {\n width: 9px;\n /* Độ rộng của thanh cuộn */\n height: 9px;\n /* Độ cao của thanh cuộn */\n}\n.r-table-edit .r-setting-container .r-setting-content::-webkit-scrollbar-track {\n background: #FCFCFC;\n /* Màu nền nhạt */\n}\n.r-table-edit .r-setting-container .r-setting-content::-webkit-scrollbar-thumb {\n background: #8B8B8B;\n /* Màu xám nhạt */\n border-radius: 6px;\n /* Bo góc giống Edge */\n}\n.r-table-edit .r-setting-container .r-setting-content::-webkit-scrollbar-thumb:hover {\n background: #636363;\n /* Màu đậm hơn khi hover */\n}\n.r-table-edit .r-setting-container .r-setting-row {\n padding: 5px !important;\n margin: 0px;\n border-bottom: 1px solid #e0e0e0;\n font-size: 13px;\n display: flex;\n align-items: center;\n}\n.r-table-edit .r-setting-container .r-setting-row .r-setting-cell {\n padding-right: 10px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.r-table-edit .r-setting-container .r-setting-row .r-setting-cell .form-control {\n font-size: 13px !important;\n}\n.r-table-edit .r-setting-container .r-setting-row.r-setting-header {\n font-size: 12px !important;\n}\n.r-table-edit.r-virtualized-table .r-row:hover .r-rowcell {\n background-color: #fce6df !important;\n}\n.r-table-edit .r-pager {\n border: 1px solid #e0e0e0;\n border-top-width: 0px;\n min-height: 50px;\n width: 100%;\n display: inline-block;\n}\n.r-table-edit .r-pager .r-pagercontainer {\n margin-left: 10px;\n float: left;\n height: 100%;\n display: block;\n align-items: center;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-button {\n display: inline-block;\n margin: 9px 6px;\n height: 30px;\n width: 30px;\n padding: 6px;\n border-width: 0px;\n background-color: transparent;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-button svg {\n font-size: 16px;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-number {\n display: inline-block;\n margin: 10px 4px 0px 0px;\n height: 25px;\n width: 25px;\n font-size: 13px;\n padding-top: 4px;\n text-align: center;\n cursor: pointer;\n border-radius: 5px;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-number.r-active {\n background-color: rgba(235, 70, 25, 0.1);\n color: #eb4619;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-number:hover {\n border: 1px solid #eb4619;\n}\n.r-table-edit .r-pager .r-pagesize {\n margin-left: 20px;\n font-size: 13px;\n display: inline-block;\n}\n.r-table-edit .r-pager .r-pagesize .select-pagesize__menu-portal {\n z-index: 5;\n}\n.r-table-edit .r-pager .r-parentmsgbar {\n font-size: 13px;\n float: right;\n padding-bottom: 9px;\n padding-right: 18px;\n padding-top: 14px;\n}\n\n.r-tooltip .tooltip-inner {\n font-size: 11px;\n}\n.r-tooltip.tooltip-error ::before {\n border-top-color: rgb(235, 78, 78);\n}\n.r-tooltip.tooltip-error .tooltip-inner {\n background-color: rgb(235, 78, 78);\n}\n\n.btn-input-style {\n font-weight: 500;\n text-transform: uppercase;\n border: 1px solid #e0e0e0;\n border-radius: 5px;\n margin-left: 3px;\n height: 28px;\n padding: 2px 5px;\n cursor: pointer;\n}\n.btn-input-style:hover {\n background-color: rgba(235, 70, 25, 0.1);\n color: #eb4619;\n}\n.btn-input-style.active-custom {\n background-color: #eb4619;\n color: #FFFFFF;\n}";
|
|
41314
|
+
var css_248z$2 = "@charset \"UTF-8\";\n.react-select-table .select-table-control {\n opacity: 1;\n border: 1px solid hsl(0, 0%, 80%);\n border-radius: 0.357rem;\n width: 100%;\n height: 28px;\n background-color: #FFFFFF;\n display: flex;\n align-items: center;\n padding: 2px 8px;\n}\n.react-select-table .select-table-control .select-table-indicator svg {\n fill: #c4c4c4 !important;\n}\n.react-select-table .select-table-control .icon-clear {\n font-size: 25px;\n margin-top: 2px;\n font-weight: 500;\n color: #c4c4c4;\n}\n.react-select-table .select-table-control .icon-clear:hover {\n color: rgba(0, 0, 0, 0.8705882353) !important;\n}\n.react-select-table .select-table-control.r-select-is-open .select-table-indicator svg {\n fill: rgba(0, 0, 0, 0.8705882353) !important;\n}\n.react-select-table .select-table-control.r-select-is-invalid {\n border: 1px solid red !important;\n}\n.react-select-table .select-table-control.r-select-is-focus {\n border: 1px solid #1989fa !important;\n}\n.react-select-table .select-table-control.r-select-is-disabled {\n background-color: #efefef !important;\n}\n.react-select-table .select-table-control .select-table-container {\n position: relative;\n flex: 1;\n}\n.react-select-table .select-table-control .select-table-container .input-container {\n background-color: transparent;\n white-space: nowrap;\n top: 0px;\n left: 0px;\n display: inline;\n}\n.react-select-table .select-table-control .select-table-container .input-container .select-input {\n background-color: transparent;\n text-align: center;\n width: 100%;\n box-sizing: border-box;\n margin-left: -3px;\n border: none;\n /* Loại bỏ border */\n outline: none;\n /* Loại bỏ outline khi input được chọn */\n}\n.react-select-table .select-table-control .select-table-container .input-container .select-input:focus {\n border-width: 0px !important;\n}\n.react-select-table .select-table-control .select-table-container .select-placeholder {\n position: absolute;\n color: #283046;\n margin-top: 1px;\n background-color: transparent;\n}\n.react-select-table .select-table-control .select-table-container .select-value {\n position: absolute;\n background-color: transparent;\n bottom: 0px;\n left: 0px;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.react-select-table .formula-dropdown {\n min-width: min-content !important;\n box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 15px;\n}\n.react-select-table input::placeholder {\n color: #000000 !important;\n opacity: 1;\n /* Firefox */\n}\n\n.r-select-grid.r-select-tree-grid .r-select-gridtable .r-select-row:hover {\n background-color: rgba(235, 70, 25, 0.1) !important;\n color: #eb4619;\n}\n\n.r-select-grid {\n font-size: 12px;\n font-family: Montserrat, Helvetica, Arial, serif;\n font-weight: 500 !important;\n border-radius: 4px !important;\n overflow: hidden;\n}\n.r-select-grid table {\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0px;\n}\n.r-select-grid .r-select-gridtable {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n overflow-y: auto;\n position: relative;\n background-color: #FFFFFF;\n color: rgba(0, 0, 0, 0.8705882353) !important;\n font-weight: 400 !important;\n font-size: 13px !important;\n /* Toàn bộ thanh cuộn */\n}\n.r-select-grid .r-select-gridtable::-webkit-scrollbar {\n width: 9px;\n height: 9px;\n}\n.r-select-grid .r-select-gridtable::-webkit-scrollbar-track {\n background: #FCFCFC;\n}\n.r-select-grid .r-select-gridtable::-webkit-scrollbar-thumb {\n background: #8B8B8B;\n border-radius: 6px;\n}\n.r-select-grid .r-select-gridtable::-webkit-scrollbar-thumb:hover {\n background: #636363;\n}\n.r-select-grid .r-select-gridtable .r-select-gridheader .r-select-row .r-select-headercell {\n color: rgba(0, 0, 0, 0.8705882353) !important;\n position: sticky;\n padding: 0px;\n height: 35px;\n z-index: 1;\n border-width: 0px;\n line-height: 16px;\n}\n.r-select-grid .r-select-gridtable .r-select-gridheader .r-select-row .r-select-headercell .r-select-headercell-div {\n border-bottom: 1px solid #e0e0e0;\n background-color: #fafafa;\n display: flex;\n align-items: center;\n text-align: center;\n padding: 5px 10px;\n height: 100%;\n}\n.r-select-grid .r-select-gridtable .r-select-gridheader .r-select-row .r-select-headercell .r-select-headercell-text {\n width: 100%;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row {\n background-color: #FFFFFF;\n cursor: pointer;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .cell-fixed {\n position: sticky;\n z-index: 1;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row.fisrt-row .r-select-rowcell {\n border-top-width: 0px !important;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row.last-row .r-select-rowcell {\n border-bottom: 1px solid #e0e0e0;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell {\n border-top: 1px solid #e0e0e0;\n height: 30px !important;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: 7px 9px;\n vertical-align: middle !important;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell.r-select-move {\n background-color: rgba(235, 70, 25, 0.1) !important;\n color: #eb4619 !important;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell.r-select-active {\n background-color: #eb4619 !important;\n color: #FFFFFF !important;\n}\n.r-tooltip .r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell.r-hidden {\n display: none;\n}\n.r-tooltip .r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell.r-hidden ::after {\n display: none;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell .r-icon-expand {\n transition: transform 0.3s ease !important;\n}\n.r-select-grid .r-select-gridtable .r-select-gridcontent .r-select-row .r-select-rowcell .r-icon-expand.is-open {\n transform: rotate(90deg) !important;\n -moz-transform: rotate(90deg);\n -webkit-transform: rotate(90deg);\n -o-transform: rotate(90deg);\n}\n.r-select-grid .r-select-gridtable.no-header .r-select-rowcell {\n border: none !important;\n}\n.r-select-grid .r-no-data {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n padding: 7px 9px;\n color: #8f8f8f;\n}\n.r-select-grid .r-select-footer {\n height: 30px;\n background-color: #fafafa;\n}\n.r-select-grid .r-select-footer button {\n font-weight: 400 !important;\n font-size: 13px;\n}\n.r-select-grid .r-select-footer .r-btn {\n border-width: 0px !important;\n}\n\n.r-pagesize .react-select-table .select-table-control {\n border-radius: 0px;\n border: 0px;\n border-bottom: 1px solid #e0e0e0 !important;\n}\n.r-pagesize .react-select-table .select-table-control.r-select-is-focus {\n border: 0px !important;\n border-bottom: 1px solid #1989fa !important;\n}\n\n.r-sidebar {\n width: 400px;\n right: -400px;\n padding: 0;\n background-color: #FFFFFF;\n z-index: 1051;\n position: fixed;\n top: 0;\n bottom: 0;\n height: 100vh;\n height: calc(var(--vh, 1vh) * 100);\n transition: right 0.4s cubic-bezier(0.05, 0.74, 0.2, 0.99);\n backface-visibility: hidden;\n border-left: 1px solid rgba(0, 0, 0, 0.05);\n}\n.r-sidebar.open {\n box-shadow: 0 15px 30px 0 rgba(0, 0, 0, 0.11), 0 5px 15px 0 rgba(0, 0, 0, 0.08);\n right: 0;\n}\n.r-sidebar .modal-header {\n background-color: #FFFFFF;\n}\n.r-sidebar .modal-header .btn-close {\n padding: 0.8rem;\n box-shadow: 0 5px 20px 0 rgba(0, 0, 0, 0.1);\n border-radius: 0.357rem;\n background-color: #FFFFFF;\n opacity: 1;\n transition: all 0.23s ease 0.1s;\n position: relative;\n transform: translate(18px, -10px);\n}\n.r-sidebar .modal-header .btn-close:hover, .r-sidebar .modal-header .btn-close:focus, .r-sidebar .modal-header .btn-close:active {\n opacity: 1;\n outline: none;\n transform: translate(15px, -2px);\n box-shadow: none;\n}\n\n.r-sidebar .react-select {\n max-width: 100%;\n}\n\n.r-sidebar {\n width: 400px;\n right: -100vw;\n height: 100vh;\n}\n.r-sidebar .r-handle {\n position: fixed;\n background-color: #FFFFFF;\n top: 50%;\n transform: translate(-50%, -50%);\n filter: drop-shadow(0.9px 0.9px 1.5px);\n height: 50px;\n display: flex;\n align-items: center;\n border-radius: 0px 5px 5px 0px;\n cursor: pointer;\n margin-left: 7px;\n z-index: 9;\n}\n.r-sidebar.customizer-md {\n width: 600px;\n}\n.r-sidebar.customizer-lg {\n width: 800px;\n}\n.r-sidebar.customizer-500 {\n width: 500px;\n}\n@media (max-width: 500px) {\n .r-sidebar.customizer-500 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-600 {\n width: 600px;\n}\n@media (max-width: 600px) {\n .r-sidebar.customizer-600 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-700 {\n width: 700px;\n}\n@media (max-width: 700px) {\n .r-sidebar.customizer-700 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-800 {\n width: 800px;\n}\n@media (max-width: 800px) {\n .r-sidebar.customizer-800 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-900 {\n width: 900px;\n}\n@media (max-width: 900px) {\n .r-sidebar.customizer-900 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-1000 {\n width: 1000px;\n}\n@media (max-width: 1000px) {\n .r-sidebar.customizer-1000 {\n width: 100vw;\n }\n}\n.r-sidebar.customizer-1500 {\n width: 1500px;\n}\n@media (max-width: 1500px) {\n .r-sidebar.customizer-1500 {\n width: 100vw;\n }\n}\n.r-sidebar.fullscreen {\n width: 100%;\n}\n.r-sidebar.open {\n right: 0;\n}\n\n.r-table-edit .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-year-read-view--down-arrow,\n.r-table-edit .react-datepicker__navigation-icon::before {\n border-color: #e0e0e0;\n border-style: solid;\n border-width: 3px 3px 0 0;\n content: \"\";\n display: block;\n height: 9px;\n position: absolute;\n top: 6px;\n width: 9px;\n}\n.r-table-edit .react-datepicker-wrapper {\n display: inline-block;\n width: 100% !important;\n padding: 0;\n border: 0;\n}\n.r-table-edit .react-datepicker-wrapper .react-datepicker__input-container input {\n height: 29px !important;\n}\n.r-table-edit .react-datepicker {\n font-family: \"Helvetica Neue\", helvetica, arial, sans-serif;\n font-size: 0.8rem;\n background-color: #FFFFFF;\n color: #000000;\n border: 1px solid #e0e0e0;\n border-radius: 0.3rem;\n display: inline-block;\n position: relative;\n line-height: initial;\n}\n.r-table-edit .react-datepicker--time-only .react-datepicker__time-container {\n border-left: 0;\n}\n.r-table-edit .react-datepicker--time-only .react-datepicker__time,\n.r-table-edit .react-datepicker--time-only .react-datepicker__time-box {\n border-bottom-left-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker-popper {\n position: relative;\n line-height: 0;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__triangle {\n stroke: #e0e0e0;\n}\n.r-table-edit .react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle {\n fill: #f0f0f0;\n color: #f0f0f0;\n}\n.r-table-edit .react-datepicker-popper[data-placement^=top] .react-datepicker__triangle {\n fill: #FFFFFF;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__header {\n text-align: center;\n background-color: #FFFFFF;\n border-bottom: 1px solid #e0e0e0;\n border-top-left-radius: 0.3rem;\n padding: 8px 0;\n position: relative;\n}\n.r-table-edit .react-datepicker__header--time {\n padding-bottom: 8px;\n padding-left: 5px;\n padding-right: 5px;\n}\n.r-table-edit .react-datepicker__header--time:not(.react-datepicker__header--time--only) {\n border-top-left-radius: 0;\n}\n.r-table-edit .react-datepicker__header:not(.react-datepicker__header--has-time-select) {\n border-top-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__year-dropdown-container--select,\n.r-table-edit .react-datepicker__month-dropdown-container--select,\n.r-table-edit .react-datepicker__month-year-dropdown-container--select,\n.r-table-edit .react-datepicker__year-dropdown-container--scroll,\n.r-table-edit .react-datepicker__month-dropdown-container--scroll,\n.r-table-edit .react-datepicker__month-year-dropdown-container--scroll {\n display: inline-block;\n margin: 0 15px;\n}\n.r-table-edit .react-datepicker__current-month,\n.r-table-edit .react-datepicker-time__header,\n.r-table-edit .react-datepicker-year-header {\n margin-top: 0;\n color: #000000;\n font-weight: bold;\n font-size: 0.944rem;\n}\n.r-table-edit h2.react-datepicker__current-month {\n padding: 0;\n margin: 0;\n}\n.r-table-edit .react-datepicker-time__header {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n.r-table-edit .react-datepicker__navigation {\n align-items: center;\n background: none;\n display: flex;\n justify-content: center;\n text-align: center;\n cursor: pointer;\n position: absolute;\n top: 2px;\n padding: 0;\n border: none;\n z-index: 1;\n height: 32px;\n width: 32px;\n text-indent: -999em;\n overflow: hidden;\n}\n.r-table-edit .react-datepicker__navigation--previous {\n left: 2px;\n}\n.r-table-edit .react-datepicker__navigation--next {\n right: 2px;\n}\n.r-table-edit .react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button) {\n right: 85px;\n}\n.r-table-edit .react-datepicker__navigation--years {\n position: relative;\n top: 0;\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.r-table-edit .react-datepicker__navigation--years-previous {\n top: 4px;\n}\n.r-table-edit .react-datepicker__navigation--years-upcoming {\n top: -4px;\n}\n.r-table-edit .react-datepicker__navigation:hover *::before {\n border-color: #eb4619;\n}\n.r-table-edit .react-datepicker__navigation-icon {\n position: relative;\n top: -1px;\n font-size: 20px;\n width: 0;\n}\n.r-table-edit .react-datepicker__navigation-icon--next {\n left: -2px;\n}\n.r-table-edit .react-datepicker__navigation-icon--next::before {\n transform: rotate(45deg);\n left: -7px;\n}\n.r-table-edit .react-datepicker__navigation-icon--previous {\n right: -2px;\n}\n.r-table-edit .react-datepicker__navigation-icon--previous::before {\n transform: rotate(225deg);\n right: -7px;\n}\n.r-table-edit .react-datepicker__month-container {\n float: left;\n}\n.r-table-edit .react-datepicker__year {\n margin: 0.4rem;\n text-align: center;\n}\n.r-table-edit .react-datepicker__year-wrapper {\n display: flex;\n flex-wrap: wrap;\n max-width: 180px;\n}\n.r-table-edit .react-datepicker__year .react-datepicker__year-text {\n display: inline-block;\n width: 4rem;\n margin: 2px;\n}\n.r-table-edit .react-datepicker__month {\n margin: 0.4rem;\n text-align: center;\n}\n.r-table-edit .react-datepicker__month .react-datepicker__month-text,\n.r-table-edit .react-datepicker__month .react-datepicker__quarter-text {\n display: inline-block;\n width: 4rem;\n margin: 2px;\n}\n.r-table-edit .react-datepicker__input-time-container {\n clear: both;\n width: 100%;\n float: left;\n margin: 5px 0 10px 15px;\n text-align: left;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__caption {\n display: inline-block;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container {\n display: inline-block;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input {\n display: inline-block;\n margin-left: 10px;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input {\n width: auto;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.r-table-edit .react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter {\n margin-left: 5px;\n display: inline-block;\n}\n.r-table-edit .react-datepicker__time-container {\n float: right;\n border-left: 1px solid #e0e0e0;\n width: 85px;\n}\n.r-table-edit .react-datepicker__time-container--with-today-button {\n display: inline;\n border: 1px solid #e0e0e0;\n border-radius: 0.3rem;\n position: absolute;\n right: -87px;\n top: 0;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time {\n position: relative;\n background: white;\n border-bottom-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box {\n width: 85px;\n overflow-x: hidden;\n margin: 0 auto;\n text-align: center;\n border-bottom-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list {\n list-style: none;\n margin: 0;\n height: calc(195px + 0.85rem);\n overflow-y: scroll;\n padding-right: 0;\n padding-left: 0;\n width: 100%;\n box-sizing: content-box;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item {\n height: 30px;\n padding: 5px 10px;\n white-space: nowrap;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover {\n cursor: pointer;\n background-color: #f0f0f0;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected {\n background-color: #216ba5;\n color: white;\n font-weight: bold;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover {\n background-color: #216ba5;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled {\n color: #ccc;\n}\n.r-table-edit .react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover {\n cursor: default;\n background-color: transparent;\n}\n.r-table-edit .react-datepicker__week-number {\n color: #ccc;\n display: inline-block;\n width: 1.7rem;\n line-height: 1.7rem;\n text-align: center;\n margin: 0.166rem;\n}\n.r-table-edit .react-datepicker__week-number.react-datepicker__week-number--clickable {\n cursor: pointer;\n}\n.r-table-edit .react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected,\n.react-datepicker__week-number--keyboard-selected):hover {\n border-radius: 0.3rem;\n background-color: #f0f0f0;\n}\n.r-table-edit .react-datepicker__week-number--selected {\n border-radius: 0.3rem;\n background-color: #216ba5;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__week-number--selected:hover {\n background-color: rgb(28.75, 93.2196969697, 143.75);\n}\n.r-table-edit .react-datepicker__week-number--keyboard-selected {\n border-radius: 0.3rem;\n background-color: rgb(41.5, 134.5606060606, 207.5);\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__week-number--keyboard-selected:hover {\n background-color: rgb(28.75, 93.2196969697, 143.75);\n}\n.r-table-edit .react-datepicker__day-names {\n white-space: nowrap;\n margin-bottom: -8px;\n}\n.r-table-edit .react-datepicker__week {\n white-space: nowrap;\n}\n.r-table-edit .react-datepicker__day-name,\n.r-table-edit .react-datepicker__day,\n.r-table-edit .react-datepicker__time-name {\n color: #000000;\n display: inline-block;\n width: 1.7rem;\n line-height: 1.7rem;\n text-align: center;\n margin: 0.166rem;\n}\n.r-table-edit .react-datepicker__day,\n.r-table-edit .react-datepicker__month-text,\n.r-table-edit .react-datepicker__quarter-text,\n.r-table-edit .react-datepicker__year-text {\n cursor: pointer;\n}\n.r-table-edit .react-datepicker__day:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text:not([aria-disabled=true]):hover {\n border-radius: 0.3rem;\n background-color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__day--today,\n.r-table-edit .react-datepicker__month-text--today,\n.r-table-edit .react-datepicker__quarter-text--today,\n.r-table-edit .react-datepicker__year-text--today {\n font-weight: bold;\n}\n.r-table-edit .react-datepicker__day--highlighted,\n.r-table-edit .react-datepicker__month-text--highlighted,\n.r-table-edit .react-datepicker__quarter-text--highlighted,\n.r-table-edit .react-datepicker__year-text--highlighted {\n border-radius: 0.3rem;\n background-color: #3dcc4a;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__day--highlighted:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover {\n background-color: rgb(49.8551020408, 189.6448979592, 62.5632653061);\n}\n.r-table-edit .react-datepicker__day--highlighted-custom-1,\n.r-table-edit .react-datepicker__month-text--highlighted-custom-1,\n.r-table-edit .react-datepicker__quarter-text--highlighted-custom-1,\n.r-table-edit .react-datepicker__year-text--highlighted-custom-1 {\n color: magenta;\n}\n.r-table-edit .react-datepicker__day--highlighted-custom-2,\n.r-table-edit .react-datepicker__month-text--highlighted-custom-2,\n.r-table-edit .react-datepicker__quarter-text--highlighted-custom-2,\n.r-table-edit .react-datepicker__year-text--highlighted-custom-2 {\n color: green;\n}\n.r-table-edit .react-datepicker__day--holidays,\n.r-table-edit .react-datepicker__month-text--holidays,\n.r-table-edit .react-datepicker__quarter-text--holidays,\n.r-table-edit .react-datepicker__year-text--holidays {\n position: relative;\n border-radius: 0.3rem;\n background-color: #ff6803;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__day--holidays .overlay,\n.r-table-edit .react-datepicker__month-text--holidays .overlay,\n.r-table-edit .react-datepicker__quarter-text--holidays .overlay,\n.r-table-edit .react-datepicker__year-text--holidays .overlay {\n position: absolute;\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n background-color: #333;\n color: #FFFFFF;\n padding: 4px;\n border-radius: 4px;\n white-space: nowrap;\n visibility: hidden;\n opacity: 0;\n transition: visibility 0s, opacity 0.3s ease-in-out;\n}\n.r-table-edit .react-datepicker__day--holidays:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--holidays:not([aria-disabled=true]):hover {\n background-color: rgb(207, 82.9642857143, 0);\n}\n.r-table-edit .react-datepicker__day--holidays:hover .overlay,\n.r-table-edit .react-datepicker__month-text--holidays:hover .overlay,\n.r-table-edit .react-datepicker__quarter-text--holidays:hover .overlay,\n.r-table-edit .react-datepicker__year-text--holidays:hover .overlay {\n visibility: visible;\n opacity: 1;\n}\n.r-table-edit .react-datepicker__day--selected,\n.r-table-edit .react-datepicker__day--in-selecting-range,\n.r-table-edit .react-datepicker__day--in-range,\n.r-table-edit .react-datepicker__month-text--selected,\n.r-table-edit .react-datepicker__month-text--in-selecting-range,\n.r-table-edit .react-datepicker__month-text--in-range,\n.r-table-edit .react-datepicker__quarter-text--selected,\n.r-table-edit .react-datepicker__quarter-text--in-selecting-range,\n.r-table-edit .react-datepicker__quarter-text--in-range,\n.r-table-edit .react-datepicker__year-text--selected,\n.r-table-edit .react-datepicker__year-text--in-selecting-range,\n.r-table-edit .react-datepicker__year-text--in-range {\n border-radius: 0.3rem;\n background-color: #216ba5;\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker__day--selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__day--in-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--in-range:not([aria-disabled=true]):hover {\n background-color: rgb(28.75, 93.2196969697, 143.75);\n}\n.r-table-edit .react-datepicker__day--keyboard-selected,\n.r-table-edit .react-datepicker__month-text--keyboard-selected,\n.r-table-edit .react-datepicker__quarter-text--keyboard-selected,\n.r-table-edit .react-datepicker__year-text--keyboard-selected {\n border-radius: 0.3rem;\n background-color: rgb(186.25, 217.0833333333, 241.25);\n color: rgb(0, 0, 0);\n}\n.r-table-edit .react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,\n.r-table-edit .react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover {\n background-color: rgb(28.75, 93.2196969697, 143.75);\n}\n.r-table-edit .react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range,\n.react-datepicker__month-text--in-range,\n.react-datepicker__quarter-text--in-range,\n.react-datepicker__year-text--in-range),\n.r-table-edit .react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range,\n.react-datepicker__month-text--in-range,\n.react-datepicker__quarter-text--in-range,\n.react-datepicker__year-text--in-range),\n.r-table-edit .react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range,\n.react-datepicker__month-text--in-range,\n.react-datepicker__quarter-text--in-range,\n.react-datepicker__year-text--in-range),\n.r-table-edit .react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range,\n.react-datepicker__month-text--in-range,\n.react-datepicker__quarter-text--in-range,\n.react-datepicker__year-text--in-range) {\n background-color: rgba(33, 107, 165, 0.5);\n}\n.r-table-edit .react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range),\n.r-table-edit .react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,\n.react-datepicker__month-text--in-selecting-range,\n.react-datepicker__quarter-text--in-selecting-range,\n.react-datepicker__year-text--in-selecting-range) {\n background-color: #f0f0f0;\n color: #000000;\n}\n.r-table-edit .react-datepicker__day--disabled,\n.r-table-edit .react-datepicker__month-text--disabled,\n.r-table-edit .react-datepicker__quarter-text--disabled,\n.r-table-edit .react-datepicker__year-text--disabled {\n cursor: default;\n color: #ccc;\n}\n.r-table-edit .react-datepicker__day--disabled .overlay,\n.r-table-edit .react-datepicker__month-text--disabled .overlay,\n.r-table-edit .react-datepicker__quarter-text--disabled .overlay,\n.r-table-edit .react-datepicker__year-text--disabled .overlay {\n position: absolute;\n bottom: 70%;\n left: 50%;\n transform: translateX(-50%);\n background-color: #333;\n color: #FFFFFF;\n padding: 4px;\n border-radius: 4px;\n white-space: nowrap;\n visibility: hidden;\n opacity: 0;\n transition: visibility 0s, opacity 0.3s ease-in-out;\n}\n.r-table-edit .react-datepicker__input-container {\n position: relative;\n display: inline-block;\n width: 100%;\n}\n.r-table-edit .react-datepicker__input-container .react-datepicker__calendar-icon {\n position: absolute;\n padding: 0.5rem;\n box-sizing: content-box;\n}\n.r-table-edit .react-datepicker__view-calendar-icon input {\n padding: 6px 10px 5px 25px;\n}\n.r-table-edit .react-datepicker__year-read-view,\n.r-table-edit .react-datepicker__month-read-view,\n.r-table-edit .react-datepicker__month-year-read-view {\n border: 1px solid transparent;\n border-radius: 0.3rem;\n position: relative;\n}\n.r-table-edit .react-datepicker__year-read-view:hover,\n.r-table-edit .react-datepicker__month-read-view:hover,\n.r-table-edit .react-datepicker__month-year-read-view:hover {\n cursor: pointer;\n}\n.r-table-edit .react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow {\n border-top-color: rgb(178.5, 178.5, 178.5);\n}\n.r-table-edit .react-datepicker__year-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-read-view--down-arrow,\n.r-table-edit .react-datepicker__month-year-read-view--down-arrow {\n transform: rotate(135deg);\n right: -16px;\n top: 0;\n}\n.r-table-edit .react-datepicker__year-dropdown,\n.r-table-edit .react-datepicker__month-dropdown,\n.r-table-edit .react-datepicker__month-year-dropdown {\n background-color: #f0f0f0;\n position: absolute;\n width: 50%;\n left: 25%;\n top: 30px;\n z-index: 1;\n text-align: center;\n border-radius: 0.3rem;\n border: 1px solid #e0e0e0;\n}\n.r-table-edit .react-datepicker__year-dropdown:hover,\n.r-table-edit .react-datepicker__month-dropdown:hover,\n.r-table-edit .react-datepicker__month-year-dropdown:hover {\n cursor: pointer;\n}\n.r-table-edit .react-datepicker__year-dropdown--scrollable,\n.r-table-edit .react-datepicker__month-dropdown--scrollable,\n.r-table-edit .react-datepicker__month-year-dropdown--scrollable {\n height: 150px;\n overflow-y: scroll;\n}\n.r-table-edit .react-datepicker__year-option,\n.r-table-edit .react-datepicker__month-option,\n.r-table-edit .react-datepicker__month-year-option {\n line-height: 20px;\n width: 100%;\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.r-table-edit .react-datepicker__year-option:first-of-type,\n.r-table-edit .react-datepicker__month-option:first-of-type,\n.r-table-edit .react-datepicker__month-year-option:first-of-type {\n border-top-left-radius: 0.3rem;\n border-top-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__year-option:last-of-type,\n.r-table-edit .react-datepicker__month-option:last-of-type,\n.r-table-edit .react-datepicker__month-year-option:last-of-type {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n border-bottom-left-radius: 0.3rem;\n border-bottom-right-radius: 0.3rem;\n}\n.r-table-edit .react-datepicker__year-option:hover,\n.r-table-edit .react-datepicker__month-option:hover,\n.r-table-edit .react-datepicker__month-year-option:hover {\n background-color: #ccc;\n}\n.r-table-edit .react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming,\n.r-table-edit .react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,\n.r-table-edit .react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming {\n border-bottom-color: rgb(178.5, 178.5, 178.5);\n}\n.r-table-edit .react-datepicker__year-option:hover .react-datepicker__navigation--years-previous,\n.r-table-edit .react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,\n.r-table-edit .react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous {\n border-top-color: rgb(178.5, 178.5, 178.5);\n}\n.r-table-edit .react-datepicker__year-option--selected,\n.r-table-edit .react-datepicker__month-option--selected,\n.r-table-edit .react-datepicker__month-year-option--selected {\n position: absolute;\n left: 15px;\n}\n.r-table-edit .react-datepicker__close-icon {\n cursor: pointer;\n background-color: transparent;\n border: 0;\n outline: 0;\n padding: 0 6px 0 0;\n position: absolute;\n top: 0;\n right: 0;\n height: 100%;\n display: table-cell;\n vertical-align: middle;\n}\n.r-table-edit .react-datepicker__close-icon::after {\n cursor: pointer;\n background-color: transparent;\n color: #c4c4c4;\n height: 16px;\n width: 16px;\n padding: 0px 2px;\n font-size: 25px;\n font-weight: 500;\n line-height: 0.5;\n text-align: center;\n display: table-cell;\n vertical-align: middle;\n content: \"×\";\n}\n.r-table-edit .react-datepicker__close-icon:hover::after {\n color: rgba(0, 0, 0, 0.8705882353) !important;\n}\n.r-table-edit .react-datepicker__close-icon--disabled {\n cursor: default;\n}\n.r-table-edit .react-datepicker__close-icon--disabled::after {\n cursor: default;\n background-color: #ccc;\n}\n.r-table-edit .react-datepicker__today-button {\n background: #f0f0f0;\n border-top: 1px solid #e0e0e0;\n cursor: pointer;\n text-align: center;\n font-weight: bold;\n padding: 5px 0;\n clear: left;\n}\n.r-table-edit .react-datepicker__portal {\n position: fixed;\n width: 100vw;\n height: 100vh;\n background-color: rgba(0, 0, 0, 0.8);\n left: 0;\n top: 0;\n justify-content: center;\n align-items: center;\n display: flex;\n z-index: 2147483647;\n}\n.r-table-edit .react-datepicker__portal .react-datepicker__day-name,\n.r-table-edit .react-datepicker__portal .react-datepicker__day,\n.r-table-edit .react-datepicker__portal .react-datepicker__time-name {\n width: 3rem;\n line-height: 3rem;\n}\n@media (max-width: 400px), (max-height: 550px) {\n .r-table-edit .react-datepicker__portal .react-datepicker__day-name,\n .r-table-edit .react-datepicker__portal .react-datepicker__day,\n .r-table-edit .react-datepicker__portal .react-datepicker__time-name {\n width: 2rem;\n line-height: 2rem;\n }\n}\n.r-table-edit .react-datepicker__portal .react-datepicker__current-month,\n.r-table-edit .react-datepicker__portal .react-datepicker-time__header {\n font-size: 1.44rem;\n}\n.r-table-edit .react-datepicker__children-container {\n width: 13.8rem;\n margin: 0.4rem;\n padding-right: 0.2rem;\n padding-left: 0.2rem;\n height: auto;\n}\n.r-table-edit .react-datepicker__aria-live {\n position: absolute;\n clip-path: circle(0);\n border: 0;\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n width: 1px;\n white-space: nowrap;\n}\n.r-table-edit .react-datepicker__calendar-icon {\n width: 1em;\n height: 1em;\n vertical-align: -0.125em;\n}\n.r-table-edit .react-datepicker-popper {\n z-index: 999 !important;\n position: fixed !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__current-month {\n color: rgba(0, 0, 0, 0.9) !important;\n font-weight: 500 !important;\n display: none;\n font-family: Montserrat, Helvetica, Arial, serif !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown {\n font-family: Montserrat, Helvetica, Arial, serif !important;\n /* Giao diện của menu dropdown (tháng và năm) */\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__month-dropdown-container {\n margin: 0px 3px 0px 0px;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__year-dropdown-container {\n margin: 0px 0px 0px 3px;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__month-select:focus,\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__year-select:focus {\n border: 1px solid #1989fa !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__month-select,\n.r-table-edit .react-datepicker-popper .react-datepicker__header__dropdown .react-datepicker__year-select {\n background-color: #FFFFFF;\n height: 22px;\n border-radius: 2px;\n padding: 2px 0;\n border: 1px solid hsl(0, 0%, 80%);\n outline: none;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__navigation {\n margin-top: 4px;\n color: #eb4619;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day-name {\n font-family: Montserrat, Helvetica, Arial, serif !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day {\n outline: none;\n border-radius: 20px !important;\n font-family: Montserrat, Helvetica, Arial, serif !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day:hover {\n background-color: rgba(235, 70, 25, 0.1) !important;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day--today {\n color: #eb4619;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day--today.react-datepicker__day--selected {\n color: #FFFFFF;\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day--today.react-datepicker__day--keyboard-selected {\n background-color: rgba(235, 70, 25, 0.1);\n}\n.r-table-edit .react-datepicker-popper .react-datepicker__day--selected {\n background-color: #eb4619 !important;\n}\n\n.tab-custom {\n font-family: Roboto, \"Segoe UI\", GeezaPro, \"DejaVu Serif\", \"sans-serif\", -apple-system, BlinkMacSystemFont;\n display: flex;\n}\n.tab-custom.tab-parent {\n border-bottom: solid 1px #c9c9c9;\n}\n.tab-custom .btn-scroll {\n cursor: pointer;\n display: flex;\n align-items: center;\n}\n.tab-custom .tab-component::-webkit-scrollbar {\n display: none;\n /* Ẩn thanh cuộn nếu không cần */\n}\n.tab-custom .tab-component {\n white-space: nowrap;\n overflow-x: hidden;\n scroll-behavior: smooth;\n}\n.tab-custom .tab-component > * {\n display: inline-block;\n}\n.tab-custom .tab-component .tab-custom-item {\n display: inline-block;\n padding: 3px 10px;\n line-height: 23px;\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n text-transform: uppercase;\n height: 30px;\n color: rgba(0, 0, 0, 0.5);\n}\n.tab-custom .tab-component .tab-custom-item.active {\n border-bottom: solid 2px #eb4619 !important;\n color: #eb4619;\n}\n.tab-custom.tab-child .tab-custom-item {\n font-size: 12px !important;\n line-height: 23px !important;\n border-radius: 5px 5px 0px 0px;\n margin: 8px 3px 0px 3px;\n box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 2px 6px 2px;\n}\n\n.bs-stepper {\n background-color: #FFFFFF;\n box-shadow: 0 4px 24px 0 rgba(0, 0, 0, 0.1);\n border-radius: 0.5rem;\n}\n.bs-stepper .bs-stepper-header {\n padding: 1.5rem 1.5rem;\n flex-wrap: wrap;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n margin: 0;\n}\n.bs-stepper .bs-stepper-header .line {\n flex: 0;\n min-width: auto;\n min-height: auto;\n background-color: transparent;\n margin: 0;\n padding: 0 1.75rem;\n color: #283046;\n font-size: 1.5rem;\n}\n.bs-stepper .bs-stepper-header .step {\n margin-bottom: 0.25rem;\n margin-top: 0.25rem;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger {\n flex-wrap: nowrap;\n padding: 0;\n font-weight: normal;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger .bs-stepper-box {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 38px;\n height: 38px;\n padding: 0.5em 0;\n font-weight: 500;\n color: #babfc7;\n background-color: rgba(186, 191, 199, 0.12);\n border-radius: 0.35rem;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger .bs-stepper-label {\n text-align: left;\n margin: 0;\n margin-top: 0.5rem;\n margin-left: 1rem;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger .bs-stepper-label .bs-stepper-title {\n display: inherit;\n color: #283046;\n font-weight: 600;\n line-height: 1rem;\n margin-bottom: 0rem;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger .bs-stepper-label .bs-stepper-subtitle {\n font-weight: 400;\n font-size: 0.85rem;\n color: #b9b9c3;\n}\n.bs-stepper .bs-stepper-header .step .step-trigger:hover {\n background-color: transparent;\n}\n.bs-stepper .bs-stepper-header .step.active .step-trigger .bs-stepper-box {\n background-color: #eb4619;\n color: #FFFFFF;\n box-shadow: 0 3px 6px 0 rgba(235, 70, 25, 0.4);\n}\n.bs-stepper .bs-stepper-header .step.active .step-trigger .bs-stepper-label .bs-stepper-title {\n color: #eb4619;\n}\n.bs-stepper .bs-stepper-header .step.crossed .step-trigger .bs-stepper-box {\n background-color: rgba(235, 70, 25, 0.12);\n color: #eb4619;\n}\n.bs-stepper .bs-stepper-header .step.crossed .step-trigger .bs-stepper-label .bs-stepper-title {\n color: #b9b9c3;\n}\n.bs-stepper .bs-stepper-header .step.crossed + .line {\n color: #eb4619;\n}\n.bs-stepper .bs-stepper-content {\n padding: 1.5rem 1.5rem;\n}\n.bs-stepper .bs-stepper-content .content {\n margin-left: 0;\n}\n.bs-stepper .bs-stepper-content .content .content-header {\n margin-bottom: 1rem;\n}\n.bs-stepper.vertical .bs-stepper-header {\n border-right: 1px solid #e0e0e0;\n border-bottom: none;\n}\n.bs-stepper.vertical .bs-stepper-header .step .step-trigger {\n padding: 1rem 0;\n}\n.bs-stepper.vertical .bs-stepper-header .line {\n display: none;\n}\n.bs-stepper.vertical .bs-stepper-content {\n width: 100%;\n padding-top: 2.5rem;\n}\n.bs-stepper.vertical .bs-stepper-content .content:not(.active) {\n display: none;\n}\n.bs-stepper.vertical.wizard-icons .step {\n text-align: center;\n}\n.bs-stepper.wizard-modern {\n background-color: transparent;\n box-shadow: none;\n}\n.bs-stepper.wizard-modern .bs-stepper-header {\n border: none;\n}\n.bs-stepper.wizard-modern .bs-stepper-content {\n background-color: #FFFFFF;\n border-radius: 0.5rem;\n box-shadow: 0 4px 24px 0 rgba(0, 0, 0, 0.1);\n}\n\n.horizontal-wizard,\n.vertical-wizard,\n.modern-horizontal-wizard,\n.modern-vertical-wizard {\n margin-bottom: 2.2rem;\n}\n\nhtml[data-textdirection=rtl] .btn-prev,\nhtml[data-textdirection=rtl] .btn-next {\n display: flex;\n}\nhtml[data-textdirection=rtl] .btn-prev i,\nhtml[data-textdirection=rtl] .btn-prev svg,\nhtml[data-textdirection=rtl] .btn-next i,\nhtml[data-textdirection=rtl] .btn-next svg {\n transform: rotate(-180deg);\n}\n\n@media (max-width: 992px) {\n .bs-stepper .bs-stepper-header {\n flex-direction: column;\n align-items: flex-start;\n }\n .bs-stepper .bs-stepper-header .step .step-trigger {\n padding: 0.5rem 0 !important;\n flex-direction: row;\n }\n .bs-stepper .bs-stepper-header .line {\n display: none;\n }\n .bs-stepper.vertical {\n flex-direction: column;\n }\n .bs-stepper.vertical .bs-stepper-header {\n align-items: flex-start;\n }\n .bs-stepper.vertical .bs-stepper-content {\n padding-top: 1.5rem;\n }\n}\n.r-table-edit .r-grid {\n font-size: 12px;\n}\n.r-table-edit .r-grid .r-search {\n display: flex;\n position: relative;\n align-items: center;\n}\n.r-table-edit .r-grid .r-search .input__value {\n z-index: 1;\n}\n.r-table-edit .r-grid .r-search .input__value.is-clearable {\n padding-right: 25px;\n}\n.r-table-edit .r-grid .r-search .input__clear-icon {\n position: absolute;\n right: 5px;\n z-index: 10;\n}\n.r-table-edit .r-grid .r-gridtable {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n overflow-y: scroll;\n position: relative;\n background-color: #FFFFFF;\n color: rgba(0, 0, 0, 0.8705882353);\n font-weight: 400;\n border: 1px solid #e0e0e0;\n /* Toàn bộ thanh cuộn */\n /* Nền của thanh cuộn */\n /* Thanh trượt (thumb) */\n /* Khi hover */\n}\n.r-table-edit .r-grid .r-gridtable table {\n table-layout: fixed;\n border-collapse: separate;\n border-spacing: 0px;\n}\n.r-table-edit .r-grid .r-gridtable::-webkit-scrollbar {\n width: 9px;\n /* Độ rộng của thanh cuộn */\n height: 9px;\n /* Độ cao của thanh cuộn */\n}\n.r-table-edit .r-grid .r-gridtable::-webkit-scrollbar-track {\n background: #FCFCFC;\n /* Màu nền nhạt */\n}\n.r-table-edit .r-grid .r-gridtable::-webkit-scrollbar-thumb {\n background: #8B8B8B;\n /* Màu xám nhạt */\n border-radius: 6px;\n /* Bo góc giống Edge */\n}\n.r-table-edit .r-grid .r-gridtable::-webkit-scrollbar-thumb:hover {\n background: #636363;\n /* Màu đậm hơn khi hover */\n}\n.r-table-edit .r-grid .r-gridtable .react-resizable-handle.react-resizable-handle-se {\n position: absolute;\n right: 0px;\n top: 0px;\n width: 10px;\n height: 100%;\n cursor: col-resize;\n background-image: none;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter svg.active {\n color: #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter-popup .react-select-table .select-value {\n line-height: 20px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter-popup .react-select-table .select-placeholder {\n line-height: 20px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter-popup .react-select-table .r-select-is-focus {\n border-color: #eb4619 !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-filter-popup .form-control:focus {\n border-color: #eb4619 !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-no-data {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n padding: 20px 9px;\n color: #8f8f8f;\n}\n.r-table-edit .r-grid .r-gridtable .r-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 0.3);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 3;\n}\n.r-table-edit .r-grid .r-gridtable .r-loading-overlay .r-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n padding: 7px 9px;\n color: #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed {\n z-index: 2 !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed.fix-right .r-headercell-div {\n border-left: 1px solid #e0e0e0;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed.fix-left .r-headercell-div {\n border-right: 1px solid #e0e0e0;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed.fix-left.fixed-last .r-headercell-div {\n box-shadow: 2px 0 4px -1px rgba(0, 0, 0, 0.1);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .cell-fixed.fix-right.fixed-last .r-headercell-div {\n box-shadow: -2px 0 4px -1px rgba(0, 0, 0, 0.1);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .r-headercell {\n color: rgba(0, 0, 0, 0.8705882353);\n position: sticky;\n padding: 0px;\n height: 42px;\n z-index: 1;\n border-width: 0px;\n line-height: 16px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .r-headercell .r-headercell-div {\n border-right: 1px solid #e0e0e0;\n border-bottom: 1px solid #e0e0e0;\n background-color: #FFFFFF;\n display: flex;\n align-items: center;\n text-align: center;\n padding: 5px 10px;\n height: 100%;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .r-headercell .header-content {\n display: flex;\n flex: 1 1 0%;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridheader .r-row .r-headercell .header-content .text-content {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row:first-of-type .r-rowcell-div {\n border-top-color: #FFFFFF;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row {\n font-size: 13px;\n will-change: transform;\n backface-visibility: hidden;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .cell-fixed {\n position: sticky;\n z-index: 1;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .cell-fixed .r-rowcell.r-cell-selected-right {\n margin-right: 1px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell {\n background-color: #FFFFFF;\n border-bottom: 1px solid #e0e0e0;\n border-right: 1px solid #e0e0e0;\n vertical-align: middle;\n padding: 0;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell.cell-fixed .r-rowcell-div.r-cell-selected-right {\n padding-right: 1px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell.fix-right {\n border-left: 1px solid #e0e0e0;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell.fix-right.fixed-last {\n border-left: 1px solid #e0e0e0;\n box-shadow: -2px 0 4px -1px rgba(0, 0, 0, 0.1);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell.fix-left.fixed-last {\n border-right: 1px solid #e0e0e0;\n box-shadow: 2px 0 4px -1px rgba(0, 0, 0, 0.1);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell.r-active-row {\n background-color: #fce6df;\n border-right: 2px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div {\n min-height: 28px !important;\n border: 1px solid transparent;\n position: relative;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-icon-expand {\n transition: transform 0.3s ease;\n position: absolute;\n left: 3px;\n top: 8px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-icon-expand.is-open {\n transform: rotate(90deg);\n -moz-transform: rotate(90deg);\n -webkit-transform: rotate(90deg);\n -o-transform: rotate(90deg);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .arrow-context-menu {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 15px;\n width: 15px;\n background-color: #FFFFFF;\n border-radius: 10px;\n border: 1px solid #e0e0e0;\n box-shadow: 0px 0px 2px #e0e0e0;\n right: -5px;\n bottom: -5px;\n z-index: 10000;\n cursor: pointer;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.command {\n padding-top: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div:focus {\n outline: none;\n /* bỏ viền focus mặc định */\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-disable {\n background-color: #f9f9f9;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-active-cell {\n background-color: rgb(255, 240, 240);\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-cell-text:focus {\n outline: none;\n /* bỏ viền focus mặc định */\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-icon-invalid {\n position: absolute;\n width: 10px;\n height: 10px;\n top: 0px;\n left: -6px;\n rotate: -90deg;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-drag-icon {\n position: absolute;\n border: 1px solid #FFFFFF;\n bottom: -2px;\n right: -2px;\n width: 7px;\n height: 7px;\n background-color: #eb4619;\n border-radius: 20%;\n cursor: crosshair;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-cell-text {\n padding: 0px 7px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n display: flex;\n align-items: center;\n min-width: 0;\n min-height: 28px;\n flex: 1;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-cell-text .r-drop-icon {\n position: absolute;\n fill: #c4c4c4 !important;\n right: 8.5px;\n top: 3.5px;\n cursor: pointer;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .is-invalid {\n border-width: 0px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .is-invalid .r-select-is-invalid {\n border-width: 0px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-selected-top {\n border-top: 1px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-selected-bottom {\n border-bottom: 1px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-selected-left {\n border-left: 1px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div.r-cell-selected-right {\n border-right: 1px solid #eb4619;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .react-select-table.is-invalid {\n border-width: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .react-select-table .r-select-is-focus {\n border-width: 0px !important;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .react-select-table .select-table-control {\n border-radius: 0px;\n border-width: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .react-select-table .select-table-control.r-select-is-focus {\n border: 1px solid #1989fa;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit .display-value {\n cursor: pointer;\n border-radius: 0px;\n background-color: #FFFFFF;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit .input-display {\n border-width: 0px;\n box-sizing: border-box;\n border: none;\n /* Loại bỏ border */\n outline: none;\n /* Loại bỏ outline khi input được chọn */\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit .form-input-content .form-control {\n border-radius: 4px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit .form-input-content .form-control:focus {\n border: 1px solid #1989fa;\n outline: none;\n box-shadow: none;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit input::placeholder {\n color: #eb4619;\n opacity: 1;\n /* Firefox */\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__display {\n vertical-align: middle;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit {\n display: none;\n text-align: left;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit.active {\n display: flex;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit .form-label {\n font-size: 10px;\n margin-bottom: 0px;\n text-align: left;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit .form-control {\n border-radius: 0px;\n height: 23px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-edit-inline .form__edit .form__element {\n margin: 0px 2px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .r-date-input {\n text-align: center;\n height: 29px;\n border: 1px solid #ccc;\n border-radius: 4px;\n padding: 5px;\n font-size: 14px;\n background-color: #f9f9f9;\n color: #333;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div .form-control:focus {\n border-radius: 0px;\n border-width: 0px;\n background-color: #f8f8f8;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridcontent .r-row .r-rowcell .r-rowcell-div input {\n font-size: 13px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot {\n color: #283046;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot .r-row {\n bottom: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot .r-row .r-footer {\n background-color: #fafafa;\n font-size: 14px;\n font-weight: 600;\n width: 100px;\n position: sticky;\n z-index: 1;\n bottom: 0;\n border-width: 0px;\n padding: 0px;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot .r-row .r-footer.cell-fixed {\n z-index: 2;\n}\n.r-table-edit .r-grid .r-gridtable .r-gridfoot .r-row .r-footer .r-footer-div {\n height: 30px;\n padding: 5px 7px;\n}\n.r-table-edit .r-grid .r-gridtable .formula-dropdown {\n box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 15px;\n}\n.r-table-edit .r-grid .text-left .form-label {\n text-align: left;\n}\n.r-table-edit .r-grid .r-toolbar {\n border: 1px solid #e0e0e0;\n height: 44px;\n}\n.r-table-edit .r-grid .r-toolbar.r-toolbar-bottom {\n border-top-width: 0px;\n}\n.r-table-edit .r-grid .r-toolbar.r-toolbar-top {\n border-bottom-width: 0px;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-left {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-left .r-toolbar-item {\n margin: 7px 0px 7px 7px;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-center {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-center .r-toolbar-item {\n margin: 7px 3px 7px 3px;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-right {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n}\n.r-table-edit .r-grid .r-toolbar .r-toolbar-items .r-toolbar-right .r-toolbar-item {\n margin: 7px 7px 7px 0px;\n}\n.r-table-edit .r-setting-container {\n margin: 0px 15px;\n}\n.r-table-edit .r-setting-container .r-setting-content {\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n overflow-y: scroll;\n position: relative;\n background-color: #FFFFFF;\n color: rgba(0, 0, 0, 0.8705882353);\n font-weight: 400;\n border-left: 1px solid #e0e0e0;\n border-right: 1px solid #e0e0e0;\n /* Toàn bộ thanh cuộn */\n /* Nền của thanh cuộn */\n /* Thanh trượt (thumb) */\n /* Khi hover */\n}\n.r-table-edit .r-setting-container .r-setting-content::-webkit-scrollbar {\n width: 9px;\n /* Độ rộng của thanh cuộn */\n height: 9px;\n /* Độ cao của thanh cuộn */\n}\n.r-table-edit .r-setting-container .r-setting-content::-webkit-scrollbar-track {\n background: #FCFCFC;\n /* Màu nền nhạt */\n}\n.r-table-edit .r-setting-container .r-setting-content::-webkit-scrollbar-thumb {\n background: #8B8B8B;\n /* Màu xám nhạt */\n border-radius: 6px;\n /* Bo góc giống Edge */\n}\n.r-table-edit .r-setting-container .r-setting-content::-webkit-scrollbar-thumb:hover {\n background: #636363;\n /* Màu đậm hơn khi hover */\n}\n.r-table-edit .r-setting-container .r-setting-row {\n padding: 5px !important;\n margin: 0px;\n border-bottom: 1px solid #e0e0e0;\n font-size: 13px;\n display: flex;\n align-items: center;\n}\n.r-table-edit .r-setting-container .r-setting-row .r-setting-cell {\n padding-right: 10px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.r-table-edit .r-setting-container .r-setting-row .r-setting-cell .form-control {\n font-size: 13px !important;\n}\n.r-table-edit .r-setting-container .r-setting-row.r-setting-header {\n font-size: 12px !important;\n}\n.r-table-edit.r-virtualized-table .r-row:hover .r-rowcell {\n background-color: #fce6df !important;\n}\n.r-table-edit .r-pager {\n border: 1px solid #e0e0e0;\n border-top-width: 0px;\n min-height: 50px;\n width: 100%;\n display: inline-block;\n}\n.r-table-edit .r-pager .r-pagercontainer {\n margin-left: 10px;\n float: left;\n height: 100%;\n display: block;\n align-items: center;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-button {\n display: inline-block;\n margin: 9px 6px;\n height: 30px;\n width: 30px;\n padding: 6px;\n border-width: 0px;\n background-color: transparent;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-button svg {\n font-size: 16px;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-number {\n display: inline-block;\n margin: 10px 4px 0px 0px;\n height: 25px;\n width: 25px;\n font-size: 13px;\n padding-top: 4px;\n text-align: center;\n cursor: pointer;\n border-radius: 5px;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-number.r-active {\n background-color: rgba(235, 70, 25, 0.1);\n color: #eb4619;\n}\n.r-table-edit .r-pager .r-pagercontainer .r-number:hover {\n border: 1px solid #eb4619;\n}\n.r-table-edit .r-pager .r-pagesize {\n margin-left: 20px;\n font-size: 13px;\n display: inline-block;\n}\n.r-table-edit .r-pager .r-pagesize .select-pagesize__menu-portal {\n z-index: 5;\n}\n.r-table-edit .r-pager .r-parentmsgbar {\n font-size: 13px;\n float: right;\n padding-bottom: 9px;\n padding-right: 18px;\n padding-top: 14px;\n}\n\n.r-tooltip .tooltip-inner {\n font-size: 11px;\n}\n.r-tooltip.tooltip-error ::before {\n border-top-color: rgb(235, 78, 78);\n}\n.r-tooltip.tooltip-error .tooltip-inner {\n background-color: rgb(235, 78, 78);\n}\n\n.btn-input-style {\n font-weight: 500;\n text-transform: uppercase;\n border: 1px solid #e0e0e0;\n border-radius: 5px;\n margin-left: 3px;\n height: 28px;\n padding: 2px 5px;\n cursor: pointer;\n}\n.btn-input-style:hover {\n background-color: rgba(235, 70, 25, 0.1);\n color: #eb4619;\n}\n.btn-input-style.active-custom {\n background-color: #eb4619;\n color: #FFFFFF;\n}";
|
|
41291
41315
|
styleInject(css_248z$2);
|
|
41292
41316
|
|
|
41293
41317
|
const getColumn = (contentColumns, col, index) => {
|
|
@@ -41462,38 +41486,44 @@ const PasteData = async (props) => {
|
|
|
41462
41486
|
};
|
|
41463
41487
|
|
|
41464
41488
|
const CellComponent = React__default["default"].memo((props) => {
|
|
41465
|
-
const { col, row, indexRow, indexCol, isSelected, setSelectedCell, objWidthFixLeft, objWidthFixRight, lastObjWidthFixLeft, fisrtObjWidthFixRight, editCell, selectedCell, startCell, editDisable, addDisable, fieldKey, defaultValue, dataSource, formatSetting, selectEnable, isMulti, selectedRows, setStartCell, setSelectedRows, handleCommandClick, handleDuplicate, changeDataSource, handleKeyDown, onDuplicate, focusEditElementCell,
|
|
41489
|
+
const { col, row, indexRow, indexCol, isSelected, setSelectedCell, objWidthFixLeft, objWidthFixRight, lastObjWidthFixLeft, fisrtObjWidthFixRight, editCell, selectedCell, startCell, editDisable, addDisable, fieldKey, defaultValue, dataSource, formatSetting, selectEnable, isMulti, selectedRows, setStartCell, setSelectedRows, handleCommandClick, handleDuplicate, changeDataSource, handleKeyDown, onDuplicate, focusEditElementCell, containerRef, totalCount, toolbarSetting, buttonSetting, gridRef, handleDataChange, handeCopyCell, idTable, visibleContentColumns, isCopying, typeDragging, contentColumns, fieldUniKey, rowChange } = props;
|
|
41466
41490
|
const { t } = reactI18next.useTranslation();
|
|
41467
41491
|
const isActiveCell = col.field !== '#' && selectedCell && indexRow >= selectedCell.minRow && indexRow <= selectedCell.maxRow && indexCol >= selectedCell.minCol && indexCol <= selectedCell.maxCol;
|
|
41468
41492
|
const isActiveRow = col.field === '#' && selectedCell && indexRow >= selectedCell.minRow && indexRow <= selectedCell.maxRow;
|
|
41469
41493
|
React$5.useEffect(() => {
|
|
41494
|
+
if (!containerRef?.current)
|
|
41495
|
+
return;
|
|
41496
|
+
const rafId = { current: 0 }; // hoặc useRef<number | null>(null)
|
|
41470
41497
|
const handleMouseMove = (e) => {
|
|
41471
|
-
if (!typeDragging.current
|
|
41498
|
+
if (!typeDragging.current)
|
|
41472
41499
|
return;
|
|
41473
|
-
|
|
41474
|
-
const container = tableElement.current;
|
|
41500
|
+
const container = containerRef.current;
|
|
41475
41501
|
const rect = container.getBoundingClientRect();
|
|
41476
|
-
const
|
|
41477
|
-
const scrollStepHor =
|
|
41478
|
-
|
|
41479
|
-
|
|
41480
|
-
|
|
41481
|
-
|
|
41482
|
-
else if (e.clientY > rect.bottom - 30)
|
|
41483
|
-
|
|
41484
|
-
|
|
41485
|
-
|
|
41486
|
-
|
|
41487
|
-
|
|
41488
|
-
|
|
41489
|
-
|
|
41502
|
+
const scrollStepVert = 50;
|
|
41503
|
+
const scrollStepHor = 100;
|
|
41504
|
+
let newTop = container.scrollTop;
|
|
41505
|
+
let newLeft = container.scrollLeft;
|
|
41506
|
+
if (e.clientY < rect.top + 30)
|
|
41507
|
+
newTop -= scrollStepVert;
|
|
41508
|
+
else if (e.clientY > rect.bottom - 30)
|
|
41509
|
+
newTop += scrollStepVert;
|
|
41510
|
+
if (e.clientX < rect.left + 30)
|
|
41511
|
+
newLeft -= scrollStepHor;
|
|
41512
|
+
else if (e.clientX > rect.right - 30)
|
|
41513
|
+
newLeft += scrollStepHor;
|
|
41514
|
+
// Scroll smooth, chỉ khi cần
|
|
41515
|
+
if (newTop !== container.scrollTop || newLeft !== container.scrollLeft) {
|
|
41516
|
+
if (rafId.current)
|
|
41517
|
+
cancelAnimationFrame(rafId.current);
|
|
41518
|
+
rafId.current = requestAnimationFrame(() => {
|
|
41519
|
+
container.scrollTo({ top: newTop, left: newLeft, behavior: "smooth" });
|
|
41520
|
+
});
|
|
41490
41521
|
}
|
|
41491
41522
|
};
|
|
41492
41523
|
const handleMouseUp = () => {
|
|
41493
|
-
if (!typeDragging.current)
|
|
41524
|
+
if (!typeDragging.current)
|
|
41494
41525
|
return;
|
|
41495
|
-
|
|
41496
|
-
document.body.style.userSelect = ""; // bật lại select
|
|
41526
|
+
document.body.style.userSelect = "";
|
|
41497
41527
|
typeDragging.current = 0;
|
|
41498
41528
|
isCopying.current = false;
|
|
41499
41529
|
};
|
|
@@ -41502,8 +41532,10 @@ const CellComponent = React__default["default"].memo((props) => {
|
|
|
41502
41532
|
return () => {
|
|
41503
41533
|
window.removeEventListener("mousemove", handleMouseMove);
|
|
41504
41534
|
window.removeEventListener("mouseup", handleMouseUp);
|
|
41535
|
+
if (rafId.current)
|
|
41536
|
+
cancelAnimationFrame(rafId.current);
|
|
41505
41537
|
};
|
|
41506
|
-
}, [
|
|
41538
|
+
}, [containerRef]);
|
|
41507
41539
|
if (col.visible === false) {
|
|
41508
41540
|
return null;
|
|
41509
41541
|
}
|
|
@@ -41549,7 +41581,7 @@ const CellComponent = React__default["default"].memo((props) => {
|
|
|
41549
41581
|
},
|
|
41550
41582
|
onKeyDown: (e) => {
|
|
41551
41583
|
if (e.code === "KeyD" && e.ctrlKey && !editDisable && !addDisable) {
|
|
41552
|
-
handleDuplicate(dataSource, startCell.row, fieldKey, defaultValue, fieldUniKey, changeDataSource,
|
|
41584
|
+
handleDuplicate(dataSource, startCell.row, fieldKey, defaultValue, fieldUniKey, changeDataSource, containerRef, totalCount, toolbarSetting, buttonSetting, editDisable, addDisable, onDuplicate);
|
|
41553
41585
|
e.preventDefault();
|
|
41554
41586
|
e.stopPropagation();
|
|
41555
41587
|
}
|
|
@@ -41585,14 +41617,14 @@ const CellComponent = React__default["default"].memo((props) => {
|
|
|
41585
41617
|
} // chỉ chuột trái
|
|
41586
41618
|
if (editDisable) {
|
|
41587
41619
|
return;
|
|
41588
|
-
} // chỉ chuột trái
|
|
41620
|
+
} // chỉ chuột trái
|
|
41589
41621
|
typeDragging.current = type;
|
|
41590
41622
|
document.body.style.userSelect = "none"; // chặn select
|
|
41591
41623
|
let minCol = indexCol;
|
|
41592
41624
|
let maxCol = indexCol;
|
|
41593
41625
|
let minRow = indexRow;
|
|
41594
41626
|
if (type === 2) {
|
|
41595
|
-
if (selectedCell && selectedCell
|
|
41627
|
+
if (selectedCell && selectedCell.maxCol === selectedCell.minCol && selectedCell.maxRow === selectedCell.minRow) {
|
|
41596
41628
|
isCopying.current = true;
|
|
41597
41629
|
}
|
|
41598
41630
|
minCol = startCell?.col ?? indexCol;
|
|
@@ -41602,6 +41634,7 @@ const CellComponent = React__default["default"].memo((props) => {
|
|
|
41602
41634
|
minCol = visibleContentColumns[0].index;
|
|
41603
41635
|
maxCol = visibleContentColumns[visibleContentColumns.length - 1].index;
|
|
41604
41636
|
}
|
|
41637
|
+
//tránh trường hợp nhấn ra ngoài không ăn dữ liệu trong edit element
|
|
41605
41638
|
if (editCell) {
|
|
41606
41639
|
requestAnimationFrame(() => {
|
|
41607
41640
|
setStartCell({ row: minRow, col: minCol });
|
|
@@ -41670,7 +41703,7 @@ const CellComponent = React__default["default"].memo((props) => {
|
|
|
41670
41703
|
}
|
|
41671
41704
|
/** ---------------- INDEX COLUMN (“#”) ---------------- */
|
|
41672
41705
|
if (col.field === "#") {
|
|
41673
|
-
return (jsxRuntime.jsx("td", { ...commonTdProps, tabIndex: Number(`${indexRow}${indexCol}`), onMouseDown: (e) => handleMouseDown(e, 3), className: classNames$1(commonTdProps.className, "cursor-pointer"), style: { ...commonTdProps.style, textAlign: "center" }, children: jsxRuntime.jsx("div", { className: "r-rowcell-div", children: indexRow + 1 }) }));
|
|
41706
|
+
return (jsxRuntime.jsx("td", { ...commonTdProps, tabIndex: Number(`${indexRow}${indexCol}`), onMouseDown: (e) => handleMouseDown(e, 3), className: classNames$1('index-cell', commonTdProps.className, "cursor-pointer"), style: { ...commonTdProps.style, textAlign: "center" }, children: jsxRuntime.jsx("div", { className: "r-rowcell-div", children: indexRow + 1 }) }));
|
|
41674
41707
|
}
|
|
41675
41708
|
/** ---------------- CHECKBOX COLUMN ---------------- */
|
|
41676
41709
|
if (col.field === "checkbox") {
|
|
@@ -43704,25 +43737,54 @@ const RenderFilterElement$1 = ({ filter, optionsFilter, formatSetting, filterBy,
|
|
|
43704
43737
|
}, children: t('Clear') })] })] }));
|
|
43705
43738
|
};
|
|
43706
43739
|
|
|
43707
|
-
const TableComponent = ({ idTable, dataSource, contentColumns, headerColumns, visibleColumns, selectedRows, setSelectedRows, selectedCell, startCell, editCell, gridRef, objHeaderWidthFixLeft, objHeaderWidthFixRight, objWidthFixLeft, objWidthFixRight, lastObjWidthFixLeft, fisrtObjWidthFixRight, totalCount, isMulti, selectEnable, editDisable, addDisable, defaultValue, fieldKey, fieldUniKey, formatSetting, toolbarSetting, buttonSetting,
|
|
43708
|
-
|
|
43709
|
-
|
|
43710
|
-
|
|
43711
|
-
|
|
43712
|
-
|
|
43713
|
-
|
|
43714
|
-
|
|
43715
|
-
|
|
43716
|
-
|
|
43717
|
-
|
|
43718
|
-
|
|
43719
|
-
|
|
43720
|
-
|
|
43721
|
-
|
|
43722
|
-
|
|
43723
|
-
|
|
43724
|
-
|
|
43725
|
-
|
|
43740
|
+
const TableComponent = ({ idTable, dataSource, contentColumns, headerColumns, visibleColumns, selectedRows, setSelectedRows, selectedCell, startCell, editCell, gridRef, objHeaderWidthFixLeft, objHeaderWidthFixRight, objWidthFixLeft, objWidthFixRight, lastObjWidthFixLeft, fisrtObjWidthFixRight, totalCount, isMulti, selectEnable, editDisable, addDisable, defaultValue, fieldKey, fieldUniKey, formatSetting, toolbarSetting, buttonSetting, containerRef, handleDataChange, changeDataSource, handleCommandClick, handleDuplicate, handleKeyDown, onDuplicate, setSelectedCell, setStartCell, focusEditElementCell, setContentColumns, handeCopyCell, isCopying, typeDragging, rowChange, visibleContentColumns, filterBy, setFilterBy, orderBy, setOrderBy, optionsFilter, allowFilter, allowOrder, searchSetting, searchTerm, searchClient, height, rowHeight, haveSum }) => {
|
|
43741
|
+
let filteredData = dataSource.map((row, index) => ({ data: row, indexRow: index }));
|
|
43742
|
+
if (((filterBy && filterBy.length > 0) || (searchSetting?.searchTerm !== undefined ? searchSetting?.searchTerm : searchTerm)) && !searchClient) {
|
|
43743
|
+
filteredData = filteredData.filter(({ data }) => CheckRowMatch(data, filterBy, searchSetting?.searchTerm !== undefined ? searchSetting?.searchTerm : searchTerm, searchSetting?.keyField ?? []));
|
|
43744
|
+
}
|
|
43745
|
+
const [scrollTop, setScrollTop] = React$5.useState(0);
|
|
43746
|
+
const totalHeight = filteredData.length * rowHeight;
|
|
43747
|
+
const visibleCount = Math.ceil(height / rowHeight) + 5; // buffer
|
|
43748
|
+
const startIndex = Math.floor(scrollTop / rowHeight);
|
|
43749
|
+
const endIndex = Math.min(startIndex + visibleCount, filteredData.length);
|
|
43750
|
+
const offsetY = (startIndex * rowHeight);
|
|
43751
|
+
const rafId = React$5.useRef(null);
|
|
43752
|
+
React$5.useEffect(() => {
|
|
43753
|
+
const el = containerRef.current;
|
|
43754
|
+
if (!el) {
|
|
43755
|
+
return;
|
|
43756
|
+
}
|
|
43757
|
+
const onScroll = () => {
|
|
43758
|
+
if (rafId.current) {
|
|
43759
|
+
cancelAnimationFrame(rafId.current);
|
|
43760
|
+
}
|
|
43761
|
+
rafId.current = requestAnimationFrame(() => {
|
|
43762
|
+
setScrollTop(el.scrollTop);
|
|
43763
|
+
});
|
|
43764
|
+
};
|
|
43765
|
+
el.addEventListener("scroll", onScroll);
|
|
43766
|
+
return () => {
|
|
43767
|
+
el.removeEventListener("scroll", onScroll);
|
|
43768
|
+
if (rafId.current) {
|
|
43769
|
+
cancelAnimationFrame(rafId.current);
|
|
43770
|
+
}
|
|
43771
|
+
};
|
|
43772
|
+
}, []);
|
|
43773
|
+
return (jsxRuntime.jsx("div", { ref: containerRef, className: "r-gridtable", style: { maxHeight: `${height ? `${height}px` : "auto"}` }, children: jsxRuntime.jsxs("table", { style: { width: "100%" }, role: "presentation", children: [jsxRuntime.jsx(RenderColGroup, { contentColumns: visibleColumns }), jsxRuntime.jsx("thead", { className: "r-gridheader", role: "rowgroup", children: headerColumns.map((element, indexParent) => {
|
|
43774
|
+
return (jsxRuntime.jsx("tr", { className: "r-row", role: "row", children: element?.map((col, index) => {
|
|
43775
|
+
return (jsxRuntime.jsx(HeaderTableCol$1, { col: col, idTable: idTable ?? "", dataSource: dataSource, indexCol: index, indexParent: indexParent, isMulti: isMulti ?? false, objHeaderWidthFixLeft: objHeaderWidthFixLeft, objHeaderWidthFixRight: objHeaderWidthFixRight, selectEnable: selectEnable ?? false, selectedRows: selectedRows, setSelectedRows: setSelectedRows, container: containerRef, filterBy: filterBy, orderBy: orderBy, optionsFilter: optionsFilter, allowFilter: allowFilter, allowOrder: allowOrder, formatSetting: formatSetting, changeFilter: (val) => {
|
|
43776
|
+
setFilterBy([...val]);
|
|
43777
|
+
}, changeOrder: (val) => {
|
|
43778
|
+
setOrderBy([...val]);
|
|
43779
|
+
}, columns: contentColumns, setContentColumns: setContentColumns, fisrtObjWidthFixRight: fisrtObjWidthFixRight, lastObjWidthFixLeft: lastObjWidthFixLeft, totalCount: totalCount }, `header-${indexParent}-${index}`));
|
|
43780
|
+
}) }, `header-${-indexParent}`));
|
|
43781
|
+
}) }), jsxRuntime.jsxs("tbody", { className: "r-gridcontent", role: "rowgroup", children: [jsxRuntime.jsx("tr", { style: { height: offsetY } }), filteredData.slice(startIndex, endIndex).map((row) => {
|
|
43782
|
+
const indexRow = row.indexRow;
|
|
43783
|
+
const isSelected = selectedRows?.some((x) => x[fieldKey] === row.data[fieldKey]);
|
|
43784
|
+
return (jsxRuntime.jsx("tr", { "aria-rowindex": indexRow + 1, role: "row", style: { height: rowHeight }, className: classNames$1("r-row"), children: contentColumns.map((col, indexCol) => jsxRuntime.jsx(CellComponent, { col: col, row: row.data, idTable: idTable, gridRef: gridRef, indexRow: indexRow, indexCol: indexCol, isSelected: isSelected, objWidthFixLeft: objWidthFixLeft, objWidthFixRight: objWidthFixRight, lastObjWidthFixLeft: lastObjWidthFixLeft, fisrtObjWidthFixRight: fisrtObjWidthFixRight, selectedCell: selectedCell, startCell: startCell, editCell: editCell, editDisable: editDisable, addDisable: addDisable, fieldKey: fieldKey, defaultValue: defaultValue, dataSource: dataSource, formatSetting: formatSetting, selectEnable: selectEnable, isMulti: isMulti, selectedRows: selectedRows, containerRef: containerRef, totalCount: totalCount, toolbarSetting: toolbarSetting, buttonSetting: buttonSetting, fieldUniKey: fieldUniKey, handleDataChange: handleDataChange, changeDataSource: changeDataSource, setSelectedRows: setSelectedRows, handleCommandClick: handleCommandClick, handleDuplicate: handleDuplicate, handleKeyDown: handleKeyDown, onDuplicate: onDuplicate, setSelectedCell: setSelectedCell, setStartCell: setStartCell, focusEditElementCell: focusEditElementCell, handeCopyCell: handeCopyCell, isCopying: isCopying, typeDragging: typeDragging, contentColumns: contentColumns, rowChange: rowChange, visibleContentColumns: visibleContentColumns })) }, row.data[fieldKey] ?? indexRow));
|
|
43785
|
+
}), jsxRuntime.jsx("tr", { style: { height: totalHeight - (endIndex * rowHeight) } })] }), jsxRuntime.jsx("tfoot", { className: "r-gridfoot", children: haveSum && jsxRuntime.jsx("tr", { className: "r-row", children: contentColumns.map((col, index) => {
|
|
43786
|
+
return (jsxRuntime.jsx(FooterCol, { col: col, dataSource: filteredData, indexCol: index, objWidthFix: { ...objWidthFixLeft, ...objWidthFixRight }, formatSetting: formatSetting }));
|
|
43787
|
+
}) }) })] }) }));
|
|
43726
43788
|
};
|
|
43727
43789
|
|
|
43728
43790
|
const handleArrowRight = (e, params) => {
|
|
@@ -43754,45 +43816,36 @@ const handleArrowLeft = (e, params) => {
|
|
|
43754
43816
|
}
|
|
43755
43817
|
};
|
|
43756
43818
|
const handleArrowUp = async (e, params) => {
|
|
43757
|
-
const { startCell,
|
|
43819
|
+
const { startCell, handeCopyCell, handleFocusCell } = params;
|
|
43758
43820
|
if (startCell.row > 0) {
|
|
43759
43821
|
if ((e.ctrlKey || e.metaKey || e.altKey) && e.shiftKey) {
|
|
43760
43822
|
handeCopyCell(startCell.col, startCell.row, 0);
|
|
43761
43823
|
}
|
|
43762
43824
|
else {
|
|
43763
|
-
if (pagingClient && (pagingSetting?.currentPage ?? 0) !== 1 && ((startCell.row) % (pagingSetting?.pageSize ?? 1000)) === 0 && pagingSetting?.setCurrentPage) {
|
|
43764
|
-
pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) - 1);
|
|
43765
|
-
}
|
|
43766
43825
|
handleFocusCell(startCell.row - 1, startCell.col, 1);
|
|
43767
43826
|
}
|
|
43768
43827
|
e.preventDefault();
|
|
43769
43828
|
}
|
|
43770
43829
|
};
|
|
43771
43830
|
const handleArrowDown = async (e, params) => {
|
|
43772
|
-
const { startCell, totalCount,
|
|
43831
|
+
const { startCell, totalCount, handleFocusCell, handeCopyCell } = params;
|
|
43773
43832
|
if (startCell.row < totalCount - 1) {
|
|
43774
43833
|
if ((e.ctrlKey || e.metaKey || e.altKey) && e.shiftKey) {
|
|
43775
43834
|
handeCopyCell(startCell.col, startCell.row, totalCount - 1);
|
|
43776
43835
|
}
|
|
43777
43836
|
else {
|
|
43778
|
-
if (pagingClient && ((startCell.row + 1) % (pagingSetting?.pageSize ?? 1000)) === 0 && pagingSetting?.setCurrentPage) {
|
|
43779
|
-
pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
|
|
43780
|
-
}
|
|
43781
43837
|
handleFocusCell(startCell.row + 1, startCell.col, 1);
|
|
43782
43838
|
}
|
|
43783
43839
|
e.preventDefault();
|
|
43784
43840
|
}
|
|
43785
43841
|
};
|
|
43786
43842
|
const handleTab = (e, params) => {
|
|
43787
|
-
const { startCell, indexLastEdit, totalCount, handleAdd, contentColumns,
|
|
43843
|
+
const { startCell, indexLastEdit, totalCount, handleAdd, contentColumns, handleFocusCell } = params;
|
|
43788
43844
|
if (startCell.col === indexLastEdit) {
|
|
43789
43845
|
if (startCell.row === totalCount - 1) {
|
|
43790
43846
|
handleAdd();
|
|
43791
43847
|
}
|
|
43792
43848
|
else {
|
|
43793
|
-
if (pagingClient && (startCell.row % (pagingSetting?.pageSize ?? 1000)) === 0 && pagingSetting?.setCurrentPage) {
|
|
43794
|
-
pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
|
|
43795
|
-
}
|
|
43796
43849
|
handleFocusCell(startCell.row + 1, startCell.col, 1);
|
|
43797
43850
|
}
|
|
43798
43851
|
e.preventDefault();
|
|
@@ -43813,15 +43866,12 @@ const handleTab = (e, params) => {
|
|
|
43813
43866
|
}
|
|
43814
43867
|
};
|
|
43815
43868
|
const handleEnter = (e, params) => {
|
|
43816
|
-
const { addDisable, editDisable, addMoveNewCell, startCell, totalCount,
|
|
43869
|
+
const { addDisable, editDisable, addMoveNewCell, startCell, totalCount, handleFocusCell } = params;
|
|
43817
43870
|
if (!editDisable && !addDisable) {
|
|
43818
43871
|
if (startCell.row === totalCount - 1) {
|
|
43819
43872
|
addMoveNewCell();
|
|
43820
43873
|
}
|
|
43821
43874
|
else {
|
|
43822
|
-
if (pagingClient && ((startCell.row + 1) % (pagingSetting?.pageSize ?? 1000)) === 0 && pagingSetting?.setCurrentPage) {
|
|
43823
|
-
pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 1) + 1);
|
|
43824
|
-
}
|
|
43825
43875
|
handleFocusCell(startCell.row + 1, startCell.col, 1);
|
|
43826
43876
|
}
|
|
43827
43877
|
e.preventDefault();
|
|
@@ -44438,7 +44488,7 @@ const SettingColumn = (props) => {
|
|
|
44438
44488
|
|
|
44439
44489
|
const ToolbarBottom = ({ handleAdd, handleDuplicate, handleInsertBefore, handleInsertAfter, handleDeleteAll, setOpenPopupSetupColumn, focusRow, editDisable, addDisable, buttonSetting, toolbarSetting, headerColumns }) => {
|
|
44440
44490
|
const { t } = reactI18next.useTranslation();
|
|
44441
|
-
return (jsxRuntime.jsx("div", { id: "table_custom_bottom_toolbar", className: "r-toolbar r-toolbar-bottom", role: "toolbar", "aria-disabled": "false", "aria-haspopup": "false", "aria-orientation": "horizontal", children: jsxRuntime.jsxs("div", { className: "r-toolbar-items", children: [jsxRuntime.jsxs("div", { className: "r-toolbar-left", children: [jsxRuntime.jsxs("div", { className: classNames$1('r-toolbar-item d-flex', { 'd-none': editDisable || addDisable }), "aria-disabled": "false", children: [jsxRuntime.jsx(Button$1, { color: 'success', outline: true, onClick: () => handleAdd(1), className: 'd-flex', children: t('Add item') }), jsxRuntime.jsxs(UncontrolledDropdown, { className: 'nav-item', children: [jsxRuntime.jsx(DropdownToggle$1, { tag: 'div', className: 'me-0 d-flex', children: jsxRuntime.jsx(Button$1, { type: 'button', color: 'success', outline: true, style: { marginLeft: -1 }, className: 'px-25', children: jsxRuntime.jsx("svg", { fill: '#28c76f', height: "15", width: "20", viewBox: "0 0 20 20", children: jsxRuntime.jsx("path", { d: "M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z" }) }) }) }), jsxRuntime.jsxs(DropdownMenu$1, { className: "formula-dropdown icon-dropdown p-0", children: [jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(10), children: "10 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(20), children: "20 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(30), children: "30 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(40), children: "40 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(50), children: "50 h\u00E0ng" })] })] })] }), (focusRow ?? -1) > -1 ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || addDisable || buttonSetting?.duplicateDisable }), "aria-disabled": "false", children: jsxRuntime.jsx(Button$1, { color: 'success', outline: true, onClick: () => { handleDuplicate(); }, className: 'd-flex', children: t('Duplicate') }) }), jsxRuntime.jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || addDisable || buttonSetting?.insertBeforeDisable }), "aria-disabled": "false", children: jsxRuntime.jsx(Button$1, { color: 'success', outline: true, onClick: handleInsertBefore, className: 'd-flex', children: t('Insert item before') }) }), jsxRuntime.jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || addDisable || buttonSetting?.insertAfterDisable }), "aria-disabled": "false", children: jsxRuntime.jsx(Button$1, { color: 'success', outline: true, onClick: handleInsertAfter, className: 'd-flex', children: t('Insert item after') }) })] }) : jsxRuntime.jsx(jsxRuntime.Fragment, { children: " " }), jsxRuntime.jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || buttonSetting?.deleteAllDisable }), "aria-disabled": "false", children: jsxRuntime.jsx(Button$1, { color: 'primary', outline: true, onClick: handleDeleteAll, className: 'd-flex', children: t('Delete all item') }) }), toolbarSetting?.toolbarBottomOptions?.map((item, index) => {
|
|
44491
|
+
return (jsxRuntime.jsx("div", { id: "table_custom_bottom_toolbar", className: "r-toolbar r-toolbar-bottom", role: "toolbar", "aria-disabled": "false", "aria-haspopup": "false", "aria-orientation": "horizontal", children: jsxRuntime.jsxs("div", { className: "r-toolbar-items", children: [jsxRuntime.jsxs("div", { className: "r-toolbar-left", children: [jsxRuntime.jsxs("div", { className: classNames$1('r-toolbar-item d-flex', { 'd-none': editDisable || addDisable }), "aria-disabled": "false", children: [jsxRuntime.jsx(Button$1, { color: 'success', outline: true, onClick: () => handleAdd(1), className: 'd-flex', children: t('Add item') }), jsxRuntime.jsxs(UncontrolledDropdown, { className: 'nav-item', children: [jsxRuntime.jsx(DropdownToggle$1, { tag: 'div', className: 'me-0 d-flex', children: jsxRuntime.jsx(Button$1, { type: 'button', color: 'success', outline: true, style: { marginLeft: -1 }, className: 'px-25', children: jsxRuntime.jsx("svg", { fill: '#28c76f', height: "15", width: "20", viewBox: "0 0 20 20", children: jsxRuntime.jsx("path", { d: "M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z" }) }) }) }), jsxRuntime.jsxs(DropdownMenu$1, { className: "formula-dropdown icon-dropdown p-0", children: [jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(10), children: "10 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(20), children: "20 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(30), children: "30 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(40), children: "40 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(50), children: "50 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(100), children: "100 h\u00E0ng" }), jsxRuntime.jsx(DropdownItem$1, { className: 'py-25', tag: 'div', onClick: () => handleAdd(1000), children: "1000 h\u00E0ng" })] })] })] }), (focusRow ?? -1) > -1 ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || addDisable || buttonSetting?.duplicateDisable }), "aria-disabled": "false", children: jsxRuntime.jsx(Button$1, { color: 'success', outline: true, onClick: () => { handleDuplicate(); }, className: 'd-flex', children: t('Duplicate') }) }), jsxRuntime.jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || addDisable || buttonSetting?.insertBeforeDisable }), "aria-disabled": "false", children: jsxRuntime.jsx(Button$1, { color: 'success', outline: true, onClick: handleInsertBefore, className: 'd-flex', children: t('Insert item before') }) }), jsxRuntime.jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || addDisable || buttonSetting?.insertAfterDisable }), "aria-disabled": "false", children: jsxRuntime.jsx(Button$1, { color: 'success', outline: true, onClick: handleInsertAfter, className: 'd-flex', children: t('Insert item after') }) })] }) : jsxRuntime.jsx(jsxRuntime.Fragment, { children: " " }), jsxRuntime.jsx("div", { className: classNames$1('r-toolbar-item', { 'd-none': editDisable || buttonSetting?.deleteAllDisable }), "aria-disabled": "false", children: jsxRuntime.jsx(Button$1, { color: 'primary', outline: true, onClick: handleDeleteAll, className: 'd-flex', children: t('Delete all item') }) }), toolbarSetting?.toolbarBottomOptions?.map((item, index) => {
|
|
44442
44492
|
return ((item.align === 'left') ? jsxRuntime.jsx("div", { className: "r-toolbar-item", "aria-disabled": "false", children: item.template() }, `toolbar-bottom-left-${index}`) : '');
|
|
44443
44493
|
})] }), jsxRuntime.jsx("div", { className: "r-toolbar-center", children: toolbarSetting?.toolbarBottomOptions?.map((item, index) => {
|
|
44444
44494
|
return ((item.align === 'center') ? jsxRuntime.jsx("div", { className: "r-toolbar-item", "aria-disabled": "false", children: item.template() }, `toolbar-bottom-center-${index}`) : '');
|
|
@@ -44449,7 +44499,7 @@ const ToolbarBottom = ({ handleAdd, handleDuplicate, handleInsertBefore, handleI
|
|
|
44449
44499
|
|
|
44450
44500
|
const TableEdit = React$5.forwardRef((props, ref) => {
|
|
44451
44501
|
const { t } = reactI18next.useTranslation();
|
|
44452
|
-
const { idTable, dataSource, columns,
|
|
44502
|
+
const { idTable, dataSource, columns, setDataSource, height = 400, rowHeight = 31.3, defaultValue, toolbarSetting, searchSetting, selectedItem, selectEnable, editDisable, addDisable, buttonSetting, formatSetting, haveSum, isMulti, disableAutoKey, commandClick, dataSourceChange, rowChange, setSelectedItem, handleSelect, onDuplicate, saveSettingColumn, allowFilter = true, allowOrder, settingColumns, optionsFilter, pagingSetting, resetDefaultColumns } = props;
|
|
44453
44503
|
React$5.useImperativeHandle(ref, () => {
|
|
44454
44504
|
return {
|
|
44455
44505
|
refeshFocusRow: handleRefeshRow
|
|
@@ -44466,21 +44516,15 @@ const TableEdit = React$5.forwardRef((props, ref) => {
|
|
|
44466
44516
|
const [filterBy, setFilterBy] = React$5.useState([]);
|
|
44467
44517
|
const [contentColumns, setContentColumns] = React$5.useState([]);
|
|
44468
44518
|
//ref
|
|
44469
|
-
const
|
|
44519
|
+
const containerRef = React$5.useRef(null);
|
|
44470
44520
|
const gridRef = React$5.useRef(null);
|
|
44471
44521
|
const typeDragging = React$5.useRef(0); // 0: không kéo, 1: kéo ô, 2: kéo dòng, 3: kéo copy , 3: kéo cột
|
|
44472
44522
|
const isCopying = React$5.useRef(false);
|
|
44473
44523
|
const resizeTimeout = React$5.useRef(null);
|
|
44474
44524
|
const totalCount = dataSource.length;
|
|
44475
|
-
const pagingClient = pagingSetting?.allowPaging && (pagingSetting?.pagingClient || !(editDisable || addDisable));
|
|
44476
44525
|
const searchClient = searchSetting?.searchEnable && (searchSetting?.searchClient || !(editDisable || addDisable));
|
|
44477
44526
|
const fieldKey = columns.find((item) => item.isPrimarykey === true)?.field ?? "id";
|
|
44478
44527
|
const fieldUniKey = columns.filter((item) => item.isUnikey === true)?.map((item) => item.field);
|
|
44479
|
-
React$5.useEffect(() => {
|
|
44480
|
-
if (pagingClient && pagingSetting.setCurrentPage && Math.ceil(totalCount / (pagingSetting?.pageSize ?? 1)) < (pagingSetting.currentPage ?? 1)) {
|
|
44481
|
-
pagingSetting.setCurrentPage(1);
|
|
44482
|
-
}
|
|
44483
|
-
}, [dataSource]);
|
|
44484
44528
|
const { levels: headerColumns, flatVisble: visibleColumns, flatVisbleContent: visibleContentColumns, objWidthFixLeft, objWidthFixRight, lastObjWidthFixLeft, fisrtObjWidthFixRight, objHeaderWidthFixLeft, objHeaderWidthFixRight, indexFirstEdit, indexLastEdit } = React$5.useMemo(() => {
|
|
44485
44529
|
const rs = calculateTableStructure(columns, settingColumns?.value);
|
|
44486
44530
|
setContentColumns(rs.flat);
|
|
@@ -44531,16 +44575,13 @@ const TableEdit = React$5.forwardRef((props, ref) => {
|
|
|
44531
44575
|
//Thêm dòng mới và focus vào dòng mới, cột bằng với cột đang focus
|
|
44532
44576
|
const addMoveNewCell = () => {
|
|
44533
44577
|
changeDataSource(dataSource, 1);
|
|
44534
|
-
if (
|
|
44535
|
-
pagingSetting?.setCurrentPage((pagingSetting?.currentPage ?? 0) + 1);
|
|
44536
|
-
}
|
|
44537
|
-
if (tableElement) {
|
|
44578
|
+
if (containerRef) {
|
|
44538
44579
|
const col = startCell.col >= 0 ? startCell.col : indexFirstEdit;
|
|
44539
44580
|
setSelectedCell({ maxCol: col, minCol: col, maxRow: totalCount, minRow: totalCount });
|
|
44540
44581
|
setStartCell({ row: totalCount, col });
|
|
44541
44582
|
}
|
|
44542
44583
|
};
|
|
44543
|
-
const handleFocusCell = (row = -1, col = -1, type =
|
|
44584
|
+
const handleFocusCell = (row = -1, col = -1, type = -1) => {
|
|
44544
44585
|
if (row >= 0 && col >= 0) {
|
|
44545
44586
|
handleScrollVertical(col, row, type);
|
|
44546
44587
|
setSelectedCell({ maxCol: col, minCol: col, maxRow: row, minRow: row });
|
|
@@ -44566,14 +44607,12 @@ const TableEdit = React$5.forwardRef((props, ref) => {
|
|
|
44566
44607
|
contentColumns,
|
|
44567
44608
|
addDisable,
|
|
44568
44609
|
editDisable,
|
|
44569
|
-
handleDuplicate: () => handleDuplicate(dataSource, startCell.row, fieldKey, defaultValue, fieldUniKey, changeDataSource,
|
|
44610
|
+
handleDuplicate: () => handleDuplicate(dataSource, startCell.row, fieldKey, defaultValue, fieldUniKey, changeDataSource, containerRef, totalCount, toolbarSetting, buttonSetting, editDisable, addDisable, onDuplicate),
|
|
44570
44611
|
handleAdd: () => {
|
|
44571
|
-
handleAdd(dataSource,
|
|
44612
|
+
handleAdd(dataSource, containerRef.current, indexFirstEdit, changeDataSource, handleFocusCell, 1);
|
|
44572
44613
|
},
|
|
44573
44614
|
handleFocusCell,
|
|
44574
44615
|
addMoveNewCell,
|
|
44575
|
-
pagingClient,
|
|
44576
|
-
pagingSetting,
|
|
44577
44616
|
row,
|
|
44578
44617
|
startCell,
|
|
44579
44618
|
totalCount,
|
|
@@ -44731,50 +44770,38 @@ const TableEdit = React$5.forwardRef((props, ref) => {
|
|
|
44731
44770
|
};
|
|
44732
44771
|
//type0: ngang, type1: doc
|
|
44733
44772
|
const handleScrollVertical = (col, row, type) => {
|
|
44734
|
-
if (col
|
|
44735
|
-
|
|
44773
|
+
if (col < 0 || row < 0) {
|
|
44774
|
+
return;
|
|
44775
|
+
}
|
|
44776
|
+
// scroll ngang: vẫn như cũ
|
|
44777
|
+
requestAnimationFrame(() => {
|
|
44778
|
+
const parent = containerRef.current;
|
|
44779
|
+
if (type === 0 || type === -1) {
|
|
44736
44780
|
const element = document.getElementById(`content-${idTable}-row${row}-col${col}`);
|
|
44737
|
-
if (element &&
|
|
44738
|
-
const parent =
|
|
44739
|
-
|
|
44740
|
-
|
|
44741
|
-
|
|
44742
|
-
|
|
44743
|
-
|
|
44744
|
-
|
|
44745
|
-
|
|
44746
|
-
|
|
44747
|
-
if ((tableElement.current?.scrollTop ?? 0) > ((row - 1) % (pagingSetting?.pageSize ?? 1)) * 34) {
|
|
44748
|
-
tableElement.current?.scrollTo({ behavior: "smooth", top: ((row - 1) % (pagingSetting?.pageSize ?? 1)) * 34 });
|
|
44749
|
-
}
|
|
44750
|
-
else if ((tableElement.current?.clientHeight ?? 0) - (haveSum ? 30 : 0) - (headerColumns.length * 42) <
|
|
44751
|
-
((row % (pagingSetting?.pageSize ?? 1)) * 34) - (tableElement.current?.scrollTop ?? 0)) {
|
|
44752
|
-
tableElement.current?.scrollTo({ behavior: "smooth", top: (tableElement.current?.scrollTop ?? 0) + 34 });
|
|
44753
|
-
}
|
|
44754
|
-
}
|
|
44781
|
+
if (element && containerRef.current) {
|
|
44782
|
+
const parent = containerRef.current;
|
|
44783
|
+
const parentRect = parent.getBoundingClientRect();
|
|
44784
|
+
const childRect = element.getBoundingClientRect();
|
|
44785
|
+
const offsetX = childRect.left -
|
|
44786
|
+
parentRect.left +
|
|
44787
|
+
parent.scrollLeft -
|
|
44788
|
+
(parentRect.width / 2) +
|
|
44789
|
+
(childRect.width / 2);
|
|
44790
|
+
parent.scrollTo({ left: offsetX, behavior: "smooth" });
|
|
44755
44791
|
}
|
|
44756
|
-
}, 100);
|
|
44757
|
-
}
|
|
44758
|
-
};
|
|
44759
|
-
const onChangePage = (args) => {
|
|
44760
|
-
if (pagingSetting?.setCurrentPage) {
|
|
44761
|
-
if (args.currentPage === args.oldPage) {
|
|
44762
|
-
return;
|
|
44763
44792
|
}
|
|
44764
|
-
|
|
44765
|
-
|
|
44766
|
-
|
|
44767
|
-
|
|
44768
|
-
|
|
44769
|
-
if (pagingSetting?.pageSize !== args.pageSize) {
|
|
44770
|
-
if (pagingSetting?.setPageSize) {
|
|
44771
|
-
pagingSetting.setPageSize(args.pageSize);
|
|
44793
|
+
if (type === 1 || type === -1) {
|
|
44794
|
+
const targetTop = row * rowHeight;
|
|
44795
|
+
if (targetTop < parent.scrollTop) {
|
|
44796
|
+
// scroll lên trên
|
|
44797
|
+
parent.scrollTo({ top: targetTop, behavior: "smooth" });
|
|
44772
44798
|
}
|
|
44773
|
-
if (
|
|
44774
|
-
|
|
44799
|
+
else if (targetTop + rowHeight + 64 > parent.scrollTop + parent.clientHeight) {
|
|
44800
|
+
// scroll xuống dưới
|
|
44801
|
+
parent.scrollTo({ top: targetTop - parent.clientHeight + (rowHeight * 4), behavior: "smooth" });
|
|
44775
44802
|
}
|
|
44776
44803
|
}
|
|
44777
|
-
}
|
|
44804
|
+
});
|
|
44778
44805
|
};
|
|
44779
44806
|
useOnClickOutside(gridRef, () => {
|
|
44780
44807
|
if (!editCell) {
|
|
@@ -44842,82 +44869,50 @@ const TableEdit = React$5.forwardRef((props, ref) => {
|
|
|
44842
44869
|
}
|
|
44843
44870
|
}
|
|
44844
44871
|
}, [selectedItem]);
|
|
44845
|
-
|
|
44846
|
-
|
|
44847
|
-
|
|
44848
|
-
|
|
44849
|
-
if ((!filters || filters.length === 0) && (!keyword || !searchClient)) {
|
|
44850
|
-
return true;
|
|
44851
|
-
} // Không có filter thì mặc định là match
|
|
44852
|
-
const isFilterMatch = filters.every((filter) => {
|
|
44853
|
-
const { key, value, ope } = filter;
|
|
44854
|
-
const rowValue = row[key];
|
|
44855
|
-
if (rowValue === undefined || rowValue === null || value === undefined || value === null) {
|
|
44856
|
-
return false;
|
|
44872
|
+
const onChangePage = (args) => {
|
|
44873
|
+
if (pagingSetting?.setCurrentPage) {
|
|
44874
|
+
if (args.currentPage === args.oldPage) {
|
|
44875
|
+
return;
|
|
44857
44876
|
}
|
|
44858
|
-
|
|
44859
|
-
|
|
44860
|
-
|
|
44861
|
-
|
|
44862
|
-
|
|
44863
|
-
|
|
44864
|
-
|
|
44865
|
-
|
|
44866
|
-
|
|
44867
|
-
|
|
44868
|
-
|
|
44869
|
-
|
|
44870
|
-
case "notequal":
|
|
44871
|
-
return rowValue != value;
|
|
44872
|
-
case "greaterthan":
|
|
44873
|
-
return rowValue > value;
|
|
44874
|
-
case "greaterthanorequal":
|
|
44875
|
-
return rowValue >= value;
|
|
44876
|
-
case "lessthan":
|
|
44877
|
-
return rowValue < value;
|
|
44878
|
-
case "lessthanorequal":
|
|
44879
|
-
return rowValue <= value;
|
|
44880
|
-
default:
|
|
44881
|
-
return false;
|
|
44877
|
+
pagingSetting.setCurrentPage(args.currentPage);
|
|
44878
|
+
}
|
|
44879
|
+
};
|
|
44880
|
+
const onChangePageSize = (args) => {
|
|
44881
|
+
if (pagingSetting?.allowPaging) {
|
|
44882
|
+
if (pagingSetting?.pageSize !== args.pageSize) {
|
|
44883
|
+
if (pagingSetting?.setPageSize) {
|
|
44884
|
+
pagingSetting.setPageSize(args.pageSize);
|
|
44885
|
+
}
|
|
44886
|
+
if (pagingSetting?.setCurrentPage) {
|
|
44887
|
+
pagingSetting.setCurrentPage(1);
|
|
44888
|
+
}
|
|
44882
44889
|
}
|
|
44883
|
-
/*eslint-enable*/
|
|
44884
|
-
});
|
|
44885
|
-
const isSearchMatch = !keyword ||
|
|
44886
|
-
searchKeys.some((key) => {
|
|
44887
|
-
const val = row[key];
|
|
44888
|
-
return val?.toString().toLowerCase().includes(keyword.trim().toLowerCase());
|
|
44889
|
-
});
|
|
44890
|
-
return isFilterMatch && isSearchMatch;
|
|
44891
|
-
}
|
|
44892
|
-
React$5.useEffect(() => {
|
|
44893
|
-
if (pagingClient && pagingSetting?.setCurrentPage && (searchSetting?.searchTerm !== undefined ? searchSetting?.searchTerm : searchTerm)) {
|
|
44894
|
-
pagingSetting?.setCurrentPage(1);
|
|
44895
44890
|
}
|
|
44896
|
-
}
|
|
44897
|
-
return (jsxRuntime.jsx(React$5.Fragment, { children: jsxRuntime.jsxs("div", { className: "r-table-edit", children: [jsxRuntime.jsxs("div", { className: "r-grid", ref: gridRef, children: [toolbarSetting?.showTopToolbar && jsxRuntime.jsx(RenderToolbarTop, { toolbarTopOption: toolbarTopOption }), jsxRuntime.jsx(
|
|
44898
|
-
|
|
44899
|
-
|
|
44900
|
-
|
|
44901
|
-
|
|
44902
|
-
|
|
44903
|
-
|
|
44891
|
+
};
|
|
44892
|
+
return (jsxRuntime.jsx(React$5.Fragment, { children: jsxRuntime.jsxs("div", { className: "r-table-edit", children: [jsxRuntime.jsxs("div", { className: "r-grid", ref: gridRef, children: [toolbarSetting?.showTopToolbar && jsxRuntime.jsx(RenderToolbarTop, { toolbarTopOption: toolbarTopOption }), jsxRuntime.jsx(TableComponent, { idTable: idTable, height: height, dataSource: dataSource, contentColumns: contentColumns, headerColumns: headerColumns, visibleColumns: visibleColumns, selectedRows: selectedRows, setSelectedRows: setSelectedRows, selectedCell: selectedCell, startCell: startCell, editCell: editCell, gridRef: gridRef, objHeaderWidthFixLeft: objHeaderWidthFixLeft, objHeaderWidthFixRight: objHeaderWidthFixRight, objWidthFixLeft: objWidthFixLeft, objWidthFixRight: objWidthFixRight, lastObjWidthFixLeft: lastObjWidthFixLeft, fisrtObjWidthFixRight: fisrtObjWidthFixRight, totalCount: totalCount, isMulti: isMulti, selectEnable: selectEnable, editDisable: editDisable, addDisable: addDisable, defaultValue: defaultValue, fieldKey: fieldKey, fieldUniKey: fieldUniKey, formatSetting: formatSetting, toolbarSetting: toolbarSetting, buttonSetting: buttonSetting, containerRef: containerRef, optionsFilter: optionsFilter, allowFilter: allowFilter, allowOrder: allowOrder, searchSetting: searchSetting, searchTerm: searchTerm, haveSum: haveSum, isCopying: isCopying, typeDragging: typeDragging, visibleContentColumns: visibleContentColumns, rowHeight: rowHeight, changeDataSource: changeDataSource, handleCommandClick: handleCommandClick, handleKeyDown: handleKeyDown, handeCopyCell: handeCopyCell, onDuplicate: onDuplicate, setSelectedCell: setSelectedCell, setStartCell: setStartCell, focusEditElementCell: focusEditElementCell, rowChange: rowChange, filterBy: filterBy, setFilterBy: setFilterBy, orderBy: orderBy, setOrderBy: setOrderBy, searchClient: searchClient, handleDataChange: handleDataChange, handleDuplicate: () => {
|
|
44893
|
+
handleDuplicate(dataSource, startCell.row, fieldKey, defaultValue, fieldUniKey, changeDataSource, containerRef, totalCount, toolbarSetting, buttonSetting, editDisable, addDisable, onDuplicate);
|
|
44894
|
+
}, setContentColumns: (newColumns) => {
|
|
44895
|
+
setContentColumns(newColumns);
|
|
44896
|
+
// clear timeout cũ
|
|
44897
|
+
if (resizeTimeout.current) {
|
|
44898
|
+
clearTimeout(resizeTimeout.current);
|
|
44899
|
+
}
|
|
44900
|
+
resizeTimeout.current = setTimeout(() => {
|
|
44901
|
+
if (saveSettingColumn) {
|
|
44902
|
+
saveSettingColumn(newColumns.map((x, index) => ({ field: x.field, headerText: x.headerText, visible: x.visible, fixedType: x.fixedType, width: x.width, sortOrder: index + 1 })));
|
|
44904
44903
|
}
|
|
44905
|
-
|
|
44906
|
-
|
|
44907
|
-
|
|
44908
|
-
}
|
|
44909
|
-
}, 500);
|
|
44910
|
-
} }) }), toolbarSetting?.showBottomToolbar && (jsxRuntime.jsx(ToolbarBottom, { handleAdd: (numberOfRows) => {
|
|
44911
|
-
handleAdd(dataSource, tableElement.current, indexFirstEdit, changeDataSource, pagingSetting, handleFocusCell, numberOfRows);
|
|
44904
|
+
}, 500);
|
|
44905
|
+
} }), toolbarSetting?.showBottomToolbar && (jsxRuntime.jsx(ToolbarBottom, { handleAdd: (numberOfRows) => {
|
|
44906
|
+
handleAdd(dataSource, containerRef.current, indexFirstEdit, changeDataSource, handleFocusCell, numberOfRows);
|
|
44912
44907
|
}, handleDuplicate: () => {
|
|
44913
|
-
handleDuplicate(dataSource, startCell.row, fieldKey, defaultValue, fieldUniKey, changeDataSource,
|
|
44908
|
+
handleDuplicate(dataSource, startCell.row, fieldKey, defaultValue, fieldUniKey, changeDataSource, containerRef, totalCount, toolbarSetting, buttonSetting, editDisable, addDisable, onDuplicate);
|
|
44914
44909
|
}, handleInsertAfter: () => {
|
|
44915
|
-
handleInsertAfter(dataSource, startCell.row, defaultValue, changeDataSource,
|
|
44910
|
+
handleInsertAfter(dataSource, startCell.row, defaultValue, changeDataSource, containerRef, totalCount, toolbarSetting, buttonSetting, editDisable, addDisable);
|
|
44916
44911
|
}, handleInsertBefore: () => {
|
|
44917
|
-
handleInsertBefore(dataSource, startCell.row, defaultValue, changeDataSource,
|
|
44912
|
+
handleInsertBefore(dataSource, startCell.row, defaultValue, changeDataSource, toolbarSetting, buttonSetting, editDisable, addDisable);
|
|
44918
44913
|
}, handleDeleteAll: () => {
|
|
44919
44914
|
handleDeleteAll(t, messageBoxConfirmDelete, handleFocusCell, changeDataSource, editDisable, addDisable, toolbarSetting, buttonSetting);
|
|
44920
|
-
}, setOpenPopupSetupColumn: setOpenPopupSetupColumn, focusRow: startCell.row, editDisable: editDisable, addDisable: addDisable, buttonSetting: buttonSetting, toolbarSetting: toolbarSetting, headerColumns: headerColumns }))] }), pagingSetting?.allowPaging && jsxRuntime.jsx(PagingComponent, { gridRef: gridRef, onChangePage: onChangePage, pageSize: pagingSetting?.pageSize ?? 0, currentPage: pagingSetting?.currentPage ?? 0, pageOptions: pagingSetting?.pageOptions ?? [20, 30, 50, 100], totalItem:
|
|
44915
|
+
}, setOpenPopupSetupColumn: setOpenPopupSetupColumn, focusRow: startCell.row, editDisable: editDisable, addDisable: addDisable, buttonSetting: buttonSetting, toolbarSetting: toolbarSetting, headerColumns: headerColumns }))] }), pagingSetting?.allowPaging && jsxRuntime.jsx(PagingComponent, { gridRef: gridRef, onChangePage: onChangePage, pageSize: pagingSetting?.pageSize ?? 0, currentPage: pagingSetting?.currentPage ?? 0, pageOptions: pagingSetting?.pageOptions ?? [20, 30, 50, 100], totalItem: pagingSetting?.totalItem ?? 0, onChangePageSize: onChangePageSize }), jsxRuntime.jsx(SettingColumn, { gridRef: gridRef, handleSidebar: () => {
|
|
44921
44916
|
setOpenPopupSetupColumn(!openPopupSetupColumn);
|
|
44922
44917
|
}, settingColumns: settingColumns, openSidebar: openPopupSetupColumn, column: [...contentColumns], resetDefaultColumns: resetDefaultColumns, setColumn: (newColumns) => {
|
|
44923
44918
|
if (saveSettingColumn) {
|
|
@@ -47468,7 +47463,7 @@ const ExportExcelComponent = ({ openModal, typeModal, handleModal, windowSize, d
|
|
|
47468
47463
|
showTopToolbar: true,
|
|
47469
47464
|
showBottomToolbar: true,
|
|
47470
47465
|
toolbarBottomOptions: toolbarTopOptions
|
|
47471
|
-
},
|
|
47466
|
+
}, height: windowSize.innerHeight - 525, columns: [
|
|
47472
47467
|
{
|
|
47473
47468
|
field: "checkbox",
|
|
47474
47469
|
headerText: "",
|
|
@@ -53766,10 +53761,8 @@ const Wizard = React$5.forwardRef((props, ref) => {
|
|
|
53766
53761
|
});
|
|
53767
53762
|
|
|
53768
53763
|
const TabHandleErrorImportExcel = (props) => {
|
|
53769
|
-
const { dataError, windowSize, formatNumber,
|
|
53764
|
+
const { dataError, windowSize, formatNumber, headerHandleErrorExcelColumns } = props;
|
|
53770
53765
|
const { t } = reactI18next.useTranslation();
|
|
53771
|
-
const [currentPage, setCurrentPage] = React$5.useState(1);
|
|
53772
|
-
const [pageSize, setPageSize] = React$5.useState(pageSizeDefault ?? 50);
|
|
53773
53766
|
const errorTemplate = () => {
|
|
53774
53767
|
return (jsxRuntime.jsx("div", { style: { fontFamily: 'Montserrat,Helvetica,Arial,serif' }, children: jsxRuntime.jsxs(Badge$1, { className: 'text-capitalize mx-50', style: { fontSize: '11px' }, color: 'danger', pill: true, children: [dataError.length, " ", t('Invalid')] }) }));
|
|
53775
53768
|
};
|
|
@@ -53786,15 +53779,7 @@ const TabHandleErrorImportExcel = (props) => {
|
|
|
53786
53779
|
align: 'left'
|
|
53787
53780
|
}
|
|
53788
53781
|
]
|
|
53789
|
-
}, editDisable: true, dataSource: dataError, columns: headerHandleErrorExcelColumns,
|
|
53790
|
-
allowPaging: true,
|
|
53791
|
-
pageOptions,
|
|
53792
|
-
pagingClient: true,
|
|
53793
|
-
setCurrentPage,
|
|
53794
|
-
pageSize,
|
|
53795
|
-
setPageSize,
|
|
53796
|
-
currentPage
|
|
53797
|
-
} }, 'HandleErrorExcel')] }));
|
|
53782
|
+
}, editDisable: true, dataSource: dataError, columns: headerHandleErrorExcelColumns }, 'HandleErrorExcel')] }));
|
|
53798
53783
|
};
|
|
53799
53784
|
|
|
53800
53785
|
const TabMergeImportExcel = (props) => {
|
|
@@ -53849,7 +53834,7 @@ const TabMergeImportExcel = (props) => {
|
|
|
53849
53834
|
minWidth: 250,
|
|
53850
53835
|
maxWidth: 350
|
|
53851
53836
|
}
|
|
53852
|
-
], rowChange: () => { }, addDisable: true, dataSource: watch('dataMap'),
|
|
53837
|
+
], rowChange: () => { }, addDisable: true, dataSource: watch('dataMap'), height: windowSize.innerHeight - 410, dataSourceChange: (val) => setValue('dataMap', [...val]), setDataSource: (val) => setValue('dataMap', val), toolbarSetting: {
|
|
53853
53838
|
showTopToolbar: false
|
|
53854
53839
|
} }, 'MapColumnImportExcel')] }));
|
|
53855
53840
|
};
|
|
@@ -72987,11 +72972,9 @@ const TabSelectFileImportExcel = (props) => {
|
|
|
72987
72972
|
};
|
|
72988
72973
|
|
|
72989
72974
|
const TabValidateImportExcel = (props) => {
|
|
72990
|
-
const { dataInvalid, dataValid, dataValidate, windowSize, formatNumber,
|
|
72975
|
+
const { dataInvalid, dataValid, dataValidate, windowSize, formatNumber, headerValidateExcelColumns } = props;
|
|
72991
72976
|
const [resultView, setResultView] = React$5.useState(0);
|
|
72992
72977
|
const { t } = reactI18next.useTranslation();
|
|
72993
|
-
const [currentPage, setCurrentPage] = React$5.useState(1);
|
|
72994
|
-
const [pageSize, setPageSize] = React$5.useState(pageSizeDefault ?? 50);
|
|
72995
72978
|
const dataTemplate = () => {
|
|
72996
72979
|
return (jsxRuntime.jsxs("div", { style: { fontFamily: 'Montserrat,Helvetica,Arial,serif' }, children: [jsxRuntime.jsxs(Badge$1, { className: 'text-capitalize mx-50', style: { fontSize: '11px' }, color: `${resultView === 0 ? 'info' : 'light-info'}`, pill: true, onClick: () => setResultView(0), children: [dataValidate.length, " ", t('All')] }), jsxRuntime.jsxs(Badge$1, { className: 'text-capitalize mx-50', style: { fontSize: '11px' }, color: `${resultView === 1 ? 'success' : 'light-success'}`, pill: true, onClick: () => setResultView(1), children: [dataValid.length, " ", t('Valid')] }), jsxRuntime.jsxs(Badge$1, { className: 'text-capitalize mx-50', style: { fontSize: '11px' }, color: `${resultView === 2 ? 'danger' : 'light-danger'}`, pill: true, onClick: () => setResultView(2), children: [dataInvalid.length, " ", t('Invalid')] })] }));
|
|
72997
72980
|
};
|
|
@@ -73009,20 +72992,12 @@ const TabValidateImportExcel = (props) => {
|
|
|
73009
72992
|
align: 'left'
|
|
73010
72993
|
}
|
|
73011
72994
|
]
|
|
73012
|
-
}, editDisable: true, dataSource: resultView === 0 ? dataValidate : resultView === 1 ? dataValid : dataInvalid, columns: headerValidateExcelColumns,
|
|
73013
|
-
allowPaging: true,
|
|
73014
|
-
pageOptions,
|
|
73015
|
-
pagingClient: true,
|
|
73016
|
-
setCurrentPage,
|
|
73017
|
-
pageSize,
|
|
73018
|
-
setPageSize,
|
|
73019
|
-
currentPage
|
|
73020
|
-
} }, 'ValidateExcel')] }));
|
|
72995
|
+
}, editDisable: true, dataSource: resultView === 0 ? dataValidate : resultView === 1 ? dataValid : dataInvalid, columns: headerValidateExcelColumns }, 'ValidateExcel')] }));
|
|
73021
72996
|
};
|
|
73022
72997
|
|
|
73023
72998
|
const ModalImportComponent = (props) => {
|
|
73024
72999
|
const { t } = reactI18next.useTranslation();
|
|
73025
|
-
const { windowSize, openModal, handleModal, handleValidate, importExcelApi, validateExcelApi, getGeneralSettingApi, updateGeneralSettingApi, headerErrorExcelColumns, templateUrl, defaultHeaderRow,
|
|
73000
|
+
const { windowSize, openModal, handleModal, handleValidate, importExcelApi, validateExcelApi, getGeneralSettingApi, updateGeneralSettingApi, headerErrorExcelColumns, templateUrl, defaultHeaderRow, formatNumber, mapColumn, headerValidateExcelColumns } = props;
|
|
73026
73001
|
const [optionField, setOptionField] = React$5.useState([]);
|
|
73027
73002
|
const [dataMerge, setDataMerge] = React$5.useState([]);
|
|
73028
73003
|
const [dataValidate, setDataValidate] = React$5.useState([]);
|
|
@@ -73030,7 +73005,7 @@ const ModalImportComponent = (props) => {
|
|
|
73030
73005
|
const [dataInvalid, setDataInvalid] = React$5.useState([]);
|
|
73031
73006
|
const [checkInit, setCheckInit] = React$5.useState(false);
|
|
73032
73007
|
const [checkInitValidate, setCheckInitValidate] = React$5.useState(false);
|
|
73033
|
-
const [validateExcelColumns, setValidateExcelColumns] = React$5.useState(
|
|
73008
|
+
const [validateExcelColumns, setValidateExcelColumns] = React$5.useState(mapColumn);
|
|
73034
73009
|
const [dataError, setDataError] = React$5.useState([]);
|
|
73035
73010
|
const [isSaveSetting, setIsSaveSetting] = React$5.useState(true);
|
|
73036
73011
|
const formSchema = create().shape({
|
|
@@ -73163,10 +73138,13 @@ const ModalImportComponent = (props) => {
|
|
|
73163
73138
|
}
|
|
73164
73139
|
}
|
|
73165
73140
|
];
|
|
73141
|
+
React$5.useEffect(() => {
|
|
73142
|
+
console.log(watch('dataMap'));
|
|
73143
|
+
}, [watch('dataMap')]);
|
|
73166
73144
|
const handleFormOpened = () => {
|
|
73167
73145
|
getGeneralSettingApi().then((rs) => {
|
|
73168
73146
|
const arr = rs?.value ? JSON.parse(rs.value) : [];
|
|
73169
|
-
setValue('dataMap', mapColumn.map((x) => {
|
|
73147
|
+
setValue('dataMap', [...mapColumn].map((x) => {
|
|
73170
73148
|
const ele = arr.find(y => x.field === y.field);
|
|
73171
73149
|
if (ele) {
|
|
73172
73150
|
x.headerDefault = ele.headerDefault;
|
|
@@ -73174,7 +73152,7 @@ const ModalImportComponent = (props) => {
|
|
|
73174
73152
|
return x;
|
|
73175
73153
|
}));
|
|
73176
73154
|
}).catch(() => {
|
|
73177
|
-
setValue('dataMap', mapColumn);
|
|
73155
|
+
setValue('dataMap', [...mapColumn]);
|
|
73178
73156
|
});
|
|
73179
73157
|
if (headerValidateExcelColumns && headerValidateExcelColumns.length > 0) {
|
|
73180
73158
|
setValidateExcelColumns(headerValidateExcelColumns);
|
|
@@ -73217,13 +73195,13 @@ const ModalImportComponent = (props) => {
|
|
|
73217
73195
|
{
|
|
73218
73196
|
id: 'validate-data',
|
|
73219
73197
|
title: t('Validate data'),
|
|
73220
|
-
content: jsxRuntime.jsx(TabValidateImportExcel, { formatNumber: formatNumber,
|
|
73198
|
+
content: jsxRuntime.jsx(TabValidateImportExcel, { formatNumber: formatNumber, dataInvalid: dataInvalid, dataValid: dataValid, dataValidate: dataValidate, headerValidateExcelColumns: validateExcelColumns, windowSize: windowSize })
|
|
73221
73199
|
},
|
|
73222
73200
|
{
|
|
73223
73201
|
id: 'handle-error',
|
|
73224
73202
|
title: t('Error result'),
|
|
73225
73203
|
visiable: !!headerErrorExcelColumns,
|
|
73226
|
-
content: jsxRuntime.jsx(TabHandleErrorImportExcel, { formatNumber: formatNumber,
|
|
73204
|
+
content: jsxRuntime.jsx(TabHandleErrorImportExcel, { formatNumber: formatNumber, dataError: dataError, headerHandleErrorExcelColumns: headerErrorExcelColumns ?? [], windowSize: windowSize })
|
|
73227
73205
|
}
|
|
73228
73206
|
] }) }) }) }), jsxRuntime.jsxs("div", { className: "d-flex justify-content-between align-items-center p-1", style: { boxShadow: "0 4px 24px 0 rgb(34 41 47 / 10%)" }, children: [jsxRuntime.jsx("div", { className: "d-flex align-items-center", children: watch('step') === 2 && jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Input$1, { checked: isSaveSetting, type: 'checkbox', className: 'me-50', onChange: (val) => {
|
|
73229
73207
|
setIsSaveSetting(val.target.checked);
|
|
@@ -73391,34 +73369,34 @@ const RenderContentCol = (props) => {
|
|
|
73391
73369
|
}, children: [jsxRuntime.jsx("div", { id: `content-${idTable}-row${indexRow}col-${indexCol}`, className: "r-cell-text", children: (col.type === 'numeric' && Number(row[col.field]) < 0 ? jsxRuntime.jsxs("div", { style: { color: formatSetting?.colorNegative ?? 'red' }, children: [" ", `${formatSetting?.prefixNegative ?? '-'}${value}${formatSetting?.suffixNegative ?? ''}`] }) : value) }), col.haveToolTip && jsxRuntime.jsx(UncontrolledTooltip, { className: "r-tooltip", autohide: false, target: `content-${idTable}-row${indexRow}col-${indexCol}`, children: (col.type === 'numeric' && Number(row[col.field]) < 0 ? jsxRuntime.jsxs("div", { style: { color: formatSetting?.colorNegative ?? 'red' }, children: [" ", `${formatSetting?.prefixNegative ?? '-'}${value}${formatSetting?.suffixNegative ?? ''}`] }) : value) })] }) }));
|
|
73392
73370
|
}
|
|
73393
73371
|
};
|
|
73394
|
-
return (col.visible !== false && jsxRuntime.jsx("td", { className: classNames$1(`r-rowcell fix-${col.fixedType}`, { 'cell-fixed': col.fixedType }, { 'fixed-last': (col.fixedType === 'left' && indexCol === lastObjWidthFixLeft) || (col.fixedType === 'right' && indexCol === fisrtObjWidthFixRight) }, { 'r-active': isSelected }), style: {
|
|
73395
|
-
|
|
73396
|
-
|
|
73397
|
-
|
|
73398
|
-
|
|
73399
|
-
|
|
73400
|
-
|
|
73401
|
-
|
|
73402
|
-
|
|
73403
|
-
|
|
73404
|
-
|
|
73405
|
-
|
|
73406
|
-
|
|
73407
|
-
|
|
73408
|
-
|
|
73409
|
-
}
|
|
73410
|
-
else {
|
|
73411
|
-
if (isMulti) {
|
|
73412
|
-
setSelectedRows([...selectedRows, row]);
|
|
73372
|
+
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: (col.visible !== false && jsxRuntime.jsx("td", { className: classNames$1(`r-rowcell fix-${col.fixedType}`, { 'cell-fixed': col.fixedType }, { 'fixed-last': (col.fixedType === 'left' && indexCol === lastObjWidthFixLeft) || (col.fixedType === 'right' && indexCol === fisrtObjWidthFixRight) }, { 'r-active': isSelected }), style: {
|
|
73373
|
+
left: col.fixedType === 'left' ? objWidthFixLeft[indexCol] : undefined,
|
|
73374
|
+
right: col.fixedType === 'right' ? objWidthFixRight[indexCol] : undefined
|
|
73375
|
+
}, onClick: (e) => {
|
|
73376
|
+
if (e.target.nodeName === 'DIV' || e.target.nodeName === 'TD') {
|
|
73377
|
+
if (selectEnable) {
|
|
73378
|
+
const index = selectedRows?.findIndex((x) => x[fieldKey] === row[fieldKey]);
|
|
73379
|
+
if (index > -1) {
|
|
73380
|
+
if (isMulti) {
|
|
73381
|
+
selectedRows?.splice(index, 1);
|
|
73382
|
+
setSelectedRows([...selectedRows]);
|
|
73383
|
+
}
|
|
73384
|
+
else {
|
|
73385
|
+
setSelectedRows([]);
|
|
73386
|
+
}
|
|
73413
73387
|
}
|
|
73414
73388
|
else {
|
|
73415
|
-
|
|
73389
|
+
if (isMulti) {
|
|
73390
|
+
setSelectedRows([...selectedRows, row]);
|
|
73391
|
+
}
|
|
73392
|
+
else {
|
|
73393
|
+
setSelectedRows([row]);
|
|
73394
|
+
}
|
|
73416
73395
|
}
|
|
73417
73396
|
}
|
|
73397
|
+
e.stopPropagation();
|
|
73418
73398
|
}
|
|
73419
|
-
|
|
73420
|
-
}
|
|
73421
|
-
}, children: RenderElement() }, `col-${indexRow}-${indexCol}`));
|
|
73399
|
+
}, children: RenderElement() }, `col-${indexRow}-${indexCol}`)) });
|
|
73422
73400
|
};
|
|
73423
73401
|
|
|
73424
73402
|
const HeaderTableCol = (props) => {
|
|
@@ -73643,35 +73621,22 @@ const TableView = ({ idTable, dataSource, rowHeight = 33, height = 400, columns,
|
|
|
73643
73621
|
}
|
|
73644
73622
|
return datas;
|
|
73645
73623
|
}, [searchTerm, filterBy, orderBy, dataSource]);
|
|
73646
|
-
// Lấy dữ liệu hiển thị với phân trang
|
|
73647
|
-
const pagingData = React$5.useMemo(() => {
|
|
73648
|
-
if (!viewData || viewData.length === 0) {
|
|
73649
|
-
return [];
|
|
73650
|
-
}
|
|
73651
|
-
let datas = viewData;
|
|
73652
|
-
if (pagingSetting?.allowPaging && pagingSetting?.currentPage && pagingSetting?.pageSize && pagingSetting.pagingClient) {
|
|
73653
|
-
const start = (pagingSetting.currentPage - 1) * pagingSetting.pageSize;
|
|
73654
|
-
const end = start + pagingSetting.pageSize;
|
|
73655
|
-
datas = datas.slice(start, end);
|
|
73656
|
-
}
|
|
73657
|
-
return datas;
|
|
73658
|
-
}, [viewData, pagingSetting?.pageSize, pagingSetting?.currentPage]);
|
|
73659
73624
|
// Tính toán chỉ số bắt đầu và kết thúc của dữ liệu hiển thị
|
|
73660
73625
|
const { adjustedStartIndex, adjustedEndIndex } = React$5.useMemo(() => {
|
|
73661
|
-
if (!
|
|
73626
|
+
if (!viewData || viewData.length === 0 || !isVirtualList) {
|
|
73662
73627
|
return { adjustedStartIndex: 0, adjustedEndIndex: 0 };
|
|
73663
73628
|
}
|
|
73664
73629
|
return {
|
|
73665
73630
|
adjustedStartIndex: Math.max(startIndex - buffer, 0),
|
|
73666
73631
|
adjustedEndIndex: Math.min(startIndex + visibleRowCount + buffer, dataSource.length)
|
|
73667
73632
|
};
|
|
73668
|
-
}, [startIndex,
|
|
73633
|
+
}, [startIndex, viewData]);
|
|
73669
73634
|
const visibleData = React$5.useMemo(() => {
|
|
73670
|
-
if (!
|
|
73635
|
+
if (!viewData || viewData.length === 0) {
|
|
73671
73636
|
return [];
|
|
73672
73637
|
}
|
|
73673
|
-
return isVirtualList ?
|
|
73674
|
-
}, [
|
|
73638
|
+
return isVirtualList ? viewData.slice(adjustedStartIndex, adjustedEndIndex) : viewData;
|
|
73639
|
+
}, [viewData]);
|
|
73675
73640
|
const { levels: headerColumns, flat: contentColumns, flatVisble, objWidthFixLeft, objWidthFixRight, lastObjWidthFixLeft, fisrtObjWidthFixRight } = React$5.useMemo(() => calculateTableStructure(columns), [columns]);
|
|
73676
73641
|
const scrollTimeoutRef = React$5.useRef(null);
|
|
73677
73642
|
const lastScrollTop = React$5.useRef(0);
|
|
@@ -73802,7 +73767,7 @@ const TableView = ({ idTable, dataSource, rowHeight = 33, height = 400, columns,
|
|
|
73802
73767
|
const indexRow = index + startIndex;
|
|
73803
73768
|
const isSelected = selectedRows?.some((x) => x[fieldKey] === row[fieldKey]);
|
|
73804
73769
|
return (jsxRuntime.jsx("tr", { "aria-rowindex": indexRow + 1, role: "row", className: 'r-row', children: contentColumns.map((column, indexCol) => (jsxRuntime.jsx(RenderContentCol, { idTable: idTable, col: column, fieldKey: fieldKey, objWidthFixLeft: objWidthFixLeft, objWidthFixRight: objWidthFixRight, fisrtObjWidthFixRight: fisrtObjWidthFixRight, lastObjWidthFixLeft: lastObjWidthFixLeft, isMulti: isMutil ?? false, selectEnable: selectEnable ?? false, selectedRows: selectedRows, setSelectedRows: setSelectedRows, formatSetting: formatSetting, handleCommandClick: handleCommandClick, indexCol: indexCol, indexRow: indexRow, isSelected: isSelected, row: row }, indexCol))) }, `row-content-${indexRow}`));
|
|
73805
|
-
}), adjustedEndIndex > 0 &&
|
|
73770
|
+
}), adjustedEndIndex > 0 && viewData.length > adjustedEndIndex && (jsxRuntime.jsx("tr", { style: { height: (viewData.length - adjustedEndIndex) * rowHeight }, children: jsxRuntime.jsx("td", { style: { padding: 0 }, colSpan: flatVisble.length }) }))] }), viewData.length > 0 && jsxRuntime.jsx("tfoot", { className: "r-gridfoot", children: (columnsAggregate?.length ?? 0) > 0 ? jsxRuntime.jsx("tr", { className: 'r-row', children: contentColumns.map((col, indexCol) => {
|
|
73806
73771
|
const item = columnsAggregate?.find((x) => x.field === col.field);
|
|
73807
73772
|
let sumValue = item?.value;
|
|
73808
73773
|
if (!item && col.haveSum === true && col.type === "numeric") {
|
|
@@ -73813,9 +73778,10 @@ const TableView = ({ idTable, dataSource, rowHeight = 33, height = 400, columns,
|
|
|
73813
73778
|
right: col.fixedType === 'right' ? objWidthFixRight[indexCol] : undefined,
|
|
73814
73779
|
textAlign: col.textAlign ? col.textAlign : 'left'
|
|
73815
73780
|
}, children: jsxRuntime.jsxs("div", { className: "r-footer-div", children: [(item || (col.haveSum === true && col.type === "numeric")) && col.type === "numeric" && (Number(sumValue) >= 0) && jsxRuntime.jsx(jsxRuntime.Fragment, { children: formartNumberic(sumValue, formatSetting?.decimalSeparator ?? ',', formatSetting?.thousandSeparator ?? '.', col.numericSettings?.fraction, true, false) }), (item || (col.haveSum === true && col.type === "numeric")) && col.type === "numeric" && (Number(sumValue) < 0) && jsxRuntime.jsxs("div", { style: { color: formatSetting?.colorNegative ?? 'red' }, children: [" ", `${formatSetting?.prefixNegative ?? '-'}${formartNumberic(sumValue, formatSetting?.decimalSeparator ?? ',', formatSetting?.thousandSeparator ?? '.', col.numericSettings?.fraction, true, false)}${formatSetting?.suffixNegative ?? ''}`] })] }) }, `summarycell-${indexCol}`);
|
|
73816
|
-
}) }) : jsxRuntime.jsx(jsxRuntime.Fragment, {}) })] }), (((viewData.length ?? 0) === 0) && !isLoading) && jsxRuntime.jsxs("div", { className: "r-no-data", children: [jsxRuntime.jsx("svg", { width: "64", height: "41", viewBox: "0 0 64 41", xmlns: "http://www.w3.org/2000/svg", children: jsxRuntime.jsxs("g", { transform: "translate(0 1)", fill: "none", fillRule: "evenodd", children: [jsxRuntime.jsx("ellipse", { fill: "#f5f5f5", cx: "32", cy: "33", rx: "32", ry: "7" }), jsxRuntime.jsxs("g", { fillRule: "nonzero", stroke: "#d9d9d9", children: [jsxRuntime.jsx("path", { d: "M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z" }), jsxRuntime.jsx("path", { d: "M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z", fill: "#fafafa" })] })] }) }), t('No data available.')] }), isLoading && jsxRuntime.jsx("div", { className: "r-loading-overlay", children: jsxRuntime.jsxs("div", { className: "r-loading", children: [jsxRuntime.jsx(Spinner$1, { className: "me-1" }), t('Loading...')] }) })] })] }), pagingSetting?.allowPaging ? jsxRuntime.jsx(PagingComponent, { onChangePage: onChangePage, pageSize: pagingSetting?.pageSize ?? 0, currentPage: pagingSetting?.currentPage ?? 0, pageOptions: pagingSetting?.pageOptions ?? [20, 30, 50, 100], totalItem:
|
|
73781
|
+
}) }) : jsxRuntime.jsx(jsxRuntime.Fragment, {}) })] }), (((viewData.length ?? 0) === 0) && !isLoading) && jsxRuntime.jsxs("div", { className: "r-no-data", children: [jsxRuntime.jsx("svg", { width: "64", height: "41", viewBox: "0 0 64 41", xmlns: "http://www.w3.org/2000/svg", children: jsxRuntime.jsxs("g", { transform: "translate(0 1)", fill: "none", fillRule: "evenodd", children: [jsxRuntime.jsx("ellipse", { fill: "#f5f5f5", cx: "32", cy: "33", rx: "32", ry: "7" }), jsxRuntime.jsxs("g", { fillRule: "nonzero", stroke: "#d9d9d9", children: [jsxRuntime.jsx("path", { d: "M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z" }), jsxRuntime.jsx("path", { d: "M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z", fill: "#fafafa" })] })] }) }), t('No data available.')] }), isLoading && jsxRuntime.jsx("div", { className: "r-loading-overlay", children: jsxRuntime.jsxs("div", { className: "r-loading", children: [jsxRuntime.jsx(Spinner$1, { className: "me-1" }), t('Loading...')] }) })] })] }), pagingSetting?.allowPaging ? jsxRuntime.jsx(PagingComponent, { gridRef: gridRef, onChangePage: onChangePage, pageSize: pagingSetting?.pageSize ?? 0, currentPage: pagingSetting?.currentPage ?? 0, pageOptions: pagingSetting?.pageOptions ?? [20, 30, 50, 100], totalItem: pagingSetting?.totalItem ?? 0, onChangePageSize: onChangePageSize }) : jsxRuntime.jsx(jsxRuntime.Fragment, {})] }));
|
|
73817
73782
|
};
|
|
73818
73783
|
|
|
73784
|
+
exports.CheckRowMatch = CheckRowMatch;
|
|
73819
73785
|
exports.ExportExcelComponent = ExportExcelComponent;
|
|
73820
73786
|
exports.FindNodeByPath = FindNodeByPath;
|
|
73821
73787
|
exports.InputStyleComponent = InputStyleComponent;
|