@fctc/widget-logic 2.7.1 → 2.7.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 +3 -4
- package/dist/hooks.d.ts +3 -4
- package/dist/hooks.js +113 -117
- package/dist/hooks.mjs +108 -112
- package/dist/index.js +150 -154
- package/dist/index.mjs +112 -116
- package/dist/widget.js +52 -52
- package/dist/widget.mjs +16 -16
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -59,7 +59,7 @@ var require_moment = __commonJS({
|
|
|
59
59
|
function hasOwnProp(a, b) {
|
|
60
60
|
return Object.prototype.hasOwnProperty.call(a, b);
|
|
61
61
|
}
|
|
62
|
-
function
|
|
62
|
+
function isObjectEmpty5(obj) {
|
|
63
63
|
if (Object.getOwnPropertyNames) {
|
|
64
64
|
return Object.getOwnPropertyNames(obj).length === 0;
|
|
65
65
|
} else {
|
|
@@ -2198,7 +2198,7 @@ var require_moment = __commonJS({
|
|
|
2198
2198
|
strict = locale2;
|
|
2199
2199
|
locale2 = void 0;
|
|
2200
2200
|
}
|
|
2201
|
-
if (isObject(input) &&
|
|
2201
|
+
if (isObject(input) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
|
|
2202
2202
|
input = void 0;
|
|
2203
2203
|
}
|
|
2204
2204
|
c._isAMomentObject = true;
|
|
@@ -2617,7 +2617,7 @@ var require_moment = __commonJS({
|
|
|
2617
2617
|
return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0;
|
|
2618
2618
|
}
|
|
2619
2619
|
function isMomentInputObject(input) {
|
|
2620
|
-
var objectTest = isObject(input) && !
|
|
2620
|
+
var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
|
|
2621
2621
|
"years",
|
|
2622
2622
|
"year",
|
|
2623
2623
|
"y",
|
|
@@ -2659,7 +2659,7 @@ var require_moment = __commonJS({
|
|
|
2659
2659
|
return arrayTest && dataTypeTest;
|
|
2660
2660
|
}
|
|
2661
2661
|
function isCalendarSpec(input) {
|
|
2662
|
-
var objectTest = isObject(input) && !
|
|
2662
|
+
var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
|
|
2663
2663
|
"sameDay",
|
|
2664
2664
|
"nextDay",
|
|
2665
2665
|
"lastDay",
|
|
@@ -4286,92 +4286,6 @@ var useCallAction = () => {
|
|
|
4286
4286
|
return [actionData, callAction];
|
|
4287
4287
|
};
|
|
4288
4288
|
|
|
4289
|
-
// src/hooks/core/use-menu.ts
|
|
4290
|
-
var useMenu = ({
|
|
4291
|
-
context,
|
|
4292
|
-
specification
|
|
4293
|
-
}) => {
|
|
4294
|
-
const { env } = (0, provider_exports.useEnv)();
|
|
4295
|
-
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
4296
|
-
const [action, callAction] = useCallAction();
|
|
4297
|
-
const menuData = useGetMenu2(
|
|
4298
|
-
context,
|
|
4299
|
-
specification,
|
|
4300
|
-
!!context && Object.keys(context).length > 0
|
|
4301
|
-
);
|
|
4302
|
-
const [menuId, setMenuId] = useState2(void 0);
|
|
4303
|
-
const configedIconData = useMemo(() => {
|
|
4304
|
-
const data = menuData.data;
|
|
4305
|
-
return data?.map((item) => {
|
|
4306
|
-
return {
|
|
4307
|
-
...item,
|
|
4308
|
-
child_id: item?.child_id?.map((child) => {
|
|
4309
|
-
return {
|
|
4310
|
-
...child,
|
|
4311
|
-
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
|
|
4312
|
-
};
|
|
4313
|
-
}) ?? [],
|
|
4314
|
-
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
|
|
4315
|
-
};
|
|
4316
|
-
});
|
|
4317
|
-
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
4318
|
-
const handleChangeMenu = async ({ menu }) => {
|
|
4319
|
-
const aidMenu = menu?.action?.id?.id;
|
|
4320
|
-
if (menu) {
|
|
4321
|
-
setMenuId(menu.id?.toString() ?? "");
|
|
4322
|
-
}
|
|
4323
|
-
if (aidMenu) {
|
|
4324
|
-
const actionResponse = await callAction({
|
|
4325
|
-
aid: Number(aidMenu)
|
|
4326
|
-
});
|
|
4327
|
-
return actionResponse;
|
|
4328
|
-
}
|
|
4329
|
-
};
|
|
4330
|
-
return {
|
|
4331
|
-
...menuData,
|
|
4332
|
-
data: configedIconData,
|
|
4333
|
-
action: { handleChangeMenu },
|
|
4334
|
-
state: { menuId, action },
|
|
4335
|
-
context,
|
|
4336
|
-
isLoading: menuData.isLoading,
|
|
4337
|
-
isError: menuData.isError,
|
|
4338
|
-
error: menuData.error,
|
|
4339
|
-
refetch: menuData.refetch
|
|
4340
|
-
};
|
|
4341
|
-
};
|
|
4342
|
-
|
|
4343
|
-
// src/hooks/core/use-detail.ts
|
|
4344
|
-
import { useQuery } from "@tanstack/react-query";
|
|
4345
|
-
import { useEffect } from "react";
|
|
4346
|
-
var useDetail = (sub) => {
|
|
4347
|
-
const { setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4348
|
-
const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
|
|
4349
|
-
const fetchGetDetail = useGetDetail2();
|
|
4350
|
-
const userDetailQuery = useQuery({
|
|
4351
|
-
queryKey: ["userDetailQuery", sub],
|
|
4352
|
-
queryFn: () => {
|
|
4353
|
-
return fetchGetDetail.mutateAsync({
|
|
4354
|
-
model: "res.users",
|
|
4355
|
-
ids: [sub],
|
|
4356
|
-
specification: { image_256: {} }
|
|
4357
|
-
});
|
|
4358
|
-
},
|
|
4359
|
-
enabled: !!sub
|
|
4360
|
-
});
|
|
4361
|
-
useEffect(() => {
|
|
4362
|
-
if (userDetailQuery.data) {
|
|
4363
|
-
const userPicture = userDetailQuery.data;
|
|
4364
|
-
setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
|
|
4365
|
-
}
|
|
4366
|
-
}, [userDetailQuery.isFetched]);
|
|
4367
|
-
return { ...userDetailQuery };
|
|
4368
|
-
};
|
|
4369
|
-
|
|
4370
|
-
// src/hooks/core/use-profile.ts
|
|
4371
|
-
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
4372
|
-
import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
|
|
4373
|
-
import { useTranslation } from "react-i18next";
|
|
4374
|
-
|
|
4375
4289
|
// src/utils.ts
|
|
4376
4290
|
var utils_exports = {};
|
|
4377
4291
|
__export(utils_exports, {
|
|
@@ -4393,7 +4307,7 @@ var languages = [
|
|
|
4393
4307
|
];
|
|
4394
4308
|
|
|
4395
4309
|
// src/utils/function.ts
|
|
4396
|
-
import { useCallback as useCallback2, useEffect
|
|
4310
|
+
import { useCallback as useCallback2, useEffect, useReducer } from "react";
|
|
4397
4311
|
var countSum = (data, field) => {
|
|
4398
4312
|
if (!data || !field) return 0;
|
|
4399
4313
|
return data.reduce(
|
|
@@ -4532,7 +4446,7 @@ async function setStorageItemAsync(key, value) {
|
|
|
4532
4446
|
}
|
|
4533
4447
|
function useStorageState(key) {
|
|
4534
4448
|
const [state, setState] = useAsyncState();
|
|
4535
|
-
|
|
4449
|
+
useEffect(() => {
|
|
4536
4450
|
try {
|
|
4537
4451
|
const storedValue = localStorage.getItem(key);
|
|
4538
4452
|
setState(storedValue);
|
|
@@ -4554,7 +4468,91 @@ function useStorageState(key) {
|
|
|
4554
4468
|
__reExport(utils_exports, utils_star);
|
|
4555
4469
|
import * as utils_star from "@fctc/interface-logic/utils";
|
|
4556
4470
|
|
|
4471
|
+
// src/hooks/core/use-menu.ts
|
|
4472
|
+
var useMenu = ({
|
|
4473
|
+
context,
|
|
4474
|
+
specification
|
|
4475
|
+
}) => {
|
|
4476
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
4477
|
+
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
4478
|
+
const [action, callAction] = useCallAction();
|
|
4479
|
+
const menuData = useGetMenu2(
|
|
4480
|
+
context,
|
|
4481
|
+
specification,
|
|
4482
|
+
!!context && !(0, utils_exports.isObjectEmpty)(context)
|
|
4483
|
+
);
|
|
4484
|
+
const [menuId, setMenuId] = useState2(void 0);
|
|
4485
|
+
const configedIconData = useMemo(() => {
|
|
4486
|
+
const data = menuData.data;
|
|
4487
|
+
return data?.map((item) => {
|
|
4488
|
+
return {
|
|
4489
|
+
...item,
|
|
4490
|
+
child_id: item?.child_id?.map((child) => {
|
|
4491
|
+
return {
|
|
4492
|
+
...child,
|
|
4493
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
|
|
4494
|
+
};
|
|
4495
|
+
}) ?? [],
|
|
4496
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
|
|
4497
|
+
};
|
|
4498
|
+
});
|
|
4499
|
+
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
4500
|
+
const handleChangeMenu = async ({ menu }) => {
|
|
4501
|
+
const aidMenu = menu?.action?.id?.id;
|
|
4502
|
+
if (menu) {
|
|
4503
|
+
setMenuId(menu.id?.toString() ?? "");
|
|
4504
|
+
}
|
|
4505
|
+
if (aidMenu) {
|
|
4506
|
+
const actionResponse = await callAction({
|
|
4507
|
+
aid: Number(aidMenu)
|
|
4508
|
+
});
|
|
4509
|
+
return actionResponse;
|
|
4510
|
+
}
|
|
4511
|
+
};
|
|
4512
|
+
return {
|
|
4513
|
+
...menuData,
|
|
4514
|
+
data: configedIconData,
|
|
4515
|
+
action: { handleChangeMenu },
|
|
4516
|
+
state: { menuId, action },
|
|
4517
|
+
context,
|
|
4518
|
+
isLoading: menuData.isLoading,
|
|
4519
|
+
isError: menuData.isError,
|
|
4520
|
+
error: menuData.error,
|
|
4521
|
+
refetch: menuData.refetch
|
|
4522
|
+
};
|
|
4523
|
+
};
|
|
4524
|
+
|
|
4525
|
+
// src/hooks/core/use-detail.ts
|
|
4526
|
+
import { useQuery } from "@tanstack/react-query";
|
|
4527
|
+
import { useEffect as useEffect2 } from "react";
|
|
4528
|
+
var useDetail = (sub) => {
|
|
4529
|
+
const { setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4530
|
+
const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
|
|
4531
|
+
const fetchGetDetail = useGetDetail2();
|
|
4532
|
+
const userDetailQuery = useQuery({
|
|
4533
|
+
queryKey: ["userDetailQuery", sub],
|
|
4534
|
+
queryFn: () => {
|
|
4535
|
+
return fetchGetDetail.mutateAsync({
|
|
4536
|
+
model: "res.users",
|
|
4537
|
+
ids: [sub],
|
|
4538
|
+
specification: { image_256: {} }
|
|
4539
|
+
});
|
|
4540
|
+
},
|
|
4541
|
+
enabled: !!sub
|
|
4542
|
+
});
|
|
4543
|
+
useEffect2(() => {
|
|
4544
|
+
if (userDetailQuery.data) {
|
|
4545
|
+
const userPicture = userDetailQuery.data;
|
|
4546
|
+
setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
|
|
4547
|
+
}
|
|
4548
|
+
}, [userDetailQuery.isFetched]);
|
|
4549
|
+
return { ...userDetailQuery };
|
|
4550
|
+
};
|
|
4551
|
+
|
|
4557
4552
|
// src/hooks/core/use-profile.ts
|
|
4553
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
4554
|
+
import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
|
|
4555
|
+
import { useTranslation } from "react-i18next";
|
|
4558
4556
|
var useProfile = () => {
|
|
4559
4557
|
const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4560
4558
|
const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
|
|
@@ -4602,21 +4600,31 @@ var useUser = () => {
|
|
|
4602
4600
|
// src/hooks/core/use-view-v2.ts
|
|
4603
4601
|
import { useMemo as useMemo3 } from "react";
|
|
4604
4602
|
var useViewV2 = ({
|
|
4605
|
-
|
|
4603
|
+
action,
|
|
4606
4604
|
context,
|
|
4607
|
-
|
|
4608
|
-
model
|
|
4605
|
+
aid
|
|
4609
4606
|
}) => {
|
|
4610
4607
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4611
4608
|
const viewParams = useMemo3(() => {
|
|
4612
|
-
if (
|
|
4609
|
+
if (!action || !action?.res_model) {
|
|
4610
|
+
return void 0;
|
|
4611
|
+
}
|
|
4612
|
+
const actionResult = action;
|
|
4613
4613
|
return {
|
|
4614
|
-
model,
|
|
4615
|
-
views
|
|
4614
|
+
model: String(actionResult?.res_model),
|
|
4615
|
+
views: [
|
|
4616
|
+
...Array.isArray(actionResult?.views) ? actionResult?.views.map(
|
|
4617
|
+
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
4618
|
+
) : [],
|
|
4619
|
+
[
|
|
4620
|
+
Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
|
|
4621
|
+
"search"
|
|
4622
|
+
]
|
|
4623
|
+
],
|
|
4616
4624
|
context,
|
|
4617
|
-
id
|
|
4625
|
+
id: isNaN(Number(aid)) ? action?.id : aid
|
|
4618
4626
|
};
|
|
4619
|
-
}, [
|
|
4627
|
+
}, [action, context, aid]);
|
|
4620
4628
|
const view = useGetView2({
|
|
4621
4629
|
viewParams: viewParams || {},
|
|
4622
4630
|
enabled: !!viewParams
|
|
@@ -4716,22 +4724,10 @@ var AppProvider = ({
|
|
|
4716
4724
|
{ ...(0, utils_exports.evalJSONContext)(action?.context) }
|
|
4717
4725
|
]);
|
|
4718
4726
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
4719
|
-
const memoViews = useMemo5(() => {
|
|
4720
|
-
if (!action) return [];
|
|
4721
|
-
return [
|
|
4722
|
-
...Array.isArray(action?.views) ? action.views.map(
|
|
4723
|
-
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
4724
|
-
) : [],
|
|
4725
|
-
[
|
|
4726
|
-
Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
|
|
4727
|
-
"search"
|
|
4728
|
-
]
|
|
4729
|
-
];
|
|
4730
|
-
}, [action]);
|
|
4731
4727
|
const view = useViewV2({
|
|
4728
|
+
action,
|
|
4732
4729
|
context: viewContext,
|
|
4733
|
-
|
|
4734
|
-
model: action?.res_model ? String(action.res_model) : void 0
|
|
4730
|
+
aid
|
|
4735
4731
|
});
|
|
4736
4732
|
return /* @__PURE__ */ jsx(
|
|
4737
4733
|
ReactContext.Provider,
|
|
@@ -4859,7 +4855,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
|
|
|
4859
4855
|
import {
|
|
4860
4856
|
evalJSONDomain,
|
|
4861
4857
|
formatSortingString,
|
|
4862
|
-
isObjectEmpty as
|
|
4858
|
+
isObjectEmpty as isObjectEmpty4
|
|
4863
4859
|
} from "@fctc/interface-logic/utils";
|
|
4864
4860
|
|
|
4865
4861
|
// src/hooks/utils/use-click-outside.ts
|
|
@@ -5035,7 +5031,7 @@ var useListData = ({
|
|
|
5035
5031
|
const list = useGetListData2(
|
|
5036
5032
|
listDataProps,
|
|
5037
5033
|
[listDataProps],
|
|
5038
|
-
!!listDataProps && !!specification && !
|
|
5034
|
+
!!listDataProps && !!specification && !isObjectEmpty4(specification)
|
|
5039
5035
|
);
|
|
5040
5036
|
return {
|
|
5041
5037
|
...list,
|
package/dist/widget.js
CHANGED
|
@@ -55,7 +55,7 @@ var require_moment = __commonJS({
|
|
|
55
55
|
function hasOwnProp(a, b) {
|
|
56
56
|
return Object.prototype.hasOwnProperty.call(a, b);
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function isObjectEmpty5(obj) {
|
|
59
59
|
if (Object.getOwnPropertyNames) {
|
|
60
60
|
return Object.getOwnPropertyNames(obj).length === 0;
|
|
61
61
|
} else {
|
|
@@ -2194,7 +2194,7 @@ var require_moment = __commonJS({
|
|
|
2194
2194
|
strict = locale2;
|
|
2195
2195
|
locale2 = void 0;
|
|
2196
2196
|
}
|
|
2197
|
-
if (isObject(input) &&
|
|
2197
|
+
if (isObject(input) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
|
|
2198
2198
|
input = void 0;
|
|
2199
2199
|
}
|
|
2200
2200
|
c._isAMomentObject = true;
|
|
@@ -2613,7 +2613,7 @@ var require_moment = __commonJS({
|
|
|
2613
2613
|
return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0;
|
|
2614
2614
|
}
|
|
2615
2615
|
function isMomentInputObject(input) {
|
|
2616
|
-
var objectTest = isObject(input) && !
|
|
2616
|
+
var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
|
|
2617
2617
|
"years",
|
|
2618
2618
|
"year",
|
|
2619
2619
|
"y",
|
|
@@ -2655,7 +2655,7 @@ var require_moment = __commonJS({
|
|
|
2655
2655
|
return arrayTest && dataTypeTest;
|
|
2656
2656
|
}
|
|
2657
2657
|
function isCalendarSpec(input) {
|
|
2658
|
-
var objectTest = isObject(input) && !
|
|
2658
|
+
var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
|
|
2659
2659
|
"sameDay",
|
|
2660
2660
|
"nextDay",
|
|
2661
2661
|
"lastDay",
|
|
@@ -4119,7 +4119,7 @@ var import_hooks3 = require("@fctc/interface-logic/hooks");
|
|
|
4119
4119
|
var import_react9 = require("react");
|
|
4120
4120
|
|
|
4121
4121
|
// src/hooks/core/use-menu.ts
|
|
4122
|
-
var
|
|
4122
|
+
var import_react4 = require("react");
|
|
4123
4123
|
|
|
4124
4124
|
// src/hooks/core/use-call-action.ts
|
|
4125
4125
|
var import_react2 = require("react");
|
|
@@ -4128,15 +4128,6 @@ var import_react2 = require("react");
|
|
|
4128
4128
|
var provider_exports = {};
|
|
4129
4129
|
__reExport(provider_exports, require("@fctc/interface-logic/provider"));
|
|
4130
4130
|
|
|
4131
|
-
// src/hooks/core/use-detail.ts
|
|
4132
|
-
var import_react_query = require("@tanstack/react-query");
|
|
4133
|
-
var import_react4 = require("react");
|
|
4134
|
-
|
|
4135
|
-
// src/hooks/core/use-profile.ts
|
|
4136
|
-
var import_react_query2 = require("@tanstack/react-query");
|
|
4137
|
-
var import_react6 = require("react");
|
|
4138
|
-
var import_react_i18next = require("react-i18next");
|
|
4139
|
-
|
|
4140
4131
|
// src/utils.ts
|
|
4141
4132
|
var utils_exports = {};
|
|
4142
4133
|
__export(utils_exports, {
|
|
@@ -4158,7 +4149,7 @@ var languages = [
|
|
|
4158
4149
|
];
|
|
4159
4150
|
|
|
4160
4151
|
// src/utils/function.ts
|
|
4161
|
-
var
|
|
4152
|
+
var import_react3 = require("react");
|
|
4162
4153
|
var countSum = (data, field) => {
|
|
4163
4154
|
if (!data || !field) return 0;
|
|
4164
4155
|
return data.reduce(
|
|
@@ -4279,7 +4270,7 @@ var STORAGES = {
|
|
|
4279
4270
|
USER_INFO: "USER_INFO"
|
|
4280
4271
|
};
|
|
4281
4272
|
function useAsyncState(initialValue = [true, null]) {
|
|
4282
|
-
return (0,
|
|
4273
|
+
return (0, import_react3.useReducer)(
|
|
4283
4274
|
(_state, action = null) => [false, action],
|
|
4284
4275
|
initialValue
|
|
4285
4276
|
);
|
|
@@ -4297,7 +4288,7 @@ async function setStorageItemAsync(key, value) {
|
|
|
4297
4288
|
}
|
|
4298
4289
|
function useStorageState(key) {
|
|
4299
4290
|
const [state, setState] = useAsyncState();
|
|
4300
|
-
(0,
|
|
4291
|
+
(0, import_react3.useEffect)(() => {
|
|
4301
4292
|
try {
|
|
4302
4293
|
const storedValue = localStorage.getItem(key);
|
|
4303
4294
|
setState(storedValue);
|
|
@@ -4305,7 +4296,7 @@ function useStorageState(key) {
|
|
|
4305
4296
|
console.error("Local storage is unavailable:", e);
|
|
4306
4297
|
}
|
|
4307
4298
|
}, [key]);
|
|
4308
|
-
const setValue = (0,
|
|
4299
|
+
const setValue = (0, import_react3.useCallback)(
|
|
4309
4300
|
(value) => {
|
|
4310
4301
|
setState(value);
|
|
4311
4302
|
setStorageItemAsync(key, value);
|
|
@@ -4318,6 +4309,15 @@ function useStorageState(key) {
|
|
|
4318
4309
|
// src/utils.ts
|
|
4319
4310
|
__reExport(utils_exports, require("@fctc/interface-logic/utils"));
|
|
4320
4311
|
|
|
4312
|
+
// src/hooks/core/use-detail.ts
|
|
4313
|
+
var import_react_query = require("@tanstack/react-query");
|
|
4314
|
+
var import_react5 = require("react");
|
|
4315
|
+
|
|
4316
|
+
// src/hooks/core/use-profile.ts
|
|
4317
|
+
var import_react_query2 = require("@tanstack/react-query");
|
|
4318
|
+
var import_react6 = require("react");
|
|
4319
|
+
var import_react_i18next = require("react-i18next");
|
|
4320
|
+
|
|
4321
4321
|
// src/hooks/core/use-view-v2.ts
|
|
4322
4322
|
var import_react7 = require("react");
|
|
4323
4323
|
|
|
@@ -4344,7 +4344,7 @@ var import_react11 = require("react");
|
|
|
4344
4344
|
|
|
4345
4345
|
// src/hooks/core/use-list-data.ts
|
|
4346
4346
|
var import_react15 = require("react");
|
|
4347
|
-
var
|
|
4347
|
+
var import_utils5 = require("@fctc/interface-logic/utils");
|
|
4348
4348
|
|
|
4349
4349
|
// src/hooks/utils/use-click-outside.ts
|
|
4350
4350
|
var import_react12 = require("react");
|
|
@@ -4615,18 +4615,18 @@ var many2oneFieldController = (props) => {
|
|
|
4615
4615
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
4616
4616
|
var import_environment2 = require("@fctc/interface-logic/environment");
|
|
4617
4617
|
var import_hooks6 = require("@fctc/interface-logic/hooks");
|
|
4618
|
-
var
|
|
4618
|
+
var import_utils8 = require("@fctc/interface-logic/utils");
|
|
4619
4619
|
var many2oneButtonController = (props) => {
|
|
4620
4620
|
const { domain, methods, relation, service, xNode } = props;
|
|
4621
4621
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
4622
4622
|
const env = (0, import_environment2.getEnv)();
|
|
4623
|
-
const domainObject = (0,
|
|
4623
|
+
const domainObject = (0, import_utils8.evalJSONDomain)(domain, methods?.getValues() || {});
|
|
4624
4624
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
4625
4625
|
const { data: dataOfSelection } = (0, import_hooks6.useGetSelection)({
|
|
4626
4626
|
data: {
|
|
4627
4627
|
model: relation ?? "",
|
|
4628
4628
|
domain: domainObject,
|
|
4629
|
-
context: { ...env.context, ...(0,
|
|
4629
|
+
context: { ...env.context, ...(0, import_utils8.evalJSONContext)(actionData?.context) }
|
|
4630
4630
|
},
|
|
4631
4631
|
queryKey: [`data_${relation}`, domainObject],
|
|
4632
4632
|
service,
|
|
@@ -4643,7 +4643,7 @@ var many2oneButtonController = (props) => {
|
|
|
4643
4643
|
|
|
4644
4644
|
// src/widget/basic/many2many-field/controller.ts
|
|
4645
4645
|
var import_react17 = require("react");
|
|
4646
|
-
var
|
|
4646
|
+
var import_utils9 = require("@fctc/interface-logic/utils");
|
|
4647
4647
|
var many2manyFieldController = (props) => {
|
|
4648
4648
|
const {
|
|
4649
4649
|
relation,
|
|
@@ -4704,10 +4704,10 @@ var many2manyFieldController = (props) => {
|
|
|
4704
4704
|
return null;
|
|
4705
4705
|
}, [modelInstance]);
|
|
4706
4706
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
4707
|
-
const optionsObject = tab?.options ? (0,
|
|
4707
|
+
const optionsObject = tab?.options ? (0, import_utils9.evalJSONContext)(tab?.options) : (options ? (0, import_utils9.evalJSONContext)(options) : {}) || {};
|
|
4708
4708
|
const fetchData = async () => {
|
|
4709
4709
|
try {
|
|
4710
|
-
const domainParse = typeof domain === "string" ? (0,
|
|
4710
|
+
const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
4711
4711
|
setDomainMany2Many(domainParse);
|
|
4712
4712
|
setPage(0);
|
|
4713
4713
|
} catch (err) {
|
|
@@ -4731,7 +4731,7 @@ var many2manyFieldController = (props) => {
|
|
|
4731
4731
|
context: contextObject,
|
|
4732
4732
|
fields: groupByDomain?.fields,
|
|
4733
4733
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
4734
|
-
sort: order ? order : default_order ? (0,
|
|
4734
|
+
sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
|
|
4735
4735
|
};
|
|
4736
4736
|
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
4737
4737
|
const {
|
|
@@ -4795,7 +4795,7 @@ var many2manyFieldController = (props) => {
|
|
|
4795
4795
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
4796
4796
|
var import_react18 = require("react");
|
|
4797
4797
|
var import_constants2 = require("@fctc/interface-logic/constants");
|
|
4798
|
-
var
|
|
4798
|
+
var import_utils10 = require("@fctc/interface-logic/utils");
|
|
4799
4799
|
var many2manyTagsController = (props) => {
|
|
4800
4800
|
const {
|
|
4801
4801
|
relation,
|
|
@@ -4810,9 +4810,9 @@ var many2manyTagsController = (props) => {
|
|
|
4810
4810
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
4811
4811
|
const { env } = (0, provider_exports.useEnv)();
|
|
4812
4812
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
4813
|
-
const addtionalFields = optionsFields ? (0,
|
|
4813
|
+
const addtionalFields = optionsFields ? (0, import_utils10.evalJSONContext)(optionsFields) : null;
|
|
4814
4814
|
const domainObject = (0, import_react18.useMemo)(
|
|
4815
|
-
() => (0,
|
|
4815
|
+
() => (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
4816
4816
|
[domain, formValues]
|
|
4817
4817
|
);
|
|
4818
4818
|
const data = {
|
|
@@ -4857,7 +4857,7 @@ var many2manyTagsController = (props) => {
|
|
|
4857
4857
|
|
|
4858
4858
|
// src/widget/basic/status-bar-field/controller.ts
|
|
4859
4859
|
var import_react19 = require("react");
|
|
4860
|
-
var
|
|
4860
|
+
var import_utils11 = require("@fctc/interface-logic/utils");
|
|
4861
4861
|
var durationController = (props) => {
|
|
4862
4862
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
4863
4863
|
const specification = {
|
|
@@ -4873,7 +4873,7 @@ var durationController = (props) => {
|
|
|
4873
4873
|
const listDataProps = {
|
|
4874
4874
|
model: relation,
|
|
4875
4875
|
specification,
|
|
4876
|
-
domain: (0,
|
|
4876
|
+
domain: (0, import_utils11.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
|
|
4877
4877
|
limit: 10,
|
|
4878
4878
|
offset: 0,
|
|
4879
4879
|
fields: "",
|
|
@@ -4923,10 +4923,10 @@ var durationController = (props) => {
|
|
|
4923
4923
|
};
|
|
4924
4924
|
|
|
4925
4925
|
// src/widget/basic/priority-field/controller.ts
|
|
4926
|
-
var
|
|
4926
|
+
var import_utils12 = require("@fctc/interface-logic/utils");
|
|
4927
4927
|
var priorityFieldController = (props) => {
|
|
4928
4928
|
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
4929
|
-
const _context = { ...(0,
|
|
4929
|
+
const _context = { ...(0, import_utils12.evalJSONContext)(actionData?.context) };
|
|
4930
4930
|
const contextObject = { ...context, ..._context };
|
|
4931
4931
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
4932
4932
|
const { mutateAsync: fetchSave } = useSave3();
|
|
@@ -5894,12 +5894,12 @@ var dateFieldController = (props) => {
|
|
|
5894
5894
|
|
|
5895
5895
|
// src/widget/basic/copy-link-button/controller.ts
|
|
5896
5896
|
var import_react21 = require("react");
|
|
5897
|
-
var
|
|
5897
|
+
var import_utils13 = require("@fctc/interface-logic/utils");
|
|
5898
5898
|
var copyLinkButtonController = (props) => {
|
|
5899
5899
|
const { value, defaultValue } = props;
|
|
5900
5900
|
const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
|
|
5901
5901
|
const handleCopyToClipboard = async (value2) => {
|
|
5902
|
-
await (0,
|
|
5902
|
+
await (0, import_utils13.copyTextToClipboard)(value2);
|
|
5903
5903
|
setIsCopied(true);
|
|
5904
5904
|
setTimeout(() => setIsCopied(false), 2e3);
|
|
5905
5905
|
};
|
|
@@ -5912,12 +5912,12 @@ var copyLinkButtonController = (props) => {
|
|
|
5912
5912
|
};
|
|
5913
5913
|
|
|
5914
5914
|
// src/widget/basic/color-field/color-controller.ts
|
|
5915
|
-
var
|
|
5915
|
+
var import_utils14 = require("@fctc/interface-logic/utils");
|
|
5916
5916
|
var colorFieldController = (props) => {
|
|
5917
5917
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
5918
5918
|
const { env } = (0, provider_exports.useEnv)();
|
|
5919
5919
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
5920
|
-
const _context = { ...(0,
|
|
5920
|
+
const _context = { ...(0, import_utils14.evalJSONContext)(actionData?.context) || {} };
|
|
5921
5921
|
const contextObject = { ...env.context, ..._context };
|
|
5922
5922
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
5923
5923
|
const { mutate: onSave } = useSave3();
|
|
@@ -5946,7 +5946,7 @@ var colorFieldController = (props) => {
|
|
|
5946
5946
|
|
|
5947
5947
|
// src/widget/basic/binary-field/controller.ts
|
|
5948
5948
|
var import_react22 = require("react");
|
|
5949
|
-
var
|
|
5949
|
+
var import_utils15 = require("@fctc/interface-logic/utils");
|
|
5950
5950
|
var binaryFieldController = (props) => {
|
|
5951
5951
|
const { name, methods, readonly = false, value } = props;
|
|
5952
5952
|
const inputId = (0, import_react22.useId)();
|
|
@@ -6003,11 +6003,11 @@ var binaryFieldController = (props) => {
|
|
|
6003
6003
|
};
|
|
6004
6004
|
const checkIsImageLink = (url) => {
|
|
6005
6005
|
const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
|
|
6006
|
-
return imageExtensions.test(url) || (0,
|
|
6006
|
+
return imageExtensions.test(url) || (0, import_utils15.isBase64Image)(url) || isBlobUrl(url);
|
|
6007
6007
|
};
|
|
6008
6008
|
const getImageBase64WithMimeType = (base64) => {
|
|
6009
6009
|
if (typeof base64 !== "string" || base64.length < 10) return null;
|
|
6010
|
-
if ((0,
|
|
6010
|
+
if ((0, import_utils15.isBase64Image)(base64)) return base64;
|
|
6011
6011
|
let mimeType = null;
|
|
6012
6012
|
if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
|
|
6013
6013
|
else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
|
|
@@ -6110,7 +6110,7 @@ var tableHeadController = (props) => {
|
|
|
6110
6110
|
|
|
6111
6111
|
// src/widget/advance/table/table-view/controller.ts
|
|
6112
6112
|
var import_react24 = require("react");
|
|
6113
|
-
var
|
|
6113
|
+
var import_utils17 = require("@fctc/interface-logic/utils");
|
|
6114
6114
|
var tableController = ({ data }) => {
|
|
6115
6115
|
const [rows, setRows] = (0, import_react24.useState)(null);
|
|
6116
6116
|
const [columns, setColumns] = (0, import_react24.useState)(null);
|
|
@@ -6148,7 +6148,7 @@ var tableController = ({ data }) => {
|
|
|
6148
6148
|
let cols = [];
|
|
6149
6149
|
try {
|
|
6150
6150
|
cols = mergeFields?.filter((item) => {
|
|
6151
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ?
|
|
6151
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
6152
6152
|
})?.map((field) => {
|
|
6153
6153
|
return {
|
|
6154
6154
|
name: field?.name,
|
|
@@ -6332,7 +6332,7 @@ var tableGroupController = (props) => {
|
|
|
6332
6332
|
|
|
6333
6333
|
// src/widget/advance/search/controller.ts
|
|
6334
6334
|
var import_constants3 = require("@fctc/interface-logic/constants");
|
|
6335
|
-
var
|
|
6335
|
+
var import_utils19 = require("@fctc/interface-logic/utils");
|
|
6336
6336
|
var import_moment2 = __toESM(require_moment());
|
|
6337
6337
|
var import_react26 = require("react");
|
|
6338
6338
|
var searchController = ({
|
|
@@ -6349,9 +6349,9 @@ var searchController = ({
|
|
|
6349
6349
|
const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
|
|
6350
6350
|
const [searchString, setSearchString] = (0, import_react26.useState)("");
|
|
6351
6351
|
const [searchMap, setSearchMap] = (0, import_react26.useState)({});
|
|
6352
|
-
const actionContext = typeof context === "string" ? (0,
|
|
6352
|
+
const actionContext = typeof context === "string" ? (0, import_utils19.evalJSONContext)(context) : context;
|
|
6353
6353
|
const contextSearch = { ...env.context, ...actionContext };
|
|
6354
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0,
|
|
6354
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils19.evalJSONDomain)(domain, contextSearch) : [];
|
|
6355
6355
|
const clearSearch = () => {
|
|
6356
6356
|
setFilterBy([]);
|
|
6357
6357
|
setGroupBy([]);
|
|
@@ -6366,7 +6366,7 @@ var searchController = ({
|
|
|
6366
6366
|
const dataModel = viewData?.models?.[model];
|
|
6367
6367
|
const searchViews = viewData?.views?.search;
|
|
6368
6368
|
const searchByItems = searchViews?.search_by?.filter(
|
|
6369
|
-
(item) => !
|
|
6369
|
+
(item) => !import_utils19.domainHelper.matchDomains(contextSearch, item.invisible)
|
|
6370
6370
|
)?.map(
|
|
6371
6371
|
({ string, name, filter_domain, operator, widget }, index) => ({
|
|
6372
6372
|
dataIndex: index,
|
|
@@ -6379,10 +6379,10 @@ var searchController = ({
|
|
|
6379
6379
|
})
|
|
6380
6380
|
);
|
|
6381
6381
|
const filterByItems = searchViews?.filter_by.filter((item) => {
|
|
6382
|
-
return !
|
|
6382
|
+
return !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible);
|
|
6383
6383
|
})?.map((item) => ({ ...item, active: false }));
|
|
6384
6384
|
const groupByItems = searchViews?.group_by.filter(
|
|
6385
|
-
(item) => !
|
|
6385
|
+
(item) => !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible)
|
|
6386
6386
|
).map((item) => ({
|
|
6387
6387
|
...item,
|
|
6388
6388
|
string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
|
|
@@ -6459,14 +6459,14 @@ var searchController = ({
|
|
|
6459
6459
|
}
|
|
6460
6460
|
let valueDomainItem = value?.value;
|
|
6461
6461
|
if (value?.modelType === "date") {
|
|
6462
|
-
valueDomainItem = (0,
|
|
6462
|
+
valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value);
|
|
6463
6463
|
} else if (value?.modelType === "datetime") {
|
|
6464
6464
|
if (value?.operator === "<=" || value?.operator === "<") {
|
|
6465
|
-
const parsedDate = (0,
|
|
6465
|
+
const parsedDate = (0, import_utils19.validateAndParseDate)(value?.value, true);
|
|
6466
6466
|
const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
|
|
6467
6467
|
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");
|
|
6468
6468
|
} else {
|
|
6469
|
-
valueDomainItem = (0,
|
|
6469
|
+
valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value, true);
|
|
6470
6470
|
}
|
|
6471
6471
|
}
|
|
6472
6472
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
@@ -6545,7 +6545,7 @@ var searchController = ({
|
|
|
6545
6545
|
}, [searchMap]);
|
|
6546
6546
|
const handleAddTagSearch = (tag) => {
|
|
6547
6547
|
const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
|
|
6548
|
-
const domainFormat = new
|
|
6548
|
+
const domainFormat = new import_utils19.domainHelper.Domain(domain2);
|
|
6549
6549
|
if (type === import_constants3.SearchType.FILTER) {
|
|
6550
6550
|
addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
|
|
6551
6551
|
...tag,
|