@fctc/widget-logic 1.9.4 → 1.9.6
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 +101 -55
- package/dist/index.mjs +96 -45
- package/dist/widget.d.mts +3 -6
- package/dist/widget.d.ts +3 -6
- package/dist/widget.js +101 -55
- package/dist/widget.mjs +96 -45
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5246,7 +5246,6 @@ var many2oneFieldController = (props) => {
|
|
|
5246
5246
|
options: fieldOptions,
|
|
5247
5247
|
showDetail
|
|
5248
5248
|
} = props;
|
|
5249
|
-
const { env } = (0, provider_exports.useEnv)();
|
|
5250
5249
|
const [options, setOptions] = (0, import_react14.useState)([]);
|
|
5251
5250
|
const [inputValue, setInputValue] = (0, import_react14.useState)("");
|
|
5252
5251
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
@@ -5256,12 +5255,13 @@ var many2oneFieldController = (props) => {
|
|
|
5256
5255
|
const [domainObject, setDomainObject] = (0, import_react14.useState)(null);
|
|
5257
5256
|
const actionData = sessionStorageUtils.getActionData();
|
|
5258
5257
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5258
|
+
const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
|
|
5259
5259
|
const initValue = methods?.getValues(name);
|
|
5260
5260
|
const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
|
|
5261
5261
|
const contextObject = {
|
|
5262
5262
|
...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
|
|
5263
5263
|
...fieldContext,
|
|
5264
|
-
...
|
|
5264
|
+
...context
|
|
5265
5265
|
};
|
|
5266
5266
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5267
5267
|
const data = {
|
|
@@ -5433,47 +5433,52 @@ var many2oneButtonController = (props) => {
|
|
|
5433
5433
|
|
|
5434
5434
|
// src/widget/basic/many2many-field/controller.ts
|
|
5435
5435
|
var import_react15 = require("react");
|
|
5436
|
+
var import_store8 = require("@fctc/interface-logic/store");
|
|
5436
5437
|
var import_utils6 = require("@fctc/interface-logic/utils");
|
|
5437
5438
|
var many2manyFieldController = (props) => {
|
|
5438
5439
|
const {
|
|
5439
5440
|
relation,
|
|
5440
5441
|
domain,
|
|
5441
5442
|
context,
|
|
5442
|
-
options,
|
|
5443
5443
|
tab,
|
|
5444
|
+
model,
|
|
5445
|
+
aid,
|
|
5444
5446
|
setSelectedRowKeys: setSelectedRowKeys4,
|
|
5447
|
+
fields,
|
|
5448
|
+
setFields,
|
|
5445
5449
|
groupByDomain,
|
|
5450
|
+
page,
|
|
5451
|
+
options,
|
|
5446
5452
|
sessionStorageUtils
|
|
5447
5453
|
} = props;
|
|
5448
|
-
const
|
|
5449
|
-
const
|
|
5454
|
+
const appDispatch = (0, import_store8.useAppDispatch)();
|
|
5455
|
+
const actionData = sessionStorageUtils.getActionData();
|
|
5456
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
5450
5457
|
const [order, setOrder] = (0, import_react15.useState)();
|
|
5451
5458
|
const [isLoadedData, setIsLoadedData] = (0, import_react15.useState)(false);
|
|
5452
|
-
const [
|
|
5453
|
-
const
|
|
5454
|
-
const
|
|
5455
|
-
const actionData = sessionStorageUtils.getActionData();
|
|
5456
|
-
const contextObject = { ...env.context, ...context };
|
|
5459
|
+
const [domainMany2Many, setDomainMany2Many] = (0, import_react15.useState)(domain);
|
|
5460
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5461
|
+
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5457
5462
|
const viewParams = {
|
|
5458
5463
|
model: relation,
|
|
5459
5464
|
views: [
|
|
5460
5465
|
[false, "list"],
|
|
5461
5466
|
[false, "search"]
|
|
5462
5467
|
],
|
|
5463
|
-
context
|
|
5468
|
+
context
|
|
5464
5469
|
};
|
|
5465
5470
|
const { data: viewResponse } = useGetView2(viewParams, actionData);
|
|
5466
5471
|
const baseModel = (0, import_react15.useMemo)(
|
|
5467
5472
|
() => ({
|
|
5468
5473
|
name: String(relation),
|
|
5469
5474
|
view: viewResponse || {},
|
|
5470
|
-
actContext:
|
|
5475
|
+
actContext: context,
|
|
5471
5476
|
fields: [
|
|
5472
5477
|
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5473
5478
|
...tab?.fields ? tab.fields : []
|
|
5474
5479
|
]
|
|
5475
5480
|
}),
|
|
5476
|
-
[
|
|
5481
|
+
[model, viewResponse]
|
|
5477
5482
|
);
|
|
5478
5483
|
const initModel = (0, hooks_exports.useModel)();
|
|
5479
5484
|
const modelInstance = (0, import_react15.useMemo)(() => {
|
|
@@ -5492,15 +5497,26 @@ var many2manyFieldController = (props) => {
|
|
|
5492
5497
|
const optionsObject = tab?.options ? (0, import_utils6.evalJSONContext)(tab?.options) : (options ? (0, import_utils6.evalJSONContext)(options) : {}) || {};
|
|
5493
5498
|
const fetchData = async () => {
|
|
5494
5499
|
try {
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
|
|
5500
|
+
setDomainMany2Many(domain);
|
|
5501
|
+
appDispatch((0, import_store8.setFirstDomain)(domain));
|
|
5502
|
+
appDispatch((0, import_store8.setViewDataStore)(viewResponse));
|
|
5503
|
+
const modalData = viewResponse?.views?.list?.fields.map((field) => ({
|
|
5504
|
+
...viewResponse?.models?.[String(model)]?.[field?.name],
|
|
5505
|
+
...field
|
|
5506
|
+
}));
|
|
5507
|
+
if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
|
|
5508
|
+
setFields({
|
|
5509
|
+
...fields,
|
|
5510
|
+
[`${aid}_${relation}_popupmany2many`]: modalData
|
|
5511
|
+
});
|
|
5512
|
+
}
|
|
5513
|
+
appDispatch((0, import_store8.setPage)(0));
|
|
5498
5514
|
} catch (err) {
|
|
5499
5515
|
console.log(err);
|
|
5500
5516
|
}
|
|
5501
5517
|
};
|
|
5502
5518
|
const queryKey = [
|
|
5503
|
-
`view-${relation}`,
|
|
5519
|
+
`view-${relation}-${aid}`,
|
|
5504
5520
|
specification,
|
|
5505
5521
|
domainMany2Many,
|
|
5506
5522
|
debouncedPage,
|
|
@@ -5513,7 +5529,7 @@ var many2manyFieldController = (props) => {
|
|
|
5513
5529
|
domain: domainMany2Many,
|
|
5514
5530
|
offset: debouncedPage * 10,
|
|
5515
5531
|
limit: 10,
|
|
5516
|
-
context
|
|
5532
|
+
context,
|
|
5517
5533
|
fields: groupByDomain?.fields,
|
|
5518
5534
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5519
5535
|
sort: order ? order : default_order ? (0, import_utils6.formatSortingString)(default_order) : ""
|
|
@@ -5521,8 +5537,8 @@ var many2manyFieldController = (props) => {
|
|
|
5521
5537
|
const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5522
5538
|
const {
|
|
5523
5539
|
data: dataResponse,
|
|
5524
|
-
isLoading,
|
|
5525
|
-
isFetched,
|
|
5540
|
+
isLoading: isDataLoading,
|
|
5541
|
+
isFetched: isDataResponseFetched,
|
|
5526
5542
|
isPlaceholderData
|
|
5527
5543
|
} = useGetListData3(data, queryKey, enabled);
|
|
5528
5544
|
(0, import_react15.useEffect)(() => {
|
|
@@ -5530,7 +5546,12 @@ var many2manyFieldController = (props) => {
|
|
|
5530
5546
|
fetchData();
|
|
5531
5547
|
}
|
|
5532
5548
|
return () => {
|
|
5533
|
-
|
|
5549
|
+
appDispatch((0, import_store8.setGroupByDomain)(null));
|
|
5550
|
+
setFields((prevFields) => ({
|
|
5551
|
+
...prevFields,
|
|
5552
|
+
[`${aid}_${relation}_popupmany2many`]: null
|
|
5553
|
+
}));
|
|
5554
|
+
appDispatch((0, import_store8.setPage)(0));
|
|
5534
5555
|
setSelectedRowKeys4([]);
|
|
5535
5556
|
setDomainMany2Many(null);
|
|
5536
5557
|
setIsLoadedData(false);
|
|
@@ -5538,19 +5559,44 @@ var many2manyFieldController = (props) => {
|
|
|
5538
5559
|
}, [viewResponse]);
|
|
5539
5560
|
const { rows, columns, typeTable } = tableController({
|
|
5540
5561
|
data: {
|
|
5541
|
-
fields: viewResponse?.views?.list?.fields,
|
|
5562
|
+
fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
|
|
5542
5563
|
records: dataResponse?.records ?? dataResponse?.groups,
|
|
5543
5564
|
dataModel: viewResponse?.models?.[String(relation)],
|
|
5544
|
-
context:
|
|
5565
|
+
context: { ...env.context, ...context },
|
|
5545
5566
|
typeTable: dataResponse?.groups ? "group" : "list"
|
|
5546
5567
|
}
|
|
5547
5568
|
});
|
|
5569
|
+
const dataFormView = {
|
|
5570
|
+
id: null,
|
|
5571
|
+
model: relation,
|
|
5572
|
+
context
|
|
5573
|
+
};
|
|
5574
|
+
const {
|
|
5575
|
+
refetch,
|
|
5576
|
+
data: dataFormViewResponse,
|
|
5577
|
+
isSuccess
|
|
5578
|
+
} = useGetFormView({
|
|
5579
|
+
data: dataFormView,
|
|
5580
|
+
queryKey: [`form-view-action-${relation}`],
|
|
5581
|
+
enabled: false
|
|
5582
|
+
});
|
|
5583
|
+
(0, import_react15.useEffect)(() => {
|
|
5584
|
+
if (isSuccess && dataFormViewResponse) {
|
|
5585
|
+
sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
|
|
5586
|
+
window.location.href = `/form/menu?model=${relation}`;
|
|
5587
|
+
}
|
|
5588
|
+
}, [isSuccess]);
|
|
5548
5589
|
(0, import_react15.useEffect)(() => {
|
|
5549
5590
|
if (domainMany2Many && !isLoadedData) {
|
|
5550
5591
|
setIsLoadedData(true);
|
|
5551
5592
|
}
|
|
5552
5593
|
}, [domainMany2Many]);
|
|
5553
5594
|
const handleCreateNewOnPage = async () => {
|
|
5595
|
+
try {
|
|
5596
|
+
refetch();
|
|
5597
|
+
} catch (error) {
|
|
5598
|
+
console.log(error);
|
|
5599
|
+
}
|
|
5554
5600
|
};
|
|
5555
5601
|
return {
|
|
5556
5602
|
handleCreateNewOnPage,
|
|
@@ -5558,13 +5604,9 @@ var many2manyFieldController = (props) => {
|
|
|
5558
5604
|
rows,
|
|
5559
5605
|
columns,
|
|
5560
5606
|
typeTable,
|
|
5561
|
-
|
|
5562
|
-
|
|
5563
|
-
isPlaceholderData
|
|
5564
|
-
setPage,
|
|
5565
|
-
page,
|
|
5566
|
-
domain: domainMany2Many,
|
|
5567
|
-
setDomain: setDomainMany2Many
|
|
5607
|
+
isDataLoading,
|
|
5608
|
+
isDataResponseFetched,
|
|
5609
|
+
isPlaceholderData
|
|
5568
5610
|
};
|
|
5569
5611
|
};
|
|
5570
5612
|
|
|
@@ -5632,7 +5674,7 @@ var many2manyTagsController = (props) => {
|
|
|
5632
5674
|
var import_react17 = require("react");
|
|
5633
5675
|
var import_utils8 = require("@fctc/interface-logic/utils");
|
|
5634
5676
|
var durationController = (props) => {
|
|
5635
|
-
const { relation, domain, formValues, name, id, model, onRefetch } = props;
|
|
5677
|
+
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5636
5678
|
const specification = {
|
|
5637
5679
|
id: 0,
|
|
5638
5680
|
name: "",
|
|
@@ -5656,7 +5698,11 @@ var durationController = (props) => {
|
|
|
5656
5698
|
},
|
|
5657
5699
|
sort: ""
|
|
5658
5700
|
};
|
|
5659
|
-
const { data: dataResponse } = useGetListData3(
|
|
5701
|
+
const { data: dataResponse } = useGetListData3(
|
|
5702
|
+
listDataProps,
|
|
5703
|
+
queryKey,
|
|
5704
|
+
enabled
|
|
5705
|
+
);
|
|
5660
5706
|
const { mutate: fetchChangeStatus } = useChangeStatus();
|
|
5661
5707
|
const handleClick = async (stage_id) => {
|
|
5662
5708
|
setDisabled(true);
|
|
@@ -6832,7 +6878,7 @@ var binaryFieldController = (props) => {
|
|
|
6832
6878
|
};
|
|
6833
6879
|
|
|
6834
6880
|
// src/widget/advance/table/table-body/controller.ts
|
|
6835
|
-
var
|
|
6881
|
+
var import_store9 = require("@fctc/interface-logic/store");
|
|
6836
6882
|
var import_react21 = require("react");
|
|
6837
6883
|
var tableBodyController = (props) => {
|
|
6838
6884
|
const {
|
|
@@ -6845,7 +6891,7 @@ var tableBodyController = (props) => {
|
|
|
6845
6891
|
selectedRowKeysRef,
|
|
6846
6892
|
onClickRow
|
|
6847
6893
|
} = props;
|
|
6848
|
-
const appDispatch = (0,
|
|
6894
|
+
const appDispatch = (0, import_store9.useAppDispatch)();
|
|
6849
6895
|
const checked = (0, import_react21.useMemo)(() => {
|
|
6850
6896
|
if (!row?.id) return false;
|
|
6851
6897
|
if (selectedRowKeys?.includes(row.id)) {
|
|
@@ -6862,7 +6908,7 @@ var tableBodyController = (props) => {
|
|
|
6862
6908
|
}
|
|
6863
6909
|
const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
|
|
6864
6910
|
console.log("newSelectedRowKeys", newSelectedRowKeys);
|
|
6865
|
-
appDispatch((0,
|
|
6911
|
+
appDispatch((0, import_store9.setSelectedRowKeys)(newSelectedRowKeys));
|
|
6866
6912
|
};
|
|
6867
6913
|
const handleClickRow = (col, row2) => {
|
|
6868
6914
|
onClickRow(col, row2);
|
|
@@ -6875,13 +6921,13 @@ var tableBodyController = (props) => {
|
|
|
6875
6921
|
(id) => id !== row.id
|
|
6876
6922
|
);
|
|
6877
6923
|
selectedRowKeysRef.current = filtered;
|
|
6878
|
-
appDispatch((0,
|
|
6924
|
+
appDispatch((0, import_store9.setSelectedRowKeys)(filtered));
|
|
6879
6925
|
} else {
|
|
6880
6926
|
const unique = Array.from(
|
|
6881
6927
|
/* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
|
|
6882
6928
|
);
|
|
6883
6929
|
selectedRowKeysRef.current = unique;
|
|
6884
|
-
appDispatch((0,
|
|
6930
|
+
appDispatch((0, import_store9.setSelectedRowKeys)(unique));
|
|
6885
6931
|
}
|
|
6886
6932
|
}
|
|
6887
6933
|
}, [isAutoSelect]);
|
|
@@ -6899,35 +6945,35 @@ var tableBodyController = (props) => {
|
|
|
6899
6945
|
};
|
|
6900
6946
|
|
|
6901
6947
|
// src/widget/advance/table/table-head/controller.ts
|
|
6902
|
-
var
|
|
6948
|
+
var import_store10 = require("@fctc/interface-logic/store");
|
|
6903
6949
|
var tableHeadController = (props) => {
|
|
6904
6950
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
6905
|
-
const appDispatch = (0,
|
|
6906
|
-
const { groupByDomain } = (0,
|
|
6951
|
+
const appDispatch = (0, import_store10.useAppDispatch)();
|
|
6952
|
+
const { groupByDomain } = (0, import_store10.useAppSelector)(import_store10.selectSearch);
|
|
6907
6953
|
const handleCheckBoxAll = (event) => {
|
|
6908
6954
|
if (event?.target?.checked && typeTable === "list") {
|
|
6909
6955
|
const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
|
|
6910
|
-
appDispatch((0,
|
|
6956
|
+
appDispatch((0, import_store10.setSelectedRowKeys)(allRowKeys));
|
|
6911
6957
|
} else if (event?.target?.checked && typeTable === "group") {
|
|
6912
6958
|
const rowsIDs = document.querySelectorAll("tr[data-row-id]");
|
|
6913
6959
|
const ids = Array.from(rowsIDs)?.map(
|
|
6914
6960
|
(row) => Number(row?.getAttribute("data-row-id"))
|
|
6915
6961
|
);
|
|
6916
6962
|
if (ids?.length > 0) {
|
|
6917
|
-
appDispatch((0,
|
|
6963
|
+
appDispatch((0, import_store10.setSelectedRowKeys)(ids));
|
|
6918
6964
|
} else {
|
|
6919
6965
|
const sum = countSum(
|
|
6920
6966
|
rows,
|
|
6921
6967
|
typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
|
|
6922
6968
|
);
|
|
6923
6969
|
const keys = Array.from({ length: sum }, (_) => void 0);
|
|
6924
|
-
appDispatch((0,
|
|
6970
|
+
appDispatch((0, import_store10.setSelectedRowKeys)(keys));
|
|
6925
6971
|
}
|
|
6926
6972
|
if (selectedRowKeysRef) {
|
|
6927
6973
|
selectedRowKeysRef.current = [];
|
|
6928
6974
|
}
|
|
6929
6975
|
} else {
|
|
6930
|
-
appDispatch((0,
|
|
6976
|
+
appDispatch((0, import_store10.setSelectedRowKeys)([]));
|
|
6931
6977
|
}
|
|
6932
6978
|
};
|
|
6933
6979
|
return {
|
|
@@ -6937,7 +6983,7 @@ var tableHeadController = (props) => {
|
|
|
6937
6983
|
|
|
6938
6984
|
// src/widget/advance/table/table-view/controller.ts
|
|
6939
6985
|
var import_react22 = require("react");
|
|
6940
|
-
var
|
|
6986
|
+
var import_store11 = require("@fctc/interface-logic/store");
|
|
6941
6987
|
var import_utils13 = require("@fctc/interface-logic/utils");
|
|
6942
6988
|
var tableController = ({ data }) => {
|
|
6943
6989
|
const [rows, setRows] = (0, import_react22.useState)(data.records || []);
|
|
@@ -7017,7 +7063,7 @@ var tableController = ({ data }) => {
|
|
|
7017
7063
|
// src/widget/advance/table/table-group/controller.ts
|
|
7018
7064
|
var import_react23 = require("react");
|
|
7019
7065
|
var import_hooks16 = require("@fctc/interface-logic/hooks");
|
|
7020
|
-
var
|
|
7066
|
+
var import_store12 = require("@fctc/interface-logic/store");
|
|
7021
7067
|
|
|
7022
7068
|
// src/environment.ts
|
|
7023
7069
|
var environment_exports = {};
|
|
@@ -7045,9 +7091,9 @@ var tableGroupController = (props) => {
|
|
|
7045
7091
|
selectedRowKeysRef
|
|
7046
7092
|
} = props;
|
|
7047
7093
|
const [pageGroup, setPageGroup] = (0, import_react23.useState)(0);
|
|
7048
|
-
const { groupByDomain, selectedTags } = (0,
|
|
7049
|
-
const { selectedRowKeys } = (0,
|
|
7050
|
-
const appDispatch = (0,
|
|
7094
|
+
const { groupByDomain, selectedTags } = (0, import_store12.useAppSelector)(import_store12.selectSearch);
|
|
7095
|
+
const { selectedRowKeys } = (0, import_store12.useAppSelector)(import_store12.selectList);
|
|
7096
|
+
const appDispatch = (0, import_store12.useAppDispatch)();
|
|
7051
7097
|
const { toDataJS } = (0, import_hooks16.useOdooDataTransform)();
|
|
7052
7098
|
const initVal = toDataJS(row, viewData, model);
|
|
7053
7099
|
const [isShowGroup, setIsShowGroup] = (0, import_react23.useState)(false);
|
|
@@ -7133,14 +7179,14 @@ var tableGroupController = (props) => {
|
|
|
7133
7179
|
const filteredIds = selectedRowKeys.filter(
|
|
7134
7180
|
(id) => !ids.includes(id)
|
|
7135
7181
|
);
|
|
7136
|
-
appDispatch((0,
|
|
7182
|
+
appDispatch((0, import_store12.setSelectedRowKeys)(filteredIds));
|
|
7137
7183
|
} else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
|
|
7138
7184
|
const clonedKeys = [...selectedRowKeys];
|
|
7139
|
-
appDispatch((0,
|
|
7140
|
-
setTimeout(() => appDispatch((0,
|
|
7185
|
+
appDispatch((0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]));
|
|
7186
|
+
setTimeout(() => appDispatch((0, import_store12.setSelectedRowKeys)(clonedKeys)), 500);
|
|
7141
7187
|
} else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
|
|
7142
7188
|
const filteredKeys = selectedRowKeys.filter((id) => id > -1);
|
|
7143
|
-
appDispatch((0,
|
|
7189
|
+
appDispatch((0, import_store12.setSelectedRowKeys)(filteredKeys));
|
|
7144
7190
|
}
|
|
7145
7191
|
toggleShowGroup();
|
|
7146
7192
|
};
|
|
@@ -7149,8 +7195,8 @@ var tableGroupController = (props) => {
|
|
|
7149
7195
|
return;
|
|
7150
7196
|
}
|
|
7151
7197
|
const clonedKeys = [...selectedRowKeys];
|
|
7152
|
-
(0,
|
|
7153
|
-
setTimeout(() => (0,
|
|
7198
|
+
(0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]);
|
|
7199
|
+
setTimeout(() => (0, import_store12.setSelectedRowKeys)(clonedKeys), 500);
|
|
7154
7200
|
}, [isQueryFetched]);
|
|
7155
7201
|
return {
|
|
7156
7202
|
handleExpandChildGroup,
|