@fctc/widget-logic 2.8.2 → 2.8.4

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