@fctc/widget-logic 2.5.7 → 2.5.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/hooks.js CHANGED
@@ -484,7 +484,7 @@ var useViewV2 = ({
484
484
  }) => {
485
485
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
486
486
  const viewParams = (0, import_react6.useMemo)(() => {
487
- if (!model || !views) return void 0;
487
+ if (!model || !views || views.length === 0) return void 0;
488
488
  return {
489
489
  model,
490
490
  views,
@@ -494,7 +494,7 @@ var useViewV2 = ({
494
494
  }, [model, views, context, id]);
495
495
  const view = useGetView2(
496
496
  viewParams || {},
497
- !!viewParams && !(0, utils_exports.isObjectEmpty)(viewParams)
497
+ !!viewParams && views?.length > 0
498
498
  );
499
499
  return {
500
500
  ...view,
@@ -591,18 +591,22 @@ var AppProvider = ({
591
591
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
592
592
  ]);
593
593
  }, [menuContext, action?.context, env?.context?.lang]);
594
- const view = useViewV2({
595
- context: viewContext,
596
- views: [
597
- ...Array.isArray(action?.views) ? action?.views.map(
594
+ const memoViews = (0, import_react8.useMemo)(() => {
595
+ if (!action) return [];
596
+ return [
597
+ ...Array.isArray(action?.views) ? action.views.map(
598
598
  (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
599
599
  ) : [],
600
600
  [
601
- Array.isArray(action?.search_view_id) ? action?.search_view_id[0] : action?.search_view_id,
601
+ Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
602
602
  "search"
603
603
  ]
604
- ],
605
- model: String(action?.res_model)
604
+ ];
605
+ }, [action]);
606
+ const view = useViewV2({
607
+ context: viewContext,
608
+ views: memoViews,
609
+ model: action?.res_model ? String(action.res_model) : void 0
606
610
  });
607
611
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
608
612
  ReactContext.Provider,
@@ -727,7 +731,7 @@ var useGetSpecification = ({
727
731
 
728
732
  // src/hooks/core/use-list-data.ts
729
733
  var import_react14 = require("react");
730
- var import_utils5 = require("@fctc/interface-logic/utils");
734
+ var import_utils4 = require("@fctc/interface-logic/utils");
731
735
 
732
736
  // src/hooks/utils/use-click-outside.ts
733
737
  var import_react11 = require("react");
@@ -869,12 +873,12 @@ var useListData = ({
869
873
  if (!viewData || !action || !context) {
870
874
  return null;
871
875
  }
872
- const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils5.evalJSONDomain)(action?.domain, context) : [];
876
+ const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils4.evalJSONDomain)(action?.domain, context) : [];
873
877
  const limit = type === "calendar" ? 2500 : pageLimit;
874
878
  const offset = debouncedPage * pageLimit;
875
879
  const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
876
880
  const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
877
- const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils5.formatSortingString)(viewData?.views?.list?.default_order) : "";
881
+ const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils4.formatSortingString)(viewData?.views?.list?.default_order) : "";
878
882
  return {
879
883
  model: action.res_model,
880
884
  specification,
@@ -902,7 +906,7 @@ var useListData = ({
902
906
  const list = useGetListData2(
903
907
  listDataProps,
904
908
  [listDataProps],
905
- !!listDataProps && !!specification && !(0, import_utils5.isObjectEmpty)(specification)
909
+ !!listDataProps && !!specification && !(0, import_utils4.isObjectEmpty)(specification)
906
910
  );
907
911
  return {
908
912
  ...list,
package/dist/hooks.mjs CHANGED
@@ -465,7 +465,7 @@ var useViewV2 = ({
465
465
  }) => {
466
466
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
467
467
  const viewParams = useMemo3(() => {
468
- if (!model || !views) return void 0;
468
+ if (!model || !views || views.length === 0) return void 0;
469
469
  return {
470
470
  model,
471
471
  views,
@@ -475,7 +475,7 @@ var useViewV2 = ({
475
475
  }, [model, views, context, id]);
476
476
  const view = useGetView2(
477
477
  viewParams || {},
478
- !!viewParams && !(0, utils_exports.isObjectEmpty)(viewParams)
478
+ !!viewParams && views?.length > 0
479
479
  );
480
480
  return {
481
481
  ...view,
@@ -572,18 +572,22 @@ var AppProvider = ({
572
572
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
573
573
  ]);
574
574
  }, [menuContext, action?.context, env?.context?.lang]);
575
- const view = useViewV2({
576
- context: viewContext,
577
- views: [
578
- ...Array.isArray(action?.views) ? action?.views.map(
575
+ const memoViews = useMemo5(() => {
576
+ if (!action) return [];
577
+ return [
578
+ ...Array.isArray(action?.views) ? action.views.map(
579
579
  (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
580
580
  ) : [],
581
581
  [
582
- Array.isArray(action?.search_view_id) ? action?.search_view_id[0] : action?.search_view_id,
582
+ Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
583
583
  "search"
584
584
  ]
585
- ],
586
- model: String(action?.res_model)
585
+ ];
586
+ }, [action]);
587
+ const view = useViewV2({
588
+ context: viewContext,
589
+ views: memoViews,
590
+ model: action?.res_model ? String(action.res_model) : void 0
587
591
  });
588
592
  return /* @__PURE__ */ jsx(
589
593
  ReactContext.Provider,
@@ -711,7 +715,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
711
715
  import {
712
716
  evalJSONDomain,
713
717
  formatSortingString,
714
- isObjectEmpty as isObjectEmpty4
718
+ isObjectEmpty as isObjectEmpty3
715
719
  } from "@fctc/interface-logic/utils";
716
720
 
717
721
  // src/hooks/utils/use-click-outside.ts
@@ -887,7 +891,7 @@ var useListData = ({
887
891
  const list = useGetListData2(
888
892
  listDataProps,
889
893
  [listDataProps],
890
- !!listDataProps && !!specification && !isObjectEmpty4(specification)
894
+ !!listDataProps && !!specification && !isObjectEmpty3(specification)
891
895
  );
892
896
  return {
893
897
  ...list,
package/dist/index.js CHANGED
@@ -55,7 +55,7 @@ var require_moment = __commonJS({
55
55
  function hasOwnProp(a, b) {
56
56
  return Object.prototype.hasOwnProperty.call(a, b);
57
57
  }
58
- function isObjectEmpty5(obj) {
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) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
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) && !isObjectEmpty5(input), propertyTest = false, properties = [
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) && !isObjectEmpty5(input), propertyTest = false, properties = [
2658
+ var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2659
2659
  "sameDay",
2660
2660
  "nextDay",
2661
2661
  "lastDay",
@@ -4534,7 +4534,7 @@ var useViewV2 = ({
4534
4534
  }) => {
4535
4535
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
4536
4536
  const viewParams = (0, import_react6.useMemo)(() => {
4537
- if (!model || !views) return void 0;
4537
+ if (!model || !views || views.length === 0) return void 0;
4538
4538
  return {
4539
4539
  model,
4540
4540
  views,
@@ -4544,7 +4544,7 @@ var useViewV2 = ({
4544
4544
  }, [model, views, context, id]);
4545
4545
  const view = useGetView2(
4546
4546
  viewParams || {},
4547
- !!viewParams && !(0, utils_exports.isObjectEmpty)(viewParams)
4547
+ !!viewParams && views?.length > 0
4548
4548
  );
4549
4549
  return {
4550
4550
  ...view,
@@ -4641,18 +4641,22 @@ var AppProvider = ({
4641
4641
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
4642
4642
  ]);
4643
4643
  }, [menuContext, action?.context, env?.context?.lang]);
4644
- const view = useViewV2({
4645
- context: viewContext,
4646
- views: [
4647
- ...Array.isArray(action?.views) ? action?.views.map(
4644
+ const memoViews = (0, import_react8.useMemo)(() => {
4645
+ if (!action) return [];
4646
+ return [
4647
+ ...Array.isArray(action?.views) ? action.views.map(
4648
4648
  (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4649
4649
  ) : [],
4650
4650
  [
4651
- Array.isArray(action?.search_view_id) ? action?.search_view_id[0] : action?.search_view_id,
4651
+ Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
4652
4652
  "search"
4653
4653
  ]
4654
- ],
4655
- model: String(action?.res_model)
4654
+ ];
4655
+ }, [action]);
4656
+ const view = useViewV2({
4657
+ context: viewContext,
4658
+ views: memoViews,
4659
+ model: action?.res_model ? String(action.res_model) : void 0
4656
4660
  });
4657
4661
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
4658
4662
  ReactContext.Provider,
@@ -4777,7 +4781,7 @@ var useGetSpecification = ({
4777
4781
 
4778
4782
  // src/hooks/core/use-list-data.ts
4779
4783
  var import_react14 = require("react");
4780
- var import_utils5 = require("@fctc/interface-logic/utils");
4784
+ var import_utils4 = require("@fctc/interface-logic/utils");
4781
4785
 
4782
4786
  // src/hooks/utils/use-click-outside.ts
4783
4787
  var import_react11 = require("react");
@@ -4919,12 +4923,12 @@ var useListData = ({
4919
4923
  if (!viewData || !action || !context) {
4920
4924
  return null;
4921
4925
  }
4922
- const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils5.evalJSONDomain)(action?.domain, context) : [];
4926
+ const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils4.evalJSONDomain)(action?.domain, context) : [];
4923
4927
  const limit = type === "calendar" ? 2500 : pageLimit;
4924
4928
  const offset = debouncedPage * pageLimit;
4925
4929
  const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
4926
4930
  const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
4927
- const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils5.formatSortingString)(viewData?.views?.list?.default_order) : "";
4931
+ const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils4.formatSortingString)(viewData?.views?.list?.default_order) : "";
4928
4932
  return {
4929
4933
  model: action.res_model,
4930
4934
  specification,
@@ -4952,7 +4956,7 @@ var useListData = ({
4952
4956
  const list = useGetListData2(
4953
4957
  listDataProps,
4954
4958
  [listDataProps],
4955
- !!listDataProps && !!specification && !(0, import_utils5.isObjectEmpty)(specification)
4959
+ !!listDataProps && !!specification && !(0, import_utils4.isObjectEmpty)(specification)
4956
4960
  );
4957
4961
  return {
4958
4962
  ...list,
@@ -5459,18 +5463,18 @@ var many2oneFieldController = (props) => {
5459
5463
  // src/widget/basic/many2one-button-field/controller.ts
5460
5464
  var import_environment2 = require("@fctc/interface-logic/environment");
5461
5465
  var import_hooks6 = require("@fctc/interface-logic/hooks");
5462
- var import_utils8 = require("@fctc/interface-logic/utils");
5466
+ var import_utils7 = require("@fctc/interface-logic/utils");
5463
5467
  var many2oneButtonController = (props) => {
5464
5468
  const { domain, methods, relation, service, xNode } = props;
5465
5469
  const actionDataString = sessionStorage.getItem("actionData");
5466
5470
  const env = (0, import_environment2.getEnv)();
5467
- const domainObject = (0, import_utils8.evalJSONDomain)(domain, methods?.getValues() || {});
5471
+ const domainObject = (0, import_utils7.evalJSONDomain)(domain, methods?.getValues() || {});
5468
5472
  const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
5469
5473
  const { data: dataOfSelection } = (0, import_hooks6.useGetSelection)({
5470
5474
  data: {
5471
5475
  model: relation ?? "",
5472
5476
  domain: domainObject,
5473
- context: { ...env.context, ...(0, import_utils8.evalJSONContext)(actionData?.context) }
5477
+ context: { ...env.context, ...(0, import_utils7.evalJSONContext)(actionData?.context) }
5474
5478
  },
5475
5479
  queryKey: [`data_${relation}`, domainObject],
5476
5480
  service,
@@ -5487,7 +5491,7 @@ var many2oneButtonController = (props) => {
5487
5491
 
5488
5492
  // src/widget/basic/many2many-field/controller.ts
5489
5493
  var import_react17 = require("react");
5490
- var import_utils9 = require("@fctc/interface-logic/utils");
5494
+ var import_utils8 = require("@fctc/interface-logic/utils");
5491
5495
  var many2manyFieldController = (props) => {
5492
5496
  const {
5493
5497
  relation,
@@ -5545,10 +5549,10 @@ var many2manyFieldController = (props) => {
5545
5549
  return null;
5546
5550
  }, [modelInstance]);
5547
5551
  const default_order = viewResponse && viewResponse?.views?.list?.default_order;
5548
- const optionsObject = tab?.options ? (0, import_utils9.evalJSONContext)(tab?.options) : (options ? (0, import_utils9.evalJSONContext)(options) : {}) || {};
5552
+ const optionsObject = tab?.options ? (0, import_utils8.evalJSONContext)(tab?.options) : (options ? (0, import_utils8.evalJSONContext)(options) : {}) || {};
5549
5553
  const fetchData = async () => {
5550
5554
  try {
5551
- const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5555
+ const domainParse = typeof domain === "string" ? (0, import_utils8.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5552
5556
  setDomainMany2Many(domainParse);
5553
5557
  setPage(0);
5554
5558
  } catch (err) {
@@ -5572,7 +5576,7 @@ var many2manyFieldController = (props) => {
5572
5576
  context: contextObject,
5573
5577
  fields: groupByDomain?.fields,
5574
5578
  groupby: [groupByDomain?.contexts[0]?.group_by],
5575
- sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
5579
+ sort: order ? order : default_order ? (0, import_utils8.formatSortingString)(default_order) : ""
5576
5580
  };
5577
5581
  const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5578
5582
  const {
@@ -5636,7 +5640,7 @@ var many2manyFieldController = (props) => {
5636
5640
  // src/widget/basic/many2many-tags-field/controller.ts
5637
5641
  var import_react18 = require("react");
5638
5642
  var import_constants2 = require("@fctc/interface-logic/constants");
5639
- var import_utils10 = require("@fctc/interface-logic/utils");
5643
+ var import_utils9 = require("@fctc/interface-logic/utils");
5640
5644
  var many2manyTagsController = (props) => {
5641
5645
  const {
5642
5646
  relation,
@@ -5651,9 +5655,9 @@ var many2manyTagsController = (props) => {
5651
5655
  const isUser = relation === "res.users" || relation === "res.partner";
5652
5656
  const { env } = (0, provider_exports.useEnv)();
5653
5657
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5654
- const addtionalFields = optionsFields ? (0, import_utils10.evalJSONContext)(optionsFields) : null;
5658
+ const addtionalFields = optionsFields ? (0, import_utils9.evalJSONContext)(optionsFields) : null;
5655
5659
  const domainObject = (0, import_react18.useMemo)(
5656
- () => (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
5660
+ () => (0, import_utils9.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
5657
5661
  [domain, formValues]
5658
5662
  );
5659
5663
  const data = {
@@ -5698,7 +5702,7 @@ var many2manyTagsController = (props) => {
5698
5702
 
5699
5703
  // src/widget/basic/status-bar-field/controller.ts
5700
5704
  var import_react19 = require("react");
5701
- var import_utils11 = require("@fctc/interface-logic/utils");
5705
+ var import_utils10 = require("@fctc/interface-logic/utils");
5702
5706
  var durationController = (props) => {
5703
5707
  const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5704
5708
  const specification = {
@@ -5714,7 +5718,7 @@ var durationController = (props) => {
5714
5718
  const listDataProps = {
5715
5719
  model: relation,
5716
5720
  specification,
5717
- domain: (0, import_utils11.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
5721
+ domain: (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
5718
5722
  limit: 10,
5719
5723
  offset: 0,
5720
5724
  fields: "",
@@ -5764,10 +5768,10 @@ var durationController = (props) => {
5764
5768
  };
5765
5769
 
5766
5770
  // src/widget/basic/priority-field/controller.ts
5767
- var import_utils12 = require("@fctc/interface-logic/utils");
5771
+ var import_utils11 = require("@fctc/interface-logic/utils");
5768
5772
  var priorityFieldController = (props) => {
5769
5773
  const { name, model, index, actionData, context, onChange, specification } = props;
5770
- const _context = { ...(0, import_utils12.evalJSONContext)(actionData?.context) };
5774
+ const _context = { ...(0, import_utils11.evalJSONContext)(actionData?.context) };
5771
5775
  const contextObject = { ...context, ..._context };
5772
5776
  const { useSave: useSave3 } = (0, provider_exports.useService)();
5773
5777
  const { mutateAsync: fetchSave } = useSave3();
@@ -6735,12 +6739,12 @@ var dateFieldController = (props) => {
6735
6739
 
6736
6740
  // src/widget/basic/copy-link-button/controller.ts
6737
6741
  var import_react21 = require("react");
6738
- var import_utils13 = require("@fctc/interface-logic/utils");
6742
+ var import_utils12 = require("@fctc/interface-logic/utils");
6739
6743
  var copyLinkButtonController = (props) => {
6740
6744
  const { value, defaultValue } = props;
6741
6745
  const [isCopied, setIsCopied] = (0, import_react21.useState)(false);
6742
6746
  const handleCopyToClipboard = async (value2) => {
6743
- await (0, import_utils13.copyTextToClipboard)(value2);
6747
+ await (0, import_utils12.copyTextToClipboard)(value2);
6744
6748
  setIsCopied(true);
6745
6749
  setTimeout(() => setIsCopied(false), 2e3);
6746
6750
  };
@@ -6753,12 +6757,12 @@ var copyLinkButtonController = (props) => {
6753
6757
  };
6754
6758
 
6755
6759
  // src/widget/basic/color-field/color-controller.ts
6756
- var import_utils14 = require("@fctc/interface-logic/utils");
6760
+ var import_utils13 = require("@fctc/interface-logic/utils");
6757
6761
  var colorFieldController = (props) => {
6758
6762
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
6759
6763
  const { env } = (0, provider_exports.useEnv)();
6760
6764
  const { useSave: useSave3 } = (0, provider_exports.useService)();
6761
- const _context = { ...(0, import_utils14.evalJSONContext)(actionData?.context) || {} };
6765
+ const _context = { ...(0, import_utils13.evalJSONContext)(actionData?.context) || {} };
6762
6766
  const contextObject = { ...env.context, ..._context };
6763
6767
  const idDefault = isForm ? idForm : formValues?.id;
6764
6768
  const { mutate: onSave } = useSave3();
@@ -6787,7 +6791,7 @@ var colorFieldController = (props) => {
6787
6791
 
6788
6792
  // src/widget/basic/binary-field/controller.ts
6789
6793
  var import_react22 = require("react");
6790
- var import_utils15 = require("@fctc/interface-logic/utils");
6794
+ var import_utils14 = require("@fctc/interface-logic/utils");
6791
6795
  var binaryFieldController = (props) => {
6792
6796
  const { name, methods, readonly = false, value } = props;
6793
6797
  const inputId = (0, import_react22.useId)();
@@ -6844,11 +6848,11 @@ var binaryFieldController = (props) => {
6844
6848
  };
6845
6849
  const checkIsImageLink = (url) => {
6846
6850
  const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|svg|tiff|ico)$/i;
6847
- return imageExtensions.test(url) || (0, import_utils15.isBase64Image)(url) || isBlobUrl(url);
6851
+ return imageExtensions.test(url) || (0, import_utils14.isBase64Image)(url) || isBlobUrl(url);
6848
6852
  };
6849
6853
  const getImageBase64WithMimeType = (base64) => {
6850
6854
  if (typeof base64 !== "string" || base64.length < 10) return null;
6851
- if ((0, import_utils15.isBase64Image)(base64)) return base64;
6855
+ if ((0, import_utils14.isBase64Image)(base64)) return base64;
6852
6856
  let mimeType = null;
6853
6857
  if (base64.startsWith("iVBORw0KGgo")) mimeType = "image/png";
6854
6858
  else if (base64.startsWith("/9j/")) mimeType = "image/jpeg";
@@ -6951,7 +6955,7 @@ var tableHeadController = (props) => {
6951
6955
 
6952
6956
  // src/widget/advance/table/table-view/controller.ts
6953
6957
  var import_react24 = require("react");
6954
- var import_utils17 = require("@fctc/interface-logic/utils");
6958
+ var import_utils16 = require("@fctc/interface-logic/utils");
6955
6959
  var tableController = ({ data }) => {
6956
6960
  const [rows, setRows] = (0, import_react24.useState)(null);
6957
6961
  const [columns, setColumns] = (0, import_react24.useState)(null);
@@ -6989,7 +6993,7 @@ var tableController = ({ data }) => {
6989
6993
  let cols = [];
6990
6994
  try {
6991
6995
  cols = mergeFields?.filter((item) => {
6992
- return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
6996
+ return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_utils16.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils16.domainHelper.matchDomains(data.context, item?.invisible) : false);
6993
6997
  })?.map((field) => {
6994
6998
  return {
6995
6999
  name: field?.name,
@@ -7173,7 +7177,7 @@ var tableGroupController = (props) => {
7173
7177
 
7174
7178
  // src/widget/advance/search/controller.ts
7175
7179
  var import_constants3 = require("@fctc/interface-logic/constants");
7176
- var import_utils19 = require("@fctc/interface-logic/utils");
7180
+ var import_utils18 = require("@fctc/interface-logic/utils");
7177
7181
  var import_moment2 = __toESM(require_moment());
7178
7182
  var import_react26 = require("react");
7179
7183
  var searchController = ({
@@ -7190,9 +7194,9 @@ var searchController = ({
7190
7194
  const [selectedTags, setSelectedTags] = (0, import_react26.useState)(null);
7191
7195
  const [searchString, setSearchString] = (0, import_react26.useState)("");
7192
7196
  const [searchMap, setSearchMap] = (0, import_react26.useState)({});
7193
- const actionContext = typeof context === "string" ? (0, import_utils19.evalJSONContext)(context) : context;
7197
+ const actionContext = typeof context === "string" ? (0, import_utils18.evalJSONContext)(context) : context;
7194
7198
  const contextSearch = { ...env.context, ...actionContext };
7195
- const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils19.evalJSONDomain)(domain, contextSearch) : [];
7199
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils18.evalJSONDomain)(domain, contextSearch) : [];
7196
7200
  const clearSearch = () => {
7197
7201
  setFilterBy([]);
7198
7202
  setGroupBy([]);
@@ -7207,7 +7211,7 @@ var searchController = ({
7207
7211
  const dataModel = viewData?.models?.[model];
7208
7212
  const searchViews = viewData?.views?.search;
7209
7213
  const searchByItems = searchViews?.search_by?.filter(
7210
- (item) => !import_utils19.domainHelper.matchDomains(contextSearch, item.invisible)
7214
+ (item) => !import_utils18.domainHelper.matchDomains(contextSearch, item.invisible)
7211
7215
  )?.map(
7212
7216
  ({ string, name, filter_domain, operator, widget }, index) => ({
7213
7217
  dataIndex: index,
@@ -7220,10 +7224,10 @@ var searchController = ({
7220
7224
  })
7221
7225
  );
7222
7226
  const filterByItems = searchViews?.filter_by.filter((item) => {
7223
- return !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible);
7227
+ return !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible);
7224
7228
  })?.map((item) => ({ ...item, active: false }));
7225
7229
  const groupByItems = searchViews?.group_by.filter(
7226
- (item) => !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible)
7230
+ (item) => !import_utils18.domainHelper.matchDomains(contextSearch, item?.invisible)
7227
7231
  ).map((item) => ({
7228
7232
  ...item,
7229
7233
  string: item.string ?? viewData?.models?.[model]?.[item?.name?.split("group_by_")?.[1]]?.string
@@ -7300,14 +7304,14 @@ var searchController = ({
7300
7304
  }
7301
7305
  let valueDomainItem = value?.value;
7302
7306
  if (value?.modelType === "date") {
7303
- valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value);
7307
+ valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value);
7304
7308
  } else if (value?.modelType === "datetime") {
7305
7309
  if (value?.operator === "<=" || value?.operator === "<") {
7306
- const parsedDate = (0, import_utils19.validateAndParseDate)(value?.value, true);
7310
+ const parsedDate = (0, import_utils18.validateAndParseDate)(value?.value, true);
7307
7311
  const hasTime = (0, import_moment2.default)(value?.value).format("HH:mm:ss") !== "00:00:00";
7308
7312
  valueDomainItem = hasTime ? (0, import_moment2.default)(parsedDate).format("YYYY-MM-DD HH:mm:ss") : (0, import_moment2.default)(parsedDate).add(1, "day").subtract(1, "second").format("YYYY-MM-DD HH:mm:ss");
7309
7313
  } else {
7310
- valueDomainItem = (0, import_utils19.validateAndParseDate)(value?.value, true);
7314
+ valueDomainItem = (0, import_utils18.validateAndParseDate)(value?.value, true);
7311
7315
  }
7312
7316
  }
7313
7317
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
@@ -7386,7 +7390,7 @@ var searchController = ({
7386
7390
  }, [searchMap]);
7387
7391
  const handleAddTagSearch = (tag) => {
7388
7392
  const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
7389
- const domainFormat = new import_utils19.domainHelper.Domain(domain2);
7393
+ const domainFormat = new import_utils18.domainHelper.Domain(domain2);
7390
7394
  if (type === import_constants3.SearchType.FILTER) {
7391
7395
  addSearchItems(`${import_constants3.SearchType.FILTER}_${groupIndex}`, {
7392
7396
  ...tag,
package/dist/index.mjs CHANGED
@@ -59,7 +59,7 @@ var require_moment = __commonJS({
59
59
  function hasOwnProp(a, b) {
60
60
  return Object.prototype.hasOwnProperty.call(a, b);
61
61
  }
62
- function isObjectEmpty5(obj) {
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) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
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) && !isObjectEmpty5(input), propertyTest = false, properties = [
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) && !isObjectEmpty5(input), propertyTest = false, properties = [
2662
+ var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2663
2663
  "sameDay",
2664
2664
  "nextDay",
2665
2665
  "lastDay",
@@ -4609,7 +4609,7 @@ var useViewV2 = ({
4609
4609
  }) => {
4610
4610
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
4611
4611
  const viewParams = useMemo3(() => {
4612
- if (!model || !views) return void 0;
4612
+ if (!model || !views || views.length === 0) return void 0;
4613
4613
  return {
4614
4614
  model,
4615
4615
  views,
@@ -4619,7 +4619,7 @@ var useViewV2 = ({
4619
4619
  }, [model, views, context, id]);
4620
4620
  const view = useGetView2(
4621
4621
  viewParams || {},
4622
- !!viewParams && !(0, utils_exports.isObjectEmpty)(viewParams)
4622
+ !!viewParams && views?.length > 0
4623
4623
  );
4624
4624
  return {
4625
4625
  ...view,
@@ -4716,18 +4716,22 @@ var AppProvider = ({
4716
4716
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
4717
4717
  ]);
4718
4718
  }, [menuContext, action?.context, env?.context?.lang]);
4719
- const view = useViewV2({
4720
- context: viewContext,
4721
- views: [
4722
- ...Array.isArray(action?.views) ? action?.views.map(
4719
+ const memoViews = useMemo5(() => {
4720
+ if (!action) return [];
4721
+ return [
4722
+ ...Array.isArray(action?.views) ? action.views.map(
4723
4723
  (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4724
4724
  ) : [],
4725
4725
  [
4726
- Array.isArray(action?.search_view_id) ? action?.search_view_id[0] : action?.search_view_id,
4726
+ Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
4727
4727
  "search"
4728
4728
  ]
4729
- ],
4730
- model: String(action?.res_model)
4729
+ ];
4730
+ }, [action]);
4731
+ const view = useViewV2({
4732
+ context: viewContext,
4733
+ views: memoViews,
4734
+ model: action?.res_model ? String(action.res_model) : void 0
4731
4735
  });
4732
4736
  return /* @__PURE__ */ jsx(
4733
4737
  ReactContext.Provider,
@@ -4855,7 +4859,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
4855
4859
  import {
4856
4860
  evalJSONDomain,
4857
4861
  formatSortingString,
4858
- isObjectEmpty as isObjectEmpty4
4862
+ isObjectEmpty as isObjectEmpty3
4859
4863
  } from "@fctc/interface-logic/utils";
4860
4864
 
4861
4865
  // src/hooks/utils/use-click-outside.ts
@@ -5031,7 +5035,7 @@ var useListData = ({
5031
5035
  const list = useGetListData2(
5032
5036
  listDataProps,
5033
5037
  [listDataProps],
5034
- !!listDataProps && !!specification && !isObjectEmpty4(specification)
5038
+ !!listDataProps && !!specification && !isObjectEmpty3(specification)
5035
5039
  );
5036
5040
  return {
5037
5041
  ...list,
package/dist/widget.js CHANGED
@@ -55,7 +55,7 @@ var require_moment = __commonJS({
55
55
  function hasOwnProp(a, b) {
56
56
  return Object.prototype.hasOwnProperty.call(a, b);
57
57
  }
58
- function isObjectEmpty5(obj) {
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) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
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) && !isObjectEmpty5(input), propertyTest = false, properties = [
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) && !isObjectEmpty5(input), propertyTest = false, properties = [
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 import_utils5 = require("@fctc/interface-logic/utils");
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 import_utils8 = require("@fctc/interface-logic/utils");
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, import_utils8.evalJSONDomain)(domain, methods?.getValues() || {});
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, import_utils8.evalJSONContext)(actionData?.context) }
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 import_utils9 = require("@fctc/interface-logic/utils");
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, import_utils9.evalJSONContext)(tab?.options) : (options ? (0, import_utils9.evalJSONContext)(options) : {}) || {};
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, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
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, import_utils9.formatSortingString)(default_order) : ""
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 import_utils10 = require("@fctc/interface-logic/utils");
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, import_utils10.evalJSONContext)(optionsFields) : null;
4810
+ const addtionalFields = optionsFields ? (0, import_utils9.evalJSONContext)(optionsFields) : null;
4811
4811
  const domainObject = (0, import_react18.useMemo)(
4812
- () => (0, import_utils10.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
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 import_utils11 = require("@fctc/interface-logic/utils");
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, import_utils11.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues))),
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 import_utils12 = require("@fctc/interface-logic/utils");
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, import_utils12.evalJSONContext)(actionData?.context) };
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 import_utils13 = require("@fctc/interface-logic/utils");
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, import_utils13.copyTextToClipboard)(value2);
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 import_utils14 = require("@fctc/interface-logic/utils");
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, import_utils14.evalJSONContext)(actionData?.context) || {} };
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 import_utils15 = require("@fctc/interface-logic/utils");
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, import_utils15.isBase64Image)(url) || isBlobUrl(url);
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, import_utils15.isBase64Image)(base64)) return base64;
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 import_utils17 = require("@fctc/interface-logic/utils");
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 ? import_utils17.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_utils17.domainHelper.matchDomains(data.context, item?.invisible) : false);
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 import_utils19 = require("@fctc/interface-logic/utils");
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, import_utils19.evalJSONContext)(context) : context;
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, import_utils19.evalJSONDomain)(domain, contextSearch) : [];
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) => !import_utils19.domainHelper.matchDomains(contextSearch, item.invisible)
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 !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible);
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) => !import_utils19.domainHelper.matchDomains(contextSearch, item?.invisible)
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, import_utils19.validateAndParseDate)(value?.value);
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, import_utils19.validateAndParseDate)(value?.value, true);
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, import_utils19.validateAndParseDate)(value?.value, true);
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 import_utils19.domainHelper.Domain(domain2);
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 isObjectEmpty5(obj) {
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) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
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) && !isObjectEmpty5(input), propertyTest = false, properties = [
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) && !isObjectEmpty5(input), propertyTest = false, properties = [
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 isObjectEmpty4
4403
+ isObjectEmpty as isObjectEmpty3
4404
4404
  } from "@fctc/interface-logic/utils";
4405
4405
 
4406
4406
  // src/hooks/utils/use-click-outside.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fctc/widget-logic",
3
- "version": "2.5.7",
3
+ "version": "2.5.9",
4
4
  "types": "dist/index.d.ts",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",