@fctc/widget-logic 2.8.2 → 2.8.4
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 +20 -7
- package/dist/hooks.d.ts +20 -7
- package/dist/hooks.js +102 -61
- package/dist/hooks.mjs +96 -55
- package/dist/index.js +135 -94
- package/dist/index.mjs +108 -67
- package/dist/widget.js +39 -39
- package/dist/widget.mjs +15 -15
- package/package.json +96 -96
package/dist/index.mjs
CHANGED
|
@@ -4240,52 +4240,13 @@ import { createContext, useContext, useMemo as useMemo5 } from "react";
|
|
|
4240
4240
|
import { useMemo, useState as useState2 } from "react";
|
|
4241
4241
|
|
|
4242
4242
|
// src/hooks/core/use-call-action.ts
|
|
4243
|
-
import { useCallback, useState } from "react";
|
|
4243
|
+
import { useCallback as useCallback2, useState } from "react";
|
|
4244
4244
|
|
|
4245
4245
|
// src/provider.ts
|
|
4246
4246
|
var provider_exports = {};
|
|
4247
4247
|
__reExport(provider_exports, provider_star);
|
|
4248
4248
|
import * as provider_star from "@fctc/interface-logic/provider";
|
|
4249
4249
|
|
|
4250
|
-
// src/hooks/core/use-call-action.ts
|
|
4251
|
-
var useCallAction = () => {
|
|
4252
|
-
const { env } = (0, provider_exports.useEnv)();
|
|
4253
|
-
const { useLoadAction: useLoadAction2, useRunAction: useRunAction2 } = (0, provider_exports.useService)();
|
|
4254
|
-
const queryLoadAction = useLoadAction2();
|
|
4255
|
-
const queryRunAction = useRunAction2();
|
|
4256
|
-
const [actionData, setActionData] = useState(
|
|
4257
|
-
void 0
|
|
4258
|
-
);
|
|
4259
|
-
const callAction = useCallback(
|
|
4260
|
-
async ({
|
|
4261
|
-
aid
|
|
4262
|
-
}) => {
|
|
4263
|
-
try {
|
|
4264
|
-
const loadRes = await queryLoadAction.mutateAsync({
|
|
4265
|
-
idAction: aid,
|
|
4266
|
-
context: env.context
|
|
4267
|
-
});
|
|
4268
|
-
if (loadRes?.result?.type === "ir.actions.server") {
|
|
4269
|
-
const runRes = await queryRunAction.mutateAsync({
|
|
4270
|
-
idAction: aid,
|
|
4271
|
-
context: env.context
|
|
4272
|
-
});
|
|
4273
|
-
setActionData(runRes?.result);
|
|
4274
|
-
return runRes?.result;
|
|
4275
|
-
} else {
|
|
4276
|
-
setActionData(loadRes?.result);
|
|
4277
|
-
return loadRes?.result;
|
|
4278
|
-
}
|
|
4279
|
-
} catch (err) {
|
|
4280
|
-
console.error("callAction error:", err);
|
|
4281
|
-
return void 0;
|
|
4282
|
-
}
|
|
4283
|
-
},
|
|
4284
|
-
[env?.context?.lang]
|
|
4285
|
-
);
|
|
4286
|
-
return [actionData, callAction];
|
|
4287
|
-
};
|
|
4288
|
-
|
|
4289
4250
|
// src/utils.ts
|
|
4290
4251
|
var utils_exports = {};
|
|
4291
4252
|
__export(utils_exports, {
|
|
@@ -4307,7 +4268,7 @@ var languages = [
|
|
|
4307
4268
|
];
|
|
4308
4269
|
|
|
4309
4270
|
// src/utils/function.ts
|
|
4310
|
-
import { useCallback
|
|
4271
|
+
import { useCallback, useEffect, useReducer } from "react";
|
|
4311
4272
|
var countSum = (data, field) => {
|
|
4312
4273
|
if (!data || !field) return 0;
|
|
4313
4274
|
return data.reduce(
|
|
@@ -4454,7 +4415,7 @@ function useStorageState(key) {
|
|
|
4454
4415
|
console.error("Local storage is unavailable:", e);
|
|
4455
4416
|
}
|
|
4456
4417
|
}, [key]);
|
|
4457
|
-
const setValue =
|
|
4418
|
+
const setValue = useCallback(
|
|
4458
4419
|
(value) => {
|
|
4459
4420
|
setState(value);
|
|
4460
4421
|
setStorageItemAsync(key, value);
|
|
@@ -4468,18 +4429,74 @@ function useStorageState(key) {
|
|
|
4468
4429
|
__reExport(utils_exports, utils_star);
|
|
4469
4430
|
import * as utils_star from "@fctc/interface-logic/utils";
|
|
4470
4431
|
|
|
4432
|
+
// src/hooks/core/use-call-action.ts
|
|
4433
|
+
var useCallAction = () => {
|
|
4434
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
4435
|
+
const { useLoadAction: useLoadAction2, useRunAction: useRunAction2 } = (0, provider_exports.useService)();
|
|
4436
|
+
const queryLoadAction = useLoadAction2();
|
|
4437
|
+
const queryRunAction = useRunAction2();
|
|
4438
|
+
const [actionData, setActionData] = useState(
|
|
4439
|
+
void 0
|
|
4440
|
+
);
|
|
4441
|
+
const callAction = useCallback2(
|
|
4442
|
+
async ({
|
|
4443
|
+
aid,
|
|
4444
|
+
service,
|
|
4445
|
+
xNode,
|
|
4446
|
+
context
|
|
4447
|
+
}) => {
|
|
4448
|
+
try {
|
|
4449
|
+
const loadRes = await queryLoadAction.mutateAsync({
|
|
4450
|
+
idAction: aid,
|
|
4451
|
+
context: {
|
|
4452
|
+
...env?.context,
|
|
4453
|
+
...context ? (0, utils_exports.evalJSONContext)(context, { ...env?.context }) || {} : {}
|
|
4454
|
+
},
|
|
4455
|
+
service,
|
|
4456
|
+
xNode
|
|
4457
|
+
});
|
|
4458
|
+
if (loadRes?.result?.type === "ir.actions.server") {
|
|
4459
|
+
const runRes = await queryRunAction.mutateAsync({
|
|
4460
|
+
idAction: aid,
|
|
4461
|
+
context: {
|
|
4462
|
+
...env?.context,
|
|
4463
|
+
...context ? (0, utils_exports.evalJSONContext)(context, { ...env?.context }) || {} : {}
|
|
4464
|
+
},
|
|
4465
|
+
service,
|
|
4466
|
+
xNode
|
|
4467
|
+
});
|
|
4468
|
+
setActionData(runRes?.result);
|
|
4469
|
+
return runRes?.result;
|
|
4470
|
+
} else {
|
|
4471
|
+
setActionData(loadRes?.result);
|
|
4472
|
+
return loadRes?.result;
|
|
4473
|
+
}
|
|
4474
|
+
} catch (err) {
|
|
4475
|
+
console.error("callAction error:", err);
|
|
4476
|
+
return void 0;
|
|
4477
|
+
}
|
|
4478
|
+
},
|
|
4479
|
+
[env?.context?.lang]
|
|
4480
|
+
);
|
|
4481
|
+
return [actionData, callAction];
|
|
4482
|
+
};
|
|
4483
|
+
|
|
4471
4484
|
// src/hooks/core/use-menu.ts
|
|
4472
4485
|
var useMenu = ({
|
|
4473
4486
|
context,
|
|
4474
|
-
specification
|
|
4487
|
+
specification,
|
|
4488
|
+
domain
|
|
4475
4489
|
}) => {
|
|
4476
4490
|
const { env } = (0, provider_exports.useEnv)();
|
|
4477
4491
|
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
4478
4492
|
const [action, callAction] = useCallAction();
|
|
4493
|
+
const [service, setService] = useState2("");
|
|
4494
|
+
const [xNode, setXNode] = useState2("");
|
|
4479
4495
|
const menuData = useGetMenu2(
|
|
4480
4496
|
context,
|
|
4481
4497
|
specification,
|
|
4482
|
-
!!context && !(0, utils_exports.isObjectEmpty)(context)
|
|
4498
|
+
!!context && !(0, utils_exports.isObjectEmpty)(context),
|
|
4499
|
+
domain
|
|
4483
4500
|
);
|
|
4484
4501
|
const [menuId, setMenuId] = useState2(void 0);
|
|
4485
4502
|
const configedIconData = useMemo(() => {
|
|
@@ -4497,20 +4514,30 @@ var useMenu = ({
|
|
|
4497
4514
|
};
|
|
4498
4515
|
});
|
|
4499
4516
|
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
4500
|
-
const handleChangeMenu = async ({
|
|
4517
|
+
const handleChangeMenu = async ({
|
|
4518
|
+
menu,
|
|
4519
|
+
service: service2,
|
|
4520
|
+
xNode: xNode2
|
|
4521
|
+
}) => {
|
|
4501
4522
|
const aidMenu = menu?.action?.id?.id;
|
|
4502
4523
|
if (menu) {
|
|
4503
4524
|
setMenuId(menu.id?.toString() ?? "");
|
|
4504
4525
|
}
|
|
4505
4526
|
if (aidMenu) {
|
|
4506
4527
|
const actionResponse = await callAction({
|
|
4507
|
-
aid: Number(aidMenu)
|
|
4528
|
+
aid: Number(aidMenu),
|
|
4529
|
+
service: service2 ?? "",
|
|
4530
|
+
xNode: xNode2
|
|
4508
4531
|
});
|
|
4532
|
+
if (service2 && service2 !== "") setService(service2);
|
|
4533
|
+
if (xNode2 && xNode2 !== "") setXNode(xNode2);
|
|
4509
4534
|
return actionResponse;
|
|
4510
4535
|
}
|
|
4511
4536
|
};
|
|
4512
4537
|
return {
|
|
4513
4538
|
...menuData,
|
|
4539
|
+
service,
|
|
4540
|
+
xNode,
|
|
4514
4541
|
data: configedIconData,
|
|
4515
4542
|
action: { handleChangeMenu },
|
|
4516
4543
|
state: { menuId, action },
|
|
@@ -4602,7 +4629,9 @@ import { useMemo as useMemo3 } from "react";
|
|
|
4602
4629
|
var useViewV2 = ({
|
|
4603
4630
|
action,
|
|
4604
4631
|
context,
|
|
4605
|
-
aid
|
|
4632
|
+
aid,
|
|
4633
|
+
service,
|
|
4634
|
+
xNode
|
|
4606
4635
|
}) => {
|
|
4607
4636
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4608
4637
|
const viewParams = useMemo3(() => {
|
|
@@ -4622,7 +4651,9 @@ var useViewV2 = ({
|
|
|
4622
4651
|
]
|
|
4623
4652
|
],
|
|
4624
4653
|
context,
|
|
4625
|
-
id: isNaN(Number(aid)) ? action?.id : aid
|
|
4654
|
+
id: isNaN(Number(aid)) ? action?.id : aid,
|
|
4655
|
+
service,
|
|
4656
|
+
xNode
|
|
4626
4657
|
};
|
|
4627
4658
|
}, [action, context, aid]);
|
|
4628
4659
|
const view = useGetView2({
|
|
@@ -4694,7 +4725,7 @@ var AppProviderInitialValue = {
|
|
|
4694
4725
|
var ReactContext = createContext(AppProviderInitialValue);
|
|
4695
4726
|
var AppProvider = ({
|
|
4696
4727
|
children,
|
|
4697
|
-
|
|
4728
|
+
menuParams,
|
|
4698
4729
|
aid
|
|
4699
4730
|
}) => {
|
|
4700
4731
|
const { env } = (0, provider_exports.useEnv)();
|
|
@@ -4704,7 +4735,8 @@ var AppProvider = ({
|
|
|
4704
4735
|
return combineContexts([
|
|
4705
4736
|
{
|
|
4706
4737
|
...user?.context,
|
|
4707
|
-
...!(0, utils_exports.isObjectEmpty)(env?.user) && company?.context?.allowed_company_ids ? { lang: env?.context?.lang } : {}
|
|
4738
|
+
...!(0, utils_exports.isObjectEmpty)(env?.user) && company?.context?.allowed_company_ids ? { lang: env?.context?.lang } : {},
|
|
4739
|
+
...menuParams?.context ?? {}
|
|
4708
4740
|
},
|
|
4709
4741
|
company?.context
|
|
4710
4742
|
]);
|
|
@@ -4713,7 +4745,8 @@ var AppProvider = ({
|
|
|
4713
4745
|
context: {
|
|
4714
4746
|
...menuContext
|
|
4715
4747
|
},
|
|
4716
|
-
specification:
|
|
4748
|
+
specification: menuParams?.specification,
|
|
4749
|
+
domain: menuParams?.domain
|
|
4717
4750
|
});
|
|
4718
4751
|
const action = useMemo5(() => {
|
|
4719
4752
|
return menu?.state?.action;
|
|
@@ -4727,7 +4760,9 @@ var AppProvider = ({
|
|
|
4727
4760
|
const view = useViewV2({
|
|
4728
4761
|
action,
|
|
4729
4762
|
context: viewContext,
|
|
4730
|
-
aid
|
|
4763
|
+
aid,
|
|
4764
|
+
service: menu?.service,
|
|
4765
|
+
xNode: menu?.xNode
|
|
4731
4766
|
});
|
|
4732
4767
|
return /* @__PURE__ */ jsx(
|
|
4733
4768
|
ReactContext.Provider,
|
|
@@ -4975,7 +5010,9 @@ var useListData = ({
|
|
|
4975
5010
|
action,
|
|
4976
5011
|
context,
|
|
4977
5012
|
viewData,
|
|
4978
|
-
model
|
|
5013
|
+
model,
|
|
5014
|
+
service,
|
|
5015
|
+
xNode
|
|
4979
5016
|
}) => {
|
|
4980
5017
|
const { useGetListData: useGetListData2 } = (0, provider_exports.useService)();
|
|
4981
5018
|
const [page, setPage] = useState5(0);
|
|
@@ -5014,7 +5051,9 @@ var useListData = ({
|
|
|
5014
5051
|
groupby,
|
|
5015
5052
|
context,
|
|
5016
5053
|
sort,
|
|
5017
|
-
type
|
|
5054
|
+
type,
|
|
5055
|
+
service,
|
|
5056
|
+
xNode
|
|
5018
5057
|
};
|
|
5019
5058
|
}, [
|
|
5020
5059
|
action,
|
|
@@ -5026,7 +5065,9 @@ var useListData = ({
|
|
|
5026
5065
|
debouncedPage,
|
|
5027
5066
|
pageLimit,
|
|
5028
5067
|
type,
|
|
5029
|
-
debouncedDomain
|
|
5068
|
+
debouncedDomain,
|
|
5069
|
+
service,
|
|
5070
|
+
xNode
|
|
5030
5071
|
]);
|
|
5031
5072
|
const list = useGetListData2(
|
|
5032
5073
|
listDataProps,
|
|
@@ -5539,7 +5580,7 @@ var many2oneFieldController = (props) => {
|
|
|
5539
5580
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5540
5581
|
import { getEnv as getEnv2 } from "@fctc/interface-logic/environment";
|
|
5541
5582
|
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5542
|
-
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as
|
|
5583
|
+
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext4 } from "@fctc/interface-logic/utils";
|
|
5543
5584
|
var many2oneButtonController = (props) => {
|
|
5544
5585
|
const { domain, methods, relation, service, xNode } = props;
|
|
5545
5586
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
@@ -5550,7 +5591,7 @@ var many2oneButtonController = (props) => {
|
|
|
5550
5591
|
data: {
|
|
5551
5592
|
model: relation ?? "",
|
|
5552
5593
|
domain: domainObject,
|
|
5553
|
-
context: { ...env.context, ...
|
|
5594
|
+
context: { ...env.context, ...evalJSONContext4(actionData?.context) }
|
|
5554
5595
|
},
|
|
5555
5596
|
queryKey: [`data_${relation}`, domainObject],
|
|
5556
5597
|
service,
|
|
@@ -5568,7 +5609,7 @@ var many2oneButtonController = (props) => {
|
|
|
5568
5609
|
// src/widget/basic/many2many-field/controller.ts
|
|
5569
5610
|
import { useEffect as useEffect11, useState as useState8 } from "react";
|
|
5570
5611
|
import {
|
|
5571
|
-
evalJSONContext as
|
|
5612
|
+
evalJSONContext as evalJSONContext5,
|
|
5572
5613
|
evalJSONDomain as evalJSONDomain4,
|
|
5573
5614
|
formatSortingString as formatSortingString2
|
|
5574
5615
|
} from "@fctc/interface-logic/utils";
|
|
@@ -5614,7 +5655,7 @@ var many2manyFieldController = (props) => {
|
|
|
5614
5655
|
]
|
|
5615
5656
|
});
|
|
5616
5657
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
5617
|
-
const optionsObject = tab?.options ?
|
|
5658
|
+
const optionsObject = tab?.options ? evalJSONContext5(tab?.options) : (options ? evalJSONContext5(options) : {}) || {};
|
|
5618
5659
|
const fetchData = async () => {
|
|
5619
5660
|
try {
|
|
5620
5661
|
const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
@@ -5705,7 +5746,7 @@ var many2manyFieldController = (props) => {
|
|
|
5705
5746
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5706
5747
|
import { useMemo as useMemo9 } from "react";
|
|
5707
5748
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5708
|
-
import { evalJSONContext as
|
|
5749
|
+
import { evalJSONContext as evalJSONContext6, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5709
5750
|
var many2manyTagsController = (props) => {
|
|
5710
5751
|
const {
|
|
5711
5752
|
relation,
|
|
@@ -5720,7 +5761,7 @@ var many2manyTagsController = (props) => {
|
|
|
5720
5761
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5721
5762
|
const { env } = (0, provider_exports.useEnv)();
|
|
5722
5763
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5723
|
-
const addtionalFields = optionsFields ?
|
|
5764
|
+
const addtionalFields = optionsFields ? evalJSONContext6(optionsFields) : null;
|
|
5724
5765
|
const domainObject = useMemo9(
|
|
5725
5766
|
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5726
5767
|
[domain, formValues]
|
|
@@ -5832,10 +5873,10 @@ var durationController = (props) => {
|
|
|
5832
5873
|
};
|
|
5833
5874
|
|
|
5834
5875
|
// src/widget/basic/priority-field/controller.ts
|
|
5835
|
-
import { evalJSONContext as
|
|
5876
|
+
import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils";
|
|
5836
5877
|
var priorityFieldController = (props) => {
|
|
5837
5878
|
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
5838
|
-
const _context = { ...
|
|
5879
|
+
const _context = { ...evalJSONContext7(actionData?.context) };
|
|
5839
5880
|
const contextObject = { ...context, ..._context };
|
|
5840
5881
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
5841
5882
|
const { mutateAsync: fetchSave } = useSave3();
|
|
@@ -6821,12 +6862,12 @@ var copyLinkButtonController = (props) => {
|
|
|
6821
6862
|
};
|
|
6822
6863
|
|
|
6823
6864
|
// src/widget/basic/color-field/color-controller.ts
|
|
6824
|
-
import { evalJSONContext as
|
|
6865
|
+
import { evalJSONContext as evalJSONContext8 } from "@fctc/interface-logic/utils";
|
|
6825
6866
|
var colorFieldController = (props) => {
|
|
6826
6867
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6827
6868
|
const { env } = (0, provider_exports.useEnv)();
|
|
6828
6869
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
6829
|
-
const _context = { ...
|
|
6870
|
+
const _context = { ...evalJSONContext8(actionData?.context) || {} };
|
|
6830
6871
|
const contextObject = { ...env.context, ..._context };
|
|
6831
6872
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6832
6873
|
const { mutate: onSave } = useSave3();
|
|
@@ -7247,7 +7288,7 @@ var import_moment2 = __toESM(require_moment());
|
|
|
7247
7288
|
import { SearchType } from "@fctc/interface-logic/constants";
|
|
7248
7289
|
import {
|
|
7249
7290
|
domainHelper as domainHelper2,
|
|
7250
|
-
evalJSONContext as
|
|
7291
|
+
evalJSONContext as evalJSONContext9,
|
|
7251
7292
|
evalJSONDomain as evalJSONDomain7,
|
|
7252
7293
|
validateAndParseDate
|
|
7253
7294
|
} from "@fctc/interface-logic/utils";
|
|
@@ -7266,7 +7307,7 @@ var searchController = ({
|
|
|
7266
7307
|
const [selectedTags, setSelectedTags] = useState15(null);
|
|
7267
7308
|
const [searchString, setSearchString] = useState15("");
|
|
7268
7309
|
const [searchMap, setSearchMap] = useState15({});
|
|
7269
|
-
const actionContext = typeof context === "string" ?
|
|
7310
|
+
const actionContext = typeof context === "string" ? evalJSONContext9(context) : context;
|
|
7270
7311
|
const contextSearch = { ...env.context, ...actionContext };
|
|
7271
7312
|
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
7272
7313
|
const clearSearch = () => {
|
package/dist/widget.js
CHANGED
|
@@ -4122,7 +4122,7 @@ var import_react9 = require("react");
|
|
|
4122
4122
|
var import_react4 = require("react");
|
|
4123
4123
|
|
|
4124
4124
|
// src/hooks/core/use-call-action.ts
|
|
4125
|
-
var
|
|
4125
|
+
var import_react3 = require("react");
|
|
4126
4126
|
|
|
4127
4127
|
// src/provider.ts
|
|
4128
4128
|
var provider_exports = {};
|
|
@@ -4149,7 +4149,7 @@ var languages = [
|
|
|
4149
4149
|
];
|
|
4150
4150
|
|
|
4151
4151
|
// src/utils/function.ts
|
|
4152
|
-
var
|
|
4152
|
+
var import_react2 = require("react");
|
|
4153
4153
|
var countSum = (data, field) => {
|
|
4154
4154
|
if (!data || !field) return 0;
|
|
4155
4155
|
return data.reduce(
|
|
@@ -4270,7 +4270,7 @@ var STORAGES = {
|
|
|
4270
4270
|
USER_INFO: "USER_INFO"
|
|
4271
4271
|
};
|
|
4272
4272
|
function useAsyncState(initialValue = [true, null]) {
|
|
4273
|
-
return (0,
|
|
4273
|
+
return (0, import_react2.useReducer)(
|
|
4274
4274
|
(_state, action = null) => [false, action],
|
|
4275
4275
|
initialValue
|
|
4276
4276
|
);
|
|
@@ -4288,7 +4288,7 @@ async function setStorageItemAsync(key, value) {
|
|
|
4288
4288
|
}
|
|
4289
4289
|
function useStorageState(key) {
|
|
4290
4290
|
const [state, setState] = useAsyncState();
|
|
4291
|
-
(0,
|
|
4291
|
+
(0, import_react2.useEffect)(() => {
|
|
4292
4292
|
try {
|
|
4293
4293
|
const storedValue = localStorage.getItem(key);
|
|
4294
4294
|
setState(storedValue);
|
|
@@ -4296,7 +4296,7 @@ function useStorageState(key) {
|
|
|
4296
4296
|
console.error("Local storage is unavailable:", e);
|
|
4297
4297
|
}
|
|
4298
4298
|
}, [key]);
|
|
4299
|
-
const setValue = (0,
|
|
4299
|
+
const setValue = (0, import_react2.useCallback)(
|
|
4300
4300
|
(value) => {
|
|
4301
4301
|
setState(value);
|
|
4302
4302
|
setStorageItemAsync(key, value);
|
|
@@ -4372,7 +4372,7 @@ var useGetSpecification = ({
|
|
|
4372
4372
|
|
|
4373
4373
|
// src/hooks/core/use-list-data.ts
|
|
4374
4374
|
var import_react15 = require("react");
|
|
4375
|
-
var
|
|
4375
|
+
var import_utils6 = require("@fctc/interface-logic/utils");
|
|
4376
4376
|
|
|
4377
4377
|
// src/hooks/utils/use-click-outside.ts
|
|
4378
4378
|
var import_react12 = require("react");
|
|
@@ -4642,18 +4642,18 @@ var many2oneFieldController = (props) => {
|
|
|
4642
4642
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
4643
4643
|
var import_environment2 = require("@fctc/interface-logic/environment");
|
|
4644
4644
|
var import_hooks6 = require("@fctc/interface-logic/hooks");
|
|
4645
|
-
var
|
|
4645
|
+
var import_utils9 = require("@fctc/interface-logic/utils");
|
|
4646
4646
|
var many2oneButtonController = (props) => {
|
|
4647
4647
|
const { domain, methods, relation, service, xNode } = props;
|
|
4648
4648
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
4649
4649
|
const env = (0, import_environment2.getEnv)();
|
|
4650
|
-
const domainObject = (0,
|
|
4650
|
+
const domainObject = (0, import_utils9.evalJSONDomain)(domain, methods?.getValues() || {});
|
|
4651
4651
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
4652
4652
|
const { data: dataOfSelection } = (0, import_hooks6.useGetSelection)({
|
|
4653
4653
|
data: {
|
|
4654
4654
|
model: relation ?? "",
|
|
4655
4655
|
domain: domainObject,
|
|
4656
|
-
context: { ...env.context, ...(0,
|
|
4656
|
+
context: { ...env.context, ...(0, import_utils9.evalJSONContext)(actionData?.context) }
|
|
4657
4657
|
},
|
|
4658
4658
|
queryKey: [`data_${relation}`, domainObject],
|
|
4659
4659
|
service,
|
|
@@ -4670,7 +4670,7 @@ var many2oneButtonController = (props) => {
|
|
|
4670
4670
|
|
|
4671
4671
|
// src/widget/basic/many2many-field/controller.ts
|
|
4672
4672
|
var import_react17 = require("react");
|
|
4673
|
-
var
|
|
4673
|
+
var import_utils10 = require("@fctc/interface-logic/utils");
|
|
4674
4674
|
var many2manyFieldController = (props) => {
|
|
4675
4675
|
const {
|
|
4676
4676
|
relation,
|
|
@@ -4713,10 +4713,10 @@ var many2manyFieldController = (props) => {
|
|
|
4713
4713
|
]
|
|
4714
4714
|
});
|
|
4715
4715
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
4716
|
-
const optionsObject = tab?.options ? (0,
|
|
4716
|
+
const optionsObject = tab?.options ? (0, import_utils10.evalJSONContext)(tab?.options) : (options ? (0, import_utils10.evalJSONContext)(options) : {}) || {};
|
|
4717
4717
|
const fetchData = async () => {
|
|
4718
4718
|
try {
|
|
4719
|
-
const domainParse = typeof domain === "string" ? (0,
|
|
4719
|
+
const domainParse = typeof domain === "string" ? (0, import_utils10.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
4720
4720
|
setDomainMany2Many(domainParse);
|
|
4721
4721
|
setPage(0);
|
|
4722
4722
|
} catch (err) {
|
|
@@ -4740,7 +4740,7 @@ var many2manyFieldController = (props) => {
|
|
|
4740
4740
|
context: contextObject,
|
|
4741
4741
|
fields: groupByDomain?.fields,
|
|
4742
4742
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
4743
|
-
sort: order ? order : default_order ? (0,
|
|
4743
|
+
sort: order ? order : default_order ? (0, import_utils10.formatSortingString)(default_order) : ""
|
|
4744
4744
|
};
|
|
4745
4745
|
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
4746
4746
|
const {
|
|
@@ -4804,7 +4804,7 @@ var many2manyFieldController = (props) => {
|
|
|
4804
4804
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
4805
4805
|
var import_react18 = require("react");
|
|
4806
4806
|
var import_constants2 = require("@fctc/interface-logic/constants");
|
|
4807
|
-
var
|
|
4807
|
+
var import_utils11 = require("@fctc/interface-logic/utils");
|
|
4808
4808
|
var many2manyTagsController = (props) => {
|
|
4809
4809
|
const {
|
|
4810
4810
|
relation,
|
|
@@ -4819,9 +4819,9 @@ var many2manyTagsController = (props) => {
|
|
|
4819
4819
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
4820
4820
|
const { env } = (0, provider_exports.useEnv)();
|
|
4821
4821
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
4822
|
-
const addtionalFields = optionsFields ? (0,
|
|
4822
|
+
const addtionalFields = optionsFields ? (0, import_utils11.evalJSONContext)(optionsFields) : null;
|
|
4823
4823
|
const domainObject = (0, import_react18.useMemo)(
|
|
4824
|
-
() => (0,
|
|
4824
|
+
() => (0, import_utils11.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
4825
4825
|
[domain, formValues]
|
|
4826
4826
|
);
|
|
4827
4827
|
const data = {
|
|
@@ -4865,7 +4865,7 @@ var many2manyTagsController = (props) => {
|
|
|
4865
4865
|
|
|
4866
4866
|
// src/widget/basic/status-bar-field/controller.ts
|
|
4867
4867
|
var import_react19 = require("react");
|
|
4868
|
-
var
|
|
4868
|
+
var import_utils12 = require("@fctc/interface-logic/utils");
|
|
4869
4869
|
var durationController = (props) => {
|
|
4870
4870
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
4871
4871
|
const specification = {
|
|
@@ -4881,7 +4881,7 @@ var durationController = (props) => {
|
|
|
4881
4881
|
const listDataProps = {
|
|
4882
4882
|
model: relation,
|
|
4883
4883
|
specification,
|
|
4884
|
-
domain: (0,
|
|
4884
|
+
domain: (0, import_utils12.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
|
|
4885
4885
|
limit: 10,
|
|
4886
4886
|
offset: 0,
|
|
4887
4887
|
fields: "",
|
|
@@ -4931,10 +4931,10 @@ var durationController = (props) => {
|
|
|
4931
4931
|
};
|
|
4932
4932
|
|
|
4933
4933
|
// src/widget/basic/priority-field/controller.ts
|
|
4934
|
-
var
|
|
4934
|
+
var import_utils13 = require("@fctc/interface-logic/utils");
|
|
4935
4935
|
var priorityFieldController = (props) => {
|
|
4936
4936
|
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
4937
|
-
const _context = { ...(0,
|
|
4937
|
+
const _context = { ...(0, import_utils13.evalJSONContext)(actionData?.context) };
|
|
4938
4938
|
const contextObject = { ...context, ..._context };
|
|
4939
4939
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
4940
4940
|
const { mutateAsync: fetchSave } = useSave3();
|
|
@@ -5902,12 +5902,12 @@ var dateFieldController = (props) => {
|
|
|
5902
5902
|
|
|
5903
5903
|
// src/widget/basic/copy-link-button/controller.ts
|
|
5904
5904
|
var import_react21 = require("react");
|
|
5905
|
-
var
|
|
5905
|
+
var import_utils14 = require("@fctc/interface-logic/utils");
|
|
5906
5906
|
var copyLinkButtonController = (props) => {
|
|
5907
5907
|
const { value, defaultValue } = props;
|
|
5908
5908
|
const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
|
|
5909
5909
|
const handleCopyToClipboard = async (value2) => {
|
|
5910
|
-
await (0,
|
|
5910
|
+
await (0, import_utils14.copyTextToClipboard)(value2);
|
|
5911
5911
|
setIsCopied(true);
|
|
5912
5912
|
setTimeout(() => setIsCopied(false), 2e3);
|
|
5913
5913
|
};
|
|
@@ -5920,12 +5920,12 @@ var copyLinkButtonController = (props) => {
|
|
|
5920
5920
|
};
|
|
5921
5921
|
|
|
5922
5922
|
// src/widget/basic/color-field/color-controller.ts
|
|
5923
|
-
var
|
|
5923
|
+
var import_utils15 = require("@fctc/interface-logic/utils");
|
|
5924
5924
|
var colorFieldController = (props) => {
|
|
5925
5925
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
5926
5926
|
const { env } = (0, provider_exports.useEnv)();
|
|
5927
5927
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
5928
|
-
const _context = { ...(0,
|
|
5928
|
+
const _context = { ...(0, import_utils15.evalJSONContext)(actionData?.context) || {} };
|
|
5929
5929
|
const contextObject = { ...env.context, ..._context };
|
|
5930
5930
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
5931
5931
|
const { mutate: onSave } = useSave3();
|
|
@@ -5954,7 +5954,7 @@ var colorFieldController = (props) => {
|
|
|
5954
5954
|
|
|
5955
5955
|
// src/widget/basic/binary-field/controller.ts
|
|
5956
5956
|
var import_react22 = require("react");
|
|
5957
|
-
var
|
|
5957
|
+
var import_utils16 = require("@fctc/interface-logic/utils");
|
|
5958
5958
|
var binaryFieldController = (props) => {
|
|
5959
5959
|
const { name, methods, readonly = false, value } = props;
|
|
5960
5960
|
const inputId = (0, import_react22.useId)();
|
|
@@ -6011,11 +6011,11 @@ var binaryFieldController = (props) => {
|
|
|
6011
6011
|
};
|
|
6012
6012
|
const checkIsImageLink = (url) => {
|
|
6013
6013
|
const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
|
|
6014
|
-
return imageExtensions.test(url) || (0,
|
|
6014
|
+
return imageExtensions.test(url) || (0, import_utils16.isBase64Image)(url) || isBlobUrl(url);
|
|
6015
6015
|
};
|
|
6016
6016
|
const getImageBase64WithMimeType = (base64) => {
|
|
6017
6017
|
if (typeof base64 !== "string" || base64.length < 10) return null;
|
|
6018
|
-
if ((0,
|
|
6018
|
+
if ((0, import_utils16.isBase64Image)(base64)) return base64;
|
|
6019
6019
|
let mimeType = null;
|
|
6020
6020
|
if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
|
|
6021
6021
|
else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
|
|
@@ -6118,7 +6118,7 @@ var tableHeadController = (props) => {
|
|
|
6118
6118
|
|
|
6119
6119
|
// src/widget/advance/table/table-view/controller.ts
|
|
6120
6120
|
var import_react24 = require("react");
|
|
6121
|
-
var
|
|
6121
|
+
var import_utils18 = require("@fctc/interface-logic/utils");
|
|
6122
6122
|
var tableController = ({ data }) => {
|
|
6123
6123
|
const [rows, setRows] = (0, import_react24.useState)(null);
|
|
6124
6124
|
const [columns, setColumns] = (0, import_react24.useState)(null);
|
|
@@ -6156,7 +6156,7 @@ var tableController = ({ data }) => {
|
|
|
6156
6156
|
let cols = [];
|
|
6157
6157
|
try {
|
|
6158
6158
|
cols = mergeFields?.filter((item) => {
|
|
6159
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ?
|
|
6159
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils18.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils18.domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
6160
6160
|
})?.map((field) => {
|
|
6161
6161
|
return {
|
|
6162
6162
|
name: field?.name,
|
|
@@ -6340,7 +6340,7 @@ var tableGroupController = (props) => {
|
|
|
6340
6340
|
|
|
6341
6341
|
// src/widget/advance/search/controller.ts
|
|
6342
6342
|
var import_constants3 = require("@fctc/interface-logic/constants");
|
|
6343
|
-
var
|
|
6343
|
+
var import_utils20 = require("@fctc/interface-logic/utils");
|
|
6344
6344
|
var import_moment2 = __toESM(require_moment());
|
|
6345
6345
|
var import_react26 = require("react");
|
|
6346
6346
|
var searchController = ({
|
|
@@ -6357,9 +6357,9 @@ var searchController = ({
|
|
|
6357
6357
|
const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
|
|
6358
6358
|
const [searchString, setSearchString] = (0, import_react26.useState)("");
|
|
6359
6359
|
const [searchMap, setSearchMap] = (0, import_react26.useState)({});
|
|
6360
|
-
const actionContext = typeof context === "string" ? (0,
|
|
6360
|
+
const actionContext = typeof context === "string" ? (0, import_utils20.evalJSONContext)(context) : context;
|
|
6361
6361
|
const contextSearch = { ...env.context, ...actionContext };
|
|
6362
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0,
|
|
6362
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils20.evalJSONDomain)(domain, contextSearch) : [];
|
|
6363
6363
|
const clearSearch = () => {
|
|
6364
6364
|
setFilterBy([]);
|
|
6365
6365
|
setGroupBy([]);
|
|
@@ -6374,7 +6374,7 @@ var searchController = ({
|
|
|
6374
6374
|
const dataModel = viewData?.models?.[model];
|
|
6375
6375
|
const searchViews = viewData?.views?.search;
|
|
6376
6376
|
const searchByItems = searchViews?.search_by?.filter(
|
|
6377
|
-
(item) => !
|
|
6377
|
+
(item) => !import_utils20.domainHelper.matchDomains(contextSearch, item.invisible)
|
|
6378
6378
|
)?.map(
|
|
6379
6379
|
({ string, name, filter_domain, operator, widget }, index) => ({
|
|
6380
6380
|
dataIndex: index,
|
|
@@ -6387,10 +6387,10 @@ var searchController = ({
|
|
|
6387
6387
|
})
|
|
6388
6388
|
);
|
|
6389
6389
|
const filterByItems = searchViews?.filter_by.filter((item) => {
|
|
6390
|
-
return !
|
|
6390
|
+
return !import_utils20.domainHelper.matchDomains(contextSearch, item?.invisible);
|
|
6391
6391
|
})?.map((item) => ({ ...item, active: false }));
|
|
6392
6392
|
const groupByItems = searchViews?.group_by.filter(
|
|
6393
|
-
(item) => !
|
|
6393
|
+
(item) => !import_utils20.domainHelper.matchDomains(contextSearch, item?.invisible)
|
|
6394
6394
|
).map((item) => ({
|
|
6395
6395
|
...item,
|
|
6396
6396
|
string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
|
|
@@ -6467,14 +6467,14 @@ var searchController = ({
|
|
|
6467
6467
|
}
|
|
6468
6468
|
let valueDomainItem = value?.value;
|
|
6469
6469
|
if (value?.modelType === "date") {
|
|
6470
|
-
valueDomainItem = (0,
|
|
6470
|
+
valueDomainItem = (0, import_utils20.validateAndParseDate)(value?.value);
|
|
6471
6471
|
} else if (value?.modelType === "datetime") {
|
|
6472
6472
|
if (value?.operator === "<=" || value?.operator === "<") {
|
|
6473
|
-
const parsedDate = (0,
|
|
6473
|
+
const parsedDate = (0, import_utils20.validateAndParseDate)(value?.value, true);
|
|
6474
6474
|
const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
|
|
6475
6475
|
valueDomainItem = hasTime ? (0, import_moment2.default)(parsedDate).format("YYYY-MM-DD HH:mm:ss") : (0, import_moment2.default)(parsedDate).add(1, "day").subtract(1, "second").format("YYYY-MM-DD HH:mm:ss");
|
|
6476
6476
|
} else {
|
|
6477
|
-
valueDomainItem = (0,
|
|
6477
|
+
valueDomainItem = (0, import_utils20.validateAndParseDate)(value?.value, true);
|
|
6478
6478
|
}
|
|
6479
6479
|
}
|
|
6480
6480
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
@@ -6553,7 +6553,7 @@ var searchController = ({
|
|
|
6553
6553
|
}, [searchMap]);
|
|
6554
6554
|
const handleAddTagSearch = (tag) => {
|
|
6555
6555
|
const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
|
|
6556
|
-
const domainFormat = new
|
|
6556
|
+
const domainFormat = new import_utils20.domainHelper.Domain(domain2);
|
|
6557
6557
|
if (type === import_constants3.SearchType.FILTER) {
|
|
6558
6558
|
addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
|
|
6559
6559
|
...tag,
|