@fctc/widget-logic 2.7.1 → 2.7.3

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.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 isObjectEmpty4(obj) {
58
+ function isObjectEmpty5(obj) {
59
59
  if (Object.getOwnPropertyNames) {
60
60
  return Object.getOwnPropertyNames(obj).length === 0;
61
61
  } else {
@@ -2194,7 +2194,7 @@ var require_moment = __commonJS({
2194
2194
  strict = locale2;
2195
2195
  locale2 = void 0;
2196
2196
  }
2197
- if (isObject(input) && isObjectEmpty4(input) || isArray(input) && input.length === 0) {
2197
+ if (isObject(input) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
2198
2198
  input = void 0;
2199
2199
  }
2200
2200
  c._isAMomentObject = true;
@@ -2613,7 +2613,7 @@ var require_moment = __commonJS({
2613
2613
  return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0;
2614
2614
  }
2615
2615
  function isMomentInputObject(input) {
2616
- var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2616
+ var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
2617
2617
  "years",
2618
2618
  "year",
2619
2619
  "y",
@@ -2655,7 +2655,7 @@ var require_moment = __commonJS({
2655
2655
  return arrayTest && dataTypeTest;
2656
2656
  }
2657
2657
  function isCalendarSpec(input) {
2658
- var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2658
+ var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
2659
2659
  "sameDay",
2660
2660
  "nextDay",
2661
2661
  "lastDay",
@@ -4164,7 +4164,7 @@ var import_hooks2 = require("@fctc/interface-logic/hooks");
4164
4164
  var import_react8 = require("react");
4165
4165
 
4166
4166
  // src/hooks/core/use-menu.ts
4167
- var import_react2 = require("react");
4167
+ var import_react3 = require("react");
4168
4168
 
4169
4169
  // src/hooks/core/use-call-action.ts
4170
4170
  var import_react = require("react");
@@ -4212,92 +4212,6 @@ var useCallAction = () => {
4212
4212
  return [actionData, callAction];
4213
4213
  };
4214
4214
 
4215
- // src/hooks/core/use-menu.ts
4216
- var useMenu = ({
4217
- context,
4218
- specification
4219
- }) => {
4220
- const { env } = (0, provider_exports.useEnv)();
4221
- const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
4222
- const [action, callAction] = useCallAction();
4223
- const menuData = useGetMenu2(
4224
- context,
4225
- specification,
4226
- !!context && Object.keys(context).length > 0
4227
- );
4228
- const [menuId, setMenuId] = (0, import_react2.useState)(void 0);
4229
- const configedIconData = (0, import_react2.useMemo)(() => {
4230
- const data = menuData.data;
4231
- return data?.map((item) => {
4232
- return {
4233
- ...item,
4234
- child_id: item?.child_id?.map((child) => {
4235
- return {
4236
- ...child,
4237
- url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
4238
- };
4239
- }) ?? [],
4240
- url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
4241
- };
4242
- });
4243
- }, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
4244
- const handleChangeMenu = async ({ menu }) => {
4245
- const aidMenu = menu?.action?.id?.id;
4246
- if (menu) {
4247
- setMenuId(menu.id?.toString() ?? "");
4248
- }
4249
- if (aidMenu) {
4250
- const actionResponse = await callAction({
4251
- aid: Number(aidMenu)
4252
- });
4253
- return actionResponse;
4254
- }
4255
- };
4256
- return {
4257
- ...menuData,
4258
- data: configedIconData,
4259
- action: { handleChangeMenu },
4260
- state: { menuId, action },
4261
- context,
4262
- isLoading: menuData.isLoading,
4263
- isError: menuData.isError,
4264
- error: menuData.error,
4265
- refetch: menuData.refetch
4266
- };
4267
- };
4268
-
4269
- // src/hooks/core/use-detail.ts
4270
- var import_react_query = require("@tanstack/react-query");
4271
- var import_react3 = require("react");
4272
- var useDetail = (sub) => {
4273
- const { setUserInfo, env } = (0, provider_exports.useEnv)();
4274
- const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
4275
- const fetchGetDetail = useGetDetail2();
4276
- const userDetailQuery = (0, import_react_query.useQuery)({
4277
- queryKey: ["userDetailQuery", sub],
4278
- queryFn: () => {
4279
- return fetchGetDetail.mutateAsync({
4280
- model: "res.users",
4281
- ids: [sub],
4282
- specification: { image_256: {} }
4283
- });
4284
- },
4285
- enabled: !!sub
4286
- });
4287
- (0, import_react3.useEffect)(() => {
4288
- if (userDetailQuery.data) {
4289
- const userPicture = userDetailQuery.data;
4290
- setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
4291
- }
4292
- }, [userDetailQuery.isFetched]);
4293
- return { ...userDetailQuery };
4294
- };
4295
-
4296
- // src/hooks/core/use-profile.ts
4297
- var import_react_query2 = require("@tanstack/react-query");
4298
- var import_react5 = require("react");
4299
- var import_react_i18next = require("react-i18next");
4300
-
4301
4215
  // src/utils.ts
4302
4216
  var utils_exports = {};
4303
4217
  __export(utils_exports, {
@@ -4319,7 +4233,7 @@ var languages = [
4319
4233
  ];
4320
4234
 
4321
4235
  // src/utils/function.ts
4322
- var import_react4 = require("react");
4236
+ var import_react2 = require("react");
4323
4237
  var countSum = (data, field) => {
4324
4238
  if (!data || !field) return 0;
4325
4239
  return data.reduce(
@@ -4440,7 +4354,7 @@ var STORAGES = {
4440
4354
  USER_INFO: "USER_INFO"
4441
4355
  };
4442
4356
  function useAsyncState(initialValue = [true, null]) {
4443
- return (0, import_react4.useReducer)(
4357
+ return (0, import_react2.useReducer)(
4444
4358
  (_state, action = null) => [false, action],
4445
4359
  initialValue
4446
4360
  );
@@ -4458,7 +4372,7 @@ async function setStorageItemAsync(key, value) {
4458
4372
  }
4459
4373
  function useStorageState(key) {
4460
4374
  const [state, setState] = useAsyncState();
4461
- (0, import_react4.useEffect)(() => {
4375
+ (0, import_react2.useEffect)(() => {
4462
4376
  try {
4463
4377
  const storedValue = localStorage.getItem(key);
4464
4378
  setState(storedValue);
@@ -4466,7 +4380,7 @@ function useStorageState(key) {
4466
4380
  console.error("Local storage is unavailable:", e);
4467
4381
  }
4468
4382
  }, [key]);
4469
- const setValue = (0, import_react4.useCallback)(
4383
+ const setValue = (0, import_react2.useCallback)(
4470
4384
  (value) => {
4471
4385
  setState(value);
4472
4386
  setStorageItemAsync(key, value);
@@ -4479,7 +4393,91 @@ function useStorageState(key) {
4479
4393
  // src/utils.ts
4480
4394
  __reExport(utils_exports, require("@fctc/interface-logic/utils"));
4481
4395
 
4396
+ // src/hooks/core/use-menu.ts
4397
+ var useMenu = ({
4398
+ context,
4399
+ specification
4400
+ }) => {
4401
+ const { env } = (0, provider_exports.useEnv)();
4402
+ const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
4403
+ const [action, callAction] = useCallAction();
4404
+ const menuData = useGetMenu2(
4405
+ context,
4406
+ specification,
4407
+ !!context && !(0, utils_exports.isObjectEmpty)(context)
4408
+ );
4409
+ const [menuId, setMenuId] = (0, import_react3.useState)(void 0);
4410
+ const configedIconData = (0, import_react3.useMemo)(() => {
4411
+ const data = menuData.data;
4412
+ return data?.map((item) => {
4413
+ return {
4414
+ ...item,
4415
+ child_id: item?.child_id?.map((child) => {
4416
+ return {
4417
+ ...child,
4418
+ url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
4419
+ };
4420
+ }) ?? [],
4421
+ url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
4422
+ };
4423
+ });
4424
+ }, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
4425
+ const handleChangeMenu = async ({ menu }) => {
4426
+ const aidMenu = menu?.action?.id?.id;
4427
+ if (menu) {
4428
+ setMenuId(menu.id?.toString() ?? "");
4429
+ }
4430
+ if (aidMenu) {
4431
+ const actionResponse = await callAction({
4432
+ aid: Number(aidMenu)
4433
+ });
4434
+ return actionResponse;
4435
+ }
4436
+ };
4437
+ return {
4438
+ ...menuData,
4439
+ data: configedIconData,
4440
+ action: { handleChangeMenu },
4441
+ state: { menuId, action },
4442
+ context,
4443
+ isLoading: menuData.isLoading,
4444
+ isError: menuData.isError,
4445
+ error: menuData.error,
4446
+ refetch: menuData.refetch
4447
+ };
4448
+ };
4449
+
4450
+ // src/hooks/core/use-detail.ts
4451
+ var import_react_query = require("@tanstack/react-query");
4452
+ var import_react4 = require("react");
4453
+ var useDetail = (sub) => {
4454
+ const { setUserInfo, env } = (0, provider_exports.useEnv)();
4455
+ const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
4456
+ const fetchGetDetail = useGetDetail2();
4457
+ const userDetailQuery = (0, import_react_query.useQuery)({
4458
+ queryKey: ["userDetailQuery", sub],
4459
+ queryFn: () => {
4460
+ return fetchGetDetail.mutateAsync({
4461
+ model: "res.users",
4462
+ ids: [sub],
4463
+ specification: { image_256: {} }
4464
+ });
4465
+ },
4466
+ enabled: !!sub
4467
+ });
4468
+ (0, import_react4.useEffect)(() => {
4469
+ if (userDetailQuery.data) {
4470
+ const userPicture = userDetailQuery.data;
4471
+ setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
4472
+ }
4473
+ }, [userDetailQuery.isFetched]);
4474
+ return { ...userDetailQuery };
4475
+ };
4476
+
4482
4477
  // src/hooks/core/use-profile.ts
4478
+ var import_react_query2 = require("@tanstack/react-query");
4479
+ var import_react5 = require("react");
4480
+ var import_react_i18next = require("react-i18next");
4483
4481
  var useProfile = () => {
4484
4482
  const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
4485
4483
  const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
@@ -4527,21 +4525,31 @@ var useUser = () => {
4527
4525
  // src/hooks/core/use-view-v2.ts
4528
4526
  var import_react6 = require("react");
4529
4527
  var useViewV2 = ({
4530
- id,
4528
+ action,
4531
4529
  context,
4532
- views,
4533
- model
4530
+ aid
4534
4531
  }) => {
4535
4532
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
4536
4533
  const viewParams = (0, import_react6.useMemo)(() => {
4537
- if (views || views.length === 0) return void 0;
4534
+ if (!action || !action?.res_model) {
4535
+ return void 0;
4536
+ }
4537
+ const actionResult = action;
4538
4538
  return {
4539
- model,
4540
- views,
4539
+ model: String(actionResult?.res_model),
4540
+ views: [
4541
+ ...Array.isArray(actionResult?.views) ? actionResult?.views.map(
4542
+ (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4543
+ ) : [],
4544
+ [
4545
+ Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
4546
+ "search"
4547
+ ]
4548
+ ],
4541
4549
  context,
4542
- id
4550
+ id: isNaN(Number(aid)) ? action?.id : aid
4543
4551
  };
4544
- }, [views]);
4552
+ }, [action, context, aid]);
4545
4553
  const view = useGetView2({
4546
4554
  viewParams: viewParams || {},
4547
4555
  enabled: !!viewParams
@@ -4641,22 +4649,10 @@ var AppProvider = ({
4641
4649
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
4642
4650
  ]);
4643
4651
  }, [menuContext, action?.context, env?.context?.lang]);
4644
- const memoViews = (0, import_react8.useMemo)(() => {
4645
- if (!action) return [];
4646
- return [
4647
- ...Array.isArray(action?.views) ? action.views.map(
4648
- (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4649
- ) : [],
4650
- [
4651
- Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
4652
- "search"
4653
- ]
4654
- ];
4655
- }, [action]);
4656
4652
  const view = useViewV2({
4653
+ action,
4657
4654
  context: viewContext,
4658
- views: memoViews,
4659
- model: action?.res_model ? String(action.res_model) : void 0
4655
+ aid
4660
4656
  });
4661
4657
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4662
4658
  ReactContext.Provider,
@@ -4781,7 +4777,7 @@ var useGetSpecification = ({
4781
4777
 
4782
4778
  // src/hooks/core/use-list-data.ts
4783
4779
  var import_react14 = require("react");
4784
- var import_utils4 = require("@fctc/interface-logic/utils");
4780
+ var import_utils5 = require("@fctc/interface-logic/utils");
4785
4781
 
4786
4782
  // src/hooks/utils/use-click-outside.ts
4787
4783
  var import_react11 = require("react");
@@ -4923,12 +4919,12 @@ var useListData = ({
4923
4919
  if (!viewData || !action || !context) {
4924
4920
  return null;
4925
4921
  }
4926
- const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils4.evalJSONDomain)(action?.domain, context) : [];
4922
+ const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils5.evalJSONDomain)(action?.domain, context) : [];
4927
4923
  const limit = type === "calendar" ? 2500 : pageLimit;
4928
4924
  const offset = debouncedPage * pageLimit;
4929
4925
  const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
4930
4926
  const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
4931
- const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils4.formatSortingString)(viewData?.views?.list?.default_order) : "";
4927
+ const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils5.formatSortingString)(viewData?.views?.list?.default_order) : "";
4932
4928
  return {
4933
4929
  model: action.res_model,
4934
4930
  specification,
@@ -4956,7 +4952,7 @@ var useListData = ({
4956
4952
  const list = useGetListData2(
4957
4953
  listDataProps,
4958
4954
  [listDataProps],
4959
- !!listDataProps && !!specification && !(0, import_utils4.isObjectEmpty)(specification)
4955
+ !!listDataProps && !!specification && !(0, import_utils5.isObjectEmpty)(specification)
4960
4956
  );
4961
4957
  return {
4962
4958
  ...list,
@@ -5463,18 +5459,18 @@ var many2oneFieldController = (props) => {
5463
5459
  // src/widget/basic/many2one-button-field/controller.ts
5464
5460
  var import_environment2 = require("@fctc/interface-logic/environment");
5465
5461
  var import_hooks6 = require("@fctc/interface-logic/hooks");
5466
- var import_utils7 = require("@fctc/interface-logic/utils");
5462
+ var import_utils8 = require("@fctc/interface-logic/utils");
5467
5463
  var many2oneButtonController = (props) => {
5468
5464
  const { domain, methods, relation, service, xNode } = props;
5469
5465
  const actionDataString = sessionStorage.getItem("actionData");
5470
5466
  const env = (0, import_environment2.getEnv)();
5471
- const domainObject = (0, import_utils7.evalJSONDomain)(domain, methods?.getValues() || {});
5467
+ const domainObject = (0, import_utils8.evalJSONDomain)(domain, methods?.getValues() || {});
5472
5468
  const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
5473
5469
  const { data: dataOfSelection } = (0, import_hooks6.useGetSelection)({
5474
5470
  data: {
5475
5471
  model: relation ?? "",
5476
5472
  domain: domainObject,
5477
- context: { ...env.context, ...(0, import_utils7.evalJSONContext)(actionData?.context) }
5473
+ context: { ...env.context, ...(0, import_utils8.evalJSONContext)(actionData?.context) }
5478
5474
  },
5479
5475
  queryKey: [`data_${relation}`, domainObject],
5480
5476
  service,
@@ -5491,7 +5487,7 @@ var many2oneButtonController = (props) => {
5491
5487
 
5492
5488
  // src/widget/basic/many2many-field/controller.ts
5493
5489
  var import_react17 = require("react");
5494
- var import_utils8 = require("@fctc/interface-logic/utils");
5490
+ var import_utils9 = require("@fctc/interface-logic/utils");
5495
5491
  var many2manyFieldController = (props) => {
5496
5492
  const {
5497
5493
  relation,
@@ -5501,8 +5497,7 @@ var many2manyFieldController = (props) => {
5501
5497
  tab,
5502
5498
  setSelectedRowKeys: setSelectedRowKeys2,
5503
5499
  groupByDomain,
5504
- enabled: enabledCallAPI,
5505
- actionData
5500
+ enabled: enabledCallAPI
5506
5501
  } = props;
5507
5502
  const { env } = (0, provider_exports.useEnv)();
5508
5503
  const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView: useGetFormView2 } = (0, provider_exports.useService)();
@@ -5526,36 +5521,19 @@ var many2manyFieldController = (props) => {
5526
5521
  viewParams,
5527
5522
  enabled: enabledCallAPI
5528
5523
  });
5529
- const baseModel = (0, import_react17.useMemo)(
5530
- () => ({
5531
- name: String(relation),
5532
- view: viewResponse || {},
5533
- actContext: contextObject,
5534
- fields: [
5535
- ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5536
- ...tab?.fields ? tab.fields : []
5537
- ]
5538
- }),
5539
- [relation, viewResponse]
5540
- );
5541
- const initModel = (0, import_hooks2.useModel)();
5542
- const modelInstance = (0, import_react17.useMemo)(() => {
5543
- if (viewResponse) {
5544
- return initModel.initModel(baseModel);
5545
- }
5546
- return null;
5547
- }, [baseModel, viewResponse]);
5548
- const specification = (0, import_react17.useMemo)(() => {
5549
- if (modelInstance) {
5550
- return modelInstance.getSpecification();
5551
- }
5552
- return null;
5553
- }, [modelInstance]);
5524
+ const { specification } = useGetSpecification({
5525
+ model: String(relation),
5526
+ viewData: viewResponse || {},
5527
+ fields: [
5528
+ ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5529
+ ...tab?.fields ? tab.fields : []
5530
+ ]
5531
+ });
5554
5532
  const default_order = viewResponse && viewResponse?.views?.list?.default_order;
5555
- const optionsObject = tab?.options ? (0, import_utils8.evalJSONContext)(tab?.options) : (options ? (0, import_utils8.evalJSONContext)(options) : {}) || {};
5533
+ const optionsObject = tab?.options ? (0, import_utils9.evalJSONContext)(tab?.options) : (options ? (0, import_utils9.evalJSONContext)(options) : {}) || {};
5556
5534
  const fetchData = async () => {
5557
5535
  try {
5558
- const domainParse = typeof domain === "string" ? (0, import_utils8.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5536
+ const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5559
5537
  setDomainMany2Many(domainParse);
5560
5538
  setPage(0);
5561
5539
  } catch (err) {
@@ -5579,7 +5557,7 @@ var many2manyFieldController = (props) => {
5579
5557
  context: contextObject,
5580
5558
  fields: groupByDomain?.fields,
5581
5559
  groupby: [groupByDomain?.contexts[0]?.group_by],
5582
- sort: order ? order : default_order ? (0, import_utils8.formatSortingString)(default_order) : ""
5560
+ sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
5583
5561
  };
5584
5562
  const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5585
5563
  const {
@@ -5643,7 +5621,7 @@ var many2manyFieldController = (props) => {
5643
5621
  // src/widget/basic/many2many-tags-field/controller.ts
5644
5622
  var import_react18 = require("react");
5645
5623
  var import_constants2 = require("@fctc/interface-logic/constants");
5646
- var import_utils9 = require("@fctc/interface-logic/utils");
5624
+ var import_utils10 = require("@fctc/interface-logic/utils");
5647
5625
  var many2manyTagsController = (props) => {
5648
5626
  const {
5649
5627
  relation,
@@ -5658,9 +5636,9 @@ var many2manyTagsController = (props) => {
5658
5636
  const isUser = relation === "res.users" || relation === "res.partner";
5659
5637
  const { env } = (0, provider_exports.useEnv)();
5660
5638
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5661
- const addtionalFields = optionsFields ? (0, import_utils9.evalJSONContext)(optionsFields) : null;
5639
+ const addtionalFields = optionsFields ? (0, import_utils10.evalJSONContext)(optionsFields) : null;
5662
5640
  const domainObject = (0, import_react18.useMemo)(
5663
- () => (0, import_utils9.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
5641
+ () => (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
5664
5642
  [domain, formValues]
5665
5643
  );
5666
5644
  const data = {
@@ -5705,7 +5683,7 @@ var many2manyTagsController = (props) => {
5705
5683
 
5706
5684
  // src/widget/basic/status-bar-field/controller.ts
5707
5685
  var import_react19 = require("react");
5708
- var import_utils10 = require("@fctc/interface-logic/utils");
5686
+ var import_utils11 = require("@fctc/interface-logic/utils");
5709
5687
  var durationController = (props) => {
5710
5688
  const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5711
5689
  const specification = {
@@ -5721,7 +5699,7 @@ var durationController = (props) => {
5721
5699
  const listDataProps = {
5722
5700
  model: relation,
5723
5701
  specification,
5724
- domain: (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
5702
+ domain: (0, import_utils11.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
5725
5703
  limit: 10,
5726
5704
  offset: 0,
5727
5705
  fields: "",
@@ -5771,10 +5749,10 @@ var durationController = (props) => {
5771
5749
  };
5772
5750
 
5773
5751
  // src/widget/basic/priority-field/controller.ts
5774
- var import_utils11 = require("@fctc/interface-logic/utils");
5752
+ var import_utils12 = require("@fctc/interface-logic/utils");
5775
5753
  var priorityFieldController = (props) => {
5776
5754
  const { name, model, index, actionData, context, onChange, specification } = props;
5777
- const _context = { ...(0, import_utils11.evalJSONContext)(actionData?.context) };
5755
+ const _context = { ...(0, import_utils12.evalJSONContext)(actionData?.context) };
5778
5756
  const contextObject = { ...context, ..._context };
5779
5757
  const { useSave: useSave3 } = (0, provider_exports.useService)();
5780
5758
  const { mutateAsync: fetchSave } = useSave3();
@@ -6742,12 +6720,12 @@ var dateFieldController = (props) => {
6742
6720
 
6743
6721
  // src/widget/basic/copy-link-button/controller.ts
6744
6722
  var import_react21 = require("react");
6745
- var import_utils12 = require("@fctc/interface-logic/utils");
6723
+ var import_utils13 = require("@fctc/interface-logic/utils");
6746
6724
  var copyLinkButtonController = (props) => {
6747
6725
  const { value, defaultValue } = props;
6748
6726
  const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
6749
6727
  const handleCopyToClipboard = async (value2) => {
6750
- await (0, import_utils12.copyTextToClipboard)(value2);
6728
+ await (0, import_utils13.copyTextToClipboard)(value2);
6751
6729
  setIsCopied(true);
6752
6730
  setTimeout(() => setIsCopied(false), 2e3);
6753
6731
  };
@@ -6760,12 +6738,12 @@ var copyLinkButtonController = (props) => {
6760
6738
  };
6761
6739
 
6762
6740
  // src/widget/basic/color-field/color-controller.ts
6763
- var import_utils13 = require("@fctc/interface-logic/utils");
6741
+ var import_utils14 = require("@fctc/interface-logic/utils");
6764
6742
  var colorFieldController = (props) => {
6765
6743
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
6766
6744
  const { env } = (0, provider_exports.useEnv)();
6767
6745
  const { useSave: useSave3 } = (0, provider_exports.useService)();
6768
- const _context = { ...(0, import_utils13.evalJSONContext)(actionData?.context) || {} };
6746
+ const _context = { ...(0, import_utils14.evalJSONContext)(actionData?.context) || {} };
6769
6747
  const contextObject = { ...env.context, ..._context };
6770
6748
  const idDefault = isForm ? idForm : formValues?.id;
6771
6749
  const { mutate: onSave } = useSave3();
@@ -6794,7 +6772,7 @@ var colorFieldController = (props) => {
6794
6772
 
6795
6773
  // src/widget/basic/binary-field/controller.ts
6796
6774
  var import_react22 = require("react");
6797
- var import_utils14 = require("@fctc/interface-logic/utils");
6775
+ var import_utils15 = require("@fctc/interface-logic/utils");
6798
6776
  var binaryFieldController = (props) => {
6799
6777
  const { name, methods, readonly = false, value } = props;
6800
6778
  const inputId = (0, import_react22.useId)();
@@ -6851,11 +6829,11 @@ var binaryFieldController = (props) => {
6851
6829
  };
6852
6830
  const checkIsImageLink = (url) => {
6853
6831
  const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
6854
- return imageExtensions.test(url) || (0, import_utils14.isBase64Image)(url) || isBlobUrl(url);
6832
+ return imageExtensions.test(url) || (0, import_utils15.isBase64Image)(url) || isBlobUrl(url);
6855
6833
  };
6856
6834
  const getImageBase64WithMimeType = (base64) => {
6857
6835
  if (typeof base64 !== "string" || base64.length < 10) return null;
6858
- if ((0, import_utils14.isBase64Image)(base64)) return base64;
6836
+ if ((0, import_utils15.isBase64Image)(base64)) return base64;
6859
6837
  let mimeType = null;
6860
6838
  if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
6861
6839
  else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
@@ -6958,7 +6936,7 @@ var tableHeadController = (props) => {
6958
6936
 
6959
6937
  // src/widget/advance/table/table-view/controller.ts
6960
6938
  var import_react24 = require("react");
6961
- var import_utils16 = require("@fctc/interface-logic/utils");
6939
+ var import_utils17 = require("@fctc/interface-logic/utils");
6962
6940
  var tableController = ({ data }) => {
6963
6941
  const [rows, setRows] = (0, import_react24.useState)(null);
6964
6942
  const [columns, setColumns] = (0, import_react24.useState)(null);
@@ -6996,7 +6974,7 @@ var tableController = ({ data }) => {
6996
6974
  let cols = [];
6997
6975
  try {
6998
6976
  cols = mergeFields?.filter((item) => {
6999
- 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);
6977
+ return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
7000
6978
  })?.map((field) => {
7001
6979
  return {
7002
6980
  name: field?.name,
@@ -7180,7 +7158,7 @@ var tableGroupController = (props) => {
7180
7158
 
7181
7159
  // src/widget/advance/search/controller.ts
7182
7160
  var import_constants3 = require("@fctc/interface-logic/constants");
7183
- var import_utils18 = require("@fctc/interface-logic/utils");
7161
+ var import_utils19 = require("@fctc/interface-logic/utils");
7184
7162
  var import_moment2 = __toESM(require_moment());
7185
7163
  var import_react26 = require("react");
7186
7164
  var searchController = ({
@@ -7197,9 +7175,9 @@ var searchController = ({
7197
7175
  const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
7198
7176
  const [searchString, setSearchString] = (0, import_react26.useState)("");
7199
7177
  const [searchMap, setSearchMap] = (0, import_react26.useState)({});
7200
- const actionContext = typeof context === "string" ? (0, import_utils18.evalJSONContext)(context) : context;
7178
+ const actionContext = typeof context === "string" ? (0, import_utils19.evalJSONContext)(context) : context;
7201
7179
  const contextSearch = { ...env.context, ...actionContext };
7202
- const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils18.evalJSONDomain)(domain, contextSearch) : [];
7180
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils19.evalJSONDomain)(domain, contextSearch) : [];
7203
7181
  const clearSearch = () => {
7204
7182
  setFilterBy([]);
7205
7183
  setGroupBy([]);
@@ -7214,7 +7192,7 @@ var searchController = ({
7214
7192
  const dataModel = viewData?.models?.[model];
7215
7193
  const searchViews = viewData?.views?.search;
7216
7194
  const searchByItems = searchViews?.search_by?.filter(
7217
- (item) => !import_utils18.domainHelper.matchDomains(contextSearch, item.invisible)
7195
+ (item) => !import_utils19.domainHelper.matchDomains(contextSearch, item.invisible)
7218
7196
  )?.map(
7219
7197
  ({ string, name, filter_domain, operator, widget }, index) => ({
7220
7198
  dataIndex: index,
@@ -7227,10 +7205,10 @@ var searchController = ({
7227
7205
  })
7228
7206
  );
7229
7207
  const filterByItems = searchViews?.filter_by.filter((item) => {
7230
- return !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible);
7208
+ return !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible);
7231
7209
  })?.map((item) => ({ ...item, active: false }));
7232
7210
  const groupByItems = searchViews?.group_by.filter(
7233
- (item) => !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible)
7211
+ (item) => !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible)
7234
7212
  ).map((item) => ({
7235
7213
  ...item,
7236
7214
  string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
@@ -7307,14 +7285,14 @@ var searchController = ({
7307
7285
  }
7308
7286
  let valueDomainItem = value?.value;
7309
7287
  if (value?.modelType === "date") {
7310
- valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value);
7288
+ valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value);
7311
7289
  } else if (value?.modelType === "datetime") {
7312
7290
  if (value?.operator === "<=" || value?.operator === "<") {
7313
- const parsedDate = (0, import_utils18.validateAndParseDate)(value?.value, true);
7291
+ const parsedDate = (0, import_utils19.validateAndParseDate)(value?.value, true);
7314
7292
  const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
7315
7293
  valueDomainItem = hasTime ? (0, import_moment2.default)(parsedDate).format("YYYY-MM-DD HH:mm:ss") : (0, import_moment2.default)(parsedDate).add(1, "day").subtract(1, "second").format("YYYY-MM-DD HH:mm:ss");
7316
7294
  } else {
7317
- valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value, true);
7295
+ valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value, true);
7318
7296
  }
7319
7297
  }
7320
7298
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
@@ -7393,7 +7371,7 @@ var searchController = ({
7393
7371
  }, [searchMap]);
7394
7372
  const handleAddTagSearch = (tag) => {
7395
7373
  const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
7396
- const domainFormat = new import_utils18.domainHelper.Domain(domain2);
7374
+ const domainFormat = new import_utils19.domainHelper.Domain(domain2);
7397
7375
  if (type === import_constants3.SearchType.FILTER) {
7398
7376
  addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
7399
7377
  ...tag,