@fctc/widget-logic 2.5.7 → 2.5.9
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.js +17 -13
- package/dist/hooks.mjs +15 -11
- package/dist/index.js +54 -50
- package/dist/index.mjs +19 -15
- package/dist/widget.js +38 -38
- package/dist/widget.mjs +5 -5
- package/package.json +1 -1
package/dist/hooks.js
CHANGED
|
@@ -484,7 +484,7 @@ var useViewV2 = ({
|
|
|
484
484
|
}) => {
|
|
485
485
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
486
486
|
const viewParams = (0, import_react6.useMemo)(() => {
|
|
487
|
-
if (!model || !views) return void 0;
|
|
487
|
+
if (!model || !views || views.length === 0) return void 0;
|
|
488
488
|
return {
|
|
489
489
|
model,
|
|
490
490
|
views,
|
|
@@ -494,7 +494,7 @@ var useViewV2 = ({
|
|
|
494
494
|
}, [model, views, context, id]);
|
|
495
495
|
const view = useGetView2(
|
|
496
496
|
viewParams || {},
|
|
497
|
-
!!viewParams &&
|
|
497
|
+
!!viewParams && views?.length > 0
|
|
498
498
|
);
|
|
499
499
|
return {
|
|
500
500
|
...view,
|
|
@@ -591,18 +591,22 @@ var AppProvider = ({
|
|
|
591
591
|
{ ...(0, utils_exports.evalJSONContext)(action?.context) }
|
|
592
592
|
]);
|
|
593
593
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
594
|
-
const
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
...Array.isArray(action?.views) ? action
|
|
594
|
+
const memoViews = (0, import_react8.useMemo)(() => {
|
|
595
|
+
if (!action) return [];
|
|
596
|
+
return [
|
|
597
|
+
...Array.isArray(action?.views) ? action.views.map(
|
|
598
598
|
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
599
599
|
) : [],
|
|
600
600
|
[
|
|
601
|
-
Array.isArray(action?.search_view_id) ? action
|
|
601
|
+
Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
|
|
602
602
|
"search"
|
|
603
603
|
]
|
|
604
|
-
]
|
|
605
|
-
|
|
604
|
+
];
|
|
605
|
+
}, [action]);
|
|
606
|
+
const view = useViewV2({
|
|
607
|
+
context: viewContext,
|
|
608
|
+
views: memoViews,
|
|
609
|
+
model: action?.res_model ? String(action.res_model) : void 0
|
|
606
610
|
});
|
|
607
611
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
608
612
|
ReactContext.Provider,
|
|
@@ -727,7 +731,7 @@ var useGetSpecification = ({
|
|
|
727
731
|
|
|
728
732
|
// src/hooks/core/use-list-data.ts
|
|
729
733
|
var import_react14 = require("react");
|
|
730
|
-
var
|
|
734
|
+
var import_utils4 = require("@fctc/interface-logic/utils");
|
|
731
735
|
|
|
732
736
|
// src/hooks/utils/use-click-outside.ts
|
|
733
737
|
var import_react11 = require("react");
|
|
@@ -869,12 +873,12 @@ var useListData = ({
|
|
|
869
873
|
if (!viewData || !action || !context) {
|
|
870
874
|
return null;
|
|
871
875
|
}
|
|
872
|
-
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0,
|
|
876
|
+
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils4.evalJSONDomain)(action?.domain, context) : [];
|
|
873
877
|
const limit = type === "calendar" ? 2500 : pageLimit;
|
|
874
878
|
const offset = debouncedPage * pageLimit;
|
|
875
879
|
const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
|
|
876
880
|
const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
|
|
877
|
-
const sort = order ? order : viewData?.views?.list?.default_order ? (0,
|
|
881
|
+
const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils4.formatSortingString)(viewData?.views?.list?.default_order) : "";
|
|
878
882
|
return {
|
|
879
883
|
model: action.res_model,
|
|
880
884
|
specification,
|
|
@@ -902,7 +906,7 @@ var useListData = ({
|
|
|
902
906
|
const list = useGetListData2(
|
|
903
907
|
listDataProps,
|
|
904
908
|
[listDataProps],
|
|
905
|
-
!!listDataProps && !!specification && !(0,
|
|
909
|
+
!!listDataProps && !!specification && !(0, import_utils4.isObjectEmpty)(specification)
|
|
906
910
|
);
|
|
907
911
|
return {
|
|
908
912
|
...list,
|
package/dist/hooks.mjs
CHANGED
|
@@ -465,7 +465,7 @@ var useViewV2 = ({
|
|
|
465
465
|
}) => {
|
|
466
466
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
467
467
|
const viewParams = useMemo3(() => {
|
|
468
|
-
if (!model || !views) return void 0;
|
|
468
|
+
if (!model || !views || views.length === 0) return void 0;
|
|
469
469
|
return {
|
|
470
470
|
model,
|
|
471
471
|
views,
|
|
@@ -475,7 +475,7 @@ var useViewV2 = ({
|
|
|
475
475
|
}, [model, views, context, id]);
|
|
476
476
|
const view = useGetView2(
|
|
477
477
|
viewParams || {},
|
|
478
|
-
!!viewParams &&
|
|
478
|
+
!!viewParams && views?.length > 0
|
|
479
479
|
);
|
|
480
480
|
return {
|
|
481
481
|
...view,
|
|
@@ -572,18 +572,22 @@ var AppProvider = ({
|
|
|
572
572
|
{ ...(0, utils_exports.evalJSONContext)(action?.context) }
|
|
573
573
|
]);
|
|
574
574
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
575
|
-
const
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
...Array.isArray(action?.views) ? action
|
|
575
|
+
const memoViews = useMemo5(() => {
|
|
576
|
+
if (!action) return [];
|
|
577
|
+
return [
|
|
578
|
+
...Array.isArray(action?.views) ? action.views.map(
|
|
579
579
|
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
580
580
|
) : [],
|
|
581
581
|
[
|
|
582
|
-
Array.isArray(action?.search_view_id) ? action
|
|
582
|
+
Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
|
|
583
583
|
"search"
|
|
584
584
|
]
|
|
585
|
-
]
|
|
586
|
-
|
|
585
|
+
];
|
|
586
|
+
}, [action]);
|
|
587
|
+
const view = useViewV2({
|
|
588
|
+
context: viewContext,
|
|
589
|
+
views: memoViews,
|
|
590
|
+
model: action?.res_model ? String(action.res_model) : void 0
|
|
587
591
|
});
|
|
588
592
|
return /* @__PURE__ */ jsx(
|
|
589
593
|
ReactContext.Provider,
|
|
@@ -711,7 +715,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
|
|
|
711
715
|
import {
|
|
712
716
|
evalJSONDomain,
|
|
713
717
|
formatSortingString,
|
|
714
|
-
isObjectEmpty as
|
|
718
|
+
isObjectEmpty as isObjectEmpty3
|
|
715
719
|
} from "@fctc/interface-logic/utils";
|
|
716
720
|
|
|
717
721
|
// src/hooks/utils/use-click-outside.ts
|
|
@@ -887,7 +891,7 @@ var useListData = ({
|
|
|
887
891
|
const list = useGetListData2(
|
|
888
892
|
listDataProps,
|
|
889
893
|
[listDataProps],
|
|
890
|
-
!!listDataProps && !!specification && !
|
|
894
|
+
!!listDataProps && !!specification && !isObjectEmpty3(specification)
|
|
891
895
|
);
|
|
892
896
|
return {
|
|
893
897
|
...list,
|
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 isObjectEmpty4(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) && isObjectEmpty4(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) && !isObjectEmpty4(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) && !isObjectEmpty4(input), propertyTest = false, properties = [
|
|
2659
2659
|
"sameDay",
|
|
2660
2660
|
"nextDay",
|
|
2661
2661
|
"lastDay",
|
|
@@ -4534,7 +4534,7 @@ var useViewV2 = ({
|
|
|
4534
4534
|
}) => {
|
|
4535
4535
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4536
4536
|
const viewParams = (0, import_react6.useMemo)(() => {
|
|
4537
|
-
if (!model || !views) return void 0;
|
|
4537
|
+
if (!model || !views || views.length === 0) return void 0;
|
|
4538
4538
|
return {
|
|
4539
4539
|
model,
|
|
4540
4540
|
views,
|
|
@@ -4544,7 +4544,7 @@ var useViewV2 = ({
|
|
|
4544
4544
|
}, [model, views, context, id]);
|
|
4545
4545
|
const view = useGetView2(
|
|
4546
4546
|
viewParams || {},
|
|
4547
|
-
!!viewParams &&
|
|
4547
|
+
!!viewParams && views?.length > 0
|
|
4548
4548
|
);
|
|
4549
4549
|
return {
|
|
4550
4550
|
...view,
|
|
@@ -4641,18 +4641,22 @@ var AppProvider = ({
|
|
|
4641
4641
|
{ ...(0, utils_exports.evalJSONContext)(action?.context) }
|
|
4642
4642
|
]);
|
|
4643
4643
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
4644
|
-
const
|
|
4645
|
-
|
|
4646
|
-
|
|
4647
|
-
...Array.isArray(action?.views) ? action
|
|
4644
|
+
const memoViews = (0, import_react8.useMemo)(() => {
|
|
4645
|
+
if (!action) return [];
|
|
4646
|
+
return [
|
|
4647
|
+
...Array.isArray(action?.views) ? action.views.map(
|
|
4648
4648
|
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
4649
4649
|
) : [],
|
|
4650
4650
|
[
|
|
4651
|
-
Array.isArray(action?.search_view_id) ? action
|
|
4651
|
+
Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
|
|
4652
4652
|
"search"
|
|
4653
4653
|
]
|
|
4654
|
-
]
|
|
4655
|
-
|
|
4654
|
+
];
|
|
4655
|
+
}, [action]);
|
|
4656
|
+
const view = useViewV2({
|
|
4657
|
+
context: viewContext,
|
|
4658
|
+
views: memoViews,
|
|
4659
|
+
model: action?.res_model ? String(action.res_model) : void 0
|
|
4656
4660
|
});
|
|
4657
4661
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
4658
4662
|
ReactContext.Provider,
|
|
@@ -4777,7 +4781,7 @@ var useGetSpecification = ({
|
|
|
4777
4781
|
|
|
4778
4782
|
// src/hooks/core/use-list-data.ts
|
|
4779
4783
|
var import_react14 = require("react");
|
|
4780
|
-
var
|
|
4784
|
+
var import_utils4 = require("@fctc/interface-logic/utils");
|
|
4781
4785
|
|
|
4782
4786
|
// src/hooks/utils/use-click-outside.ts
|
|
4783
4787
|
var import_react11 = require("react");
|
|
@@ -4919,12 +4923,12 @@ var useListData = ({
|
|
|
4919
4923
|
if (!viewData || !action || !context) {
|
|
4920
4924
|
return null;
|
|
4921
4925
|
}
|
|
4922
|
-
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0,
|
|
4926
|
+
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils4.evalJSONDomain)(action?.domain, context) : [];
|
|
4923
4927
|
const limit = type === "calendar" ? 2500 : pageLimit;
|
|
4924
4928
|
const offset = debouncedPage * pageLimit;
|
|
4925
4929
|
const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
|
|
4926
4930
|
const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
|
|
4927
|
-
const sort = order ? order : viewData?.views?.list?.default_order ? (0,
|
|
4931
|
+
const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils4.formatSortingString)(viewData?.views?.list?.default_order) : "";
|
|
4928
4932
|
return {
|
|
4929
4933
|
model: action.res_model,
|
|
4930
4934
|
specification,
|
|
@@ -4952,7 +4956,7 @@ var useListData = ({
|
|
|
4952
4956
|
const list = useGetListData2(
|
|
4953
4957
|
listDataProps,
|
|
4954
4958
|
[listDataProps],
|
|
4955
|
-
!!listDataProps && !!specification && !(0,
|
|
4959
|
+
!!listDataProps && !!specification && !(0, import_utils4.isObjectEmpty)(specification)
|
|
4956
4960
|
);
|
|
4957
4961
|
return {
|
|
4958
4962
|
...list,
|
|
@@ -5459,18 +5463,18 @@ var many2oneFieldController = (props) => {
|
|
|
5459
5463
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5460
5464
|
var import_environment2 = require("@fctc/interface-logic/environment");
|
|
5461
5465
|
var import_hooks6 = require("@fctc/interface-logic/hooks");
|
|
5462
|
-
var
|
|
5466
|
+
var import_utils7 = require("@fctc/interface-logic/utils");
|
|
5463
5467
|
var many2oneButtonController = (props) => {
|
|
5464
5468
|
const { domain, methods, relation, service, xNode } = props;
|
|
5465
5469
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5466
5470
|
const env = (0, import_environment2.getEnv)();
|
|
5467
|
-
const domainObject = (0,
|
|
5471
|
+
const domainObject = (0, import_utils7.evalJSONDomain)(domain, methods?.getValues() || {});
|
|
5468
5472
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5469
5473
|
const { data: dataOfSelection } = (0, import_hooks6.useGetSelection)({
|
|
5470
5474
|
data: {
|
|
5471
5475
|
model: relation ?? "",
|
|
5472
5476
|
domain: domainObject,
|
|
5473
|
-
context: { ...env.context, ...(0,
|
|
5477
|
+
context: { ...env.context, ...(0, import_utils7.evalJSONContext)(actionData?.context) }
|
|
5474
5478
|
},
|
|
5475
5479
|
queryKey: [`data_${relation}`, domainObject],
|
|
5476
5480
|
service,
|
|
@@ -5487,7 +5491,7 @@ var many2oneButtonController = (props) => {
|
|
|
5487
5491
|
|
|
5488
5492
|
// src/widget/basic/many2many-field/controller.ts
|
|
5489
5493
|
var import_react17 = require("react");
|
|
5490
|
-
var
|
|
5494
|
+
var import_utils8 = require("@fctc/interface-logic/utils");
|
|
5491
5495
|
var many2manyFieldController = (props) => {
|
|
5492
5496
|
const {
|
|
5493
5497
|
relation,
|
|
@@ -5545,10 +5549,10 @@ var many2manyFieldController = (props) => {
|
|
|
5545
5549
|
return null;
|
|
5546
5550
|
}, [modelInstance]);
|
|
5547
5551
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
5548
|
-
const optionsObject = tab?.options ? (0,
|
|
5552
|
+
const optionsObject = tab?.options ? (0, import_utils8.evalJSONContext)(tab?.options) : (options ? (0, import_utils8.evalJSONContext)(options) : {}) || {};
|
|
5549
5553
|
const fetchData = async () => {
|
|
5550
5554
|
try {
|
|
5551
|
-
const domainParse = typeof domain === "string" ? (0,
|
|
5555
|
+
const domainParse = typeof domain === "string" ? (0, import_utils8.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5552
5556
|
setDomainMany2Many(domainParse);
|
|
5553
5557
|
setPage(0);
|
|
5554
5558
|
} catch (err) {
|
|
@@ -5572,7 +5576,7 @@ var many2manyFieldController = (props) => {
|
|
|
5572
5576
|
context: contextObject,
|
|
5573
5577
|
fields: groupByDomain?.fields,
|
|
5574
5578
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5575
|
-
sort: order ? order : default_order ? (0,
|
|
5579
|
+
sort: order ? order : default_order ? (0, import_utils8.formatSortingString)(default_order) : ""
|
|
5576
5580
|
};
|
|
5577
5581
|
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5578
5582
|
const {
|
|
@@ -5636,7 +5640,7 @@ var many2manyFieldController = (props) => {
|
|
|
5636
5640
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5637
5641
|
var import_react18 = require("react");
|
|
5638
5642
|
var import_constants2 = require("@fctc/interface-logic/constants");
|
|
5639
|
-
var
|
|
5643
|
+
var import_utils9 = require("@fctc/interface-logic/utils");
|
|
5640
5644
|
var many2manyTagsController = (props) => {
|
|
5641
5645
|
const {
|
|
5642
5646
|
relation,
|
|
@@ -5651,9 +5655,9 @@ var many2manyTagsController = (props) => {
|
|
|
5651
5655
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5652
5656
|
const { env } = (0, provider_exports.useEnv)();
|
|
5653
5657
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5654
|
-
const addtionalFields = optionsFields ? (0,
|
|
5658
|
+
const addtionalFields = optionsFields ? (0, import_utils9.evalJSONContext)(optionsFields) : null;
|
|
5655
5659
|
const domainObject = (0, import_react18.useMemo)(
|
|
5656
|
-
() => (0,
|
|
5660
|
+
() => (0, import_utils9.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5657
5661
|
[domain, formValues]
|
|
5658
5662
|
);
|
|
5659
5663
|
const data = {
|
|
@@ -5698,7 +5702,7 @@ var many2manyTagsController = (props) => {
|
|
|
5698
5702
|
|
|
5699
5703
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5700
5704
|
var import_react19 = require("react");
|
|
5701
|
-
var
|
|
5705
|
+
var import_utils10 = require("@fctc/interface-logic/utils");
|
|
5702
5706
|
var durationController = (props) => {
|
|
5703
5707
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5704
5708
|
const specification = {
|
|
@@ -5714,7 +5718,7 @@ var durationController = (props) => {
|
|
|
5714
5718
|
const listDataProps = {
|
|
5715
5719
|
model: relation,
|
|
5716
5720
|
specification,
|
|
5717
|
-
domain: (0,
|
|
5721
|
+
domain: (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5718
5722
|
limit: 10,
|
|
5719
5723
|
offset: 0,
|
|
5720
5724
|
fields: "",
|
|
@@ -5764,10 +5768,10 @@ var durationController = (props) => {
|
|
|
5764
5768
|
};
|
|
5765
5769
|
|
|
5766
5770
|
// src/widget/basic/priority-field/controller.ts
|
|
5767
|
-
var
|
|
5771
|
+
var import_utils11 = require("@fctc/interface-logic/utils");
|
|
5768
5772
|
var priorityFieldController = (props) => {
|
|
5769
5773
|
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
5770
|
-
const _context = { ...(0,
|
|
5774
|
+
const _context = { ...(0, import_utils11.evalJSONContext)(actionData?.context) };
|
|
5771
5775
|
const contextObject = { ...context, ..._context };
|
|
5772
5776
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
5773
5777
|
const { mutateAsync: fetchSave } = useSave3();
|
|
@@ -6735,12 +6739,12 @@ var dateFieldController = (props) => {
|
|
|
6735
6739
|
|
|
6736
6740
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6737
6741
|
var import_react21 = require("react");
|
|
6738
|
-
var
|
|
6742
|
+
var import_utils12 = require("@fctc/interface-logic/utils");
|
|
6739
6743
|
var copyLinkButtonController = (props) => {
|
|
6740
6744
|
const { value, defaultValue } = props;
|
|
6741
6745
|
const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
|
|
6742
6746
|
const handleCopyToClipboard = async (value2) => {
|
|
6743
|
-
await (0,
|
|
6747
|
+
await (0, import_utils12.copyTextToClipboard)(value2);
|
|
6744
6748
|
setIsCopied(true);
|
|
6745
6749
|
setTimeout(() => setIsCopied(false), 2e3);
|
|
6746
6750
|
};
|
|
@@ -6753,12 +6757,12 @@ var copyLinkButtonController = (props) => {
|
|
|
6753
6757
|
};
|
|
6754
6758
|
|
|
6755
6759
|
// src/widget/basic/color-field/color-controller.ts
|
|
6756
|
-
var
|
|
6760
|
+
var import_utils13 = require("@fctc/interface-logic/utils");
|
|
6757
6761
|
var colorFieldController = (props) => {
|
|
6758
6762
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6759
6763
|
const { env } = (0, provider_exports.useEnv)();
|
|
6760
6764
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
6761
|
-
const _context = { ...(0,
|
|
6765
|
+
const _context = { ...(0, import_utils13.evalJSONContext)(actionData?.context) || {} };
|
|
6762
6766
|
const contextObject = { ...env.context, ..._context };
|
|
6763
6767
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6764
6768
|
const { mutate: onSave } = useSave3();
|
|
@@ -6787,7 +6791,7 @@ var colorFieldController = (props) => {
|
|
|
6787
6791
|
|
|
6788
6792
|
// src/widget/basic/binary-field/controller.ts
|
|
6789
6793
|
var import_react22 = require("react");
|
|
6790
|
-
var
|
|
6794
|
+
var import_utils14 = require("@fctc/interface-logic/utils");
|
|
6791
6795
|
var binaryFieldController = (props) => {
|
|
6792
6796
|
const { name, methods, readonly = false, value } = props;
|
|
6793
6797
|
const inputId = (0, import_react22.useId)();
|
|
@@ -6844,11 +6848,11 @@ var binaryFieldController = (props) => {
|
|
|
6844
6848
|
};
|
|
6845
6849
|
const checkIsImageLink = (url) => {
|
|
6846
6850
|
const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
|
|
6847
|
-
return imageExtensions.test(url) || (0,
|
|
6851
|
+
return imageExtensions.test(url) || (0, import_utils14.isBase64Image)(url) || isBlobUrl(url);
|
|
6848
6852
|
};
|
|
6849
6853
|
const getImageBase64WithMimeType = (base64) => {
|
|
6850
6854
|
if (typeof base64 !== "string" || base64.length < 10) return null;
|
|
6851
|
-
if ((0,
|
|
6855
|
+
if ((0, import_utils14.isBase64Image)(base64)) return base64;
|
|
6852
6856
|
let mimeType = null;
|
|
6853
6857
|
if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
|
|
6854
6858
|
else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
|
|
@@ -6951,7 +6955,7 @@ var tableHeadController = (props) => {
|
|
|
6951
6955
|
|
|
6952
6956
|
// src/widget/advance/table/table-view/controller.ts
|
|
6953
6957
|
var import_react24 = require("react");
|
|
6954
|
-
var
|
|
6958
|
+
var import_utils16 = require("@fctc/interface-logic/utils");
|
|
6955
6959
|
var tableController = ({ data }) => {
|
|
6956
6960
|
const [rows, setRows] = (0, import_react24.useState)(null);
|
|
6957
6961
|
const [columns, setColumns] = (0, import_react24.useState)(null);
|
|
@@ -6989,7 +6993,7 @@ var tableController = ({ data }) => {
|
|
|
6989
6993
|
let cols = [];
|
|
6990
6994
|
try {
|
|
6991
6995
|
cols = mergeFields?.filter((item) => {
|
|
6992
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ?
|
|
6996
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils16.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils16.domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
6993
6997
|
})?.map((field) => {
|
|
6994
6998
|
return {
|
|
6995
6999
|
name: field?.name,
|
|
@@ -7173,7 +7177,7 @@ var tableGroupController = (props) => {
|
|
|
7173
7177
|
|
|
7174
7178
|
// src/widget/advance/search/controller.ts
|
|
7175
7179
|
var import_constants3 = require("@fctc/interface-logic/constants");
|
|
7176
|
-
var
|
|
7180
|
+
var import_utils18 = require("@fctc/interface-logic/utils");
|
|
7177
7181
|
var import_moment2 = __toESM(require_moment());
|
|
7178
7182
|
var import_react26 = require("react");
|
|
7179
7183
|
var searchController = ({
|
|
@@ -7190,9 +7194,9 @@ var searchController = ({
|
|
|
7190
7194
|
const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
|
|
7191
7195
|
const [searchString, setSearchString] = (0, import_react26.useState)("");
|
|
7192
7196
|
const [searchMap, setSearchMap] = (0, import_react26.useState)({});
|
|
7193
|
-
const actionContext = typeof context === "string" ? (0,
|
|
7197
|
+
const actionContext = typeof context === "string" ? (0, import_utils18.evalJSONContext)(context) : context;
|
|
7194
7198
|
const contextSearch = { ...env.context, ...actionContext };
|
|
7195
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0,
|
|
7199
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils18.evalJSONDomain)(domain, contextSearch) : [];
|
|
7196
7200
|
const clearSearch = () => {
|
|
7197
7201
|
setFilterBy([]);
|
|
7198
7202
|
setGroupBy([]);
|
|
@@ -7207,7 +7211,7 @@ var searchController = ({
|
|
|
7207
7211
|
const dataModel = viewData?.models?.[model];
|
|
7208
7212
|
const searchViews = viewData?.views?.search;
|
|
7209
7213
|
const searchByItems = searchViews?.search_by?.filter(
|
|
7210
|
-
(item) => !
|
|
7214
|
+
(item) => !import_utils18.domainHelper.matchDomains(contextSearch, item.invisible)
|
|
7211
7215
|
)?.map(
|
|
7212
7216
|
({ string, name, filter_domain, operator, widget }, index) => ({
|
|
7213
7217
|
dataIndex: index,
|
|
@@ -7220,10 +7224,10 @@ var searchController = ({
|
|
|
7220
7224
|
})
|
|
7221
7225
|
);
|
|
7222
7226
|
const filterByItems = searchViews?.filter_by.filter((item) => {
|
|
7223
|
-
return !
|
|
7227
|
+
return !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible);
|
|
7224
7228
|
})?.map((item) => ({ ...item, active: false }));
|
|
7225
7229
|
const groupByItems = searchViews?.group_by.filter(
|
|
7226
|
-
(item) => !
|
|
7230
|
+
(item) => !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible)
|
|
7227
7231
|
).map((item) => ({
|
|
7228
7232
|
...item,
|
|
7229
7233
|
string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
|
|
@@ -7300,14 +7304,14 @@ var searchController = ({
|
|
|
7300
7304
|
}
|
|
7301
7305
|
let valueDomainItem = value?.value;
|
|
7302
7306
|
if (value?.modelType === "date") {
|
|
7303
|
-
valueDomainItem = (0,
|
|
7307
|
+
valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value);
|
|
7304
7308
|
} else if (value?.modelType === "datetime") {
|
|
7305
7309
|
if (value?.operator === "<=" || value?.operator === "<") {
|
|
7306
|
-
const parsedDate = (0,
|
|
7310
|
+
const parsedDate = (0, import_utils18.validateAndParseDate)(value?.value, true);
|
|
7307
7311
|
const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
|
|
7308
7312
|
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");
|
|
7309
7313
|
} else {
|
|
7310
|
-
valueDomainItem = (0,
|
|
7314
|
+
valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value, true);
|
|
7311
7315
|
}
|
|
7312
7316
|
}
|
|
7313
7317
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
@@ -7386,7 +7390,7 @@ var searchController = ({
|
|
|
7386
7390
|
}, [searchMap]);
|
|
7387
7391
|
const handleAddTagSearch = (tag) => {
|
|
7388
7392
|
const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
|
|
7389
|
-
const domainFormat = new
|
|
7393
|
+
const domainFormat = new import_utils18.domainHelper.Domain(domain2);
|
|
7390
7394
|
if (type === import_constants3.SearchType.FILTER) {
|
|
7391
7395
|
addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
|
|
7392
7396
|
...tag,
|
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 isObjectEmpty4(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) && isObjectEmpty4(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) && !isObjectEmpty4(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) && !isObjectEmpty4(input), propertyTest = false, properties = [
|
|
2663
2663
|
"sameDay",
|
|
2664
2664
|
"nextDay",
|
|
2665
2665
|
"lastDay",
|
|
@@ -4609,7 +4609,7 @@ var useViewV2 = ({
|
|
|
4609
4609
|
}) => {
|
|
4610
4610
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4611
4611
|
const viewParams = useMemo3(() => {
|
|
4612
|
-
if (!model || !views) return void 0;
|
|
4612
|
+
if (!model || !views || views.length === 0) return void 0;
|
|
4613
4613
|
return {
|
|
4614
4614
|
model,
|
|
4615
4615
|
views,
|
|
@@ -4619,7 +4619,7 @@ var useViewV2 = ({
|
|
|
4619
4619
|
}, [model, views, context, id]);
|
|
4620
4620
|
const view = useGetView2(
|
|
4621
4621
|
viewParams || {},
|
|
4622
|
-
!!viewParams &&
|
|
4622
|
+
!!viewParams && views?.length > 0
|
|
4623
4623
|
);
|
|
4624
4624
|
return {
|
|
4625
4625
|
...view,
|
|
@@ -4716,18 +4716,22 @@ var AppProvider = ({
|
|
|
4716
4716
|
{ ...(0, utils_exports.evalJSONContext)(action?.context) }
|
|
4717
4717
|
]);
|
|
4718
4718
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
4719
|
-
const
|
|
4720
|
-
|
|
4721
|
-
|
|
4722
|
-
...Array.isArray(action?.views) ? action
|
|
4719
|
+
const memoViews = useMemo5(() => {
|
|
4720
|
+
if (!action) return [];
|
|
4721
|
+
return [
|
|
4722
|
+
...Array.isArray(action?.views) ? action.views.map(
|
|
4723
4723
|
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
4724
4724
|
) : [],
|
|
4725
4725
|
[
|
|
4726
|
-
Array.isArray(action?.search_view_id) ? action
|
|
4726
|
+
Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
|
|
4727
4727
|
"search"
|
|
4728
4728
|
]
|
|
4729
|
-
]
|
|
4730
|
-
|
|
4729
|
+
];
|
|
4730
|
+
}, [action]);
|
|
4731
|
+
const view = useViewV2({
|
|
4732
|
+
context: viewContext,
|
|
4733
|
+
views: memoViews,
|
|
4734
|
+
model: action?.res_model ? String(action.res_model) : void 0
|
|
4731
4735
|
});
|
|
4732
4736
|
return /* @__PURE__ */ jsx(
|
|
4733
4737
|
ReactContext.Provider,
|
|
@@ -4855,7 +4859,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
|
|
|
4855
4859
|
import {
|
|
4856
4860
|
evalJSONDomain,
|
|
4857
4861
|
formatSortingString,
|
|
4858
|
-
isObjectEmpty as
|
|
4862
|
+
isObjectEmpty as isObjectEmpty3
|
|
4859
4863
|
} from "@fctc/interface-logic/utils";
|
|
4860
4864
|
|
|
4861
4865
|
// src/hooks/utils/use-click-outside.ts
|
|
@@ -5031,7 +5035,7 @@ var useListData = ({
|
|
|
5031
5035
|
const list = useGetListData2(
|
|
5032
5036
|
listDataProps,
|
|
5033
5037
|
[listDataProps],
|
|
5034
|
-
!!listDataProps && !!specification && !
|
|
5038
|
+
!!listDataProps && !!specification && !isObjectEmpty3(specification)
|
|
5035
5039
|
);
|
|
5036
5040
|
return {
|
|
5037
5041
|
...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 isObjectEmpty4(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) && isObjectEmpty4(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) && !isObjectEmpty4(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) && !isObjectEmpty4(input), propertyTest = false, properties = [
|
|
2659
2659
|
"sameDay",
|
|
2660
2660
|
"nextDay",
|
|
2661
2661
|
"lastDay",
|
|
@@ -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_utils4 = 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_utils7 = 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_utils7.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_utils7.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_utils8 = require("@fctc/interface-logic/utils");
|
|
4647
4647
|
var many2manyFieldController = (props) => {
|
|
4648
4648
|
const {
|
|
4649
4649
|
relation,
|
|
@@ -4701,10 +4701,10 @@ var many2manyFieldController = (props) => {
|
|
|
4701
4701
|
return null;
|
|
4702
4702
|
}, [modelInstance]);
|
|
4703
4703
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
4704
|
-
const optionsObject = tab?.options ? (0,
|
|
4704
|
+
const optionsObject = tab?.options ? (0, import_utils8.evalJSONContext)(tab?.options) : (options ? (0, import_utils8.evalJSONContext)(options) : {}) || {};
|
|
4705
4705
|
const fetchData = async () => {
|
|
4706
4706
|
try {
|
|
4707
|
-
const domainParse = typeof domain === "string" ? (0,
|
|
4707
|
+
const domainParse = typeof domain === "string" ? (0, import_utils8.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
4708
4708
|
setDomainMany2Many(domainParse);
|
|
4709
4709
|
setPage(0);
|
|
4710
4710
|
} catch (err) {
|
|
@@ -4728,7 +4728,7 @@ var many2manyFieldController = (props) => {
|
|
|
4728
4728
|
context: contextObject,
|
|
4729
4729
|
fields: groupByDomain?.fields,
|
|
4730
4730
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
4731
|
-
sort: order ? order : default_order ? (0,
|
|
4731
|
+
sort: order ? order : default_order ? (0, import_utils8.formatSortingString)(default_order) : ""
|
|
4732
4732
|
};
|
|
4733
4733
|
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
4734
4734
|
const {
|
|
@@ -4792,7 +4792,7 @@ var many2manyFieldController = (props) => {
|
|
|
4792
4792
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
4793
4793
|
var import_react18 = require("react");
|
|
4794
4794
|
var import_constants2 = require("@fctc/interface-logic/constants");
|
|
4795
|
-
var
|
|
4795
|
+
var import_utils9 = require("@fctc/interface-logic/utils");
|
|
4796
4796
|
var many2manyTagsController = (props) => {
|
|
4797
4797
|
const {
|
|
4798
4798
|
relation,
|
|
@@ -4807,9 +4807,9 @@ var many2manyTagsController = (props) => {
|
|
|
4807
4807
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
4808
4808
|
const { env } = (0, provider_exports.useEnv)();
|
|
4809
4809
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
4810
|
-
const addtionalFields = optionsFields ? (0,
|
|
4810
|
+
const addtionalFields = optionsFields ? (0, import_utils9.evalJSONContext)(optionsFields) : null;
|
|
4811
4811
|
const domainObject = (0, import_react18.useMemo)(
|
|
4812
|
-
() => (0,
|
|
4812
|
+
() => (0, import_utils9.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
4813
4813
|
[domain, formValues]
|
|
4814
4814
|
);
|
|
4815
4815
|
const data = {
|
|
@@ -4854,7 +4854,7 @@ var many2manyTagsController = (props) => {
|
|
|
4854
4854
|
|
|
4855
4855
|
// src/widget/basic/status-bar-field/controller.ts
|
|
4856
4856
|
var import_react19 = require("react");
|
|
4857
|
-
var
|
|
4857
|
+
var import_utils10 = require("@fctc/interface-logic/utils");
|
|
4858
4858
|
var durationController = (props) => {
|
|
4859
4859
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
4860
4860
|
const specification = {
|
|
@@ -4870,7 +4870,7 @@ var durationController = (props) => {
|
|
|
4870
4870
|
const listDataProps = {
|
|
4871
4871
|
model: relation,
|
|
4872
4872
|
specification,
|
|
4873
|
-
domain: (0,
|
|
4873
|
+
domain: (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
|
|
4874
4874
|
limit: 10,
|
|
4875
4875
|
offset: 0,
|
|
4876
4876
|
fields: "",
|
|
@@ -4920,10 +4920,10 @@ var durationController = (props) => {
|
|
|
4920
4920
|
};
|
|
4921
4921
|
|
|
4922
4922
|
// src/widget/basic/priority-field/controller.ts
|
|
4923
|
-
var
|
|
4923
|
+
var import_utils11 = require("@fctc/interface-logic/utils");
|
|
4924
4924
|
var priorityFieldController = (props) => {
|
|
4925
4925
|
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
4926
|
-
const _context = { ...(0,
|
|
4926
|
+
const _context = { ...(0, import_utils11.evalJSONContext)(actionData?.context) };
|
|
4927
4927
|
const contextObject = { ...context, ..._context };
|
|
4928
4928
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
4929
4929
|
const { mutateAsync: fetchSave } = useSave3();
|
|
@@ -5891,12 +5891,12 @@ var dateFieldController = (props) => {
|
|
|
5891
5891
|
|
|
5892
5892
|
// src/widget/basic/copy-link-button/controller.ts
|
|
5893
5893
|
var import_react21 = require("react");
|
|
5894
|
-
var
|
|
5894
|
+
var import_utils12 = require("@fctc/interface-logic/utils");
|
|
5895
5895
|
var copyLinkButtonController = (props) => {
|
|
5896
5896
|
const { value, defaultValue } = props;
|
|
5897
5897
|
const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
|
|
5898
5898
|
const handleCopyToClipboard = async (value2) => {
|
|
5899
|
-
await (0,
|
|
5899
|
+
await (0, import_utils12.copyTextToClipboard)(value2);
|
|
5900
5900
|
setIsCopied(true);
|
|
5901
5901
|
setTimeout(() => setIsCopied(false), 2e3);
|
|
5902
5902
|
};
|
|
@@ -5909,12 +5909,12 @@ var copyLinkButtonController = (props) => {
|
|
|
5909
5909
|
};
|
|
5910
5910
|
|
|
5911
5911
|
// src/widget/basic/color-field/color-controller.ts
|
|
5912
|
-
var
|
|
5912
|
+
var import_utils13 = require("@fctc/interface-logic/utils");
|
|
5913
5913
|
var colorFieldController = (props) => {
|
|
5914
5914
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
5915
5915
|
const { env } = (0, provider_exports.useEnv)();
|
|
5916
5916
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
5917
|
-
const _context = { ...(0,
|
|
5917
|
+
const _context = { ...(0, import_utils13.evalJSONContext)(actionData?.context) || {} };
|
|
5918
5918
|
const contextObject = { ...env.context, ..._context };
|
|
5919
5919
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
5920
5920
|
const { mutate: onSave } = useSave3();
|
|
@@ -5943,7 +5943,7 @@ var colorFieldController = (props) => {
|
|
|
5943
5943
|
|
|
5944
5944
|
// src/widget/basic/binary-field/controller.ts
|
|
5945
5945
|
var import_react22 = require("react");
|
|
5946
|
-
var
|
|
5946
|
+
var import_utils14 = require("@fctc/interface-logic/utils");
|
|
5947
5947
|
var binaryFieldController = (props) => {
|
|
5948
5948
|
const { name, methods, readonly = false, value } = props;
|
|
5949
5949
|
const inputId = (0, import_react22.useId)();
|
|
@@ -6000,11 +6000,11 @@ var binaryFieldController = (props) => {
|
|
|
6000
6000
|
};
|
|
6001
6001
|
const checkIsImageLink = (url) => {
|
|
6002
6002
|
const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
|
|
6003
|
-
return imageExtensions.test(url) || (0,
|
|
6003
|
+
return imageExtensions.test(url) || (0, import_utils14.isBase64Image)(url) || isBlobUrl(url);
|
|
6004
6004
|
};
|
|
6005
6005
|
const getImageBase64WithMimeType = (base64) => {
|
|
6006
6006
|
if (typeof base64 !== "string" || base64.length < 10) return null;
|
|
6007
|
-
if ((0,
|
|
6007
|
+
if ((0, import_utils14.isBase64Image)(base64)) return base64;
|
|
6008
6008
|
let mimeType = null;
|
|
6009
6009
|
if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
|
|
6010
6010
|
else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
|
|
@@ -6107,7 +6107,7 @@ var tableHeadController = (props) => {
|
|
|
6107
6107
|
|
|
6108
6108
|
// src/widget/advance/table/table-view/controller.ts
|
|
6109
6109
|
var import_react24 = require("react");
|
|
6110
|
-
var
|
|
6110
|
+
var import_utils16 = require("@fctc/interface-logic/utils");
|
|
6111
6111
|
var tableController = ({ data }) => {
|
|
6112
6112
|
const [rows, setRows] = (0, import_react24.useState)(null);
|
|
6113
6113
|
const [columns, setColumns] = (0, import_react24.useState)(null);
|
|
@@ -6145,7 +6145,7 @@ var tableController = ({ data }) => {
|
|
|
6145
6145
|
let cols = [];
|
|
6146
6146
|
try {
|
|
6147
6147
|
cols = mergeFields?.filter((item) => {
|
|
6148
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ?
|
|
6148
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils16.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils16.domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
6149
6149
|
})?.map((field) => {
|
|
6150
6150
|
return {
|
|
6151
6151
|
name: field?.name,
|
|
@@ -6329,7 +6329,7 @@ var tableGroupController = (props) => {
|
|
|
6329
6329
|
|
|
6330
6330
|
// src/widget/advance/search/controller.ts
|
|
6331
6331
|
var import_constants3 = require("@fctc/interface-logic/constants");
|
|
6332
|
-
var
|
|
6332
|
+
var import_utils18 = require("@fctc/interface-logic/utils");
|
|
6333
6333
|
var import_moment2 = __toESM(require_moment());
|
|
6334
6334
|
var import_react26 = require("react");
|
|
6335
6335
|
var searchController = ({
|
|
@@ -6346,9 +6346,9 @@ var searchController = ({
|
|
|
6346
6346
|
const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
|
|
6347
6347
|
const [searchString, setSearchString] = (0, import_react26.useState)("");
|
|
6348
6348
|
const [searchMap, setSearchMap] = (0, import_react26.useState)({});
|
|
6349
|
-
const actionContext = typeof context === "string" ? (0,
|
|
6349
|
+
const actionContext = typeof context === "string" ? (0, import_utils18.evalJSONContext)(context) : context;
|
|
6350
6350
|
const contextSearch = { ...env.context, ...actionContext };
|
|
6351
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0,
|
|
6351
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils18.evalJSONDomain)(domain, contextSearch) : [];
|
|
6352
6352
|
const clearSearch = () => {
|
|
6353
6353
|
setFilterBy([]);
|
|
6354
6354
|
setGroupBy([]);
|
|
@@ -6363,7 +6363,7 @@ var searchController = ({
|
|
|
6363
6363
|
const dataModel = viewData?.models?.[model];
|
|
6364
6364
|
const searchViews = viewData?.views?.search;
|
|
6365
6365
|
const searchByItems = searchViews?.search_by?.filter(
|
|
6366
|
-
(item) => !
|
|
6366
|
+
(item) => !import_utils18.domainHelper.matchDomains(contextSearch, item.invisible)
|
|
6367
6367
|
)?.map(
|
|
6368
6368
|
({ string, name, filter_domain, operator, widget }, index) => ({
|
|
6369
6369
|
dataIndex: index,
|
|
@@ -6376,10 +6376,10 @@ var searchController = ({
|
|
|
6376
6376
|
})
|
|
6377
6377
|
);
|
|
6378
6378
|
const filterByItems = searchViews?.filter_by.filter((item) => {
|
|
6379
|
-
return !
|
|
6379
|
+
return !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible);
|
|
6380
6380
|
})?.map((item) => ({ ...item, active: false }));
|
|
6381
6381
|
const groupByItems = searchViews?.group_by.filter(
|
|
6382
|
-
(item) => !
|
|
6382
|
+
(item) => !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible)
|
|
6383
6383
|
).map((item) => ({
|
|
6384
6384
|
...item,
|
|
6385
6385
|
string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
|
|
@@ -6456,14 +6456,14 @@ var searchController = ({
|
|
|
6456
6456
|
}
|
|
6457
6457
|
let valueDomainItem = value?.value;
|
|
6458
6458
|
if (value?.modelType === "date") {
|
|
6459
|
-
valueDomainItem = (0,
|
|
6459
|
+
valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value);
|
|
6460
6460
|
} else if (value?.modelType === "datetime") {
|
|
6461
6461
|
if (value?.operator === "<=" || value?.operator === "<") {
|
|
6462
|
-
const parsedDate = (0,
|
|
6462
|
+
const parsedDate = (0, import_utils18.validateAndParseDate)(value?.value, true);
|
|
6463
6463
|
const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
|
|
6464
6464
|
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");
|
|
6465
6465
|
} else {
|
|
6466
|
-
valueDomainItem = (0,
|
|
6466
|
+
valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value, true);
|
|
6467
6467
|
}
|
|
6468
6468
|
}
|
|
6469
6469
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
@@ -6542,7 +6542,7 @@ var searchController = ({
|
|
|
6542
6542
|
}, [searchMap]);
|
|
6543
6543
|
const handleAddTagSearch = (tag) => {
|
|
6544
6544
|
const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
|
|
6545
|
-
const domainFormat = new
|
|
6545
|
+
const domainFormat = new import_utils18.domainHelper.Domain(domain2);
|
|
6546
6546
|
if (type === import_constants3.SearchType.FILTER) {
|
|
6547
6547
|
addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
|
|
6548
6548
|
...tag,
|
package/dist/widget.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 isObjectEmpty4(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) && isObjectEmpty4(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) && !isObjectEmpty4(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) && !isObjectEmpty4(input), propertyTest = false, properties = [
|
|
2663
2663
|
"sameDay",
|
|
2664
2664
|
"nextDay",
|
|
2665
2665
|
"lastDay",
|
|
@@ -4400,7 +4400,7 @@ import { useMemo as useMemo7, useState as useState6 } from "react";
|
|
|
4400
4400
|
import {
|
|
4401
4401
|
evalJSONDomain,
|
|
4402
4402
|
formatSortingString,
|
|
4403
|
-
isObjectEmpty as
|
|
4403
|
+
isObjectEmpty as isObjectEmpty3
|
|
4404
4404
|
} from "@fctc/interface-logic/utils";
|
|
4405
4405
|
|
|
4406
4406
|
// src/hooks/utils/use-click-outside.ts
|