@fctc/widget-logic 2.7.0 → 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.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",
|
|
@@ -4164,7 +4164,7 @@ var import_hooks2 = require("@fctc/interface-logic/hooks");
|
|
|
4164
4164
|
var import_react8 = require("react");
|
|
4165
4165
|
|
|
4166
4166
|
// src/hooks/core/use-menu.ts
|
|
4167
|
-
var
|
|
4167
|
+
var import_react3 = require("react");
|
|
4168
4168
|
|
|
4169
4169
|
// src/hooks/core/use-call-action.ts
|
|
4170
4170
|
var import_react = require("react");
|
|
@@ -4212,92 +4212,6 @@ var useCallAction = () => {
|
|
|
4212
4212
|
return [actionData, callAction];
|
|
4213
4213
|
};
|
|
4214
4214
|
|
|
4215
|
-
// src/hooks/core/use-menu.ts
|
|
4216
|
-
var useMenu = ({
|
|
4217
|
-
context,
|
|
4218
|
-
specification
|
|
4219
|
-
}) => {
|
|
4220
|
-
const { env } = (0, provider_exports.useEnv)();
|
|
4221
|
-
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
4222
|
-
const [action, callAction] = useCallAction();
|
|
4223
|
-
const menuData = useGetMenu2(
|
|
4224
|
-
context,
|
|
4225
|
-
specification,
|
|
4226
|
-
!!context && Object.keys(context).length > 0
|
|
4227
|
-
);
|
|
4228
|
-
const [menuId, setMenuId] = (0, import_react2.useState)(void 0);
|
|
4229
|
-
const configedIconData = (0, import_react2.useMemo)(() => {
|
|
4230
|
-
const data = menuData.data;
|
|
4231
|
-
return data?.map((item) => {
|
|
4232
|
-
return {
|
|
4233
|
-
...item,
|
|
4234
|
-
child_id: item?.child_id?.map((child) => {
|
|
4235
|
-
return {
|
|
4236
|
-
...child,
|
|
4237
|
-
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
|
|
4238
|
-
};
|
|
4239
|
-
}) ?? [],
|
|
4240
|
-
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
|
|
4241
|
-
};
|
|
4242
|
-
});
|
|
4243
|
-
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
4244
|
-
const handleChangeMenu = async ({ menu }) => {
|
|
4245
|
-
const aidMenu = menu?.action?.id?.id;
|
|
4246
|
-
if (menu) {
|
|
4247
|
-
setMenuId(menu.id?.toString() ?? "");
|
|
4248
|
-
}
|
|
4249
|
-
if (aidMenu) {
|
|
4250
|
-
const actionResponse = await callAction({
|
|
4251
|
-
aid: Number(aidMenu)
|
|
4252
|
-
});
|
|
4253
|
-
return actionResponse;
|
|
4254
|
-
}
|
|
4255
|
-
};
|
|
4256
|
-
return {
|
|
4257
|
-
...menuData,
|
|
4258
|
-
data: configedIconData,
|
|
4259
|
-
action: { handleChangeMenu },
|
|
4260
|
-
state: { menuId, action },
|
|
4261
|
-
context,
|
|
4262
|
-
isLoading: menuData.isLoading,
|
|
4263
|
-
isError: menuData.isError,
|
|
4264
|
-
error: menuData.error,
|
|
4265
|
-
refetch: menuData.refetch
|
|
4266
|
-
};
|
|
4267
|
-
};
|
|
4268
|
-
|
|
4269
|
-
// src/hooks/core/use-detail.ts
|
|
4270
|
-
var import_react_query = require("@tanstack/react-query");
|
|
4271
|
-
var import_react3 = require("react");
|
|
4272
|
-
var useDetail = (sub) => {
|
|
4273
|
-
const { setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4274
|
-
const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
|
|
4275
|
-
const fetchGetDetail = useGetDetail2();
|
|
4276
|
-
const userDetailQuery = (0, import_react_query.useQuery)({
|
|
4277
|
-
queryKey: ["userDetailQuery", sub],
|
|
4278
|
-
queryFn: () => {
|
|
4279
|
-
return fetchGetDetail.mutateAsync({
|
|
4280
|
-
model: "res.users",
|
|
4281
|
-
ids: [sub],
|
|
4282
|
-
specification: { image_256: {} }
|
|
4283
|
-
});
|
|
4284
|
-
},
|
|
4285
|
-
enabled: !!sub
|
|
4286
|
-
});
|
|
4287
|
-
(0, import_react3.useEffect)(() => {
|
|
4288
|
-
if (userDetailQuery.data) {
|
|
4289
|
-
const userPicture = userDetailQuery.data;
|
|
4290
|
-
setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
|
|
4291
|
-
}
|
|
4292
|
-
}, [userDetailQuery.isFetched]);
|
|
4293
|
-
return { ...userDetailQuery };
|
|
4294
|
-
};
|
|
4295
|
-
|
|
4296
|
-
// src/hooks/core/use-profile.ts
|
|
4297
|
-
var import_react_query2 = require("@tanstack/react-query");
|
|
4298
|
-
var import_react5 = require("react");
|
|
4299
|
-
var import_react_i18next = require("react-i18next");
|
|
4300
|
-
|
|
4301
4215
|
// src/utils.ts
|
|
4302
4216
|
var utils_exports = {};
|
|
4303
4217
|
__export(utils_exports, {
|
|
@@ -4319,7 +4233,7 @@ var languages = [
|
|
|
4319
4233
|
];
|
|
4320
4234
|
|
|
4321
4235
|
// src/utils/function.ts
|
|
4322
|
-
var
|
|
4236
|
+
var import_react2 = require("react");
|
|
4323
4237
|
var countSum = (data, field) => {
|
|
4324
4238
|
if (!data || !field) return 0;
|
|
4325
4239
|
return data.reduce(
|
|
@@ -4440,7 +4354,7 @@ var STORAGES = {
|
|
|
4440
4354
|
USER_INFO: "USER_INFO"
|
|
4441
4355
|
};
|
|
4442
4356
|
function useAsyncState(initialValue = [true, null]) {
|
|
4443
|
-
return (0,
|
|
4357
|
+
return (0, import_react2.useReducer)(
|
|
4444
4358
|
(_state, action = null) => [false, action],
|
|
4445
4359
|
initialValue
|
|
4446
4360
|
);
|
|
@@ -4458,7 +4372,7 @@ async function setStorageItemAsync(key, value) {
|
|
|
4458
4372
|
}
|
|
4459
4373
|
function useStorageState(key) {
|
|
4460
4374
|
const [state, setState] = useAsyncState();
|
|
4461
|
-
(0,
|
|
4375
|
+
(0, import_react2.useEffect)(() => {
|
|
4462
4376
|
try {
|
|
4463
4377
|
const storedValue = localStorage.getItem(key);
|
|
4464
4378
|
setState(storedValue);
|
|
@@ -4466,7 +4380,7 @@ function useStorageState(key) {
|
|
|
4466
4380
|
console.error("Local storage is unavailable:", e);
|
|
4467
4381
|
}
|
|
4468
4382
|
}, [key]);
|
|
4469
|
-
const setValue = (0,
|
|
4383
|
+
const setValue = (0, import_react2.useCallback)(
|
|
4470
4384
|
(value) => {
|
|
4471
4385
|
setState(value);
|
|
4472
4386
|
setStorageItemAsync(key, value);
|
|
@@ -4479,7 +4393,91 @@ function useStorageState(key) {
|
|
|
4479
4393
|
// src/utils.ts
|
|
4480
4394
|
__reExport(utils_exports, require("@fctc/interface-logic/utils"));
|
|
4481
4395
|
|
|
4396
|
+
// src/hooks/core/use-menu.ts
|
|
4397
|
+
var useMenu = ({
|
|
4398
|
+
context,
|
|
4399
|
+
specification
|
|
4400
|
+
}) => {
|
|
4401
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
4402
|
+
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
4403
|
+
const [action, callAction] = useCallAction();
|
|
4404
|
+
const menuData = useGetMenu2(
|
|
4405
|
+
context,
|
|
4406
|
+
specification,
|
|
4407
|
+
!!context && !(0, utils_exports.isObjectEmpty)(context)
|
|
4408
|
+
);
|
|
4409
|
+
const [menuId, setMenuId] = (0, import_react3.useState)(void 0);
|
|
4410
|
+
const configedIconData = (0, import_react3.useMemo)(() => {
|
|
4411
|
+
const data = menuData.data;
|
|
4412
|
+
return data?.map((item) => {
|
|
4413
|
+
return {
|
|
4414
|
+
...item,
|
|
4415
|
+
child_id: item?.child_id?.map((child) => {
|
|
4416
|
+
return {
|
|
4417
|
+
...child,
|
|
4418
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
|
|
4419
|
+
};
|
|
4420
|
+
}) ?? [],
|
|
4421
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
|
|
4422
|
+
};
|
|
4423
|
+
});
|
|
4424
|
+
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
4425
|
+
const handleChangeMenu = async ({ menu }) => {
|
|
4426
|
+
const aidMenu = menu?.action?.id?.id;
|
|
4427
|
+
if (menu) {
|
|
4428
|
+
setMenuId(menu.id?.toString() ?? "");
|
|
4429
|
+
}
|
|
4430
|
+
if (aidMenu) {
|
|
4431
|
+
const actionResponse = await callAction({
|
|
4432
|
+
aid: Number(aidMenu)
|
|
4433
|
+
});
|
|
4434
|
+
return actionResponse;
|
|
4435
|
+
}
|
|
4436
|
+
};
|
|
4437
|
+
return {
|
|
4438
|
+
...menuData,
|
|
4439
|
+
data: configedIconData,
|
|
4440
|
+
action: { handleChangeMenu },
|
|
4441
|
+
state: { menuId, action },
|
|
4442
|
+
context,
|
|
4443
|
+
isLoading: menuData.isLoading,
|
|
4444
|
+
isError: menuData.isError,
|
|
4445
|
+
error: menuData.error,
|
|
4446
|
+
refetch: menuData.refetch
|
|
4447
|
+
};
|
|
4448
|
+
};
|
|
4449
|
+
|
|
4450
|
+
// src/hooks/core/use-detail.ts
|
|
4451
|
+
var import_react_query = require("@tanstack/react-query");
|
|
4452
|
+
var import_react4 = require("react");
|
|
4453
|
+
var useDetail = (sub) => {
|
|
4454
|
+
const { setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4455
|
+
const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
|
|
4456
|
+
const fetchGetDetail = useGetDetail2();
|
|
4457
|
+
const userDetailQuery = (0, import_react_query.useQuery)({
|
|
4458
|
+
queryKey: ["userDetailQuery", sub],
|
|
4459
|
+
queryFn: () => {
|
|
4460
|
+
return fetchGetDetail.mutateAsync({
|
|
4461
|
+
model: "res.users",
|
|
4462
|
+
ids: [sub],
|
|
4463
|
+
specification: { image_256: {} }
|
|
4464
|
+
});
|
|
4465
|
+
},
|
|
4466
|
+
enabled: !!sub
|
|
4467
|
+
});
|
|
4468
|
+
(0, import_react4.useEffect)(() => {
|
|
4469
|
+
if (userDetailQuery.data) {
|
|
4470
|
+
const userPicture = userDetailQuery.data;
|
|
4471
|
+
setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
|
|
4472
|
+
}
|
|
4473
|
+
}, [userDetailQuery.isFetched]);
|
|
4474
|
+
return { ...userDetailQuery };
|
|
4475
|
+
};
|
|
4476
|
+
|
|
4482
4477
|
// src/hooks/core/use-profile.ts
|
|
4478
|
+
var import_react_query2 = require("@tanstack/react-query");
|
|
4479
|
+
var import_react5 = require("react");
|
|
4480
|
+
var import_react_i18next = require("react-i18next");
|
|
4483
4481
|
var useProfile = () => {
|
|
4484
4482
|
const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4485
4483
|
const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
|
|
@@ -4527,21 +4525,31 @@ var useUser = () => {
|
|
|
4527
4525
|
// src/hooks/core/use-view-v2.ts
|
|
4528
4526
|
var import_react6 = require("react");
|
|
4529
4527
|
var useViewV2 = ({
|
|
4530
|
-
|
|
4528
|
+
action,
|
|
4531
4529
|
context,
|
|
4532
|
-
|
|
4533
|
-
model
|
|
4530
|
+
aid
|
|
4534
4531
|
}) => {
|
|
4535
4532
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4536
4533
|
const viewParams = (0, import_react6.useMemo)(() => {
|
|
4537
|
-
if (
|
|
4534
|
+
if (!action || !action?.res_model) {
|
|
4535
|
+
return void 0;
|
|
4536
|
+
}
|
|
4537
|
+
const actionResult = action;
|
|
4538
4538
|
return {
|
|
4539
|
-
model,
|
|
4540
|
-
views
|
|
4539
|
+
model: String(actionResult?.res_model),
|
|
4540
|
+
views: [
|
|
4541
|
+
...Array.isArray(actionResult?.views) ? actionResult?.views.map(
|
|
4542
|
+
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
4543
|
+
) : [],
|
|
4544
|
+
[
|
|
4545
|
+
Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
|
|
4546
|
+
"search"
|
|
4547
|
+
]
|
|
4548
|
+
],
|
|
4541
4549
|
context,
|
|
4542
|
-
id
|
|
4550
|
+
id: isNaN(Number(aid)) ? action?.id : aid
|
|
4543
4551
|
};
|
|
4544
|
-
}, [
|
|
4552
|
+
}, [action, context, aid]);
|
|
4545
4553
|
const view = useGetView2({
|
|
4546
4554
|
viewParams: viewParams || {},
|
|
4547
4555
|
enabled: !!viewParams
|
|
@@ -4641,22 +4649,10 @@ var AppProvider = ({
|
|
|
4641
4649
|
{ ...(0, utils_exports.evalJSONContext)(action?.context) }
|
|
4642
4650
|
]);
|
|
4643
4651
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
4644
|
-
const memoViews = (0, import_react8.useMemo)(() => {
|
|
4645
|
-
if (!action) return [];
|
|
4646
|
-
return [
|
|
4647
|
-
...Array.isArray(action?.views) ? action.views.map(
|
|
4648
|
-
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
4649
|
-
) : [],
|
|
4650
|
-
[
|
|
4651
|
-
Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
|
|
4652
|
-
"search"
|
|
4653
|
-
]
|
|
4654
|
-
];
|
|
4655
|
-
}, [action]);
|
|
4656
4652
|
const view = useViewV2({
|
|
4653
|
+
action,
|
|
4657
4654
|
context: viewContext,
|
|
4658
|
-
|
|
4659
|
-
model: action?.res_model ? String(action.res_model) : void 0
|
|
4655
|
+
aid
|
|
4660
4656
|
});
|
|
4661
4657
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
4662
4658
|
ReactContext.Provider,
|
|
@@ -4781,7 +4777,7 @@ var useGetSpecification = ({
|
|
|
4781
4777
|
|
|
4782
4778
|
// src/hooks/core/use-list-data.ts
|
|
4783
4779
|
var import_react14 = require("react");
|
|
4784
|
-
var
|
|
4780
|
+
var import_utils5 = require("@fctc/interface-logic/utils");
|
|
4785
4781
|
|
|
4786
4782
|
// src/hooks/utils/use-click-outside.ts
|
|
4787
4783
|
var import_react11 = require("react");
|
|
@@ -4923,12 +4919,12 @@ var useListData = ({
|
|
|
4923
4919
|
if (!viewData || !action || !context) {
|
|
4924
4920
|
return null;
|
|
4925
4921
|
}
|
|
4926
|
-
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0,
|
|
4922
|
+
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils5.evalJSONDomain)(action?.domain, context) : [];
|
|
4927
4923
|
const limit = type === "calendar" ? 2500 : pageLimit;
|
|
4928
4924
|
const offset = debouncedPage * pageLimit;
|
|
4929
4925
|
const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
|
|
4930
4926
|
const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
|
|
4931
|
-
const sort = order ? order : viewData?.views?.list?.default_order ? (0,
|
|
4927
|
+
const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils5.formatSortingString)(viewData?.views?.list?.default_order) : "";
|
|
4932
4928
|
return {
|
|
4933
4929
|
model: action.res_model,
|
|
4934
4930
|
specification,
|
|
@@ -4956,7 +4952,7 @@ var useListData = ({
|
|
|
4956
4952
|
const list = useGetListData2(
|
|
4957
4953
|
listDataProps,
|
|
4958
4954
|
[listDataProps],
|
|
4959
|
-
!!listDataProps && !!specification && !(0,
|
|
4955
|
+
!!listDataProps && !!specification && !(0, import_utils5.isObjectEmpty)(specification)
|
|
4960
4956
|
);
|
|
4961
4957
|
return {
|
|
4962
4958
|
...list,
|
|
@@ -5463,18 +5459,18 @@ var many2oneFieldController = (props) => {
|
|
|
5463
5459
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5464
5460
|
var import_environment2 = require("@fctc/interface-logic/environment");
|
|
5465
5461
|
var import_hooks6 = require("@fctc/interface-logic/hooks");
|
|
5466
|
-
var
|
|
5462
|
+
var import_utils8 = require("@fctc/interface-logic/utils");
|
|
5467
5463
|
var many2oneButtonController = (props) => {
|
|
5468
5464
|
const { domain, methods, relation, service, xNode } = props;
|
|
5469
5465
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5470
5466
|
const env = (0, import_environment2.getEnv)();
|
|
5471
|
-
const domainObject = (0,
|
|
5467
|
+
const domainObject = (0, import_utils8.evalJSONDomain)(domain, methods?.getValues() || {});
|
|
5472
5468
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5473
5469
|
const { data: dataOfSelection } = (0, import_hooks6.useGetSelection)({
|
|
5474
5470
|
data: {
|
|
5475
5471
|
model: relation ?? "",
|
|
5476
5472
|
domain: domainObject,
|
|
5477
|
-
context: { ...env.context, ...(0,
|
|
5473
|
+
context: { ...env.context, ...(0, import_utils8.evalJSONContext)(actionData?.context) }
|
|
5478
5474
|
},
|
|
5479
5475
|
queryKey: [`data_${relation}`, domainObject],
|
|
5480
5476
|
service,
|
|
@@ -5491,7 +5487,7 @@ var many2oneButtonController = (props) => {
|
|
|
5491
5487
|
|
|
5492
5488
|
// src/widget/basic/many2many-field/controller.ts
|
|
5493
5489
|
var import_react17 = require("react");
|
|
5494
|
-
var
|
|
5490
|
+
var import_utils9 = require("@fctc/interface-logic/utils");
|
|
5495
5491
|
var many2manyFieldController = (props) => {
|
|
5496
5492
|
const {
|
|
5497
5493
|
relation,
|
|
@@ -5552,10 +5548,10 @@ var many2manyFieldController = (props) => {
|
|
|
5552
5548
|
return null;
|
|
5553
5549
|
}, [modelInstance]);
|
|
5554
5550
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
5555
|
-
const optionsObject = tab?.options ? (0,
|
|
5551
|
+
const optionsObject = tab?.options ? (0, import_utils9.evalJSONContext)(tab?.options) : (options ? (0, import_utils9.evalJSONContext)(options) : {}) || {};
|
|
5556
5552
|
const fetchData = async () => {
|
|
5557
5553
|
try {
|
|
5558
|
-
const domainParse = typeof domain === "string" ? (0,
|
|
5554
|
+
const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5559
5555
|
setDomainMany2Many(domainParse);
|
|
5560
5556
|
setPage(0);
|
|
5561
5557
|
} catch (err) {
|
|
@@ -5579,7 +5575,7 @@ var many2manyFieldController = (props) => {
|
|
|
5579
5575
|
context: contextObject,
|
|
5580
5576
|
fields: groupByDomain?.fields,
|
|
5581
5577
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5582
|
-
sort: order ? order : default_order ? (0,
|
|
5578
|
+
sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
|
|
5583
5579
|
};
|
|
5584
5580
|
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5585
5581
|
const {
|
|
@@ -5643,7 +5639,7 @@ var many2manyFieldController = (props) => {
|
|
|
5643
5639
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5644
5640
|
var import_react18 = require("react");
|
|
5645
5641
|
var import_constants2 = require("@fctc/interface-logic/constants");
|
|
5646
|
-
var
|
|
5642
|
+
var import_utils10 = require("@fctc/interface-logic/utils");
|
|
5647
5643
|
var many2manyTagsController = (props) => {
|
|
5648
5644
|
const {
|
|
5649
5645
|
relation,
|
|
@@ -5658,9 +5654,9 @@ var many2manyTagsController = (props) => {
|
|
|
5658
5654
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5659
5655
|
const { env } = (0, provider_exports.useEnv)();
|
|
5660
5656
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5661
|
-
const addtionalFields = optionsFields ? (0,
|
|
5657
|
+
const addtionalFields = optionsFields ? (0, import_utils10.evalJSONContext)(optionsFields) : null;
|
|
5662
5658
|
const domainObject = (0, import_react18.useMemo)(
|
|
5663
|
-
() => (0,
|
|
5659
|
+
() => (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5664
5660
|
[domain, formValues]
|
|
5665
5661
|
);
|
|
5666
5662
|
const data = {
|
|
@@ -5705,7 +5701,7 @@ var many2manyTagsController = (props) => {
|
|
|
5705
5701
|
|
|
5706
5702
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5707
5703
|
var import_react19 = require("react");
|
|
5708
|
-
var
|
|
5704
|
+
var import_utils11 = require("@fctc/interface-logic/utils");
|
|
5709
5705
|
var durationController = (props) => {
|
|
5710
5706
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5711
5707
|
const specification = {
|
|
@@ -5721,7 +5717,7 @@ var durationController = (props) => {
|
|
|
5721
5717
|
const listDataProps = {
|
|
5722
5718
|
model: relation,
|
|
5723
5719
|
specification,
|
|
5724
|
-
domain: (0,
|
|
5720
|
+
domain: (0, import_utils11.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5725
5721
|
limit: 10,
|
|
5726
5722
|
offset: 0,
|
|
5727
5723
|
fields: "",
|
|
@@ -5771,10 +5767,10 @@ var durationController = (props) => {
|
|
|
5771
5767
|
};
|
|
5772
5768
|
|
|
5773
5769
|
// src/widget/basic/priority-field/controller.ts
|
|
5774
|
-
var
|
|
5770
|
+
var import_utils12 = require("@fctc/interface-logic/utils");
|
|
5775
5771
|
var priorityFieldController = (props) => {
|
|
5776
5772
|
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
5777
|
-
const _context = { ...(0,
|
|
5773
|
+
const _context = { ...(0, import_utils12.evalJSONContext)(actionData?.context) };
|
|
5778
5774
|
const contextObject = { ...context, ..._context };
|
|
5779
5775
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
5780
5776
|
const { mutateAsync: fetchSave } = useSave3();
|
|
@@ -6742,12 +6738,12 @@ var dateFieldController = (props) => {
|
|
|
6742
6738
|
|
|
6743
6739
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6744
6740
|
var import_react21 = require("react");
|
|
6745
|
-
var
|
|
6741
|
+
var import_utils13 = require("@fctc/interface-logic/utils");
|
|
6746
6742
|
var copyLinkButtonController = (props) => {
|
|
6747
6743
|
const { value, defaultValue } = props;
|
|
6748
6744
|
const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
|
|
6749
6745
|
const handleCopyToClipboard = async (value2) => {
|
|
6750
|
-
await (0,
|
|
6746
|
+
await (0, import_utils13.copyTextToClipboard)(value2);
|
|
6751
6747
|
setIsCopied(true);
|
|
6752
6748
|
setTimeout(() => setIsCopied(false), 2e3);
|
|
6753
6749
|
};
|
|
@@ -6760,12 +6756,12 @@ var copyLinkButtonController = (props) => {
|
|
|
6760
6756
|
};
|
|
6761
6757
|
|
|
6762
6758
|
// src/widget/basic/color-field/color-controller.ts
|
|
6763
|
-
var
|
|
6759
|
+
var import_utils14 = require("@fctc/interface-logic/utils");
|
|
6764
6760
|
var colorFieldController = (props) => {
|
|
6765
6761
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6766
6762
|
const { env } = (0, provider_exports.useEnv)();
|
|
6767
6763
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
6768
|
-
const _context = { ...(0,
|
|
6764
|
+
const _context = { ...(0, import_utils14.evalJSONContext)(actionData?.context) || {} };
|
|
6769
6765
|
const contextObject = { ...env.context, ..._context };
|
|
6770
6766
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6771
6767
|
const { mutate: onSave } = useSave3();
|
|
@@ -6794,7 +6790,7 @@ var colorFieldController = (props) => {
|
|
|
6794
6790
|
|
|
6795
6791
|
// src/widget/basic/binary-field/controller.ts
|
|
6796
6792
|
var import_react22 = require("react");
|
|
6797
|
-
var
|
|
6793
|
+
var import_utils15 = require("@fctc/interface-logic/utils");
|
|
6798
6794
|
var binaryFieldController = (props) => {
|
|
6799
6795
|
const { name, methods, readonly = false, value } = props;
|
|
6800
6796
|
const inputId = (0, import_react22.useId)();
|
|
@@ -6851,11 +6847,11 @@ var binaryFieldController = (props) => {
|
|
|
6851
6847
|
};
|
|
6852
6848
|
const checkIsImageLink = (url) => {
|
|
6853
6849
|
const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
|
|
6854
|
-
return imageExtensions.test(url) || (0,
|
|
6850
|
+
return imageExtensions.test(url) || (0, import_utils15.isBase64Image)(url) || isBlobUrl(url);
|
|
6855
6851
|
};
|
|
6856
6852
|
const getImageBase64WithMimeType = (base64) => {
|
|
6857
6853
|
if (typeof base64 !== "string" || base64.length < 10) return null;
|
|
6858
|
-
if ((0,
|
|
6854
|
+
if ((0, import_utils15.isBase64Image)(base64)) return base64;
|
|
6859
6855
|
let mimeType = null;
|
|
6860
6856
|
if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
|
|
6861
6857
|
else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
|
|
@@ -6958,7 +6954,7 @@ var tableHeadController = (props) => {
|
|
|
6958
6954
|
|
|
6959
6955
|
// src/widget/advance/table/table-view/controller.ts
|
|
6960
6956
|
var import_react24 = require("react");
|
|
6961
|
-
var
|
|
6957
|
+
var import_utils17 = require("@fctc/interface-logic/utils");
|
|
6962
6958
|
var tableController = ({ data }) => {
|
|
6963
6959
|
const [rows, setRows] = (0, import_react24.useState)(null);
|
|
6964
6960
|
const [columns, setColumns] = (0, import_react24.useState)(null);
|
|
@@ -6996,7 +6992,7 @@ var tableController = ({ data }) => {
|
|
|
6996
6992
|
let cols = [];
|
|
6997
6993
|
try {
|
|
6998
6994
|
cols = mergeFields?.filter((item) => {
|
|
6999
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ?
|
|
6995
|
+
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);
|
|
7000
6996
|
})?.map((field) => {
|
|
7001
6997
|
return {
|
|
7002
6998
|
name: field?.name,
|
|
@@ -7180,7 +7176,7 @@ var tableGroupController = (props) => {
|
|
|
7180
7176
|
|
|
7181
7177
|
// src/widget/advance/search/controller.ts
|
|
7182
7178
|
var import_constants3 = require("@fctc/interface-logic/constants");
|
|
7183
|
-
var
|
|
7179
|
+
var import_utils19 = require("@fctc/interface-logic/utils");
|
|
7184
7180
|
var import_moment2 = __toESM(require_moment());
|
|
7185
7181
|
var import_react26 = require("react");
|
|
7186
7182
|
var searchController = ({
|
|
@@ -7197,9 +7193,9 @@ var searchController = ({
|
|
|
7197
7193
|
const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
|
|
7198
7194
|
const [searchString, setSearchString] = (0, import_react26.useState)("");
|
|
7199
7195
|
const [searchMap, setSearchMap] = (0, import_react26.useState)({});
|
|
7200
|
-
const actionContext = typeof context === "string" ? (0,
|
|
7196
|
+
const actionContext = typeof context === "string" ? (0, import_utils19.evalJSONContext)(context) : context;
|
|
7201
7197
|
const contextSearch = { ...env.context, ...actionContext };
|
|
7202
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0,
|
|
7198
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils19.evalJSONDomain)(domain, contextSearch) : [];
|
|
7203
7199
|
const clearSearch = () => {
|
|
7204
7200
|
setFilterBy([]);
|
|
7205
7201
|
setGroupBy([]);
|
|
@@ -7214,7 +7210,7 @@ var searchController = ({
|
|
|
7214
7210
|
const dataModel = viewData?.models?.[model];
|
|
7215
7211
|
const searchViews = viewData?.views?.search;
|
|
7216
7212
|
const searchByItems = searchViews?.search_by?.filter(
|
|
7217
|
-
(item) => !
|
|
7213
|
+
(item) => !import_utils19.domainHelper.matchDomains(contextSearch, item.invisible)
|
|
7218
7214
|
)?.map(
|
|
7219
7215
|
({ string, name, filter_domain, operator, widget }, index) => ({
|
|
7220
7216
|
dataIndex: index,
|
|
@@ -7227,10 +7223,10 @@ var searchController = ({
|
|
|
7227
7223
|
})
|
|
7228
7224
|
);
|
|
7229
7225
|
const filterByItems = searchViews?.filter_by.filter((item) => {
|
|
7230
|
-
return !
|
|
7226
|
+
return !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible);
|
|
7231
7227
|
})?.map((item) => ({ ...item, active: false }));
|
|
7232
7228
|
const groupByItems = searchViews?.group_by.filter(
|
|
7233
|
-
(item) => !
|
|
7229
|
+
(item) => !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible)
|
|
7234
7230
|
).map((item) => ({
|
|
7235
7231
|
...item,
|
|
7236
7232
|
string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
|
|
@@ -7307,14 +7303,14 @@ var searchController = ({
|
|
|
7307
7303
|
}
|
|
7308
7304
|
let valueDomainItem = value?.value;
|
|
7309
7305
|
if (value?.modelType === "date") {
|
|
7310
|
-
valueDomainItem = (0,
|
|
7306
|
+
valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value);
|
|
7311
7307
|
} else if (value?.modelType === "datetime") {
|
|
7312
7308
|
if (value?.operator === "<=" || value?.operator === "<") {
|
|
7313
|
-
const parsedDate = (0,
|
|
7309
|
+
const parsedDate = (0, import_utils19.validateAndParseDate)(value?.value, true);
|
|
7314
7310
|
const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
|
|
7315
7311
|
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");
|
|
7316
7312
|
} else {
|
|
7317
|
-
valueDomainItem = (0,
|
|
7313
|
+
valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value, true);
|
|
7318
7314
|
}
|
|
7319
7315
|
}
|
|
7320
7316
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
@@ -7393,7 +7389,7 @@ var searchController = ({
|
|
|
7393
7389
|
}, [searchMap]);
|
|
7394
7390
|
const handleAddTagSearch = (tag) => {
|
|
7395
7391
|
const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
|
|
7396
|
-
const domainFormat = new
|
|
7392
|
+
const domainFormat = new import_utils19.domainHelper.Domain(domain2);
|
|
7397
7393
|
if (type === import_constants3.SearchType.FILTER) {
|
|
7398
7394
|
addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
|
|
7399
7395
|
...tag,
|