@fctc/widget-logic 3.4.1 → 3.4.2
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/hooks.js +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/index.js +50 -62
- package/dist/index.mjs +56 -68
- package/dist/widget.d.mts +3 -3
- package/dist/widget.d.ts +3 -3
- package/dist/widget.js +49 -61
- package/dist/widget.mjs +55 -67
- package/package.json +1 -1
package/dist/hooks.js
CHANGED
|
@@ -458,7 +458,7 @@ var import_react_i18next = require("react-i18next");
|
|
|
458
458
|
var useProfile = ({ service }) => {
|
|
459
459
|
const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
460
460
|
const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
|
|
461
|
-
const getProfile = useGetProfile2();
|
|
461
|
+
const getProfile = useGetProfile2("service", service);
|
|
462
462
|
const { i18n } = (0, import_react_i18next.useTranslation)();
|
|
463
463
|
const userInfoQuery = (0, import_react_query2.useQuery)({
|
|
464
464
|
queryKey: ["userInfo"],
|
package/dist/hooks.mjs
CHANGED
|
@@ -439,7 +439,7 @@ import { useTranslation } from "react-i18next";
|
|
|
439
439
|
var useProfile = ({ service }) => {
|
|
440
440
|
const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
441
441
|
const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
|
|
442
|
-
const getProfile = useGetProfile2();
|
|
442
|
+
const getProfile = useGetProfile2("service", service);
|
|
443
443
|
const { i18n } = useTranslation();
|
|
444
444
|
const userInfoQuery = useQuery2({
|
|
445
445
|
queryKey: ["userInfo"],
|
package/dist/index.js
CHANGED
|
@@ -4508,7 +4508,7 @@ var import_react_i18next = require("react-i18next");
|
|
|
4508
4508
|
var useProfile = ({ service }) => {
|
|
4509
4509
|
const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4510
4510
|
const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
|
|
4511
|
-
const getProfile = useGetProfile2();
|
|
4511
|
+
const getProfile = useGetProfile2("service", service);
|
|
4512
4512
|
const { i18n: i18n2 } = (0, import_react_i18next.useTranslation)();
|
|
4513
4513
|
const userInfoQuery = (0, import_react_query2.useQuery)({
|
|
4514
4514
|
queryKey: ["userInfo"],
|
|
@@ -6953,88 +6953,76 @@ var tableHeadController = (props) => {
|
|
|
6953
6953
|
var import_react24 = require("react");
|
|
6954
6954
|
var import_utils17 = require("@fctc/interface-logic/utils");
|
|
6955
6955
|
var tableController = ({ data }) => {
|
|
6956
|
-
const [rows, setRows] = (0, import_react24.useState)(
|
|
6957
|
-
const [
|
|
6958
|
-
const dataModelFields =
|
|
6959
|
-
return {
|
|
6956
|
+
const [rows, setRows] = (0, import_react24.useState)([]);
|
|
6957
|
+
const [columnVisibility, setColumnVisibility] = (0, import_react24.useState)({});
|
|
6958
|
+
const dataModelFields = (0, import_react24.useMemo)(() => {
|
|
6959
|
+
return data?.fields?.map((field) => ({
|
|
6960
6960
|
...data.dataModel?.[field?.name],
|
|
6961
6961
|
...field,
|
|
6962
6962
|
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
6963
|
-
};
|
|
6964
|
-
});
|
|
6965
|
-
const mergeFields =
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
|
|
6973
|
-
|
|
6974
|
-
|
|
6975
|
-
|
|
6976
|
-
|
|
6963
|
+
})) ?? [];
|
|
6964
|
+
}, [data?.fields, data?.dataModel]);
|
|
6965
|
+
const mergeFields = (0, import_react24.useMemo)(
|
|
6966
|
+
() => mergeButtons(dataModelFields),
|
|
6967
|
+
[dataModelFields]
|
|
6968
|
+
);
|
|
6969
|
+
const transformData = (0, import_react24.useCallback)(
|
|
6970
|
+
(dataList) => {
|
|
6971
|
+
if (!dataList) return [];
|
|
6972
|
+
return dataList.map((item) => {
|
|
6973
|
+
const transformedItem = { ...item };
|
|
6974
|
+
Object.keys(item).forEach((field) => {
|
|
6975
|
+
if (field !== "__domain") {
|
|
6976
|
+
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
6977
|
+
transformedItem[field] = item[field];
|
|
6978
|
+
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
6979
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
6980
|
+
transformedItem["string"] = item[field]?.[1];
|
|
6981
|
+
}
|
|
6982
|
+
transformedItem[field] = item[field];
|
|
6977
6983
|
}
|
|
6978
|
-
transformedItem[field] = item[field];
|
|
6979
6984
|
}
|
|
6980
|
-
}
|
|
6985
|
+
});
|
|
6986
|
+
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6981
6987
|
});
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
|
|
6988
|
+
},
|
|
6989
|
+
[data?.typeTable]
|
|
6990
|
+
);
|
|
6985
6991
|
(0, import_react24.useEffect)(() => {
|
|
6986
|
-
setRows(transformData(data
|
|
6987
|
-
}, [data
|
|
6988
|
-
const
|
|
6989
|
-
let cols = [];
|
|
6992
|
+
setRows(transformData(data?.records));
|
|
6993
|
+
}, [data?.records, transformData]);
|
|
6994
|
+
const columns = (0, import_react24.useMemo)(() => {
|
|
6990
6995
|
try {
|
|
6991
|
-
|
|
6992
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(
|
|
6996
|
+
return mergeFields?.filter((item) => {
|
|
6997
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(
|
|
6998
|
+
data.context,
|
|
6999
|
+
item?.column_invisible
|
|
7000
|
+
) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
6993
7001
|
})?.map((field) => {
|
|
7002
|
+
const overridden = columnVisibility[field?.name];
|
|
6994
7003
|
return {
|
|
6995
7004
|
name: field?.name,
|
|
6996
|
-
optional: field?.optional,
|
|
7005
|
+
optional: overridden ?? field?.optional,
|
|
6997
7006
|
title: field?.type_co === "button" ? "" : field?.string,
|
|
6998
7007
|
field: { ...field }
|
|
6999
7008
|
};
|
|
7000
|
-
});
|
|
7009
|
+
}) ?? [];
|
|
7001
7010
|
} catch (error) {
|
|
7002
7011
|
console.error("Error in useTable:", error);
|
|
7012
|
+
return [];
|
|
7003
7013
|
}
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
|
|
7009
|
-
}
|
|
7010
|
-
}, [
|
|
7011
|
-
const onToggleColumnOptional = (item) => {
|
|
7012
|
-
const tempColumn = [...columns]?.map((val) => {
|
|
7013
|
-
if (item?.name === val?.name) {
|
|
7014
|
-
return {
|
|
7015
|
-
...val,
|
|
7016
|
-
optional: item?.optional === "show" ? "hide" : "show"
|
|
7017
|
-
};
|
|
7018
|
-
}
|
|
7019
|
-
return val;
|
|
7020
|
-
});
|
|
7021
|
-
setColumns(tempColumn);
|
|
7022
|
-
};
|
|
7023
|
-
(0, import_react24.useEffect)(() => {
|
|
7024
|
-
if (data?.fields != null) {
|
|
7025
|
-
setColumns(null);
|
|
7026
|
-
}
|
|
7027
|
-
return () => {
|
|
7028
|
-
if (data?.fields != null) {
|
|
7029
|
-
setColumns(null);
|
|
7030
|
-
}
|
|
7031
|
-
};
|
|
7032
|
-
}, [data?.fields]);
|
|
7014
|
+
}, [mergeFields, data?.context, columnVisibility]);
|
|
7015
|
+
const onToggleColumnOptional = (0, import_react24.useCallback)((item) => {
|
|
7016
|
+
setColumnVisibility((prev) => ({
|
|
7017
|
+
...prev,
|
|
7018
|
+
[item?.name]: item?.optional === "show" ? "hide" : "show"
|
|
7019
|
+
}));
|
|
7020
|
+
}, []);
|
|
7033
7021
|
return {
|
|
7034
7022
|
rows,
|
|
7035
7023
|
columns,
|
|
7036
7024
|
onToggleColumnOptional,
|
|
7037
|
-
typeTable: data
|
|
7025
|
+
typeTable: data?.typeTable
|
|
7038
7026
|
};
|
|
7039
7027
|
};
|
|
7040
7028
|
|
package/dist/index.mjs
CHANGED
|
@@ -4583,7 +4583,7 @@ import { useTranslation } from "react-i18next";
|
|
|
4583
4583
|
var useProfile = ({ service }) => {
|
|
4584
4584
|
const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4585
4585
|
const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
|
|
4586
|
-
const getProfile = useGetProfile2();
|
|
4586
|
+
const getProfile = useGetProfile2("service", service);
|
|
4587
4587
|
const { i18n: i18n2 } = useTranslation();
|
|
4588
4588
|
const userInfoQuery = useQuery2({
|
|
4589
4589
|
queryKey: ["userInfo"],
|
|
@@ -7031,96 +7031,84 @@ var tableHeadController = (props) => {
|
|
|
7031
7031
|
};
|
|
7032
7032
|
|
|
7033
7033
|
// src/widget/advance/table/table-view/controller.ts
|
|
7034
|
-
import { useEffect as useEffect13, useState as useState12 } from "react";
|
|
7034
|
+
import { useCallback as useCallback5, useEffect as useEffect13, useMemo as useMemo11, useState as useState12 } from "react";
|
|
7035
7035
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
7036
7036
|
var tableController = ({ data }) => {
|
|
7037
|
-
const [rows, setRows] = useState12(
|
|
7038
|
-
const [
|
|
7039
|
-
const dataModelFields =
|
|
7040
|
-
return {
|
|
7037
|
+
const [rows, setRows] = useState12([]);
|
|
7038
|
+
const [columnVisibility, setColumnVisibility] = useState12({});
|
|
7039
|
+
const dataModelFields = useMemo11(() => {
|
|
7040
|
+
return data?.fields?.map((field) => ({
|
|
7041
7041
|
...data.dataModel?.[field?.name],
|
|
7042
7042
|
...field,
|
|
7043
7043
|
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
7044
|
-
};
|
|
7045
|
-
});
|
|
7046
|
-
const mergeFields =
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7054
|
-
|
|
7055
|
-
|
|
7056
|
-
|
|
7057
|
-
|
|
7044
|
+
})) ?? [];
|
|
7045
|
+
}, [data?.fields, data?.dataModel]);
|
|
7046
|
+
const mergeFields = useMemo11(
|
|
7047
|
+
() => mergeButtons(dataModelFields),
|
|
7048
|
+
[dataModelFields]
|
|
7049
|
+
);
|
|
7050
|
+
const transformData = useCallback5(
|
|
7051
|
+
(dataList) => {
|
|
7052
|
+
if (!dataList) return [];
|
|
7053
|
+
return dataList.map((item) => {
|
|
7054
|
+
const transformedItem = { ...item };
|
|
7055
|
+
Object.keys(item).forEach((field) => {
|
|
7056
|
+
if (field !== "__domain") {
|
|
7057
|
+
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
7058
|
+
transformedItem[field] = item[field];
|
|
7059
|
+
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
7060
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
7061
|
+
transformedItem["string"] = item[field]?.[1];
|
|
7062
|
+
}
|
|
7063
|
+
transformedItem[field] = item[field];
|
|
7058
7064
|
}
|
|
7059
|
-
transformedItem[field] = item[field];
|
|
7060
7065
|
}
|
|
7061
|
-
}
|
|
7066
|
+
});
|
|
7067
|
+
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
7062
7068
|
});
|
|
7063
|
-
|
|
7064
|
-
|
|
7065
|
-
|
|
7069
|
+
},
|
|
7070
|
+
[data?.typeTable]
|
|
7071
|
+
);
|
|
7066
7072
|
useEffect13(() => {
|
|
7067
|
-
setRows(transformData(data
|
|
7068
|
-
}, [data
|
|
7069
|
-
const
|
|
7070
|
-
let cols = [];
|
|
7073
|
+
setRows(transformData(data?.records));
|
|
7074
|
+
}, [data?.records, transformData]);
|
|
7075
|
+
const columns = useMemo11(() => {
|
|
7071
7076
|
try {
|
|
7072
|
-
|
|
7073
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(
|
|
7077
|
+
return mergeFields?.filter((item) => {
|
|
7078
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(
|
|
7079
|
+
data.context,
|
|
7080
|
+
item?.column_invisible
|
|
7081
|
+
) : item?.invisible ? domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
7074
7082
|
})?.map((field) => {
|
|
7083
|
+
const overridden = columnVisibility[field?.name];
|
|
7075
7084
|
return {
|
|
7076
7085
|
name: field?.name,
|
|
7077
|
-
optional: field?.optional,
|
|
7086
|
+
optional: overridden ?? field?.optional,
|
|
7078
7087
|
title: field?.type_co === "button" ? "" : field?.string,
|
|
7079
7088
|
field: { ...field }
|
|
7080
7089
|
};
|
|
7081
|
-
});
|
|
7090
|
+
}) ?? [];
|
|
7082
7091
|
} catch (error) {
|
|
7083
7092
|
console.error("Error in useTable:", error);
|
|
7093
|
+
return [];
|
|
7084
7094
|
}
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
|
|
7089
|
-
|
|
7090
|
-
}
|
|
7091
|
-
}, [
|
|
7092
|
-
const onToggleColumnOptional = (item) => {
|
|
7093
|
-
const tempColumn = [...columns]?.map((val) => {
|
|
7094
|
-
if (item?.name === val?.name) {
|
|
7095
|
-
return {
|
|
7096
|
-
...val,
|
|
7097
|
-
optional: item?.optional === "show" ? "hide" : "show"
|
|
7098
|
-
};
|
|
7099
|
-
}
|
|
7100
|
-
return val;
|
|
7101
|
-
});
|
|
7102
|
-
setColumns(tempColumn);
|
|
7103
|
-
};
|
|
7104
|
-
useEffect13(() => {
|
|
7105
|
-
if (data?.fields != null) {
|
|
7106
|
-
setColumns(null);
|
|
7107
|
-
}
|
|
7108
|
-
return () => {
|
|
7109
|
-
if (data?.fields != null) {
|
|
7110
|
-
setColumns(null);
|
|
7111
|
-
}
|
|
7112
|
-
};
|
|
7113
|
-
}, [data?.fields]);
|
|
7095
|
+
}, [mergeFields, data?.context, columnVisibility]);
|
|
7096
|
+
const onToggleColumnOptional = useCallback5((item) => {
|
|
7097
|
+
setColumnVisibility((prev) => ({
|
|
7098
|
+
...prev,
|
|
7099
|
+
[item?.name]: item?.optional === "show" ? "hide" : "show"
|
|
7100
|
+
}));
|
|
7101
|
+
}, []);
|
|
7114
7102
|
return {
|
|
7115
7103
|
rows,
|
|
7116
7104
|
columns,
|
|
7117
7105
|
onToggleColumnOptional,
|
|
7118
|
-
typeTable: data
|
|
7106
|
+
typeTable: data?.typeTable
|
|
7119
7107
|
};
|
|
7120
7108
|
};
|
|
7121
7109
|
|
|
7122
7110
|
// src/widget/advance/table/table-group/controller.ts
|
|
7123
|
-
import { useEffect as useEffect14, useMemo as
|
|
7111
|
+
import { useEffect as useEffect14, useMemo as useMemo12, useState as useState13 } from "react";
|
|
7124
7112
|
import { useAppSelector as useAppSelector2, selectList } from "@fctc/interface-logic/store";
|
|
7125
7113
|
var tableGroupController = (props) => {
|
|
7126
7114
|
const { env } = (0, provider_exports.useEnv)();
|
|
@@ -7145,7 +7133,7 @@ var tableGroupController = (props) => {
|
|
|
7145
7133
|
fromEnd: 1
|
|
7146
7134
|
});
|
|
7147
7135
|
const domain = row?.__domain;
|
|
7148
|
-
const processedData =
|
|
7136
|
+
const processedData = useMemo12(() => {
|
|
7149
7137
|
const calculateColSpanEmpty = () => {
|
|
7150
7138
|
const startIndex = columns.findIndex(
|
|
7151
7139
|
(col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
|
|
@@ -7160,7 +7148,7 @@ var tableGroupController = (props) => {
|
|
|
7160
7148
|
};
|
|
7161
7149
|
return calculateColSpanEmpty();
|
|
7162
7150
|
}, [columns, row]);
|
|
7163
|
-
const shouldFetchData =
|
|
7151
|
+
const shouldFetchData = useMemo12(() => {
|
|
7164
7152
|
return !!isShowGroup;
|
|
7165
7153
|
}, [isShowGroup]);
|
|
7166
7154
|
const enabled = shouldFetchData && !!processedData;
|
|
@@ -7262,7 +7250,7 @@ import {
|
|
|
7262
7250
|
evalJSONDomain as evalJSONDomain6,
|
|
7263
7251
|
validateAndParseDate
|
|
7264
7252
|
} from "@fctc/interface-logic/utils";
|
|
7265
|
-
import { useCallback as
|
|
7253
|
+
import { useCallback as useCallback6, useEffect as useEffect15, useState as useState14 } from "react";
|
|
7266
7254
|
var searchController = ({
|
|
7267
7255
|
viewData,
|
|
7268
7256
|
model,
|
|
@@ -7405,7 +7393,7 @@ var searchController = ({
|
|
|
7405
7393
|
return [...domain2];
|
|
7406
7394
|
}
|
|
7407
7395
|
};
|
|
7408
|
-
const setTagSearch =
|
|
7396
|
+
const setTagSearch = useCallback6(
|
|
7409
7397
|
(updatedMap) => {
|
|
7410
7398
|
if (!updatedMap) return;
|
|
7411
7399
|
const tagsSearch = Object.entries(updatedMap).map(
|
package/dist/widget.d.mts
CHANGED
|
@@ -70,7 +70,7 @@ interface IMany2ManyControllerProps extends IInputFieldProps {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
|
|
73
|
-
rows: any;
|
|
73
|
+
rows: any[];
|
|
74
74
|
columns: any;
|
|
75
75
|
optionsObject: any;
|
|
76
76
|
viewData: any;
|
|
@@ -245,7 +245,7 @@ interface ISelctionStateProps {
|
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
declare const tableController: ({ data }: ITableProps) => {
|
|
248
|
-
rows: any;
|
|
248
|
+
rows: any[];
|
|
249
249
|
columns: any;
|
|
250
250
|
onToggleColumnOptional: (item: any) => void;
|
|
251
251
|
typeTable: "list" | "group" | "calendar" | undefined;
|
|
@@ -262,7 +262,7 @@ declare const tableGroupController: (props: any) => {
|
|
|
262
262
|
isDataPlaceHolder: boolean;
|
|
263
263
|
nameGroupWithCount: string;
|
|
264
264
|
columnsGroup: any;
|
|
265
|
-
rowsGroup: any;
|
|
265
|
+
rowsGroup: any[];
|
|
266
266
|
dataGroup: any;
|
|
267
267
|
pageGroup: any;
|
|
268
268
|
setPageGroup: react.Dispatch<any>;
|
package/dist/widget.d.ts
CHANGED
|
@@ -70,7 +70,7 @@ interface IMany2ManyControllerProps extends IInputFieldProps {
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
|
|
73
|
-
rows: any;
|
|
73
|
+
rows: any[];
|
|
74
74
|
columns: any;
|
|
75
75
|
optionsObject: any;
|
|
76
76
|
viewData: any;
|
|
@@ -245,7 +245,7 @@ interface ISelctionStateProps {
|
|
|
245
245
|
}
|
|
246
246
|
|
|
247
247
|
declare const tableController: ({ data }: ITableProps) => {
|
|
248
|
-
rows: any;
|
|
248
|
+
rows: any[];
|
|
249
249
|
columns: any;
|
|
250
250
|
onToggleColumnOptional: (item: any) => void;
|
|
251
251
|
typeTable: "list" | "group" | "calendar" | undefined;
|
|
@@ -262,7 +262,7 @@ declare const tableGroupController: (props: any) => {
|
|
|
262
262
|
isDataPlaceHolder: boolean;
|
|
263
263
|
nameGroupWithCount: string;
|
|
264
264
|
columnsGroup: any;
|
|
265
|
-
rowsGroup: any;
|
|
265
|
+
rowsGroup: any[];
|
|
266
266
|
dataGroup: any;
|
|
267
267
|
pageGroup: any;
|
|
268
268
|
setPageGroup: react.Dispatch<any>;
|
package/dist/widget.js
CHANGED
|
@@ -6196,88 +6196,76 @@ var tableHeadController = (props) => {
|
|
|
6196
6196
|
var import_react24 = require("react");
|
|
6197
6197
|
var import_utils17 = require("@fctc/interface-logic/utils");
|
|
6198
6198
|
var tableController = ({ data }) => {
|
|
6199
|
-
const [rows, setRows] = (0, import_react24.useState)(
|
|
6200
|
-
const [
|
|
6201
|
-
const dataModelFields =
|
|
6202
|
-
return {
|
|
6199
|
+
const [rows, setRows] = (0, import_react24.useState)([]);
|
|
6200
|
+
const [columnVisibility, setColumnVisibility] = (0, import_react24.useState)({});
|
|
6201
|
+
const dataModelFields = (0, import_react24.useMemo)(() => {
|
|
6202
|
+
return data?.fields?.map((field) => ({
|
|
6203
6203
|
...data.dataModel?.[field?.name],
|
|
6204
6204
|
...field,
|
|
6205
6205
|
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
6206
|
-
};
|
|
6207
|
-
});
|
|
6208
|
-
const mergeFields =
|
|
6209
|
-
|
|
6210
|
-
|
|
6211
|
-
|
|
6212
|
-
|
|
6213
|
-
|
|
6214
|
-
|
|
6215
|
-
|
|
6216
|
-
|
|
6217
|
-
|
|
6218
|
-
|
|
6219
|
-
|
|
6206
|
+
})) ?? [];
|
|
6207
|
+
}, [data?.fields, data?.dataModel]);
|
|
6208
|
+
const mergeFields = (0, import_react24.useMemo)(
|
|
6209
|
+
() => mergeButtons(dataModelFields),
|
|
6210
|
+
[dataModelFields]
|
|
6211
|
+
);
|
|
6212
|
+
const transformData = (0, import_react24.useCallback)(
|
|
6213
|
+
(dataList) => {
|
|
6214
|
+
if (!dataList) return [];
|
|
6215
|
+
return dataList.map((item) => {
|
|
6216
|
+
const transformedItem = { ...item };
|
|
6217
|
+
Object.keys(item).forEach((field) => {
|
|
6218
|
+
if (field !== "__domain") {
|
|
6219
|
+
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
6220
|
+
transformedItem[field] = item[field];
|
|
6221
|
+
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
6222
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
6223
|
+
transformedItem["string"] = item[field]?.[1];
|
|
6224
|
+
}
|
|
6225
|
+
transformedItem[field] = item[field];
|
|
6220
6226
|
}
|
|
6221
|
-
transformedItem[field] = item[field];
|
|
6222
6227
|
}
|
|
6223
|
-
}
|
|
6228
|
+
});
|
|
6229
|
+
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6224
6230
|
});
|
|
6225
|
-
|
|
6226
|
-
|
|
6227
|
-
|
|
6231
|
+
},
|
|
6232
|
+
[data?.typeTable]
|
|
6233
|
+
);
|
|
6228
6234
|
(0, import_react24.useEffect)(() => {
|
|
6229
|
-
setRows(transformData(data
|
|
6230
|
-
}, [data
|
|
6231
|
-
const
|
|
6232
|
-
let cols = [];
|
|
6235
|
+
setRows(transformData(data?.records));
|
|
6236
|
+
}, [data?.records, transformData]);
|
|
6237
|
+
const columns = (0, import_react24.useMemo)(() => {
|
|
6233
6238
|
try {
|
|
6234
|
-
|
|
6235
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(
|
|
6239
|
+
return mergeFields?.filter((item) => {
|
|
6240
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(
|
|
6241
|
+
data.context,
|
|
6242
|
+
item?.column_invisible
|
|
6243
|
+
) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
6236
6244
|
})?.map((field) => {
|
|
6245
|
+
const overridden = columnVisibility[field?.name];
|
|
6237
6246
|
return {
|
|
6238
6247
|
name: field?.name,
|
|
6239
|
-
optional: field?.optional,
|
|
6248
|
+
optional: overridden ?? field?.optional,
|
|
6240
6249
|
title: field?.type_co === "button" ? "" : field?.string,
|
|
6241
6250
|
field: { ...field }
|
|
6242
6251
|
};
|
|
6243
|
-
});
|
|
6252
|
+
}) ?? [];
|
|
6244
6253
|
} catch (error) {
|
|
6245
6254
|
console.error("Error in useTable:", error);
|
|
6255
|
+
return [];
|
|
6246
6256
|
}
|
|
6247
|
-
|
|
6248
|
-
|
|
6249
|
-
|
|
6250
|
-
|
|
6251
|
-
|
|
6252
|
-
}
|
|
6253
|
-
}, [
|
|
6254
|
-
const onToggleColumnOptional = (item) => {
|
|
6255
|
-
const tempColumn = [...columns]?.map((val) => {
|
|
6256
|
-
if (item?.name === val?.name) {
|
|
6257
|
-
return {
|
|
6258
|
-
...val,
|
|
6259
|
-
optional: item?.optional === "show" ? "hide" : "show"
|
|
6260
|
-
};
|
|
6261
|
-
}
|
|
6262
|
-
return val;
|
|
6263
|
-
});
|
|
6264
|
-
setColumns(tempColumn);
|
|
6265
|
-
};
|
|
6266
|
-
(0, import_react24.useEffect)(() => {
|
|
6267
|
-
if (data?.fields != null) {
|
|
6268
|
-
setColumns(null);
|
|
6269
|
-
}
|
|
6270
|
-
return () => {
|
|
6271
|
-
if (data?.fields != null) {
|
|
6272
|
-
setColumns(null);
|
|
6273
|
-
}
|
|
6274
|
-
};
|
|
6275
|
-
}, [data?.fields]);
|
|
6257
|
+
}, [mergeFields, data?.context, columnVisibility]);
|
|
6258
|
+
const onToggleColumnOptional = (0, import_react24.useCallback)((item) => {
|
|
6259
|
+
setColumnVisibility((prev) => ({
|
|
6260
|
+
...prev,
|
|
6261
|
+
[item?.name]: item?.optional === "show" ? "hide" : "show"
|
|
6262
|
+
}));
|
|
6263
|
+
}, []);
|
|
6276
6264
|
return {
|
|
6277
6265
|
rows,
|
|
6278
6266
|
columns,
|
|
6279
6267
|
onToggleColumnOptional,
|
|
6280
|
-
typeTable: data
|
|
6268
|
+
typeTable: data?.typeTable
|
|
6281
6269
|
};
|
|
6282
6270
|
};
|
|
6283
6271
|
|
package/dist/widget.mjs
CHANGED
|
@@ -6251,96 +6251,84 @@ var tableHeadController = (props) => {
|
|
|
6251
6251
|
};
|
|
6252
6252
|
|
|
6253
6253
|
// src/widget/advance/table/table-view/controller.ts
|
|
6254
|
-
import { useEffect as useEffect13, useState as useState12 } from "react";
|
|
6254
|
+
import { useCallback as useCallback5, useEffect as useEffect13, useMemo as useMemo11, useState as useState12 } from "react";
|
|
6255
6255
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6256
6256
|
var tableController = ({ data }) => {
|
|
6257
|
-
const [rows, setRows] = useState12(
|
|
6258
|
-
const [
|
|
6259
|
-
const dataModelFields =
|
|
6260
|
-
return {
|
|
6257
|
+
const [rows, setRows] = useState12([]);
|
|
6258
|
+
const [columnVisibility, setColumnVisibility] = useState12({});
|
|
6259
|
+
const dataModelFields = useMemo11(() => {
|
|
6260
|
+
return data?.fields?.map((field) => ({
|
|
6261
6261
|
...data.dataModel?.[field?.name],
|
|
6262
6262
|
...field,
|
|
6263
6263
|
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
6264
|
-
};
|
|
6265
|
-
});
|
|
6266
|
-
const mergeFields =
|
|
6267
|
-
|
|
6268
|
-
|
|
6269
|
-
|
|
6270
|
-
|
|
6271
|
-
|
|
6272
|
-
|
|
6273
|
-
|
|
6274
|
-
|
|
6275
|
-
|
|
6276
|
-
|
|
6277
|
-
|
|
6264
|
+
})) ?? [];
|
|
6265
|
+
}, [data?.fields, data?.dataModel]);
|
|
6266
|
+
const mergeFields = useMemo11(
|
|
6267
|
+
() => mergeButtons(dataModelFields),
|
|
6268
|
+
[dataModelFields]
|
|
6269
|
+
);
|
|
6270
|
+
const transformData = useCallback5(
|
|
6271
|
+
(dataList) => {
|
|
6272
|
+
if (!dataList) return [];
|
|
6273
|
+
return dataList.map((item) => {
|
|
6274
|
+
const transformedItem = { ...item };
|
|
6275
|
+
Object.keys(item).forEach((field) => {
|
|
6276
|
+
if (field !== "__domain") {
|
|
6277
|
+
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
6278
|
+
transformedItem[field] = item[field];
|
|
6279
|
+
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
6280
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
6281
|
+
transformedItem["string"] = item[field]?.[1];
|
|
6282
|
+
}
|
|
6283
|
+
transformedItem[field] = item[field];
|
|
6278
6284
|
}
|
|
6279
|
-
transformedItem[field] = item[field];
|
|
6280
6285
|
}
|
|
6281
|
-
}
|
|
6286
|
+
});
|
|
6287
|
+
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6282
6288
|
});
|
|
6283
|
-
|
|
6284
|
-
|
|
6285
|
-
|
|
6289
|
+
},
|
|
6290
|
+
[data?.typeTable]
|
|
6291
|
+
);
|
|
6286
6292
|
useEffect13(() => {
|
|
6287
|
-
setRows(transformData(data
|
|
6288
|
-
}, [data
|
|
6289
|
-
const
|
|
6290
|
-
let cols = [];
|
|
6293
|
+
setRows(transformData(data?.records));
|
|
6294
|
+
}, [data?.records, transformData]);
|
|
6295
|
+
const columns = useMemo11(() => {
|
|
6291
6296
|
try {
|
|
6292
|
-
|
|
6293
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(
|
|
6297
|
+
return mergeFields?.filter((item) => {
|
|
6298
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(
|
|
6299
|
+
data.context,
|
|
6300
|
+
item?.column_invisible
|
|
6301
|
+
) : item?.invisible ? domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
6294
6302
|
})?.map((field) => {
|
|
6303
|
+
const overridden = columnVisibility[field?.name];
|
|
6295
6304
|
return {
|
|
6296
6305
|
name: field?.name,
|
|
6297
|
-
optional: field?.optional,
|
|
6306
|
+
optional: overridden ?? field?.optional,
|
|
6298
6307
|
title: field?.type_co === "button" ? "" : field?.string,
|
|
6299
6308
|
field: { ...field }
|
|
6300
6309
|
};
|
|
6301
|
-
});
|
|
6310
|
+
}) ?? [];
|
|
6302
6311
|
} catch (error) {
|
|
6303
6312
|
console.error("Error in useTable:", error);
|
|
6313
|
+
return [];
|
|
6304
6314
|
}
|
|
6305
|
-
|
|
6306
|
-
|
|
6307
|
-
|
|
6308
|
-
|
|
6309
|
-
|
|
6310
|
-
}
|
|
6311
|
-
}, [
|
|
6312
|
-
const onToggleColumnOptional = (item) => {
|
|
6313
|
-
const tempColumn = [...columns]?.map((val) => {
|
|
6314
|
-
if (item?.name === val?.name) {
|
|
6315
|
-
return {
|
|
6316
|
-
...val,
|
|
6317
|
-
optional: item?.optional === "show" ? "hide" : "show"
|
|
6318
|
-
};
|
|
6319
|
-
}
|
|
6320
|
-
return val;
|
|
6321
|
-
});
|
|
6322
|
-
setColumns(tempColumn);
|
|
6323
|
-
};
|
|
6324
|
-
useEffect13(() => {
|
|
6325
|
-
if (data?.fields != null) {
|
|
6326
|
-
setColumns(null);
|
|
6327
|
-
}
|
|
6328
|
-
return () => {
|
|
6329
|
-
if (data?.fields != null) {
|
|
6330
|
-
setColumns(null);
|
|
6331
|
-
}
|
|
6332
|
-
};
|
|
6333
|
-
}, [data?.fields]);
|
|
6315
|
+
}, [mergeFields, data?.context, columnVisibility]);
|
|
6316
|
+
const onToggleColumnOptional = useCallback5((item) => {
|
|
6317
|
+
setColumnVisibility((prev) => ({
|
|
6318
|
+
...prev,
|
|
6319
|
+
[item?.name]: item?.optional === "show" ? "hide" : "show"
|
|
6320
|
+
}));
|
|
6321
|
+
}, []);
|
|
6334
6322
|
return {
|
|
6335
6323
|
rows,
|
|
6336
6324
|
columns,
|
|
6337
6325
|
onToggleColumnOptional,
|
|
6338
|
-
typeTable: data
|
|
6326
|
+
typeTable: data?.typeTable
|
|
6339
6327
|
};
|
|
6340
6328
|
};
|
|
6341
6329
|
|
|
6342
6330
|
// src/widget/advance/table/table-group/controller.ts
|
|
6343
|
-
import { useEffect as useEffect14, useMemo as
|
|
6331
|
+
import { useEffect as useEffect14, useMemo as useMemo12, useState as useState13 } from "react";
|
|
6344
6332
|
import { useAppSelector as useAppSelector2, selectList } from "@fctc/interface-logic/store";
|
|
6345
6333
|
var tableGroupController = (props) => {
|
|
6346
6334
|
const { env } = (0, provider_exports.useEnv)();
|
|
@@ -6365,7 +6353,7 @@ var tableGroupController = (props) => {
|
|
|
6365
6353
|
fromEnd: 1
|
|
6366
6354
|
});
|
|
6367
6355
|
const domain = row?.__domain;
|
|
6368
|
-
const processedData =
|
|
6356
|
+
const processedData = useMemo12(() => {
|
|
6369
6357
|
const calculateColSpanEmpty = () => {
|
|
6370
6358
|
const startIndex = columns.findIndex(
|
|
6371
6359
|
(col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
|
|
@@ -6380,7 +6368,7 @@ var tableGroupController = (props) => {
|
|
|
6380
6368
|
};
|
|
6381
6369
|
return calculateColSpanEmpty();
|
|
6382
6370
|
}, [columns, row]);
|
|
6383
|
-
const shouldFetchData =
|
|
6371
|
+
const shouldFetchData = useMemo12(() => {
|
|
6384
6372
|
return !!isShowGroup;
|
|
6385
6373
|
}, [isShowGroup]);
|
|
6386
6374
|
const enabled = shouldFetchData && !!processedData;
|
|
@@ -6482,7 +6470,7 @@ import {
|
|
|
6482
6470
|
evalJSONDomain as evalJSONDomain6,
|
|
6483
6471
|
validateAndParseDate
|
|
6484
6472
|
} from "@fctc/interface-logic/utils";
|
|
6485
|
-
import { useCallback as
|
|
6473
|
+
import { useCallback as useCallback6, useEffect as useEffect15, useState as useState14 } from "react";
|
|
6486
6474
|
var searchController = ({
|
|
6487
6475
|
viewData,
|
|
6488
6476
|
model,
|
|
@@ -6625,7 +6613,7 @@ var searchController = ({
|
|
|
6625
6613
|
return [...domain2];
|
|
6626
6614
|
}
|
|
6627
6615
|
};
|
|
6628
|
-
const setTagSearch =
|
|
6616
|
+
const setTagSearch = useCallback6(
|
|
6629
6617
|
(updatedMap) => {
|
|
6630
6618
|
if (!updatedMap) return;
|
|
6631
6619
|
const tagsSearch = Object.entries(updatedMap).map(
|