@fctc/widget-logic 1.10.6 → 2.0.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.d.mts +12 -1
- package/dist/hooks.d.ts +12 -1
- package/dist/hooks.js +179 -6
- package/dist/hooks.mjs +179 -2
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +315 -247
- package/dist/index.mjs +230 -158
- package/dist/types.d.mts +0 -1
- package/dist/types.d.ts +0 -1
- package/dist/widget.d.mts +17 -45
- package/dist/widget.d.ts +17 -45
- package/dist/widget.js +305 -239
- package/dist/widget.mjs +224 -154
- package/package.json +96 -96
package/dist/index.mjs
CHANGED
|
@@ -4086,6 +4086,7 @@ __export(index_exports, {
|
|
|
4086
4086
|
useGetRowIds: () => useGetRowIds,
|
|
4087
4087
|
useListData: () => useListData,
|
|
4088
4088
|
useMenu: () => useMenu,
|
|
4089
|
+
useMenuItem: () => useMenuItem,
|
|
4089
4090
|
useProfile: () => useProfile,
|
|
4090
4091
|
useSelectionState: () => useSelectionState,
|
|
4091
4092
|
useStorageState: () => useStorageState,
|
|
@@ -4106,6 +4107,7 @@ __export(hooks_exports, {
|
|
|
4106
4107
|
useDetail: () => useDetail,
|
|
4107
4108
|
useListData: () => useListData,
|
|
4108
4109
|
useMenu: () => useMenu,
|
|
4110
|
+
useMenuItem: () => useMenuItem,
|
|
4109
4111
|
useProfile: () => useProfile,
|
|
4110
4112
|
useUser: () => useUser,
|
|
4111
4113
|
useViewV2: () => useViewV2
|
|
@@ -4888,6 +4890,68 @@ var useAppProvider = () => {
|
|
|
4888
4890
|
return context;
|
|
4889
4891
|
};
|
|
4890
4892
|
|
|
4893
|
+
// src/hooks/core/use-menu-item.tsx
|
|
4894
|
+
import { getEnv as getEnv5 } from "@fctc/interface-logic/environment";
|
|
4895
|
+
import { useGetActionDetail } from "@fctc/interface-logic/hooks";
|
|
4896
|
+
import { useState as useState5 } from "react";
|
|
4897
|
+
|
|
4898
|
+
// src/utils.ts
|
|
4899
|
+
var utils_exports = {};
|
|
4900
|
+
__export(utils_exports, {
|
|
4901
|
+
API_APP_URL: () => API_APP_URL,
|
|
4902
|
+
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
4903
|
+
STORAGES: () => STORAGES,
|
|
4904
|
+
combineContexts: () => combineContexts,
|
|
4905
|
+
convertFieldsToArray: () => convertFieldsToArray,
|
|
4906
|
+
countSum: () => countSum,
|
|
4907
|
+
getDateRange: () => getDateRange,
|
|
4908
|
+
languages: () => languages,
|
|
4909
|
+
mergeButtons: () => mergeButtons,
|
|
4910
|
+
setStorageItemAsync: () => setStorageItemAsync,
|
|
4911
|
+
useGetRowIds: () => useGetRowIds,
|
|
4912
|
+
useSelectionState: () => useSelectionState,
|
|
4913
|
+
useStorageState: () => useStorageState
|
|
4914
|
+
});
|
|
4915
|
+
__reExport(utils_exports, utils_star);
|
|
4916
|
+
import * as utils_star from "@fctc/interface-logic/utils";
|
|
4917
|
+
|
|
4918
|
+
// src/hooks/core/use-menu-item.tsx
|
|
4919
|
+
var useMenuItem = (props) => {
|
|
4920
|
+
const { menu, activeMenuId } = props;
|
|
4921
|
+
const model = menu?.action?.res_model;
|
|
4922
|
+
const aid = menu?.action?.id?.id;
|
|
4923
|
+
const id = menu?.id;
|
|
4924
|
+
const context = getEnv5().context;
|
|
4925
|
+
const queryActionDetail = useGetActionDetail({
|
|
4926
|
+
aid,
|
|
4927
|
+
id,
|
|
4928
|
+
model,
|
|
4929
|
+
context,
|
|
4930
|
+
enabled: true,
|
|
4931
|
+
queryKey: [`action-${aid}`]
|
|
4932
|
+
}).data;
|
|
4933
|
+
const [path, setPath] = useState5("");
|
|
4934
|
+
const handleClick = () => {
|
|
4935
|
+
if (location?.pathname === "/list/menu" && activeMenuId === menu?.id) {
|
|
4936
|
+
return;
|
|
4937
|
+
}
|
|
4938
|
+
const hasListView = queryActionDetail.views.some(
|
|
4939
|
+
([id2, type]) => type === "list"
|
|
4940
|
+
);
|
|
4941
|
+
const viewType = hasListView ? "list" : "form";
|
|
4942
|
+
const isAccountPayment = menu?.action?.res_model === "account.payment" && menu?.action?.id?.id === 1551;
|
|
4943
|
+
const isConvertCurrencyMenu = menu?.action?.res_model === "currency.convert" && menu?.action?.id?.id === 1562;
|
|
4944
|
+
const path2 = (0, utils_exports.formatUrlPath)({
|
|
4945
|
+
viewType,
|
|
4946
|
+
actionPath: isConvertCurrencyMenu ? "menu" : isAccountPayment ? "menu" : menu?.action?.path || "menu",
|
|
4947
|
+
aid: menu?.action?.id?.id,
|
|
4948
|
+
model: queryActionDetail.res_model
|
|
4949
|
+
});
|
|
4950
|
+
setPath(path2);
|
|
4951
|
+
};
|
|
4952
|
+
return { handleClick, path, queryActionDetail };
|
|
4953
|
+
};
|
|
4954
|
+
|
|
4891
4955
|
// src/hooks/utils/use-click-outside.ts
|
|
4892
4956
|
import { useEffect as useEffect7, useRef as useRef2 } from "react";
|
|
4893
4957
|
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
@@ -4920,9 +4984,9 @@ var useClickOutside = ({
|
|
|
4920
4984
|
};
|
|
4921
4985
|
|
|
4922
4986
|
// src/hooks/utils/use-debounce.ts
|
|
4923
|
-
import { useEffect as useEffect8, useState as
|
|
4987
|
+
import { useEffect as useEffect8, useState as useState6 } from "react";
|
|
4924
4988
|
function useDebounce(value, delay) {
|
|
4925
|
-
const [debouncedValue, setDebouncedValue] =
|
|
4989
|
+
const [debouncedValue, setDebouncedValue] = useState6(value);
|
|
4926
4990
|
useEffect8(() => {
|
|
4927
4991
|
const handler = setTimeout(() => {
|
|
4928
4992
|
setDebouncedValue(value);
|
|
@@ -5180,18 +5244,18 @@ var ChevronBottomIcon = ({
|
|
|
5180
5244
|
};
|
|
5181
5245
|
|
|
5182
5246
|
// src/widget/basic/status-dropdown-field/controller.ts
|
|
5183
|
-
import { useEffect as useEffect9, useRef as useRef3, useState as
|
|
5184
|
-
import { getEnv as
|
|
5247
|
+
import { useEffect as useEffect9, useRef as useRef3, useState as useState7 } from "react";
|
|
5248
|
+
import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
|
|
5185
5249
|
import { useSave } from "@fctc/interface-logic/hooks";
|
|
5186
5250
|
var statusDropdownController = (props) => {
|
|
5187
5251
|
const { selection, isForm, id, model, name, state, onRefetch } = props;
|
|
5188
|
-
const env =
|
|
5252
|
+
const env = getEnv6();
|
|
5189
5253
|
const colors = {
|
|
5190
5254
|
normal: "bg-[#e9ecef]",
|
|
5191
5255
|
done: "bg-primary",
|
|
5192
5256
|
blocked: "bg-red-500"
|
|
5193
5257
|
};
|
|
5194
|
-
const [isOpen, setIsOpen] =
|
|
5258
|
+
const [isOpen, setIsOpen] = useState7(false);
|
|
5195
5259
|
const buttonRef = useRef3(null);
|
|
5196
5260
|
useEffect9(() => {
|
|
5197
5261
|
const handleClickOutside = (event) => {
|
|
@@ -5234,27 +5298,7 @@ var statusDropdownController = (props) => {
|
|
|
5234
5298
|
};
|
|
5235
5299
|
|
|
5236
5300
|
// src/widget/basic/many2one-field/controller.ts
|
|
5237
|
-
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as
|
|
5238
|
-
|
|
5239
|
-
// src/utils.ts
|
|
5240
|
-
var utils_exports = {};
|
|
5241
|
-
__export(utils_exports, {
|
|
5242
|
-
API_APP_URL: () => API_APP_URL,
|
|
5243
|
-
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
5244
|
-
STORAGES: () => STORAGES,
|
|
5245
|
-
combineContexts: () => combineContexts,
|
|
5246
|
-
convertFieldsToArray: () => convertFieldsToArray,
|
|
5247
|
-
countSum: () => countSum,
|
|
5248
|
-
getDateRange: () => getDateRange,
|
|
5249
|
-
languages: () => languages,
|
|
5250
|
-
mergeButtons: () => mergeButtons,
|
|
5251
|
-
setStorageItemAsync: () => setStorageItemAsync,
|
|
5252
|
-
useGetRowIds: () => useGetRowIds,
|
|
5253
|
-
useSelectionState: () => useSelectionState,
|
|
5254
|
-
useStorageState: () => useStorageState
|
|
5255
|
-
});
|
|
5256
|
-
__reExport(utils_exports, utils_star2);
|
|
5257
|
-
import * as utils_star2 from "@fctc/interface-logic/utils";
|
|
5301
|
+
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState8 } from "react";
|
|
5258
5302
|
|
|
5259
5303
|
// src/provider.ts
|
|
5260
5304
|
var provider_exports = {};
|
|
@@ -5276,22 +5320,22 @@ var many2oneFieldController = (props) => {
|
|
|
5276
5320
|
options: fieldOptions,
|
|
5277
5321
|
showDetail
|
|
5278
5322
|
} = props;
|
|
5279
|
-
const
|
|
5280
|
-
const [
|
|
5281
|
-
const [inputValue, setInputValue] = useState7("");
|
|
5323
|
+
const [options, setOptions] = useState8([]);
|
|
5324
|
+
const [inputValue, setInputValue] = useState8("");
|
|
5282
5325
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
5283
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
5284
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
5285
|
-
const [domainModal, setDomainModal] =
|
|
5286
|
-
const [domainObject, setDomainObject] =
|
|
5326
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
|
|
5327
|
+
const [tempSelectedOption, setTempSelectedOption] = useState8(null);
|
|
5328
|
+
const [domainModal, setDomainModal] = useState8(null);
|
|
5329
|
+
const [domainObject, setDomainObject] = useState8(null);
|
|
5287
5330
|
const actionData = sessionStorageUtils.getActionData();
|
|
5288
5331
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5332
|
+
const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
|
|
5289
5333
|
const initValue = methods?.getValues(name);
|
|
5290
5334
|
const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
|
|
5291
5335
|
const contextObject = {
|
|
5292
5336
|
...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
|
|
5293
5337
|
...fieldContext,
|
|
5294
|
-
...
|
|
5338
|
+
...context
|
|
5295
5339
|
};
|
|
5296
5340
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5297
5341
|
const data = {
|
|
@@ -5435,13 +5479,13 @@ var many2oneFieldController = (props) => {
|
|
|
5435
5479
|
};
|
|
5436
5480
|
|
|
5437
5481
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5438
|
-
import { getEnv as
|
|
5482
|
+
import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
|
|
5439
5483
|
import { useGetSelection } from "@fctc/interface-logic/hooks";
|
|
5440
5484
|
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
|
|
5441
5485
|
var many2oneButtonController = (props) => {
|
|
5442
5486
|
const { domain, methods, relation } = props;
|
|
5443
5487
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5444
|
-
const env =
|
|
5488
|
+
const env = getEnv7();
|
|
5445
5489
|
const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
|
|
5446
5490
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5447
5491
|
const { data: dataOfSelection } = useGetSelection({
|
|
@@ -5462,10 +5506,16 @@ var many2oneButtonController = (props) => {
|
|
|
5462
5506
|
};
|
|
5463
5507
|
|
|
5464
5508
|
// src/widget/basic/many2many-field/controller.ts
|
|
5465
|
-
import { useEffect as useEffect11, useMemo as useMemo10, useState as
|
|
5509
|
+
import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
|
|
5510
|
+
import {
|
|
5511
|
+
useAppDispatch as useAppDispatch5,
|
|
5512
|
+
setFirstDomain,
|
|
5513
|
+
setViewDataStore,
|
|
5514
|
+
setPage,
|
|
5515
|
+
setGroupByDomain
|
|
5516
|
+
} from "@fctc/interface-logic/store";
|
|
5466
5517
|
import {
|
|
5467
5518
|
evalJSONContext as evalJSONContext4,
|
|
5468
|
-
evalJSONDomain as evalJSONDomain4,
|
|
5469
5519
|
formatSortingString as formatSortingString2
|
|
5470
5520
|
} from "@fctc/interface-logic/utils";
|
|
5471
5521
|
var many2manyFieldController = (props) => {
|
|
@@ -5473,44 +5523,45 @@ var many2manyFieldController = (props) => {
|
|
|
5473
5523
|
relation,
|
|
5474
5524
|
domain,
|
|
5475
5525
|
context,
|
|
5476
|
-
options,
|
|
5477
5526
|
tab,
|
|
5527
|
+
model,
|
|
5528
|
+
aid,
|
|
5478
5529
|
setSelectedRowKeys: setSelectedRowKeys4,
|
|
5530
|
+
fields,
|
|
5531
|
+
setFields,
|
|
5479
5532
|
groupByDomain,
|
|
5480
|
-
|
|
5481
|
-
|
|
5533
|
+
page,
|
|
5534
|
+
options,
|
|
5535
|
+
sessionStorageUtils
|
|
5482
5536
|
} = props;
|
|
5537
|
+
const appDispatch = useAppDispatch5();
|
|
5538
|
+
const actionData = sessionStorageUtils.getActionData();
|
|
5539
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
5540
|
+
const [order, setOrder] = useState9();
|
|
5541
|
+
const [isLoadedData, setIsLoadedData] = useState9(false);
|
|
5542
|
+
const [domainMany2Many, setDomainMany2Many] = useState9(domain);
|
|
5483
5543
|
const { env } = (0, provider_exports.useEnv)();
|
|
5484
5544
|
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5485
|
-
const [order, setOrder] = useState8();
|
|
5486
|
-
const [isLoadedData, setIsLoadedData] = useState8(false);
|
|
5487
|
-
const [page, setPage] = useState8(0);
|
|
5488
|
-
const [domainMany2Many, setDomainMany2Many] = useState8(null);
|
|
5489
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5490
|
-
const contextObject = {
|
|
5491
|
-
...env.context,
|
|
5492
|
-
...context || {}
|
|
5493
|
-
};
|
|
5494
5545
|
const viewParams = {
|
|
5495
5546
|
model: relation,
|
|
5496
5547
|
views: [
|
|
5497
5548
|
[false, "list"],
|
|
5498
5549
|
[false, "search"]
|
|
5499
5550
|
],
|
|
5500
|
-
context
|
|
5551
|
+
context
|
|
5501
5552
|
};
|
|
5502
|
-
const { data: viewResponse } = useGetView2(viewParams,
|
|
5553
|
+
const { data: viewResponse } = useGetView2(viewParams, actionData);
|
|
5503
5554
|
const baseModel = useMemo10(
|
|
5504
5555
|
() => ({
|
|
5505
5556
|
name: String(relation),
|
|
5506
5557
|
view: viewResponse || {},
|
|
5507
|
-
actContext:
|
|
5558
|
+
actContext: context,
|
|
5508
5559
|
fields: [
|
|
5509
5560
|
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5510
5561
|
...tab?.fields ? tab.fields : []
|
|
5511
5562
|
]
|
|
5512
5563
|
}),
|
|
5513
|
-
[
|
|
5564
|
+
[model, viewResponse]
|
|
5514
5565
|
);
|
|
5515
5566
|
const initModel = (0, hooks_exports.useModel)();
|
|
5516
5567
|
const modelInstance = useMemo10(() => {
|
|
@@ -5529,15 +5580,26 @@ var many2manyFieldController = (props) => {
|
|
|
5529
5580
|
const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
|
|
5530
5581
|
const fetchData = async () => {
|
|
5531
5582
|
try {
|
|
5532
|
-
|
|
5533
|
-
|
|
5534
|
-
|
|
5583
|
+
setDomainMany2Many(domain);
|
|
5584
|
+
appDispatch(setFirstDomain(domain));
|
|
5585
|
+
appDispatch(setViewDataStore(viewResponse));
|
|
5586
|
+
const modalData = viewResponse?.views?.list?.fields.map((field) => ({
|
|
5587
|
+
...viewResponse?.models?.[String(model)]?.[field?.name],
|
|
5588
|
+
...field
|
|
5589
|
+
}));
|
|
5590
|
+
if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
|
|
5591
|
+
setFields({
|
|
5592
|
+
...fields,
|
|
5593
|
+
[`${aid}_${relation}_popupmany2many`]: modalData
|
|
5594
|
+
});
|
|
5595
|
+
}
|
|
5596
|
+
appDispatch(setPage(0));
|
|
5535
5597
|
} catch (err) {
|
|
5536
5598
|
console.log(err);
|
|
5537
5599
|
}
|
|
5538
5600
|
};
|
|
5539
5601
|
const queryKey = [
|
|
5540
|
-
`view-${relation}`,
|
|
5602
|
+
`view-${relation}-${aid}`,
|
|
5541
5603
|
specification,
|
|
5542
5604
|
domainMany2Many,
|
|
5543
5605
|
debouncedPage,
|
|
@@ -5550,16 +5612,16 @@ var many2manyFieldController = (props) => {
|
|
|
5550
5612
|
domain: domainMany2Many,
|
|
5551
5613
|
offset: debouncedPage * 10,
|
|
5552
5614
|
limit: 10,
|
|
5553
|
-
context
|
|
5615
|
+
context,
|
|
5554
5616
|
fields: groupByDomain?.fields,
|
|
5555
5617
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5556
5618
|
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
5557
5619
|
};
|
|
5558
|
-
const enabled =
|
|
5620
|
+
const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5559
5621
|
const {
|
|
5560
5622
|
data: dataResponse,
|
|
5561
|
-
isLoading,
|
|
5562
|
-
isFetched,
|
|
5623
|
+
isLoading: isDataLoading,
|
|
5624
|
+
isFetched: isDataResponseFetched,
|
|
5563
5625
|
isPlaceholderData
|
|
5564
5626
|
} = useGetListData3(data, queryKey, enabled);
|
|
5565
5627
|
useEffect11(() => {
|
|
@@ -5567,65 +5629,76 @@ var many2manyFieldController = (props) => {
|
|
|
5567
5629
|
fetchData();
|
|
5568
5630
|
}
|
|
5569
5631
|
return () => {
|
|
5570
|
-
|
|
5632
|
+
appDispatch(setGroupByDomain(null));
|
|
5633
|
+
setFields((prevFields) => ({
|
|
5634
|
+
...prevFields,
|
|
5635
|
+
[`${aid}_${relation}_popupmany2many`]: null
|
|
5636
|
+
}));
|
|
5637
|
+
appDispatch(setPage(0));
|
|
5571
5638
|
setSelectedRowKeys4([]);
|
|
5572
5639
|
setDomainMany2Many(null);
|
|
5573
5640
|
setIsLoadedData(false);
|
|
5574
5641
|
};
|
|
5575
5642
|
}, [viewResponse]);
|
|
5576
|
-
const { rows, columns, typeTable
|
|
5643
|
+
const { rows, columns, typeTable } = tableController({
|
|
5577
5644
|
data: {
|
|
5578
|
-
fields: viewResponse?.views?.list?.fields,
|
|
5645
|
+
fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
|
|
5579
5646
|
records: dataResponse?.records ?? dataResponse?.groups,
|
|
5580
5647
|
dataModel: viewResponse?.models?.[String(relation)],
|
|
5581
|
-
context:
|
|
5648
|
+
context: { ...env.context, ...context },
|
|
5582
5649
|
typeTable: dataResponse?.groups ? "group" : "list"
|
|
5583
5650
|
}
|
|
5584
5651
|
});
|
|
5585
|
-
const
|
|
5586
|
-
|
|
5587
|
-
model: relation
|
|
5588
|
-
context
|
|
5589
|
-
|
|
5590
|
-
|
|
5591
|
-
|
|
5592
|
-
|
|
5593
|
-
|
|
5594
|
-
|
|
5652
|
+
const dataFormView = {
|
|
5653
|
+
id: null,
|
|
5654
|
+
model: relation,
|
|
5655
|
+
context
|
|
5656
|
+
};
|
|
5657
|
+
const {
|
|
5658
|
+
refetch,
|
|
5659
|
+
data: dataFormViewResponse,
|
|
5660
|
+
isSuccess
|
|
5661
|
+
} = useGetFormView({
|
|
5662
|
+
data: dataFormView,
|
|
5663
|
+
queryKey: [`form-view-action-${relation}`],
|
|
5664
|
+
enabled: false
|
|
5595
5665
|
});
|
|
5666
|
+
useEffect11(() => {
|
|
5667
|
+
if (isSuccess && dataFormViewResponse) {
|
|
5668
|
+
sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
|
|
5669
|
+
window.location.href = `/form/menu?model=${relation}`;
|
|
5670
|
+
}
|
|
5671
|
+
}, [isSuccess]);
|
|
5596
5672
|
useEffect11(() => {
|
|
5597
5673
|
if (domainMany2Many && !isLoadedData) {
|
|
5598
5674
|
setIsLoadedData(true);
|
|
5599
5675
|
}
|
|
5600
5676
|
}, [domainMany2Many]);
|
|
5601
5677
|
const handleCreateNewOnPage = async () => {
|
|
5678
|
+
try {
|
|
5679
|
+
refetch();
|
|
5680
|
+
} catch (error) {
|
|
5681
|
+
console.log(error);
|
|
5682
|
+
}
|
|
5602
5683
|
};
|
|
5603
5684
|
return {
|
|
5604
5685
|
handleCreateNewOnPage,
|
|
5605
5686
|
optionsObject,
|
|
5606
|
-
totalRows: dataResponse?.length ?? 0,
|
|
5607
5687
|
rows,
|
|
5608
5688
|
columns,
|
|
5609
|
-
onToggleColumnOptional,
|
|
5610
5689
|
typeTable,
|
|
5611
|
-
|
|
5612
|
-
|
|
5613
|
-
isPlaceholderData
|
|
5614
|
-
setPage,
|
|
5615
|
-
page,
|
|
5616
|
-
viewData: viewResponse,
|
|
5617
|
-
domain: domainMany2Many,
|
|
5618
|
-
setDomain: setDomainMany2Many,
|
|
5619
|
-
searchController: searchControllers
|
|
5690
|
+
isDataLoading,
|
|
5691
|
+
isDataResponseFetched,
|
|
5692
|
+
isPlaceholderData
|
|
5620
5693
|
};
|
|
5621
5694
|
};
|
|
5622
5695
|
|
|
5623
5696
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5624
5697
|
import { useMemo as useMemo11 } from "react";
|
|
5625
5698
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5626
|
-
import { getEnv as
|
|
5699
|
+
import { getEnv as getEnv8 } from "@fctc/interface-logic/environment";
|
|
5627
5700
|
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5628
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as
|
|
5701
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
|
|
5629
5702
|
var many2manyTagsController = (props) => {
|
|
5630
5703
|
const {
|
|
5631
5704
|
relation,
|
|
@@ -5636,10 +5709,10 @@ var many2manyTagsController = (props) => {
|
|
|
5636
5709
|
placeholderNoOption
|
|
5637
5710
|
} = props;
|
|
5638
5711
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5639
|
-
const env =
|
|
5712
|
+
const env = getEnv8();
|
|
5640
5713
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5641
5714
|
const domainObject = useMemo11(
|
|
5642
|
-
() =>
|
|
5715
|
+
() => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5643
5716
|
[domain, formValues]
|
|
5644
5717
|
);
|
|
5645
5718
|
const data = {
|
|
@@ -5681,8 +5754,8 @@ var many2manyTagsController = (props) => {
|
|
|
5681
5754
|
};
|
|
5682
5755
|
|
|
5683
5756
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5684
|
-
import { useState as
|
|
5685
|
-
import { evalJSONDomain as
|
|
5757
|
+
import { useState as useState10 } from "react";
|
|
5758
|
+
import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5686
5759
|
var durationController = (props) => {
|
|
5687
5760
|
const { relation, domain, formValues, name, id, model, onRefetch } = props;
|
|
5688
5761
|
const specification = {
|
|
@@ -5692,13 +5765,13 @@ var durationController = (props) => {
|
|
|
5692
5765
|
};
|
|
5693
5766
|
const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
|
|
5694
5767
|
const { env } = (0, provider_exports.useEnv)();
|
|
5695
|
-
const [disabled, setDisabled] =
|
|
5696
|
-
const [modelStatus, setModalStatus] =
|
|
5768
|
+
const [disabled, setDisabled] = useState10(false);
|
|
5769
|
+
const [modelStatus, setModalStatus] = useState10(false);
|
|
5697
5770
|
const queryKey = [`data-status-duration`, specification];
|
|
5698
5771
|
const listDataProps = {
|
|
5699
5772
|
model: relation,
|
|
5700
5773
|
specification,
|
|
5701
|
-
domain:
|
|
5774
|
+
domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5702
5775
|
limit: 10,
|
|
5703
5776
|
offset: 0,
|
|
5704
5777
|
fields: "",
|
|
@@ -5799,10 +5872,10 @@ var priorityFieldController = (props) => {
|
|
|
5799
5872
|
};
|
|
5800
5873
|
|
|
5801
5874
|
// src/widget/basic/download-file-field/controller.ts
|
|
5802
|
-
import { useId, useState as
|
|
5875
|
+
import { useId, useState as useState11 } from "react";
|
|
5803
5876
|
var downloadFileController = () => {
|
|
5804
5877
|
const inputId = useId();
|
|
5805
|
-
const [file, setFile] =
|
|
5878
|
+
const [file, setFile] = useState11(null);
|
|
5806
5879
|
const handleFileChange = (e) => {
|
|
5807
5880
|
setFile(e.target.files[0]);
|
|
5808
5881
|
};
|
|
@@ -6734,11 +6807,11 @@ var dateFieldController = (props) => {
|
|
|
6734
6807
|
};
|
|
6735
6808
|
|
|
6736
6809
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6737
|
-
import { useState as
|
|
6810
|
+
import { useState as useState12 } from "react";
|
|
6738
6811
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6739
6812
|
var copyLinkButtonController = (props) => {
|
|
6740
6813
|
const { value, defaultValue } = props;
|
|
6741
|
-
const [isCopied, setIsCopied] =
|
|
6814
|
+
const [isCopied, setIsCopied] = useState12(false);
|
|
6742
6815
|
const handleCopyToClipboard = async (value2) => {
|
|
6743
6816
|
await copyTextToClipboard(value2);
|
|
6744
6817
|
setIsCopied(true);
|
|
@@ -6786,14 +6859,14 @@ var colorFieldController = (props) => {
|
|
|
6786
6859
|
};
|
|
6787
6860
|
|
|
6788
6861
|
// src/widget/basic/binary-field/controller.ts
|
|
6789
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6862
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
|
|
6790
6863
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6791
6864
|
var binaryFieldController = (props) => {
|
|
6792
6865
|
const { name, methods, readonly = false, value } = props;
|
|
6793
6866
|
const inputId = useId2();
|
|
6794
|
-
const [selectedImage, setSelectedImage] =
|
|
6795
|
-
const [initialImage, setInitialImage] =
|
|
6796
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6867
|
+
const [selectedImage, setSelectedImage] = useState13(null);
|
|
6868
|
+
const [initialImage, setInitialImage] = useState13(value || null);
|
|
6869
|
+
const [isInsideTable, setIsInsideTable] = useState13(false);
|
|
6797
6870
|
const { setValue } = methods;
|
|
6798
6871
|
const binaryRef = useRef4(null);
|
|
6799
6872
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6884,7 +6957,7 @@ var binaryFieldController = (props) => {
|
|
|
6884
6957
|
};
|
|
6885
6958
|
|
|
6886
6959
|
// src/widget/advance/table/table-body/controller.ts
|
|
6887
|
-
import { useAppDispatch as
|
|
6960
|
+
import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6888
6961
|
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6889
6962
|
var tableBodyController = (props) => {
|
|
6890
6963
|
const {
|
|
@@ -6897,7 +6970,7 @@ var tableBodyController = (props) => {
|
|
|
6897
6970
|
selectedRowKeysRef,
|
|
6898
6971
|
onClickRow
|
|
6899
6972
|
} = props;
|
|
6900
|
-
const appDispatch =
|
|
6973
|
+
const appDispatch = useAppDispatch6();
|
|
6901
6974
|
const checked = useMemo12(() => {
|
|
6902
6975
|
if (!row?.id) return false;
|
|
6903
6976
|
if (selectedRowKeys?.includes(row.id)) {
|
|
@@ -6952,14 +7025,14 @@ var tableBodyController = (props) => {
|
|
|
6952
7025
|
|
|
6953
7026
|
// src/widget/advance/table/table-head/controller.ts
|
|
6954
7027
|
import {
|
|
6955
|
-
useAppDispatch as
|
|
7028
|
+
useAppDispatch as useAppDispatch7,
|
|
6956
7029
|
useAppSelector as useAppSelector4,
|
|
6957
7030
|
selectSearch as selectSearch3,
|
|
6958
7031
|
setSelectedRowKeys as setSelectedRowKeys2
|
|
6959
7032
|
} from "@fctc/interface-logic/store";
|
|
6960
7033
|
var tableHeadController = (props) => {
|
|
6961
7034
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
6962
|
-
const appDispatch =
|
|
7035
|
+
const appDispatch = useAppDispatch7();
|
|
6963
7036
|
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
6964
7037
|
const handleCheckBoxAll = (event) => {
|
|
6965
7038
|
if (event?.target?.checked && typeTable === "list") {
|
|
@@ -6993,7 +7066,7 @@ var tableHeadController = (props) => {
|
|
|
6993
7066
|
};
|
|
6994
7067
|
|
|
6995
7068
|
// src/widget/advance/table/table-view/controller.ts
|
|
6996
|
-
import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as
|
|
7069
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState14 } from "react";
|
|
6997
7070
|
import {
|
|
6998
7071
|
useAppSelector as useAppSelector5,
|
|
6999
7072
|
selectSearch as selectSearch4,
|
|
@@ -7001,8 +7074,8 @@ import {
|
|
|
7001
7074
|
} from "@fctc/interface-logic/store";
|
|
7002
7075
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
7003
7076
|
var tableController = ({ data }) => {
|
|
7004
|
-
const [rows, setRows] =
|
|
7005
|
-
const [columns, setColumns] =
|
|
7077
|
+
const [rows, setRows] = useState14(data.records || []);
|
|
7078
|
+
const [columns, setColumns] = useState14([]);
|
|
7006
7079
|
const dataModelFields = data.fields?.map((field) => {
|
|
7007
7080
|
return {
|
|
7008
7081
|
...data.dataModel?.[field?.name],
|
|
@@ -7076,7 +7149,7 @@ var tableController = ({ data }) => {
|
|
|
7076
7149
|
};
|
|
7077
7150
|
|
|
7078
7151
|
// src/widget/advance/table/table-group/controller.ts
|
|
7079
|
-
import { useEffect as useEffect15, useMemo as useMemo14, useState as
|
|
7152
|
+
import { useEffect as useEffect15, useMemo as useMemo14, useState as useState15 } from "react";
|
|
7080
7153
|
import {
|
|
7081
7154
|
useOdooDataTransform,
|
|
7082
7155
|
useGetListData as useGetListData2
|
|
@@ -7085,7 +7158,7 @@ import {
|
|
|
7085
7158
|
useAppSelector as useAppSelector6,
|
|
7086
7159
|
selectSearch as selectSearch5,
|
|
7087
7160
|
selectList as selectList4,
|
|
7088
|
-
useAppDispatch as
|
|
7161
|
+
useAppDispatch as useAppDispatch8,
|
|
7089
7162
|
setSelectedRowKeys as setSelectedRowKeys3
|
|
7090
7163
|
} from "@fctc/interface-logic/store";
|
|
7091
7164
|
|
|
@@ -7115,14 +7188,14 @@ var tableGroupController = (props) => {
|
|
|
7115
7188
|
setIsAutoSelect,
|
|
7116
7189
|
selectedRowKeysRef
|
|
7117
7190
|
} = props;
|
|
7118
|
-
const [pageGroup, setPageGroup] =
|
|
7191
|
+
const [pageGroup, setPageGroup] = useState15(0);
|
|
7119
7192
|
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
7120
7193
|
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
7121
|
-
const appDispatch =
|
|
7194
|
+
const appDispatch = useAppDispatch8();
|
|
7122
7195
|
const { toDataJS } = useOdooDataTransform();
|
|
7123
7196
|
const initVal = toDataJS(row, viewData, model);
|
|
7124
|
-
const [isShowGroup, setIsShowGroup] =
|
|
7125
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
7197
|
+
const [isShowGroup, setIsShowGroup] = useState15(false);
|
|
7198
|
+
const [colEmptyGroup, setColEmptyGroup] = useState15({
|
|
7126
7199
|
fromStart: 1,
|
|
7127
7200
|
fromEnd: 1
|
|
7128
7201
|
});
|
|
@@ -7259,28 +7332,26 @@ var import_moment2 = __toESM(require_moment());
|
|
|
7259
7332
|
import { SearchType } from "@fctc/interface-logic/constants";
|
|
7260
7333
|
import {
|
|
7261
7334
|
domainHelper as domainHelper2,
|
|
7262
|
-
|
|
7263
|
-
evalJSONDomain as evalJSONDomain7,
|
|
7335
|
+
evalJSONDomain as evalJSONDomain6,
|
|
7264
7336
|
validateAndParseDate
|
|
7265
7337
|
} from "@fctc/interface-logic/utils";
|
|
7266
|
-
import { useCallback as useCallback3, useEffect as useEffect16, useState as
|
|
7338
|
+
import { useCallback as useCallback3, useEffect as useEffect16, useState as useState16 } from "react";
|
|
7267
7339
|
var searchController = ({
|
|
7268
7340
|
viewData,
|
|
7269
|
-
|
|
7270
|
-
|
|
7271
|
-
|
|
7272
|
-
|
|
7341
|
+
actionData,
|
|
7342
|
+
fieldsList,
|
|
7343
|
+
contextSearch,
|
|
7344
|
+
setSearchMap,
|
|
7345
|
+
searchMap
|
|
7273
7346
|
}) => {
|
|
7274
|
-
const
|
|
7275
|
-
const [
|
|
7276
|
-
const [
|
|
7277
|
-
const [
|
|
7278
|
-
const [
|
|
7279
|
-
const [
|
|
7280
|
-
const
|
|
7281
|
-
const
|
|
7282
|
-
const contextSearch = { ...env.context, ...actionContext };
|
|
7283
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
7347
|
+
const [filterBy, setFilterBy] = useState16(null);
|
|
7348
|
+
const [searchBy, setSearchBy] = useState16(null);
|
|
7349
|
+
const [groupBy, setGroupBy] = useState16(null);
|
|
7350
|
+
const [selectedTags, setSelectedTags] = useState16(null);
|
|
7351
|
+
const [searchString, setSearchString] = useState16("");
|
|
7352
|
+
const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain6(actionData?.domain, contextSearch) : [];
|
|
7353
|
+
const aid = actionData?.id;
|
|
7354
|
+
const model = actionData?.res_model;
|
|
7284
7355
|
const clearSearch = () => {
|
|
7285
7356
|
setFilterBy([]);
|
|
7286
7357
|
setGroupBy([]);
|
|
@@ -7325,8 +7396,9 @@ var searchController = ({
|
|
|
7325
7396
|
}
|
|
7326
7397
|
};
|
|
7327
7398
|
useEffect16(() => {
|
|
7399
|
+
clearSearch();
|
|
7328
7400
|
fetchData();
|
|
7329
|
-
}, [model, viewData]);
|
|
7401
|
+
}, [aid, model, viewData]);
|
|
7330
7402
|
const onChangeSearchInput = (search_string) => {
|
|
7331
7403
|
setSearchString(search_string);
|
|
7332
7404
|
};
|
|
@@ -7363,27 +7435,27 @@ var searchController = ({
|
|
|
7363
7435
|
};
|
|
7364
7436
|
const formatDomain = () => {
|
|
7365
7437
|
if (domainAction) {
|
|
7366
|
-
const
|
|
7438
|
+
const domain = [];
|
|
7367
7439
|
if (domainAction?.length > 0) {
|
|
7368
7440
|
if (Object.keys(searchMap).length > 0) {
|
|
7369
|
-
|
|
7441
|
+
domain.push("&");
|
|
7370
7442
|
}
|
|
7371
7443
|
domainAction.forEach((domainItem) => {
|
|
7372
|
-
|
|
7444
|
+
domain.push(domainItem);
|
|
7373
7445
|
});
|
|
7374
7446
|
}
|
|
7375
7447
|
Object.keys(searchMap).forEach((key, keyIndex, keys) => {
|
|
7376
7448
|
if (!key?.includes(SearchType.GROUP)) {
|
|
7377
7449
|
if (keys.length > 1 && keyIndex < keys.length - 1) {
|
|
7378
|
-
|
|
7450
|
+
domain.push("&");
|
|
7379
7451
|
}
|
|
7380
7452
|
const valuesOfKey = searchMap[key];
|
|
7381
7453
|
valuesOfKey.forEach((value, index) => {
|
|
7382
7454
|
if (index < valuesOfKey.length - 1) {
|
|
7383
|
-
|
|
7455
|
+
domain.push("|");
|
|
7384
7456
|
}
|
|
7385
7457
|
if (value.domain) {
|
|
7386
|
-
|
|
7458
|
+
domain.push(...value.domain);
|
|
7387
7459
|
return;
|
|
7388
7460
|
}
|
|
7389
7461
|
let valueDomainItem = value?.value;
|
|
@@ -7399,11 +7471,11 @@ var searchController = ({
|
|
|
7399
7471
|
}
|
|
7400
7472
|
}
|
|
7401
7473
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
7402
|
-
|
|
7474
|
+
domain.push([value.name, operator, valueDomainItem]);
|
|
7403
7475
|
});
|
|
7404
7476
|
}
|
|
7405
7477
|
});
|
|
7406
|
-
return [...
|
|
7478
|
+
return [...domain];
|
|
7407
7479
|
}
|
|
7408
7480
|
};
|
|
7409
7481
|
const setTagSearch = useCallback3(
|
|
@@ -7434,16 +7506,16 @@ var searchController = ({
|
|
|
7434
7506
|
const contexts = [];
|
|
7435
7507
|
let groupValues = [];
|
|
7436
7508
|
objValues?.forEach((objValue) => {
|
|
7437
|
-
const { context
|
|
7509
|
+
const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7438
7510
|
const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
|
|
7439
7511
|
contexts.push(
|
|
7440
|
-
...Array.isArray(
|
|
7512
|
+
...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({ group_by: item })) : [context]
|
|
7441
7513
|
);
|
|
7442
7514
|
groupValues[indexAppend] = {
|
|
7443
7515
|
contexts: [
|
|
7444
|
-
...Array.isArray(
|
|
7516
|
+
...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({
|
|
7445
7517
|
group_by: item
|
|
7446
|
-
})) : [
|
|
7518
|
+
})) : [context]
|
|
7447
7519
|
],
|
|
7448
7520
|
strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
|
|
7449
7521
|
};
|
|
@@ -7475,34 +7547,34 @@ var searchController = ({
|
|
|
7475
7547
|
}, [searchMap]);
|
|
7476
7548
|
const handleAddTagSearch = (tag) => {
|
|
7477
7549
|
const {
|
|
7478
|
-
domain
|
|
7550
|
+
domain,
|
|
7479
7551
|
groupIndex,
|
|
7480
7552
|
value,
|
|
7481
7553
|
type,
|
|
7482
7554
|
title,
|
|
7483
|
-
context
|
|
7555
|
+
context,
|
|
7484
7556
|
active,
|
|
7485
7557
|
dataIndex
|
|
7486
7558
|
} = tag;
|
|
7487
|
-
const domainFormat = new domainHelper2.Domain(
|
|
7559
|
+
const domainFormat = new domainHelper2.Domain(domain);
|
|
7488
7560
|
if (type === SearchType.FILTER) {
|
|
7489
7561
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|
|
7490
7562
|
...tag,
|
|
7491
|
-
domain:
|
|
7563
|
+
domain: domain ? domainFormat.toList(context) : null
|
|
7492
7564
|
});
|
|
7493
7565
|
} else if (type === SearchType.SEARCH) {
|
|
7494
7566
|
addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
|
|
7495
7567
|
...tag,
|
|
7496
|
-
domain:
|
|
7497
|
-
...
|
|
7568
|
+
domain: domain ? domainFormat.toList({
|
|
7569
|
+
...context,
|
|
7498
7570
|
self: value
|
|
7499
7571
|
}) : null
|
|
7500
7572
|
});
|
|
7501
7573
|
} else if (type === SearchType.GROUP) {
|
|
7502
7574
|
addSearchItems(`${SearchType.GROUP}`, {
|
|
7503
7575
|
...tag,
|
|
7504
|
-
domain:
|
|
7505
|
-
context
|
|
7576
|
+
domain: domain ? domainFormat.toList({
|
|
7577
|
+
context,
|
|
7506
7578
|
self: value
|
|
7507
7579
|
}) : null
|
|
7508
7580
|
});
|
|
@@ -7522,8 +7594,7 @@ var searchController = ({
|
|
|
7522
7594
|
removeSearchItems,
|
|
7523
7595
|
onSearchString: onChangeSearchInput,
|
|
7524
7596
|
handleAddTagSearch,
|
|
7525
|
-
domain: formatDomain()
|
|
7526
|
-
context: contextSearch
|
|
7597
|
+
domain: formatDomain()
|
|
7527
7598
|
};
|
|
7528
7599
|
};
|
|
7529
7600
|
|
|
@@ -7604,6 +7675,7 @@ export {
|
|
|
7604
7675
|
useGetRowIds,
|
|
7605
7676
|
useListData,
|
|
7606
7677
|
useMenu,
|
|
7678
|
+
useMenuItem,
|
|
7607
7679
|
useProfile,
|
|
7608
7680
|
useSelectionState,
|
|
7609
7681
|
useStorageState,
|