@fctc/widget-logic 2.5.5 → 2.5.6
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 +8 -18
- package/dist/hooks.mjs +6 -16
- package/dist/index.js +45 -55
- package/dist/index.mjs +10 -20
- package/dist/widget.js +38 -38
- package/dist/widget.mjs +5 -5
- package/package.json +1 -1
package/dist/hooks.d.mts
CHANGED
|
@@ -89,11 +89,10 @@ interface UseMenuReturn {
|
|
|
89
89
|
declare const useUser: () => any;
|
|
90
90
|
type useUserType = ReturnType<typeof useUser>;
|
|
91
91
|
|
|
92
|
-
declare const useViewV2: ({
|
|
93
|
-
|
|
92
|
+
declare const useViewV2: ({ id, context, views, model, }: {
|
|
93
|
+
id?: any;
|
|
94
94
|
context: any;
|
|
95
|
-
|
|
96
|
-
views?: any;
|
|
95
|
+
views: any;
|
|
97
96
|
model?: string;
|
|
98
97
|
}) => {
|
|
99
98
|
context: any;
|
package/dist/hooks.d.ts
CHANGED
|
@@ -89,11 +89,10 @@ interface UseMenuReturn {
|
|
|
89
89
|
declare const useUser: () => any;
|
|
90
90
|
type useUserType = ReturnType<typeof useUser>;
|
|
91
91
|
|
|
92
|
-
declare const useViewV2: ({
|
|
93
|
-
|
|
92
|
+
declare const useViewV2: ({ id, context, views, model, }: {
|
|
93
|
+
id?: any;
|
|
94
94
|
context: any;
|
|
95
|
-
|
|
96
|
-
views?: any;
|
|
95
|
+
views: any;
|
|
97
96
|
model?: string;
|
|
98
97
|
}) => {
|
|
99
98
|
context: any;
|
package/dist/hooks.js
CHANGED
|
@@ -477,31 +477,23 @@ var useUser = () => {
|
|
|
477
477
|
// src/hooks/core/use-view-v2.ts
|
|
478
478
|
var import_react6 = require("react");
|
|
479
479
|
var useViewV2 = ({
|
|
480
|
-
|
|
480
|
+
id,
|
|
481
481
|
context,
|
|
482
|
-
aid,
|
|
483
482
|
views,
|
|
484
483
|
model
|
|
485
484
|
}) => {
|
|
486
485
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
487
486
|
const viewParams = (0, import_react6.useMemo)(() => {
|
|
488
|
-
if (!action) {
|
|
489
|
-
return {
|
|
490
|
-
model,
|
|
491
|
-
views,
|
|
492
|
-
context
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
487
|
return {
|
|
496
488
|
model,
|
|
497
489
|
views,
|
|
498
490
|
context,
|
|
499
|
-
id
|
|
491
|
+
id
|
|
500
492
|
};
|
|
501
|
-
}, [
|
|
493
|
+
}, [model]);
|
|
502
494
|
const view = useGetView2(
|
|
503
495
|
viewParams || {},
|
|
504
|
-
!!viewParams
|
|
496
|
+
!!viewParams
|
|
505
497
|
);
|
|
506
498
|
return {
|
|
507
499
|
...view,
|
|
@@ -599,9 +591,7 @@ var AppProvider = ({
|
|
|
599
591
|
]);
|
|
600
592
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
601
593
|
const view = useViewV2({
|
|
602
|
-
action,
|
|
603
594
|
context: viewContext,
|
|
604
|
-
aid,
|
|
605
595
|
views: [
|
|
606
596
|
...Array.isArray(action?.views) ? action?.views.map(
|
|
607
597
|
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
@@ -736,7 +726,7 @@ var useGetSpecification = ({
|
|
|
736
726
|
|
|
737
727
|
// src/hooks/core/use-list-data.ts
|
|
738
728
|
var import_react14 = require("react");
|
|
739
|
-
var
|
|
729
|
+
var import_utils4 = require("@fctc/interface-logic/utils");
|
|
740
730
|
|
|
741
731
|
// src/hooks/utils/use-click-outside.ts
|
|
742
732
|
var import_react11 = require("react");
|
|
@@ -878,12 +868,12 @@ var useListData = ({
|
|
|
878
868
|
if (!viewData || !action || !context) {
|
|
879
869
|
return null;
|
|
880
870
|
}
|
|
881
|
-
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0,
|
|
871
|
+
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils4.evalJSONDomain)(action?.domain, context) : [];
|
|
882
872
|
const limit = type === "calendar" ? 2500 : pageLimit;
|
|
883
873
|
const offset = debouncedPage * pageLimit;
|
|
884
874
|
const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
|
|
885
875
|
const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
|
|
886
|
-
const sort = order ? order : viewData?.views?.list?.default_order ? (0,
|
|
876
|
+
const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils4.formatSortingString)(viewData?.views?.list?.default_order) : "";
|
|
887
877
|
return {
|
|
888
878
|
model: action.res_model,
|
|
889
879
|
specification,
|
|
@@ -911,7 +901,7 @@ var useListData = ({
|
|
|
911
901
|
const list = useGetListData2(
|
|
912
902
|
listDataProps,
|
|
913
903
|
[listDataProps],
|
|
914
|
-
!!listDataProps && !!specification && !(0,
|
|
904
|
+
!!listDataProps && !!specification && !(0, import_utils4.isObjectEmpty)(specification)
|
|
915
905
|
);
|
|
916
906
|
return {
|
|
917
907
|
...list,
|
package/dist/hooks.mjs
CHANGED
|
@@ -458,31 +458,23 @@ var useUser = () => {
|
|
|
458
458
|
// src/hooks/core/use-view-v2.ts
|
|
459
459
|
import { useMemo as useMemo3 } from "react";
|
|
460
460
|
var useViewV2 = ({
|
|
461
|
-
|
|
461
|
+
id,
|
|
462
462
|
context,
|
|
463
|
-
aid,
|
|
464
463
|
views,
|
|
465
464
|
model
|
|
466
465
|
}) => {
|
|
467
466
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
468
467
|
const viewParams = useMemo3(() => {
|
|
469
|
-
if (!action) {
|
|
470
|
-
return {
|
|
471
|
-
model,
|
|
472
|
-
views,
|
|
473
|
-
context
|
|
474
|
-
};
|
|
475
|
-
}
|
|
476
468
|
return {
|
|
477
469
|
model,
|
|
478
470
|
views,
|
|
479
471
|
context,
|
|
480
|
-
id
|
|
472
|
+
id
|
|
481
473
|
};
|
|
482
|
-
}, [
|
|
474
|
+
}, [model]);
|
|
483
475
|
const view = useGetView2(
|
|
484
476
|
viewParams || {},
|
|
485
|
-
!!viewParams
|
|
477
|
+
!!viewParams
|
|
486
478
|
);
|
|
487
479
|
return {
|
|
488
480
|
...view,
|
|
@@ -580,9 +572,7 @@ var AppProvider = ({
|
|
|
580
572
|
]);
|
|
581
573
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
582
574
|
const view = useViewV2({
|
|
583
|
-
action,
|
|
584
575
|
context: viewContext,
|
|
585
|
-
aid,
|
|
586
576
|
views: [
|
|
587
577
|
...Array.isArray(action?.views) ? action?.views.map(
|
|
588
578
|
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
@@ -720,7 +710,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
|
|
|
720
710
|
import {
|
|
721
711
|
evalJSONDomain,
|
|
722
712
|
formatSortingString,
|
|
723
|
-
isObjectEmpty as
|
|
713
|
+
isObjectEmpty as isObjectEmpty3
|
|
724
714
|
} from "@fctc/interface-logic/utils";
|
|
725
715
|
|
|
726
716
|
// src/hooks/utils/use-click-outside.ts
|
|
@@ -896,7 +886,7 @@ var useListData = ({
|
|
|
896
886
|
const list = useGetListData2(
|
|
897
887
|
listDataProps,
|
|
898
888
|
[listDataProps],
|
|
899
|
-
!!listDataProps && !!specification && !
|
|
889
|
+
!!listDataProps && !!specification && !isObjectEmpty3(specification)
|
|
900
890
|
);
|
|
901
891
|
return {
|
|
902
892
|
...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",
|
|
@@ -4527,31 +4527,23 @@ var useUser = () => {
|
|
|
4527
4527
|
// src/hooks/core/use-view-v2.ts
|
|
4528
4528
|
var import_react6 = require("react");
|
|
4529
4529
|
var useViewV2 = ({
|
|
4530
|
-
|
|
4530
|
+
id,
|
|
4531
4531
|
context,
|
|
4532
|
-
aid,
|
|
4533
4532
|
views,
|
|
4534
4533
|
model
|
|
4535
4534
|
}) => {
|
|
4536
4535
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4537
4536
|
const viewParams = (0, import_react6.useMemo)(() => {
|
|
4538
|
-
if (!action) {
|
|
4539
|
-
return {
|
|
4540
|
-
model,
|
|
4541
|
-
views,
|
|
4542
|
-
context
|
|
4543
|
-
};
|
|
4544
|
-
}
|
|
4545
4537
|
return {
|
|
4546
4538
|
model,
|
|
4547
4539
|
views,
|
|
4548
4540
|
context,
|
|
4549
|
-
id
|
|
4541
|
+
id
|
|
4550
4542
|
};
|
|
4551
|
-
}, [
|
|
4543
|
+
}, [model]);
|
|
4552
4544
|
const view = useGetView2(
|
|
4553
4545
|
viewParams || {},
|
|
4554
|
-
!!viewParams
|
|
4546
|
+
!!viewParams
|
|
4555
4547
|
);
|
|
4556
4548
|
return {
|
|
4557
4549
|
...view,
|
|
@@ -4649,9 +4641,7 @@ var AppProvider = ({
|
|
|
4649
4641
|
]);
|
|
4650
4642
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
4651
4643
|
const view = useViewV2({
|
|
4652
|
-
action,
|
|
4653
4644
|
context: viewContext,
|
|
4654
|
-
aid,
|
|
4655
4645
|
views: [
|
|
4656
4646
|
...Array.isArray(action?.views) ? action?.views.map(
|
|
4657
4647
|
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
@@ -4786,7 +4776,7 @@ var useGetSpecification = ({
|
|
|
4786
4776
|
|
|
4787
4777
|
// src/hooks/core/use-list-data.ts
|
|
4788
4778
|
var import_react14 = require("react");
|
|
4789
|
-
var
|
|
4779
|
+
var import_utils4 = require("@fctc/interface-logic/utils");
|
|
4790
4780
|
|
|
4791
4781
|
// src/hooks/utils/use-click-outside.ts
|
|
4792
4782
|
var import_react11 = require("react");
|
|
@@ -4928,12 +4918,12 @@ var useListData = ({
|
|
|
4928
4918
|
if (!viewData || !action || !context) {
|
|
4929
4919
|
return null;
|
|
4930
4920
|
}
|
|
4931
|
-
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0,
|
|
4921
|
+
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils4.evalJSONDomain)(action?.domain, context) : [];
|
|
4932
4922
|
const limit = type === "calendar" ? 2500 : pageLimit;
|
|
4933
4923
|
const offset = debouncedPage * pageLimit;
|
|
4934
4924
|
const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
|
|
4935
4925
|
const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
|
|
4936
|
-
const sort = order ? order : viewData?.views?.list?.default_order ? (0,
|
|
4926
|
+
const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils4.formatSortingString)(viewData?.views?.list?.default_order) : "";
|
|
4937
4927
|
return {
|
|
4938
4928
|
model: action.res_model,
|
|
4939
4929
|
specification,
|
|
@@ -4961,7 +4951,7 @@ var useListData = ({
|
|
|
4961
4951
|
const list = useGetListData2(
|
|
4962
4952
|
listDataProps,
|
|
4963
4953
|
[listDataProps],
|
|
4964
|
-
!!listDataProps && !!specification && !(0,
|
|
4954
|
+
!!listDataProps && !!specification && !(0, import_utils4.isObjectEmpty)(specification)
|
|
4965
4955
|
);
|
|
4966
4956
|
return {
|
|
4967
4957
|
...list,
|
|
@@ -5468,18 +5458,18 @@ var many2oneFieldController = (props) => {
|
|
|
5468
5458
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5469
5459
|
var import_environment2 = require("@fctc/interface-logic/environment");
|
|
5470
5460
|
var import_hooks6 = require("@fctc/interface-logic/hooks");
|
|
5471
|
-
var
|
|
5461
|
+
var import_utils7 = require("@fctc/interface-logic/utils");
|
|
5472
5462
|
var many2oneButtonController = (props) => {
|
|
5473
5463
|
const { domain, methods, relation, service, xNode } = props;
|
|
5474
5464
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5475
5465
|
const env = (0, import_environment2.getEnv)();
|
|
5476
|
-
const domainObject = (0,
|
|
5466
|
+
const domainObject = (0, import_utils7.evalJSONDomain)(domain, methods?.getValues() || {});
|
|
5477
5467
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5478
5468
|
const { data: dataOfSelection } = (0, import_hooks6.useGetSelection)({
|
|
5479
5469
|
data: {
|
|
5480
5470
|
model: relation ?? "",
|
|
5481
5471
|
domain: domainObject,
|
|
5482
|
-
context: { ...env.context, ...(0,
|
|
5472
|
+
context: { ...env.context, ...(0, import_utils7.evalJSONContext)(actionData?.context) }
|
|
5483
5473
|
},
|
|
5484
5474
|
queryKey: [`data_${relation}`, domainObject],
|
|
5485
5475
|
service,
|
|
@@ -5496,7 +5486,7 @@ var many2oneButtonController = (props) => {
|
|
|
5496
5486
|
|
|
5497
5487
|
// src/widget/basic/many2many-field/controller.ts
|
|
5498
5488
|
var import_react17 = require("react");
|
|
5499
|
-
var
|
|
5489
|
+
var import_utils8 = require("@fctc/interface-logic/utils");
|
|
5500
5490
|
var many2manyFieldController = (props) => {
|
|
5501
5491
|
const {
|
|
5502
5492
|
relation,
|
|
@@ -5554,10 +5544,10 @@ var many2manyFieldController = (props) => {
|
|
|
5554
5544
|
return null;
|
|
5555
5545
|
}, [modelInstance]);
|
|
5556
5546
|
const default_order = viewResponse && viewResponse?.views?.list?.default_order;
|
|
5557
|
-
const optionsObject = tab?.options ? (0,
|
|
5547
|
+
const optionsObject = tab?.options ? (0, import_utils8.evalJSONContext)(tab?.options) : (options ? (0, import_utils8.evalJSONContext)(options) : {}) || {};
|
|
5558
5548
|
const fetchData = async () => {
|
|
5559
5549
|
try {
|
|
5560
|
-
const domainParse = typeof domain === "string" ? (0,
|
|
5550
|
+
const domainParse = typeof domain === "string" ? (0, import_utils8.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5561
5551
|
setDomainMany2Many(domainParse);
|
|
5562
5552
|
setPage(0);
|
|
5563
5553
|
} catch (err) {
|
|
@@ -5581,7 +5571,7 @@ var many2manyFieldController = (props) => {
|
|
|
5581
5571
|
context: contextObject,
|
|
5582
5572
|
fields: groupByDomain?.fields,
|
|
5583
5573
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5584
|
-
sort: order ? order : default_order ? (0,
|
|
5574
|
+
sort: order ? order : default_order ? (0, import_utils8.formatSortingString)(default_order) : ""
|
|
5585
5575
|
};
|
|
5586
5576
|
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5587
5577
|
const {
|
|
@@ -5645,7 +5635,7 @@ var many2manyFieldController = (props) => {
|
|
|
5645
5635
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5646
5636
|
var import_react18 = require("react");
|
|
5647
5637
|
var import_constants2 = require("@fctc/interface-logic/constants");
|
|
5648
|
-
var
|
|
5638
|
+
var import_utils9 = require("@fctc/interface-logic/utils");
|
|
5649
5639
|
var many2manyTagsController = (props) => {
|
|
5650
5640
|
const {
|
|
5651
5641
|
relation,
|
|
@@ -5660,9 +5650,9 @@ var many2manyTagsController = (props) => {
|
|
|
5660
5650
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5661
5651
|
const { env } = (0, provider_exports.useEnv)();
|
|
5662
5652
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5663
|
-
const addtionalFields = optionsFields ? (0,
|
|
5653
|
+
const addtionalFields = optionsFields ? (0, import_utils9.evalJSONContext)(optionsFields) : null;
|
|
5664
5654
|
const domainObject = (0, import_react18.useMemo)(
|
|
5665
|
-
() => (0,
|
|
5655
|
+
() => (0, import_utils9.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5666
5656
|
[domain, formValues]
|
|
5667
5657
|
);
|
|
5668
5658
|
const data = {
|
|
@@ -5707,7 +5697,7 @@ var many2manyTagsController = (props) => {
|
|
|
5707
5697
|
|
|
5708
5698
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5709
5699
|
var import_react19 = require("react");
|
|
5710
|
-
var
|
|
5700
|
+
var import_utils10 = require("@fctc/interface-logic/utils");
|
|
5711
5701
|
var durationController = (props) => {
|
|
5712
5702
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5713
5703
|
const specification = {
|
|
@@ -5723,7 +5713,7 @@ var durationController = (props) => {
|
|
|
5723
5713
|
const listDataProps = {
|
|
5724
5714
|
model: relation,
|
|
5725
5715
|
specification,
|
|
5726
|
-
domain: (0,
|
|
5716
|
+
domain: (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5727
5717
|
limit: 10,
|
|
5728
5718
|
offset: 0,
|
|
5729
5719
|
fields: "",
|
|
@@ -5773,10 +5763,10 @@ var durationController = (props) => {
|
|
|
5773
5763
|
};
|
|
5774
5764
|
|
|
5775
5765
|
// src/widget/basic/priority-field/controller.ts
|
|
5776
|
-
var
|
|
5766
|
+
var import_utils11 = require("@fctc/interface-logic/utils");
|
|
5777
5767
|
var priorityFieldController = (props) => {
|
|
5778
5768
|
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
5779
|
-
const _context = { ...(0,
|
|
5769
|
+
const _context = { ...(0, import_utils11.evalJSONContext)(actionData?.context) };
|
|
5780
5770
|
const contextObject = { ...context, ..._context };
|
|
5781
5771
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
5782
5772
|
const { mutateAsync: fetchSave } = useSave3();
|
|
@@ -6744,12 +6734,12 @@ var dateFieldController = (props) => {
|
|
|
6744
6734
|
|
|
6745
6735
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6746
6736
|
var import_react21 = require("react");
|
|
6747
|
-
var
|
|
6737
|
+
var import_utils12 = require("@fctc/interface-logic/utils");
|
|
6748
6738
|
var copyLinkButtonController = (props) => {
|
|
6749
6739
|
const { value, defaultValue } = props;
|
|
6750
6740
|
const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
|
|
6751
6741
|
const handleCopyToClipboard = async (value2) => {
|
|
6752
|
-
await (0,
|
|
6742
|
+
await (0, import_utils12.copyTextToClipboard)(value2);
|
|
6753
6743
|
setIsCopied(true);
|
|
6754
6744
|
setTimeout(() => setIsCopied(false), 2e3);
|
|
6755
6745
|
};
|
|
@@ -6762,12 +6752,12 @@ var copyLinkButtonController = (props) => {
|
|
|
6762
6752
|
};
|
|
6763
6753
|
|
|
6764
6754
|
// src/widget/basic/color-field/color-controller.ts
|
|
6765
|
-
var
|
|
6755
|
+
var import_utils13 = require("@fctc/interface-logic/utils");
|
|
6766
6756
|
var colorFieldController = (props) => {
|
|
6767
6757
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6768
6758
|
const { env } = (0, provider_exports.useEnv)();
|
|
6769
6759
|
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
6770
|
-
const _context = { ...(0,
|
|
6760
|
+
const _context = { ...(0, import_utils13.evalJSONContext)(actionData?.context) || {} };
|
|
6771
6761
|
const contextObject = { ...env.context, ..._context };
|
|
6772
6762
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6773
6763
|
const { mutate: onSave } = useSave3();
|
|
@@ -6796,7 +6786,7 @@ var colorFieldController = (props) => {
|
|
|
6796
6786
|
|
|
6797
6787
|
// src/widget/basic/binary-field/controller.ts
|
|
6798
6788
|
var import_react22 = require("react");
|
|
6799
|
-
var
|
|
6789
|
+
var import_utils14 = require("@fctc/interface-logic/utils");
|
|
6800
6790
|
var binaryFieldController = (props) => {
|
|
6801
6791
|
const { name, methods, readonly = false, value } = props;
|
|
6802
6792
|
const inputId = (0, import_react22.useId)();
|
|
@@ -6853,11 +6843,11 @@ var binaryFieldController = (props) => {
|
|
|
6853
6843
|
};
|
|
6854
6844
|
const checkIsImageLink = (url) => {
|
|
6855
6845
|
const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
|
|
6856
|
-
return imageExtensions.test(url) || (0,
|
|
6846
|
+
return imageExtensions.test(url) || (0, import_utils14.isBase64Image)(url) || isBlobUrl(url);
|
|
6857
6847
|
};
|
|
6858
6848
|
const getImageBase64WithMimeType = (base64) => {
|
|
6859
6849
|
if (typeof base64 !== "string" || base64.length < 10) return null;
|
|
6860
|
-
if ((0,
|
|
6850
|
+
if ((0, import_utils14.isBase64Image)(base64)) return base64;
|
|
6861
6851
|
let mimeType = null;
|
|
6862
6852
|
if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
|
|
6863
6853
|
else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
|
|
@@ -6960,7 +6950,7 @@ var tableHeadController = (props) => {
|
|
|
6960
6950
|
|
|
6961
6951
|
// src/widget/advance/table/table-view/controller.ts
|
|
6962
6952
|
var import_react24 = require("react");
|
|
6963
|
-
var
|
|
6953
|
+
var import_utils16 = require("@fctc/interface-logic/utils");
|
|
6964
6954
|
var tableController = ({ data }) => {
|
|
6965
6955
|
const [rows, setRows] = (0, import_react24.useState)(null);
|
|
6966
6956
|
const [columns, setColumns] = (0, import_react24.useState)(null);
|
|
@@ -6998,7 +6988,7 @@ var tableController = ({ data }) => {
|
|
|
6998
6988
|
let cols = [];
|
|
6999
6989
|
try {
|
|
7000
6990
|
cols = mergeFields?.filter((item) => {
|
|
7001
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ?
|
|
6991
|
+
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);
|
|
7002
6992
|
})?.map((field) => {
|
|
7003
6993
|
return {
|
|
7004
6994
|
name: field?.name,
|
|
@@ -7182,7 +7172,7 @@ var tableGroupController = (props) => {
|
|
|
7182
7172
|
|
|
7183
7173
|
// src/widget/advance/search/controller.ts
|
|
7184
7174
|
var import_constants3 = require("@fctc/interface-logic/constants");
|
|
7185
|
-
var
|
|
7175
|
+
var import_utils18 = require("@fctc/interface-logic/utils");
|
|
7186
7176
|
var import_moment2 = __toESM(require_moment());
|
|
7187
7177
|
var import_react26 = require("react");
|
|
7188
7178
|
var searchController = ({
|
|
@@ -7199,9 +7189,9 @@ var searchController = ({
|
|
|
7199
7189
|
const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
|
|
7200
7190
|
const [searchString, setSearchString] = (0, import_react26.useState)("");
|
|
7201
7191
|
const [searchMap, setSearchMap] = (0, import_react26.useState)({});
|
|
7202
|
-
const actionContext = typeof context === "string" ? (0,
|
|
7192
|
+
const actionContext = typeof context === "string" ? (0, import_utils18.evalJSONContext)(context) : context;
|
|
7203
7193
|
const contextSearch = { ...env.context, ...actionContext };
|
|
7204
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0,
|
|
7194
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils18.evalJSONDomain)(domain, contextSearch) : [];
|
|
7205
7195
|
const clearSearch = () => {
|
|
7206
7196
|
setFilterBy([]);
|
|
7207
7197
|
setGroupBy([]);
|
|
@@ -7216,7 +7206,7 @@ var searchController = ({
|
|
|
7216
7206
|
const dataModel = viewData?.models?.[model];
|
|
7217
7207
|
const searchViews = viewData?.views?.search;
|
|
7218
7208
|
const searchByItems = searchViews?.search_by?.filter(
|
|
7219
|
-
(item) => !
|
|
7209
|
+
(item) => !import_utils18.domainHelper.matchDomains(contextSearch, item.invisible)
|
|
7220
7210
|
)?.map(
|
|
7221
7211
|
({ string, name, filter_domain, operator, widget }, index) => ({
|
|
7222
7212
|
dataIndex: index,
|
|
@@ -7229,10 +7219,10 @@ var searchController = ({
|
|
|
7229
7219
|
})
|
|
7230
7220
|
);
|
|
7231
7221
|
const filterByItems = searchViews?.filter_by.filter((item) => {
|
|
7232
|
-
return !
|
|
7222
|
+
return !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible);
|
|
7233
7223
|
})?.map((item) => ({ ...item, active: false }));
|
|
7234
7224
|
const groupByItems = searchViews?.group_by.filter(
|
|
7235
|
-
(item) => !
|
|
7225
|
+
(item) => !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible)
|
|
7236
7226
|
).map((item) => ({
|
|
7237
7227
|
...item,
|
|
7238
7228
|
string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
|
|
@@ -7309,14 +7299,14 @@ var searchController = ({
|
|
|
7309
7299
|
}
|
|
7310
7300
|
let valueDomainItem = value?.value;
|
|
7311
7301
|
if (value?.modelType === "date") {
|
|
7312
|
-
valueDomainItem = (0,
|
|
7302
|
+
valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value);
|
|
7313
7303
|
} else if (value?.modelType === "datetime") {
|
|
7314
7304
|
if (value?.operator === "<=" || value?.operator === "<") {
|
|
7315
|
-
const parsedDate = (0,
|
|
7305
|
+
const parsedDate = (0, import_utils18.validateAndParseDate)(value?.value, true);
|
|
7316
7306
|
const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
|
|
7317
7307
|
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");
|
|
7318
7308
|
} else {
|
|
7319
|
-
valueDomainItem = (0,
|
|
7309
|
+
valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value, true);
|
|
7320
7310
|
}
|
|
7321
7311
|
}
|
|
7322
7312
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
@@ -7395,7 +7385,7 @@ var searchController = ({
|
|
|
7395
7385
|
}, [searchMap]);
|
|
7396
7386
|
const handleAddTagSearch = (tag) => {
|
|
7397
7387
|
const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
|
|
7398
|
-
const domainFormat = new
|
|
7388
|
+
const domainFormat = new import_utils18.domainHelper.Domain(domain2);
|
|
7399
7389
|
if (type === import_constants3.SearchType.FILTER) {
|
|
7400
7390
|
addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
|
|
7401
7391
|
...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",
|
|
@@ -4602,31 +4602,23 @@ var useUser = () => {
|
|
|
4602
4602
|
// src/hooks/core/use-view-v2.ts
|
|
4603
4603
|
import { useMemo as useMemo3 } from "react";
|
|
4604
4604
|
var useViewV2 = ({
|
|
4605
|
-
|
|
4605
|
+
id,
|
|
4606
4606
|
context,
|
|
4607
|
-
aid,
|
|
4608
4607
|
views,
|
|
4609
4608
|
model
|
|
4610
4609
|
}) => {
|
|
4611
4610
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4612
4611
|
const viewParams = useMemo3(() => {
|
|
4613
|
-
if (!action) {
|
|
4614
|
-
return {
|
|
4615
|
-
model,
|
|
4616
|
-
views,
|
|
4617
|
-
context
|
|
4618
|
-
};
|
|
4619
|
-
}
|
|
4620
4612
|
return {
|
|
4621
4613
|
model,
|
|
4622
4614
|
views,
|
|
4623
4615
|
context,
|
|
4624
|
-
id
|
|
4616
|
+
id
|
|
4625
4617
|
};
|
|
4626
|
-
}, [
|
|
4618
|
+
}, [model]);
|
|
4627
4619
|
const view = useGetView2(
|
|
4628
4620
|
viewParams || {},
|
|
4629
|
-
!!viewParams
|
|
4621
|
+
!!viewParams
|
|
4630
4622
|
);
|
|
4631
4623
|
return {
|
|
4632
4624
|
...view,
|
|
@@ -4724,9 +4716,7 @@ var AppProvider = ({
|
|
|
4724
4716
|
]);
|
|
4725
4717
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
4726
4718
|
const view = useViewV2({
|
|
4727
|
-
action,
|
|
4728
4719
|
context: viewContext,
|
|
4729
|
-
aid,
|
|
4730
4720
|
views: [
|
|
4731
4721
|
...Array.isArray(action?.views) ? action?.views.map(
|
|
4732
4722
|
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
@@ -4864,7 +4854,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
|
|
|
4864
4854
|
import {
|
|
4865
4855
|
evalJSONDomain,
|
|
4866
4856
|
formatSortingString,
|
|
4867
|
-
isObjectEmpty as
|
|
4857
|
+
isObjectEmpty as isObjectEmpty3
|
|
4868
4858
|
} from "@fctc/interface-logic/utils";
|
|
4869
4859
|
|
|
4870
4860
|
// src/hooks/utils/use-click-outside.ts
|
|
@@ -5040,7 +5030,7 @@ var useListData = ({
|
|
|
5040
5030
|
const list = useGetListData2(
|
|
5041
5031
|
listDataProps,
|
|
5042
5032
|
[listDataProps],
|
|
5043
|
-
!!listDataProps && !!specification && !
|
|
5033
|
+
!!listDataProps && !!specification && !isObjectEmpty3(specification)
|
|
5044
5034
|
);
|
|
5045
5035
|
return {
|
|
5046
5036
|
...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
|