@fctc/widget-logic 3.3.9 → 3.4.0
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/index.js +49 -61
- package/dist/index.mjs +55 -67
- 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 +94 -94
package/dist/index.js
CHANGED
|
@@ -6951,88 +6951,76 @@ var tableHeadController = (props) => {
|
|
|
6951
6951
|
var import_react24 = require("react");
|
|
6952
6952
|
var import_utils17 = require("@fctc/interface-logic/utils");
|
|
6953
6953
|
var tableController = ({ data }) => {
|
|
6954
|
-
const [rows, setRows] = (0, import_react24.useState)(
|
|
6955
|
-
const [
|
|
6956
|
-
const dataModelFields =
|
|
6957
|
-
return {
|
|
6954
|
+
const [rows, setRows] = (0, import_react24.useState)([]);
|
|
6955
|
+
const [columnVisibility, setColumnVisibility] = (0, import_react24.useState)({});
|
|
6956
|
+
const dataModelFields = (0, import_react24.useMemo)(() => {
|
|
6957
|
+
return data?.fields?.map((field) => ({
|
|
6958
6958
|
...data.dataModel?.[field?.name],
|
|
6959
6959
|
...field,
|
|
6960
6960
|
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
6961
|
-
};
|
|
6962
|
-
});
|
|
6963
|
-
const mergeFields =
|
|
6964
|
-
|
|
6965
|
-
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
|
|
6973
|
-
|
|
6974
|
-
|
|
6961
|
+
})) ?? [];
|
|
6962
|
+
}, [data?.fields, data?.dataModel]);
|
|
6963
|
+
const mergeFields = (0, import_react24.useMemo)(
|
|
6964
|
+
() => mergeButtons(dataModelFields),
|
|
6965
|
+
[dataModelFields]
|
|
6966
|
+
);
|
|
6967
|
+
const transformData = (0, import_react24.useCallback)(
|
|
6968
|
+
(dataList) => {
|
|
6969
|
+
if (!dataList) return [];
|
|
6970
|
+
return dataList.map((item) => {
|
|
6971
|
+
const transformedItem = { ...item };
|
|
6972
|
+
Object.keys(item).forEach((field) => {
|
|
6973
|
+
if (field !== "__domain") {
|
|
6974
|
+
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
6975
|
+
transformedItem[field] = item[field];
|
|
6976
|
+
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
6977
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
6978
|
+
transformedItem["string"] = item[field]?.[1];
|
|
6979
|
+
}
|
|
6980
|
+
transformedItem[field] = item[field];
|
|
6975
6981
|
}
|
|
6976
|
-
transformedItem[field] = item[field];
|
|
6977
6982
|
}
|
|
6978
|
-
}
|
|
6983
|
+
});
|
|
6984
|
+
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6979
6985
|
});
|
|
6980
|
-
|
|
6981
|
-
|
|
6982
|
-
|
|
6986
|
+
},
|
|
6987
|
+
[data?.typeTable]
|
|
6988
|
+
);
|
|
6983
6989
|
(0, import_react24.useEffect)(() => {
|
|
6984
|
-
setRows(transformData(data
|
|
6985
|
-
}, [data
|
|
6986
|
-
const
|
|
6987
|
-
let cols = [];
|
|
6990
|
+
setRows(transformData(data?.records));
|
|
6991
|
+
}, [data?.records, transformData]);
|
|
6992
|
+
const columns = (0, import_react24.useMemo)(() => {
|
|
6988
6993
|
try {
|
|
6989
|
-
|
|
6990
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(
|
|
6994
|
+
return mergeFields?.filter((item) => {
|
|
6995
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(
|
|
6996
|
+
data.context,
|
|
6997
|
+
item?.column_invisible
|
|
6998
|
+
) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
6991
6999
|
})?.map((field) => {
|
|
7000
|
+
const overridden = columnVisibility[field?.name];
|
|
6992
7001
|
return {
|
|
6993
7002
|
name: field?.name,
|
|
6994
|
-
optional: field?.optional,
|
|
7003
|
+
optional: overridden ?? field?.optional,
|
|
6995
7004
|
title: field?.type_co === "button" ? "" : field?.string,
|
|
6996
7005
|
field: { ...field }
|
|
6997
7006
|
};
|
|
6998
|
-
});
|
|
7007
|
+
}) ?? [];
|
|
6999
7008
|
} catch (error) {
|
|
7000
7009
|
console.error("Error in useTable:", error);
|
|
7010
|
+
return [];
|
|
7001
7011
|
}
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
}
|
|
7008
|
-
}, [
|
|
7009
|
-
const onToggleColumnOptional = (item) => {
|
|
7010
|
-
const tempColumn = [...columns]?.map((val) => {
|
|
7011
|
-
if (item?.name === val?.name) {
|
|
7012
|
-
return {
|
|
7013
|
-
...val,
|
|
7014
|
-
optional: item?.optional === "show" ? "hide" : "show"
|
|
7015
|
-
};
|
|
7016
|
-
}
|
|
7017
|
-
return val;
|
|
7018
|
-
});
|
|
7019
|
-
setColumns(tempColumn);
|
|
7020
|
-
};
|
|
7021
|
-
(0, import_react24.useEffect)(() => {
|
|
7022
|
-
if (data?.fields != null) {
|
|
7023
|
-
setColumns(null);
|
|
7024
|
-
}
|
|
7025
|
-
return () => {
|
|
7026
|
-
if (data?.fields != null) {
|
|
7027
|
-
setColumns(null);
|
|
7028
|
-
}
|
|
7029
|
-
};
|
|
7030
|
-
}, [data?.fields]);
|
|
7012
|
+
}, [mergeFields, data?.context, columnVisibility]);
|
|
7013
|
+
const onToggleColumnOptional = (0, import_react24.useCallback)((item) => {
|
|
7014
|
+
setColumnVisibility((prev) => ({
|
|
7015
|
+
...prev,
|
|
7016
|
+
[item?.name]: item?.optional === "show" ? "hide" : "show"
|
|
7017
|
+
}));
|
|
7018
|
+
}, []);
|
|
7031
7019
|
return {
|
|
7032
7020
|
rows,
|
|
7033
7021
|
columns,
|
|
7034
7022
|
onToggleColumnOptional,
|
|
7035
|
-
typeTable: data
|
|
7023
|
+
typeTable: data?.typeTable
|
|
7036
7024
|
};
|
|
7037
7025
|
};
|
|
7038
7026
|
|
package/dist/index.mjs
CHANGED
|
@@ -7029,96 +7029,84 @@ var tableHeadController = (props) => {
|
|
|
7029
7029
|
};
|
|
7030
7030
|
|
|
7031
7031
|
// src/widget/advance/table/table-view/controller.ts
|
|
7032
|
-
import { useEffect as useEffect13, useState as useState12 } from "react";
|
|
7032
|
+
import { useCallback as useCallback5, useEffect as useEffect13, useMemo as useMemo11, useState as useState12 } from "react";
|
|
7033
7033
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
7034
7034
|
var tableController = ({ data }) => {
|
|
7035
|
-
const [rows, setRows] = useState12(
|
|
7036
|
-
const [
|
|
7037
|
-
const dataModelFields =
|
|
7038
|
-
return {
|
|
7035
|
+
const [rows, setRows] = useState12([]);
|
|
7036
|
+
const [columnVisibility, setColumnVisibility] = useState12({});
|
|
7037
|
+
const dataModelFields = useMemo11(() => {
|
|
7038
|
+
return data?.fields?.map((field) => ({
|
|
7039
7039
|
...data.dataModel?.[field?.name],
|
|
7040
7040
|
...field,
|
|
7041
7041
|
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
7042
|
-
};
|
|
7043
|
-
});
|
|
7044
|
-
const mergeFields =
|
|
7045
|
-
|
|
7046
|
-
|
|
7047
|
-
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
|
|
7051
|
-
|
|
7052
|
-
|
|
7053
|
-
|
|
7054
|
-
|
|
7055
|
-
|
|
7042
|
+
})) ?? [];
|
|
7043
|
+
}, [data?.fields, data?.dataModel]);
|
|
7044
|
+
const mergeFields = useMemo11(
|
|
7045
|
+
() => mergeButtons(dataModelFields),
|
|
7046
|
+
[dataModelFields]
|
|
7047
|
+
);
|
|
7048
|
+
const transformData = useCallback5(
|
|
7049
|
+
(dataList) => {
|
|
7050
|
+
if (!dataList) return [];
|
|
7051
|
+
return dataList.map((item) => {
|
|
7052
|
+
const transformedItem = { ...item };
|
|
7053
|
+
Object.keys(item).forEach((field) => {
|
|
7054
|
+
if (field !== "__domain") {
|
|
7055
|
+
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
7056
|
+
transformedItem[field] = item[field];
|
|
7057
|
+
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
7058
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
7059
|
+
transformedItem["string"] = item[field]?.[1];
|
|
7060
|
+
}
|
|
7061
|
+
transformedItem[field] = item[field];
|
|
7056
7062
|
}
|
|
7057
|
-
transformedItem[field] = item[field];
|
|
7058
7063
|
}
|
|
7059
|
-
}
|
|
7064
|
+
});
|
|
7065
|
+
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
7060
7066
|
});
|
|
7061
|
-
|
|
7062
|
-
|
|
7063
|
-
|
|
7067
|
+
},
|
|
7068
|
+
[data?.typeTable]
|
|
7069
|
+
);
|
|
7064
7070
|
useEffect13(() => {
|
|
7065
|
-
setRows(transformData(data
|
|
7066
|
-
}, [data
|
|
7067
|
-
const
|
|
7068
|
-
let cols = [];
|
|
7071
|
+
setRows(transformData(data?.records));
|
|
7072
|
+
}, [data?.records, transformData]);
|
|
7073
|
+
const columns = useMemo11(() => {
|
|
7069
7074
|
try {
|
|
7070
|
-
|
|
7071
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(
|
|
7075
|
+
return mergeFields?.filter((item) => {
|
|
7076
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(
|
|
7077
|
+
data.context,
|
|
7078
|
+
item?.column_invisible
|
|
7079
|
+
) : item?.invisible ? domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
7072
7080
|
})?.map((field) => {
|
|
7081
|
+
const overridden = columnVisibility[field?.name];
|
|
7073
7082
|
return {
|
|
7074
7083
|
name: field?.name,
|
|
7075
|
-
optional: field?.optional,
|
|
7084
|
+
optional: overridden ?? field?.optional,
|
|
7076
7085
|
title: field?.type_co === "button" ? "" : field?.string,
|
|
7077
7086
|
field: { ...field }
|
|
7078
7087
|
};
|
|
7079
|
-
});
|
|
7088
|
+
}) ?? [];
|
|
7080
7089
|
} catch (error) {
|
|
7081
7090
|
console.error("Error in useTable:", error);
|
|
7091
|
+
return [];
|
|
7082
7092
|
}
|
|
7083
|
-
|
|
7084
|
-
|
|
7085
|
-
|
|
7086
|
-
|
|
7087
|
-
|
|
7088
|
-
}
|
|
7089
|
-
}, [
|
|
7090
|
-
const onToggleColumnOptional = (item) => {
|
|
7091
|
-
const tempColumn = [...columns]?.map((val) => {
|
|
7092
|
-
if (item?.name === val?.name) {
|
|
7093
|
-
return {
|
|
7094
|
-
...val,
|
|
7095
|
-
optional: item?.optional === "show" ? "hide" : "show"
|
|
7096
|
-
};
|
|
7097
|
-
}
|
|
7098
|
-
return val;
|
|
7099
|
-
});
|
|
7100
|
-
setColumns(tempColumn);
|
|
7101
|
-
};
|
|
7102
|
-
useEffect13(() => {
|
|
7103
|
-
if (data?.fields != null) {
|
|
7104
|
-
setColumns(null);
|
|
7105
|
-
}
|
|
7106
|
-
return () => {
|
|
7107
|
-
if (data?.fields != null) {
|
|
7108
|
-
setColumns(null);
|
|
7109
|
-
}
|
|
7110
|
-
};
|
|
7111
|
-
}, [data?.fields]);
|
|
7093
|
+
}, [mergeFields, data?.context, columnVisibility]);
|
|
7094
|
+
const onToggleColumnOptional = useCallback5((item) => {
|
|
7095
|
+
setColumnVisibility((prev) => ({
|
|
7096
|
+
...prev,
|
|
7097
|
+
[item?.name]: item?.optional === "show" ? "hide" : "show"
|
|
7098
|
+
}));
|
|
7099
|
+
}, []);
|
|
7112
7100
|
return {
|
|
7113
7101
|
rows,
|
|
7114
7102
|
columns,
|
|
7115
7103
|
onToggleColumnOptional,
|
|
7116
|
-
typeTable: data
|
|
7104
|
+
typeTable: data?.typeTable
|
|
7117
7105
|
};
|
|
7118
7106
|
};
|
|
7119
7107
|
|
|
7120
7108
|
// src/widget/advance/table/table-group/controller.ts
|
|
7121
|
-
import { useEffect as useEffect14, useMemo as
|
|
7109
|
+
import { useEffect as useEffect14, useMemo as useMemo12, useState as useState13 } from "react";
|
|
7122
7110
|
import { useAppSelector as useAppSelector2, selectList } from "@fctc/interface-logic/store";
|
|
7123
7111
|
var tableGroupController = (props) => {
|
|
7124
7112
|
const { env } = (0, provider_exports.useEnv)();
|
|
@@ -7143,7 +7131,7 @@ var tableGroupController = (props) => {
|
|
|
7143
7131
|
fromEnd: 1
|
|
7144
7132
|
});
|
|
7145
7133
|
const domain = row?.__domain;
|
|
7146
|
-
const processedData =
|
|
7134
|
+
const processedData = useMemo12(() => {
|
|
7147
7135
|
const calculateColSpanEmpty = () => {
|
|
7148
7136
|
const startIndex = columns.findIndex(
|
|
7149
7137
|
(col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
|
|
@@ -7158,7 +7146,7 @@ var tableGroupController = (props) => {
|
|
|
7158
7146
|
};
|
|
7159
7147
|
return calculateColSpanEmpty();
|
|
7160
7148
|
}, [columns, row]);
|
|
7161
|
-
const shouldFetchData =
|
|
7149
|
+
const shouldFetchData = useMemo12(() => {
|
|
7162
7150
|
return !!isShowGroup;
|
|
7163
7151
|
}, [isShowGroup]);
|
|
7164
7152
|
const enabled = shouldFetchData && !!processedData;
|
|
@@ -7260,7 +7248,7 @@ import {
|
|
|
7260
7248
|
evalJSONDomain as evalJSONDomain6,
|
|
7261
7249
|
validateAndParseDate
|
|
7262
7250
|
} from "@fctc/interface-logic/utils";
|
|
7263
|
-
import { useCallback as
|
|
7251
|
+
import { useCallback as useCallback6, useEffect as useEffect15, useState as useState14 } from "react";
|
|
7264
7252
|
var searchController = ({
|
|
7265
7253
|
viewData,
|
|
7266
7254
|
model,
|
|
@@ -7403,7 +7391,7 @@ var searchController = ({
|
|
|
7403
7391
|
return [...domain2];
|
|
7404
7392
|
}
|
|
7405
7393
|
};
|
|
7406
|
-
const setTagSearch =
|
|
7394
|
+
const setTagSearch = useCallback6(
|
|
7407
7395
|
(updatedMap) => {
|
|
7408
7396
|
if (!updatedMap) return;
|
|
7409
7397
|
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(
|
package/package.json
CHANGED
|
@@ -1,94 +1,94 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@fctc/widget-logic",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"types": "dist/index.d.ts",
|
|
5
|
-
"main": "dist/index.cjs",
|
|
6
|
-
"module": "dist/index.mjs",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"types": "./dist/index.d.ts",
|
|
10
|
-
"import": "./dist/index.mjs",
|
|
11
|
-
"require": "./dist/index.cjs"
|
|
12
|
-
},
|
|
13
|
-
"./hooks": {
|
|
14
|
-
"types": "./dist/hooks.d.ts",
|
|
15
|
-
"import": "./dist/hooks.mjs",
|
|
16
|
-
"require": "./dist/hooks.cjs"
|
|
17
|
-
},
|
|
18
|
-
"./widget": {
|
|
19
|
-
"types": "./dist/widget.d.ts",
|
|
20
|
-
"import": "./dist/widget.mjs",
|
|
21
|
-
"require": "./dist/widget.cjs"
|
|
22
|
-
},
|
|
23
|
-
"./icons": {
|
|
24
|
-
"types": "./dist/icons.d.ts",
|
|
25
|
-
"import": "./dist/icons.mjs",
|
|
26
|
-
"require": "./dist/icons.cjs"
|
|
27
|
-
},
|
|
28
|
-
"./utils": {
|
|
29
|
-
"types": "./dist/utils.d.ts",
|
|
30
|
-
"import": "./dist/utils.mjs",
|
|
31
|
-
"require": "./dist/utils.cjs"
|
|
32
|
-
},
|
|
33
|
-
"./store": {
|
|
34
|
-
"types": "./dist/store.d.ts",
|
|
35
|
-
"import": "./dist/store.mjs",
|
|
36
|
-
"require": "./dist/store.cjs"
|
|
37
|
-
},
|
|
38
|
-
"./config": {
|
|
39
|
-
"types": "./dist/config.d.ts",
|
|
40
|
-
"import": "./dist/config.mjs",
|
|
41
|
-
"require": "./dist/config.cjs"
|
|
42
|
-
},
|
|
43
|
-
"./constants": {
|
|
44
|
-
"types": "./dist/constants.d.ts",
|
|
45
|
-
"import": "./dist/constants.mjs",
|
|
46
|
-
"require": "./dist/constants.cjs"
|
|
47
|
-
},
|
|
48
|
-
"./environment": {
|
|
49
|
-
"types": "./dist/environment.d.ts",
|
|
50
|
-
"import": "./dist/environment.mjs",
|
|
51
|
-
"require": "./dist/environment.cjs"
|
|
52
|
-
},
|
|
53
|
-
"./provider": {
|
|
54
|
-
"types": "./dist/provider.d.ts",
|
|
55
|
-
"import": "./dist/provider.mjs",
|
|
56
|
-
"require": "./dist/provider.cjs"
|
|
57
|
-
},
|
|
58
|
-
"./services": {
|
|
59
|
-
"types": "./dist/services.d.ts",
|
|
60
|
-
"import": "./dist/services.mjs",
|
|
61
|
-
"require": "./dist/services.cjs"
|
|
62
|
-
},
|
|
63
|
-
"./types": {
|
|
64
|
-
"types": "./dist/types.d.ts",
|
|
65
|
-
"import": "./dist/types.mjs",
|
|
66
|
-
"require": "./dist/types.cjs"
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
"files": [
|
|
70
|
-
"dist"
|
|
71
|
-
],
|
|
72
|
-
"scripts": {
|
|
73
|
-
"build": "tsup",
|
|
74
|
-
"test": "jest"
|
|
75
|
-
},
|
|
76
|
-
"dependencies": {
|
|
77
|
-
"@fctc/interface-logic": "^3.0.3",
|
|
78
|
-
"@headlessui/react": "^2.2.6",
|
|
79
|
-
"@tanstack/react-query": "^5.84.0",
|
|
80
|
-
"i18next": "^25.3.2",
|
|
81
|
-
"i18next-browser-languagedetector": "^8.2.0",
|
|
82
|
-
"react-i18next": "^15.6.1",
|
|
83
|
-
"react-tooltip": "^5.29.1"
|
|
84
|
-
},
|
|
85
|
-
"devDependencies": {
|
|
86
|
-
"@types/react": "^18.3.1",
|
|
87
|
-
"jest": "^29.7.0",
|
|
88
|
-
"react": "18.0.0",
|
|
89
|
-
"tsup": "^8.0.0",
|
|
90
|
-
"typescript": "^5.8.2"
|
|
91
|
-
},
|
|
92
|
-
"packageManager": "yarn@1.22.0",
|
|
93
|
-
"peerDependencies": {}
|
|
94
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@fctc/widget-logic",
|
|
3
|
+
"version": "3.4.0",
|
|
4
|
+
"types": "dist/index.d.ts",
|
|
5
|
+
"main": "dist/index.cjs",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.mjs",
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
12
|
+
},
|
|
13
|
+
"./hooks": {
|
|
14
|
+
"types": "./dist/hooks.d.ts",
|
|
15
|
+
"import": "./dist/hooks.mjs",
|
|
16
|
+
"require": "./dist/hooks.cjs"
|
|
17
|
+
},
|
|
18
|
+
"./widget": {
|
|
19
|
+
"types": "./dist/widget.d.ts",
|
|
20
|
+
"import": "./dist/widget.mjs",
|
|
21
|
+
"require": "./dist/widget.cjs"
|
|
22
|
+
},
|
|
23
|
+
"./icons": {
|
|
24
|
+
"types": "./dist/icons.d.ts",
|
|
25
|
+
"import": "./dist/icons.mjs",
|
|
26
|
+
"require": "./dist/icons.cjs"
|
|
27
|
+
},
|
|
28
|
+
"./utils": {
|
|
29
|
+
"types": "./dist/utils.d.ts",
|
|
30
|
+
"import": "./dist/utils.mjs",
|
|
31
|
+
"require": "./dist/utils.cjs"
|
|
32
|
+
},
|
|
33
|
+
"./store": {
|
|
34
|
+
"types": "./dist/store.d.ts",
|
|
35
|
+
"import": "./dist/store.mjs",
|
|
36
|
+
"require": "./dist/store.cjs"
|
|
37
|
+
},
|
|
38
|
+
"./config": {
|
|
39
|
+
"types": "./dist/config.d.ts",
|
|
40
|
+
"import": "./dist/config.mjs",
|
|
41
|
+
"require": "./dist/config.cjs"
|
|
42
|
+
},
|
|
43
|
+
"./constants": {
|
|
44
|
+
"types": "./dist/constants.d.ts",
|
|
45
|
+
"import": "./dist/constants.mjs",
|
|
46
|
+
"require": "./dist/constants.cjs"
|
|
47
|
+
},
|
|
48
|
+
"./environment": {
|
|
49
|
+
"types": "./dist/environment.d.ts",
|
|
50
|
+
"import": "./dist/environment.mjs",
|
|
51
|
+
"require": "./dist/environment.cjs"
|
|
52
|
+
},
|
|
53
|
+
"./provider": {
|
|
54
|
+
"types": "./dist/provider.d.ts",
|
|
55
|
+
"import": "./dist/provider.mjs",
|
|
56
|
+
"require": "./dist/provider.cjs"
|
|
57
|
+
},
|
|
58
|
+
"./services": {
|
|
59
|
+
"types": "./dist/services.d.ts",
|
|
60
|
+
"import": "./dist/services.mjs",
|
|
61
|
+
"require": "./dist/services.cjs"
|
|
62
|
+
},
|
|
63
|
+
"./types": {
|
|
64
|
+
"types": "./dist/types.d.ts",
|
|
65
|
+
"import": "./dist/types.mjs",
|
|
66
|
+
"require": "./dist/types.cjs"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"files": [
|
|
70
|
+
"dist"
|
|
71
|
+
],
|
|
72
|
+
"scripts": {
|
|
73
|
+
"build": "tsup",
|
|
74
|
+
"test": "jest"
|
|
75
|
+
},
|
|
76
|
+
"dependencies": {
|
|
77
|
+
"@fctc/interface-logic": "^3.0.3",
|
|
78
|
+
"@headlessui/react": "^2.2.6",
|
|
79
|
+
"@tanstack/react-query": "^5.84.0",
|
|
80
|
+
"i18next": "^25.3.2",
|
|
81
|
+
"i18next-browser-languagedetector": "^8.2.0",
|
|
82
|
+
"react-i18next": "^15.6.1",
|
|
83
|
+
"react-tooltip": "^5.29.1"
|
|
84
|
+
},
|
|
85
|
+
"devDependencies": {
|
|
86
|
+
"@types/react": "^18.3.1",
|
|
87
|
+
"jest": "^29.7.0",
|
|
88
|
+
"react": "18.0.0",
|
|
89
|
+
"tsup": "^8.0.0",
|
|
90
|
+
"typescript": "^5.8.2"
|
|
91
|
+
},
|
|
92
|
+
"packageManager": "yarn@1.22.0",
|
|
93
|
+
"peerDependencies": {}
|
|
94
|
+
}
|