@fctc/widget-logic 3.0.3 → 3.0.5

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
@@ -5517,17 +5517,13 @@ var many2manyFieldController = (props) => {
5517
5517
  domain,
5518
5518
  context,
5519
5519
  options,
5520
- tab,
5521
- setSelectedRowKeys,
5522
- groupByDomain,
5523
- enabled: enabledCallAPI
5520
+ enabled: enabledCallAPI,
5521
+ service
5524
5522
  } = props;
5525
5523
  const { env } = (0, provider_exports.useEnv)();
5526
- const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView: useGetFormView2 } = (0, provider_exports.useService)();
5527
- const [order, setOrder] = (0, import_react17.useState)();
5528
- const [page, setPage] = (0, import_react17.useState)(0);
5529
- const [domainMany2Many, setDomainMany2Many] = (0, import_react17.useState)(null);
5530
- const [debouncedPage] = useDebounce(page, 500);
5524
+ const { user } = useAppProvider();
5525
+ const { useGetView: useGetView2 } = (0, provider_exports.useService)();
5526
+ const dataUser = user?.userProfile?.data;
5531
5527
  const contextObject = {
5532
5528
  ...env.context,
5533
5529
  ...context || {}
@@ -5544,61 +5540,46 @@ var many2manyFieldController = (props) => {
5544
5540
  viewParams,
5545
5541
  enabled: enabledCallAPI
5546
5542
  });
5547
- const { specification } = useGetSpecification({
5548
- model: String(relation),
5549
- viewData: viewResponse || {},
5550
- fields: [
5551
- ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5552
- ...tab?.fields ? tab.fields : []
5553
- ]
5554
- });
5555
5543
  const default_order = viewResponse && viewResponse?.views?.list?.default_order;
5556
- const optionsObject = tab?.options ? (0, import_utils9.evalJSONContext)(tab?.options) : (options ? (0, import_utils9.evalJSONContext)(options) : {}) || {};
5557
- const fetchData = async () => {
5558
- try {
5559
- const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5560
- setDomainMany2Many(domainParse);
5561
- setPage(0);
5562
- } catch (err) {
5563
- console.log(err);
5564
- }
5565
- };
5566
- const queryKey = [
5567
- `view-${relation}`,
5568
- specification,
5569
- domainMany2Many,
5570
- debouncedPage,
5571
- groupByDomain,
5572
- order
5573
- ];
5574
- const data = {
5575
- model: relation,
5576
- specification,
5577
- domain: domainMany2Many,
5578
- offset: debouncedPage * 10,
5579
- limit: 10,
5580
- context: contextObject,
5581
- fields: groupByDomain?.fields,
5582
- groupby: [groupByDomain?.contexts[0]?.group_by],
5583
- sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
5584
- };
5585
- const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5544
+ const optionsObject = (options && typeof options === "string" ? (0, import_utils9.evalJSONContext)(options) : options) || {};
5586
5545
  const {
5587
5546
  data: dataResponse,
5588
- isLoading,
5589
5547
  isFetched,
5548
+ isLoading,
5549
+ state,
5590
5550
  isPlaceholderData
5591
- } = useGetListData2(data, queryKey, enabled);
5551
+ } = useListData({
5552
+ action: {
5553
+ domain,
5554
+ res_model: relation
5555
+ },
5556
+ context: contextObject,
5557
+ model: relation ?? "",
5558
+ viewData: viewResponse,
5559
+ service,
5560
+ xNode: service == "wesap" && dataUser.x_node
5561
+ });
5562
+ const {
5563
+ selectedRowKeys,
5564
+ groupByList,
5565
+ domain: domainList,
5566
+ page,
5567
+ pageLimit,
5568
+ setDomain,
5569
+ setOrder,
5570
+ setPage,
5571
+ setSelectedRowKeys,
5572
+ setGroupByList,
5573
+ setPageLimit
5574
+ } = state;
5592
5575
  (0, import_react17.useEffect)(() => {
5593
- if (viewResponse) {
5594
- fetchData();
5595
- }
5596
5576
  return () => {
5597
- setPage(0);
5598
- setSelectedRowKeys([]);
5599
- setDomainMany2Many(null);
5577
+ setDomain(null);
5578
+ setOrder("");
5579
+ setGroupByList(null);
5580
+ setPageLimit(10);
5600
5581
  };
5601
- }, [viewResponse]);
5582
+ }, []);
5602
5583
  const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
5603
5584
  data: {
5604
5585
  fields: viewResponse?.views?.list?.fields,
@@ -5622,22 +5603,28 @@ var many2manyFieldController = (props) => {
5622
5603
  const handleCreateNewOnPage = async () => {
5623
5604
  };
5624
5605
  return {
5625
- handleCreateNewOnPage,
5626
- optionsObject,
5627
- totalRows: dataResponse?.length ?? 0,
5628
5606
  rows,
5629
5607
  columns,
5608
+ optionsObject,
5609
+ viewData: viewResponse,
5610
+ totalRows: dataResponse?.length ?? 0,
5630
5611
  onToggleColumnOptional,
5631
5612
  typeTable,
5632
5613
  isLoading,
5633
5614
  isFetched,
5634
5615
  isPlaceholderData,
5635
- setPage,
5636
5616
  page,
5637
- viewData: viewResponse,
5638
- domain: domainMany2Many,
5639
- setDomain: setDomainMany2Many,
5640
- searchController: searchControllers
5617
+ pageLimit,
5618
+ groupByList,
5619
+ selectedRowKeys,
5620
+ domain: domainList,
5621
+ setPage,
5622
+ setDomain,
5623
+ setPageLimit,
5624
+ setGroupByList,
5625
+ setSelectedRowKeys,
5626
+ searchController: searchControllers,
5627
+ handleCreateNewOnPage
5641
5628
  };
5642
5629
  };
5643
5630
 
package/dist/index.mjs CHANGED
@@ -5590,29 +5590,21 @@ var many2oneButtonController = (props) => {
5590
5590
  };
5591
5591
 
5592
5592
  // src/widget/basic/many2many-field/controller.ts
5593
- import { useEffect as useEffect11, useState as useState8 } from "react";
5594
- import {
5595
- evalJSONContext as evalJSONContext4,
5596
- evalJSONDomain as evalJSONDomain4,
5597
- formatSortingString as formatSortingString2
5598
- } from "@fctc/interface-logic/utils";
5593
+ import { useEffect as useEffect11 } from "react";
5594
+ import { evalJSONContext as evalJSONContext4 } from "@fctc/interface-logic/utils";
5599
5595
  var many2manyFieldController = (props) => {
5600
5596
  const {
5601
5597
  relation,
5602
5598
  domain,
5603
5599
  context,
5604
5600
  options,
5605
- tab,
5606
- setSelectedRowKeys,
5607
- groupByDomain,
5608
- enabled: enabledCallAPI
5601
+ enabled: enabledCallAPI,
5602
+ service
5609
5603
  } = props;
5610
5604
  const { env } = (0, provider_exports.useEnv)();
5611
- const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView: useGetFormView2 } = (0, provider_exports.useService)();
5612
- const [order, setOrder] = useState8();
5613
- const [page, setPage] = useState8(0);
5614
- const [domainMany2Many, setDomainMany2Many] = useState8(null);
5615
- const [debouncedPage] = useDebounce(page, 500);
5605
+ const { user } = useAppProvider();
5606
+ const { useGetView: useGetView2 } = (0, provider_exports.useService)();
5607
+ const dataUser = user?.userProfile?.data;
5616
5608
  const contextObject = {
5617
5609
  ...env.context,
5618
5610
  ...context || {}
@@ -5629,61 +5621,46 @@ var many2manyFieldController = (props) => {
5629
5621
  viewParams,
5630
5622
  enabled: enabledCallAPI
5631
5623
  });
5632
- const { specification } = useGetSpecification({
5633
- model: String(relation),
5634
- viewData: viewResponse || {},
5635
- fields: [
5636
- ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5637
- ...tab?.fields ? tab.fields : []
5638
- ]
5639
- });
5640
5624
  const default_order = viewResponse && viewResponse?.views?.list?.default_order;
5641
- const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
5642
- const fetchData = async () => {
5643
- try {
5644
- const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
5645
- setDomainMany2Many(domainParse);
5646
- setPage(0);
5647
- } catch (err) {
5648
- console.log(err);
5649
- }
5650
- };
5651
- const queryKey = [
5652
- `view-${relation}`,
5653
- specification,
5654
- domainMany2Many,
5655
- debouncedPage,
5656
- groupByDomain,
5657
- order
5658
- ];
5659
- const data = {
5660
- model: relation,
5661
- specification,
5662
- domain: domainMany2Many,
5663
- offset: debouncedPage * 10,
5664
- limit: 10,
5665
- context: contextObject,
5666
- fields: groupByDomain?.fields,
5667
- groupby: [groupByDomain?.contexts[0]?.group_by],
5668
- sort: order ? order : default_order ? formatSortingString2(default_order) : ""
5669
- };
5670
- const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5625
+ const optionsObject = (options && typeof options === "string" ? evalJSONContext4(options) : options) || {};
5671
5626
  const {
5672
5627
  data: dataResponse,
5673
- isLoading,
5674
5628
  isFetched,
5629
+ isLoading,
5630
+ state,
5675
5631
  isPlaceholderData
5676
- } = useGetListData2(data, queryKey, enabled);
5632
+ } = useListData({
5633
+ action: {
5634
+ domain,
5635
+ res_model: relation
5636
+ },
5637
+ context: contextObject,
5638
+ model: relation ?? "",
5639
+ viewData: viewResponse,
5640
+ service,
5641
+ xNode: service == "wesap" && dataUser.x_node
5642
+ });
5643
+ const {
5644
+ selectedRowKeys,
5645
+ groupByList,
5646
+ domain: domainList,
5647
+ page,
5648
+ pageLimit,
5649
+ setDomain,
5650
+ setOrder,
5651
+ setPage,
5652
+ setSelectedRowKeys,
5653
+ setGroupByList,
5654
+ setPageLimit
5655
+ } = state;
5677
5656
  useEffect11(() => {
5678
- if (viewResponse) {
5679
- fetchData();
5680
- }
5681
5657
  return () => {
5682
- setPage(0);
5683
- setSelectedRowKeys([]);
5684
- setDomainMany2Many(null);
5658
+ setDomain(null);
5659
+ setOrder("");
5660
+ setGroupByList(null);
5661
+ setPageLimit(10);
5685
5662
  };
5686
- }, [viewResponse]);
5663
+ }, []);
5687
5664
  const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
5688
5665
  data: {
5689
5666
  fields: viewResponse?.views?.list?.fields,
@@ -5707,29 +5684,35 @@ var many2manyFieldController = (props) => {
5707
5684
  const handleCreateNewOnPage = async () => {
5708
5685
  };
5709
5686
  return {
5710
- handleCreateNewOnPage,
5711
- optionsObject,
5712
- totalRows: dataResponse?.length ?? 0,
5713
5687
  rows,
5714
5688
  columns,
5689
+ optionsObject,
5690
+ viewData: viewResponse,
5691
+ totalRows: dataResponse?.length ?? 0,
5715
5692
  onToggleColumnOptional,
5716
5693
  typeTable,
5717
5694
  isLoading,
5718
5695
  isFetched,
5719
5696
  isPlaceholderData,
5720
- setPage,
5721
5697
  page,
5722
- viewData: viewResponse,
5723
- domain: domainMany2Many,
5724
- setDomain: setDomainMany2Many,
5725
- searchController: searchControllers
5698
+ pageLimit,
5699
+ groupByList,
5700
+ selectedRowKeys,
5701
+ domain: domainList,
5702
+ setPage,
5703
+ setDomain,
5704
+ setPageLimit,
5705
+ setGroupByList,
5706
+ setSelectedRowKeys,
5707
+ searchController: searchControllers,
5708
+ handleCreateNewOnPage
5726
5709
  };
5727
5710
  };
5728
5711
 
5729
5712
  // src/widget/basic/many2many-tags-field/controller.ts
5730
5713
  import { useMemo as useMemo9 } from "react";
5731
5714
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5732
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5715
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5733
5716
  var many2manyTagsController = (props) => {
5734
5717
  const {
5735
5718
  relation,
@@ -5746,7 +5729,7 @@ var many2manyTagsController = (props) => {
5746
5729
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5747
5730
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5748
5731
  const domainObject = useMemo9(
5749
- () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5732
+ () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
5750
5733
  [domain, formValues]
5751
5734
  );
5752
5735
  const data = {
@@ -5789,8 +5772,8 @@ var many2manyTagsController = (props) => {
5789
5772
  };
5790
5773
 
5791
5774
  // src/widget/basic/status-bar-field/controller.ts
5792
- import { useState as useState9 } from "react";
5793
- import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5775
+ import { useState as useState8 } from "react";
5776
+ import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5794
5777
  var durationController = (props) => {
5795
5778
  const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5796
5779
  const specification = {
@@ -5800,13 +5783,13 @@ var durationController = (props) => {
5800
5783
  };
5801
5784
  const { useGetListData: useGetListData2, useChangeStatus: useChangeStatus2 } = (0, provider_exports.useService)();
5802
5785
  const { env } = (0, provider_exports.useEnv)();
5803
- const [disabled, setDisabled] = useState9(false);
5804
- const [modelStatus, setModalStatus] = useState9(false);
5786
+ const [disabled, setDisabled] = useState8(false);
5787
+ const [modelStatus, setModalStatus] = useState8(false);
5805
5788
  const queryKey = [`data-status-duration`, specification];
5806
5789
  const listDataProps = {
5807
5790
  model: relation,
5808
5791
  specification,
5809
- domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5792
+ domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
5810
5793
  limit: 10,
5811
5794
  offset: 0,
5812
5795
  fields: "",
@@ -5891,10 +5874,10 @@ var priorityFieldController = (props) => {
5891
5874
  };
5892
5875
 
5893
5876
  // src/widget/basic/download-file-field/controller.ts
5894
- import { useId, useState as useState10 } from "react";
5877
+ import { useId, useState as useState9 } from "react";
5895
5878
  var downloadFileController = () => {
5896
5879
  const inputId = useId();
5897
- const [file, setFile] = useState10(null);
5880
+ const [file, setFile] = useState9(null);
5898
5881
  const handleFileChange = (e) => {
5899
5882
  setFile(e.target.files[0]);
5900
5883
  };
@@ -6826,11 +6809,11 @@ var dateFieldController = (props) => {
6826
6809
  };
6827
6810
 
6828
6811
  // src/widget/basic/copy-link-button/controller.ts
6829
- import { useState as useState11 } from "react";
6812
+ import { useState as useState10 } from "react";
6830
6813
  import { copyTextToClipboard } from "@fctc/interface-logic/utils";
6831
6814
  var copyLinkButtonController = (props) => {
6832
6815
  const { value, defaultValue } = props;
6833
- const [isCopied, setIsCopied] = useState11(false);
6816
+ const [isCopied, setIsCopied] = useState10(false);
6834
6817
  const handleCopyToClipboard = async (value2) => {
6835
6818
  await copyTextToClipboard(value2);
6836
6819
  setIsCopied(true);
@@ -6878,14 +6861,14 @@ var colorFieldController = (props) => {
6878
6861
  };
6879
6862
 
6880
6863
  // src/widget/basic/binary-field/controller.ts
6881
- import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
6864
+ import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState11 } from "react";
6882
6865
  import { isBase64Image } from "@fctc/interface-logic/utils";
6883
6866
  var binaryFieldController = (props) => {
6884
6867
  const { name, methods, readonly = false, value } = props;
6885
6868
  const inputId = useId2();
6886
- const [selectedImage, setSelectedImage] = useState12(null);
6887
- const [initialImage, setInitialImage] = useState12(value || null);
6888
- const [isInsideTable, setIsInsideTable] = useState12(false);
6869
+ const [selectedImage, setSelectedImage] = useState11(null);
6870
+ const [initialImage, setInitialImage] = useState11(value || null);
6871
+ const [isInsideTable, setIsInsideTable] = useState11(false);
6889
6872
  const { setValue } = methods;
6890
6873
  const binaryRef = useRef4(null);
6891
6874
  const convertUrlToBase64 = async (url) => {
@@ -7042,11 +7025,11 @@ var tableHeadController = (props) => {
7042
7025
  };
7043
7026
 
7044
7027
  // src/widget/advance/table/table-view/controller.ts
7045
- import { useEffect as useEffect13, useState as useState13 } from "react";
7028
+ import { useEffect as useEffect13, useState as useState12 } from "react";
7046
7029
  import { domainHelper } from "@fctc/interface-logic/utils";
7047
7030
  var tableController = ({ data }) => {
7048
- const [rows, setRows] = useState13(null);
7049
- const [columns, setColumns] = useState13(null);
7031
+ const [rows, setRows] = useState12(null);
7032
+ const [columns, setColumns] = useState12(null);
7050
7033
  const dataModelFields = data?.fields?.map((field) => {
7051
7034
  return {
7052
7035
  ...data.dataModel?.[field?.name],
@@ -7131,7 +7114,7 @@ var tableController = ({ data }) => {
7131
7114
  };
7132
7115
 
7133
7116
  // src/widget/advance/table/table-group/controller.ts
7134
- import { useEffect as useEffect14, useMemo as useMemo11, useState as useState14 } from "react";
7117
+ import { useEffect as useEffect14, useMemo as useMemo11, useState as useState13 } from "react";
7135
7118
  import { useAppSelector as useAppSelector2, selectList } from "@fctc/interface-logic/store";
7136
7119
  var tableGroupController = (props) => {
7137
7120
  const { env } = (0, provider_exports.useEnv)();
@@ -7148,10 +7131,10 @@ var tableGroupController = (props) => {
7148
7131
  groupByList,
7149
7132
  setSelectedRowKeys
7150
7133
  } = props;
7151
- const [pageGroup, setPageGroup] = useState14(0);
7134
+ const [pageGroup, setPageGroup] = useState13(0);
7152
7135
  const { selectedRowKeys } = useAppSelector2(selectList);
7153
- const [isShowGroup, setIsShowGroup] = useState14(false);
7154
- const [colEmptyGroup, setColEmptyGroup] = useState14({
7136
+ const [isShowGroup, setIsShowGroup] = useState13(false);
7137
+ const [colEmptyGroup, setColEmptyGroup] = useState13({
7155
7138
  fromStart: 1,
7156
7139
  fromEnd: 1
7157
7140
  });
@@ -7270,10 +7253,10 @@ import { SearchType } from "@fctc/interface-logic/constants";
7270
7253
  import {
7271
7254
  domainHelper as domainHelper2,
7272
7255
  evalJSONContext as evalJSONContext8,
7273
- evalJSONDomain as evalJSONDomain7,
7256
+ evalJSONDomain as evalJSONDomain6,
7274
7257
  validateAndParseDate
7275
7258
  } from "@fctc/interface-logic/utils";
7276
- import { useCallback as useCallback5, useEffect as useEffect15, useState as useState15 } from "react";
7259
+ import { useCallback as useCallback5, useEffect as useEffect15, useState as useState14 } from "react";
7277
7260
  var searchController = ({
7278
7261
  viewData,
7279
7262
  model,
@@ -7282,15 +7265,15 @@ var searchController = ({
7282
7265
  fieldsList
7283
7266
  }) => {
7284
7267
  const { env } = (0, provider_exports.useEnv)();
7285
- const [filterBy, setFilterBy] = useState15(null);
7286
- const [searchBy, setSearchBy] = useState15(null);
7287
- const [groupBy, setGroupBy] = useState15(null);
7288
- const [selectedTags, setSelectedTags] = useState15(null);
7289
- const [searchString, setSearchString] = useState15("");
7290
- const [searchMap, setSearchMap] = useState15({});
7268
+ const [filterBy, setFilterBy] = useState14(null);
7269
+ const [searchBy, setSearchBy] = useState14(null);
7270
+ const [groupBy, setGroupBy] = useState14(null);
7271
+ const [selectedTags, setSelectedTags] = useState14(null);
7272
+ const [searchString, setSearchString] = useState14("");
7273
+ const [searchMap, setSearchMap] = useState14({});
7291
7274
  const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
7292
7275
  const contextSearch = { ...env.context, ...actionContext };
7293
- const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
7276
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain6(domain, contextSearch) : [];
7294
7277
  const clearSearch = () => {
7295
7278
  setFilterBy([]);
7296
7279
  setGroupBy([]);
package/dist/widget.d.mts CHANGED
@@ -61,30 +61,35 @@ declare const many2oneButtonController: (props: any) => {
61
61
  };
62
62
 
63
63
  interface IMany2ManyControllerProps extends IInputFieldProps {
64
- tab: any;
65
- setSelectedRowKeys: any;
66
- groupByDomain: any;
67
- options: any;
68
- enabled: boolean;
69
- viewData: any;
64
+ relation: string;
65
+ domain?: any;
66
+ context?: any;
67
+ options?: any;
68
+ enabled?: boolean;
69
+ service?: string;
70
70
  }
71
71
 
72
72
  declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
73
- handleCreateNewOnPage: () => Promise<void>;
74
- optionsObject: any;
75
- totalRows: any;
76
73
  rows: any;
77
74
  columns: any;
75
+ optionsObject: any;
76
+ viewData: any;
77
+ totalRows: any;
78
78
  onToggleColumnOptional: (item: any) => void;
79
79
  typeTable: "list" | "group" | "calendar" | undefined;
80
80
  isLoading: boolean;
81
81
  isFetched: boolean;
82
82
  isPlaceholderData: boolean;
83
- setPage: react.Dispatch<react.SetStateAction<number>>;
84
83
  page: number;
85
- viewData: any;
84
+ pageLimit: number;
85
+ groupByList: any;
86
+ selectedRowKeys: number[];
86
87
  domain: any;
88
+ setPage: react.Dispatch<react.SetStateAction<number>>;
87
89
  setDomain: react.Dispatch<any>;
90
+ setPageLimit: react.Dispatch<react.SetStateAction<number>>;
91
+ setGroupByList: react.Dispatch<any>;
92
+ setSelectedRowKeys: react.Dispatch<react.SetStateAction<number[]>>;
88
93
  searchController: {
89
94
  groupBy: any[] | null;
90
95
  searchBy: any[] | null;
@@ -102,6 +107,7 @@ declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
102
107
  domain: any[] | undefined;
103
108
  context: any;
104
109
  };
110
+ handleCreateNewOnPage: () => Promise<void>;
105
111
  };
106
112
 
107
113
  interface IMany2ManyTagFieldProps extends IInputFieldProps {
package/dist/widget.d.ts CHANGED
@@ -61,30 +61,35 @@ declare const many2oneButtonController: (props: any) => {
61
61
  };
62
62
 
63
63
  interface IMany2ManyControllerProps extends IInputFieldProps {
64
- tab: any;
65
- setSelectedRowKeys: any;
66
- groupByDomain: any;
67
- options: any;
68
- enabled: boolean;
69
- viewData: any;
64
+ relation: string;
65
+ domain?: any;
66
+ context?: any;
67
+ options?: any;
68
+ enabled?: boolean;
69
+ service?: string;
70
70
  }
71
71
 
72
72
  declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
73
- handleCreateNewOnPage: () => Promise<void>;
74
- optionsObject: any;
75
- totalRows: any;
76
73
  rows: any;
77
74
  columns: any;
75
+ optionsObject: any;
76
+ viewData: any;
77
+ totalRows: any;
78
78
  onToggleColumnOptional: (item: any) => void;
79
79
  typeTable: "list" | "group" | "calendar" | undefined;
80
80
  isLoading: boolean;
81
81
  isFetched: boolean;
82
82
  isPlaceholderData: boolean;
83
- setPage: react.Dispatch<react.SetStateAction<number>>;
84
83
  page: number;
85
- viewData: any;
84
+ pageLimit: number;
85
+ groupByList: any;
86
+ selectedRowKeys: number[];
86
87
  domain: any;
88
+ setPage: react.Dispatch<react.SetStateAction<number>>;
87
89
  setDomain: react.Dispatch<any>;
90
+ setPageLimit: react.Dispatch<react.SetStateAction<number>>;
91
+ setGroupByList: react.Dispatch<any>;
92
+ setSelectedRowKeys: react.Dispatch<react.SetStateAction<number[]>>;
88
93
  searchController: {
89
94
  groupBy: any[] | null;
90
95
  searchBy: any[] | null;
@@ -102,6 +107,7 @@ declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
102
107
  domain: any[] | undefined;
103
108
  context: any;
104
109
  };
110
+ handleCreateNewOnPage: () => Promise<void>;
105
111
  };
106
112
 
107
113
  interface IMany2ManyTagFieldProps extends IInputFieldProps {
package/dist/widget.js CHANGED
@@ -4335,6 +4335,13 @@ var AppProviderInitialValue = {
4335
4335
  view: {}
4336
4336
  };
4337
4337
  var ReactContext = (0, import_react9.createContext)(AppProviderInitialValue);
4338
+ var useAppProvider = () => {
4339
+ const context = (0, import_react9.useContext)(ReactContext);
4340
+ if (!context) {
4341
+ return AppProviderInitialValue;
4342
+ }
4343
+ return context;
4344
+ };
4338
4345
 
4339
4346
  // src/hooks/core/use-config.ts
4340
4347
  var import_react10 = require("react");
@@ -4458,6 +4465,84 @@ var useGetRowIds = (tableRef) => {
4458
4465
  return { rowIds, refresh: updateVisibleRowIds };
4459
4466
  };
4460
4467
 
4468
+ // src/hooks/core/use-list-data.ts
4469
+ var useListData = ({
4470
+ action,
4471
+ context,
4472
+ viewData,
4473
+ model,
4474
+ service,
4475
+ xNode
4476
+ }) => {
4477
+ const { useGetListData: useGetListData2 } = (0, provider_exports.useService)();
4478
+ const [page, setPage] = (0, import_react15.useState)(0);
4479
+ const [pageLimit, setPageLimit] = (0, import_react15.useState)(10);
4480
+ const [groupByList, setGroupByList] = (0, import_react15.useState)(null);
4481
+ const [domain, setDomain] = (0, import_react15.useState)(null);
4482
+ const [order, setOrder] = (0, import_react15.useState)("");
4483
+ const [selectedRowKeys, setSelectedRowKeys] = (0, import_react15.useState)([]);
4484
+ const [debouncedPage] = useDebounce(page, 500);
4485
+ const [debouncedDomain] = useDebounce(domain, 500);
4486
+ const { specification } = useGetSpecification({
4487
+ model,
4488
+ viewData,
4489
+ fields: viewData?.views?.list?.fields
4490
+ });
4491
+ const listDataProps = (0, import_react15.useMemo)(() => {
4492
+ if (!viewData || !action || !context) {
4493
+ return null;
4494
+ }
4495
+ const domainParse = domain ? [...domain] : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils5.evalJSONDomain)(action?.domain, context) : [];
4496
+ const limit = pageLimit;
4497
+ const offset = debouncedPage * pageLimit;
4498
+ const fields = typeof groupByList === "object" ? groupByList?.fields : void 0;
4499
+ const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
4500
+ const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils5.formatSortingString)(viewData?.views?.list?.default_order) : "";
4501
+ return {
4502
+ model: action?.res_model,
4503
+ specification,
4504
+ domain: domainParse,
4505
+ limit,
4506
+ offset,
4507
+ fields,
4508
+ groupby,
4509
+ context,
4510
+ sort
4511
+ };
4512
+ }, [action, groupByList, order, debouncedPage, pageLimit, debouncedDomain]);
4513
+ const list = useGetListData2(
4514
+ { ...listDataProps },
4515
+ [
4516
+ listDataProps?.domain,
4517
+ listDataProps?.groupby,
4518
+ listDataProps?.limit,
4519
+ listDataProps?.offset,
4520
+ listDataProps?.sort
4521
+ ],
4522
+ !!listDataProps && !!specification && !(0, import_utils5.isObjectEmpty)(specification) && !!domain,
4523
+ service,
4524
+ xNode
4525
+ );
4526
+ return {
4527
+ ...list,
4528
+ state: {
4529
+ specification,
4530
+ page,
4531
+ order,
4532
+ domain: listDataProps?.domain,
4533
+ pageLimit,
4534
+ groupByList,
4535
+ selectedRowKeys,
4536
+ setPage,
4537
+ setOrder,
4538
+ setDomain,
4539
+ setPageLimit,
4540
+ setGroupByList,
4541
+ setSelectedRowKeys
4542
+ }
4543
+ };
4544
+ };
4545
+
4461
4546
  // src/store.ts
4462
4547
  var store_exports = {};
4463
4548
  __reExport(store_exports, require("@fctc/interface-logic/store"));
@@ -4677,17 +4762,13 @@ var many2manyFieldController = (props) => {
4677
4762
  domain,
4678
4763
  context,
4679
4764
  options,
4680
- tab,
4681
- setSelectedRowKeys,
4682
- groupByDomain,
4683
- enabled: enabledCallAPI
4765
+ enabled: enabledCallAPI,
4766
+ service
4684
4767
  } = props;
4685
4768
  const { env } = (0, provider_exports.useEnv)();
4686
- const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView: useGetFormView2 } = (0, provider_exports.useService)();
4687
- const [order, setOrder] = (0, import_react17.useState)();
4688
- const [page, setPage] = (0, import_react17.useState)(0);
4689
- const [domainMany2Many, setDomainMany2Many] = (0, import_react17.useState)(null);
4690
- const [debouncedPage] = useDebounce(page, 500);
4769
+ const { user } = useAppProvider();
4770
+ const { useGetView: useGetView2 } = (0, provider_exports.useService)();
4771
+ const dataUser = user?.userProfile?.data;
4691
4772
  const contextObject = {
4692
4773
  ...env.context,
4693
4774
  ...context || {}
@@ -4704,61 +4785,46 @@ var many2manyFieldController = (props) => {
4704
4785
  viewParams,
4705
4786
  enabled: enabledCallAPI
4706
4787
  });
4707
- const { specification } = useGetSpecification({
4708
- model: String(relation),
4709
- viewData: viewResponse || {},
4710
- fields: [
4711
- ...Object.values(viewResponse?.views?.list?.fields ?? {}),
4712
- ...tab?.fields ? tab.fields : []
4713
- ]
4714
- });
4715
4788
  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) : {}) || {};
4717
- const fetchData = async () => {
4718
- try {
4719
- const domainParse = typeof domain === "string" ? (0, import_utils9.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
4720
- setDomainMany2Many(domainParse);
4721
- setPage(0);
4722
- } catch (err) {
4723
- console.log(err);
4724
- }
4725
- };
4726
- const queryKey = [
4727
- `view-${relation}`,
4728
- specification,
4729
- domainMany2Many,
4730
- debouncedPage,
4731
- groupByDomain,
4732
- order
4733
- ];
4734
- const data = {
4735
- model: relation,
4736
- specification,
4737
- domain: domainMany2Many,
4738
- offset: debouncedPage * 10,
4739
- limit: 10,
4740
- context: contextObject,
4741
- fields: groupByDomain?.fields,
4742
- groupby: [groupByDomain?.contexts[0]?.group_by],
4743
- sort: order ? order : default_order ? (0, import_utils9.formatSortingString)(default_order) : ""
4744
- };
4745
- const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
4789
+ const optionsObject = (options && typeof options === "string" ? (0, import_utils9.evalJSONContext)(options) : options) || {};
4746
4790
  const {
4747
4791
  data: dataResponse,
4748
- isLoading,
4749
4792
  isFetched,
4793
+ isLoading,
4794
+ state,
4750
4795
  isPlaceholderData
4751
- } = useGetListData2(data, queryKey, enabled);
4796
+ } = useListData({
4797
+ action: {
4798
+ domain,
4799
+ res_model: relation
4800
+ },
4801
+ context: contextObject,
4802
+ model: relation ?? "",
4803
+ viewData: viewResponse,
4804
+ service,
4805
+ xNode: service == "wesap" && dataUser.x_node
4806
+ });
4807
+ const {
4808
+ selectedRowKeys,
4809
+ groupByList,
4810
+ domain: domainList,
4811
+ page,
4812
+ pageLimit,
4813
+ setDomain,
4814
+ setOrder,
4815
+ setPage,
4816
+ setSelectedRowKeys,
4817
+ setGroupByList,
4818
+ setPageLimit
4819
+ } = state;
4752
4820
  (0, import_react17.useEffect)(() => {
4753
- if (viewResponse) {
4754
- fetchData();
4755
- }
4756
4821
  return () => {
4757
- setPage(0);
4758
- setSelectedRowKeys([]);
4759
- setDomainMany2Many(null);
4822
+ setDomain(null);
4823
+ setOrder("");
4824
+ setGroupByList(null);
4825
+ setPageLimit(10);
4760
4826
  };
4761
- }, [viewResponse]);
4827
+ }, []);
4762
4828
  const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
4763
4829
  data: {
4764
4830
  fields: viewResponse?.views?.list?.fields,
@@ -4782,22 +4848,28 @@ var many2manyFieldController = (props) => {
4782
4848
  const handleCreateNewOnPage = async () => {
4783
4849
  };
4784
4850
  return {
4785
- handleCreateNewOnPage,
4786
- optionsObject,
4787
- totalRows: dataResponse?.length ?? 0,
4788
4851
  rows,
4789
4852
  columns,
4853
+ optionsObject,
4854
+ viewData: viewResponse,
4855
+ totalRows: dataResponse?.length ?? 0,
4790
4856
  onToggleColumnOptional,
4791
4857
  typeTable,
4792
4858
  isLoading,
4793
4859
  isFetched,
4794
4860
  isPlaceholderData,
4795
- setPage,
4796
4861
  page,
4797
- viewData: viewResponse,
4798
- domain: domainMany2Many,
4799
- setDomain: setDomainMany2Many,
4800
- searchController: searchControllers
4862
+ pageLimit,
4863
+ groupByList,
4864
+ selectedRowKeys,
4865
+ domain: domainList,
4866
+ setPage,
4867
+ setDomain,
4868
+ setPageLimit,
4869
+ setGroupByList,
4870
+ setSelectedRowKeys,
4871
+ searchController: searchControllers,
4872
+ handleCreateNewOnPage
4801
4873
  };
4802
4874
  };
4803
4875
 
package/dist/widget.mjs CHANGED
@@ -4388,6 +4388,13 @@ var AppProviderInitialValue = {
4388
4388
  view: {}
4389
4389
  };
4390
4390
  var ReactContext = createContext(AppProviderInitialValue);
4391
+ var useAppProvider = () => {
4392
+ const context = useContext(ReactContext);
4393
+ if (!context) {
4394
+ return AppProviderInitialValue;
4395
+ }
4396
+ return context;
4397
+ };
4391
4398
 
4392
4399
  // src/hooks/core/use-config.ts
4393
4400
  import { useEffect as useEffect6 } from "react";
@@ -4515,6 +4522,84 @@ var useGetRowIds = (tableRef) => {
4515
4522
  return { rowIds, refresh: updateVisibleRowIds };
4516
4523
  };
4517
4524
 
4525
+ // src/hooks/core/use-list-data.ts
4526
+ var useListData = ({
4527
+ action,
4528
+ context,
4529
+ viewData,
4530
+ model,
4531
+ service,
4532
+ xNode
4533
+ }) => {
4534
+ const { useGetListData: useGetListData2 } = (0, provider_exports.useService)();
4535
+ const [page, setPage] = useState6(0);
4536
+ const [pageLimit, setPageLimit] = useState6(10);
4537
+ const [groupByList, setGroupByList] = useState6(null);
4538
+ const [domain, setDomain] = useState6(null);
4539
+ const [order, setOrder] = useState6("");
4540
+ const [selectedRowKeys, setSelectedRowKeys] = useState6([]);
4541
+ const [debouncedPage] = useDebounce(page, 500);
4542
+ const [debouncedDomain] = useDebounce(domain, 500);
4543
+ const { specification } = useGetSpecification({
4544
+ model,
4545
+ viewData,
4546
+ fields: viewData?.views?.list?.fields
4547
+ });
4548
+ const listDataProps = useMemo7(() => {
4549
+ if (!viewData || !action || !context) {
4550
+ return null;
4551
+ }
4552
+ const domainParse = domain ? [...domain] : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : evalJSONDomain(action?.domain, context) : [];
4553
+ const limit = pageLimit;
4554
+ const offset = debouncedPage * pageLimit;
4555
+ const fields = typeof groupByList === "object" ? groupByList?.fields : void 0;
4556
+ const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
4557
+ const sort = order ? order : viewData?.views?.list?.default_order ? formatSortingString(viewData?.views?.list?.default_order) : "";
4558
+ return {
4559
+ model: action?.res_model,
4560
+ specification,
4561
+ domain: domainParse,
4562
+ limit,
4563
+ offset,
4564
+ fields,
4565
+ groupby,
4566
+ context,
4567
+ sort
4568
+ };
4569
+ }, [action, groupByList, order, debouncedPage, pageLimit, debouncedDomain]);
4570
+ const list = useGetListData2(
4571
+ { ...listDataProps },
4572
+ [
4573
+ listDataProps?.domain,
4574
+ listDataProps?.groupby,
4575
+ listDataProps?.limit,
4576
+ listDataProps?.offset,
4577
+ listDataProps?.sort
4578
+ ],
4579
+ !!listDataProps && !!specification && !isObjectEmpty4(specification) && !!domain,
4580
+ service,
4581
+ xNode
4582
+ );
4583
+ return {
4584
+ ...list,
4585
+ state: {
4586
+ specification,
4587
+ page,
4588
+ order,
4589
+ domain: listDataProps?.domain,
4590
+ pageLimit,
4591
+ groupByList,
4592
+ selectedRowKeys,
4593
+ setPage,
4594
+ setOrder,
4595
+ setDomain,
4596
+ setPageLimit,
4597
+ setGroupByList,
4598
+ setSelectedRowKeys
4599
+ }
4600
+ };
4601
+ };
4602
+
4518
4603
  // src/store.ts
4519
4604
  var store_exports = {};
4520
4605
  __reExport(store_exports, store_star);
@@ -4727,29 +4812,21 @@ var many2oneButtonController = (props) => {
4727
4812
  };
4728
4813
 
4729
4814
  // src/widget/basic/many2many-field/controller.ts
4730
- import { useEffect as useEffect11, useState as useState8 } from "react";
4731
- import {
4732
- evalJSONContext as evalJSONContext4,
4733
- evalJSONDomain as evalJSONDomain4,
4734
- formatSortingString as formatSortingString2
4735
- } from "@fctc/interface-logic/utils";
4815
+ import { useEffect as useEffect11 } from "react";
4816
+ import { evalJSONContext as evalJSONContext4 } from "@fctc/interface-logic/utils";
4736
4817
  var many2manyFieldController = (props) => {
4737
4818
  const {
4738
4819
  relation,
4739
4820
  domain,
4740
4821
  context,
4741
4822
  options,
4742
- tab,
4743
- setSelectedRowKeys,
4744
- groupByDomain,
4745
- enabled: enabledCallAPI
4823
+ enabled: enabledCallAPI,
4824
+ service
4746
4825
  } = props;
4747
4826
  const { env } = (0, provider_exports.useEnv)();
4748
- const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView: useGetFormView2 } = (0, provider_exports.useService)();
4749
- const [order, setOrder] = useState8();
4750
- const [page, setPage] = useState8(0);
4751
- const [domainMany2Many, setDomainMany2Many] = useState8(null);
4752
- const [debouncedPage] = useDebounce(page, 500);
4827
+ const { user } = useAppProvider();
4828
+ const { useGetView: useGetView2 } = (0, provider_exports.useService)();
4829
+ const dataUser = user?.userProfile?.data;
4753
4830
  const contextObject = {
4754
4831
  ...env.context,
4755
4832
  ...context || {}
@@ -4766,61 +4843,46 @@ var many2manyFieldController = (props) => {
4766
4843
  viewParams,
4767
4844
  enabled: enabledCallAPI
4768
4845
  });
4769
- const { specification } = useGetSpecification({
4770
- model: String(relation),
4771
- viewData: viewResponse || {},
4772
- fields: [
4773
- ...Object.values(viewResponse?.views?.list?.fields ?? {}),
4774
- ...tab?.fields ? tab.fields : []
4775
- ]
4776
- });
4777
4846
  const default_order = viewResponse && viewResponse?.views?.list?.default_order;
4778
- const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
4779
- const fetchData = async () => {
4780
- try {
4781
- const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
4782
- setDomainMany2Many(domainParse);
4783
- setPage(0);
4784
- } catch (err) {
4785
- console.log(err);
4786
- }
4787
- };
4788
- const queryKey = [
4789
- `view-${relation}`,
4790
- specification,
4791
- domainMany2Many,
4792
- debouncedPage,
4793
- groupByDomain,
4794
- order
4795
- ];
4796
- const data = {
4797
- model: relation,
4798
- specification,
4799
- domain: domainMany2Many,
4800
- offset: debouncedPage * 10,
4801
- limit: 10,
4802
- context: contextObject,
4803
- fields: groupByDomain?.fields,
4804
- groupby: [groupByDomain?.contexts[0]?.group_by],
4805
- sort: order ? order : default_order ? formatSortingString2(default_order) : ""
4806
- };
4807
- const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
4847
+ const optionsObject = (options && typeof options === "string" ? evalJSONContext4(options) : options) || {};
4808
4848
  const {
4809
4849
  data: dataResponse,
4810
- isLoading,
4811
4850
  isFetched,
4851
+ isLoading,
4852
+ state,
4812
4853
  isPlaceholderData
4813
- } = useGetListData2(data, queryKey, enabled);
4854
+ } = useListData({
4855
+ action: {
4856
+ domain,
4857
+ res_model: relation
4858
+ },
4859
+ context: contextObject,
4860
+ model: relation ?? "",
4861
+ viewData: viewResponse,
4862
+ service,
4863
+ xNode: service == "wesap" && dataUser.x_node
4864
+ });
4865
+ const {
4866
+ selectedRowKeys,
4867
+ groupByList,
4868
+ domain: domainList,
4869
+ page,
4870
+ pageLimit,
4871
+ setDomain,
4872
+ setOrder,
4873
+ setPage,
4874
+ setSelectedRowKeys,
4875
+ setGroupByList,
4876
+ setPageLimit
4877
+ } = state;
4814
4878
  useEffect11(() => {
4815
- if (viewResponse) {
4816
- fetchData();
4817
- }
4818
4879
  return () => {
4819
- setPage(0);
4820
- setSelectedRowKeys([]);
4821
- setDomainMany2Many(null);
4880
+ setDomain(null);
4881
+ setOrder("");
4882
+ setGroupByList(null);
4883
+ setPageLimit(10);
4822
4884
  };
4823
- }, [viewResponse]);
4885
+ }, []);
4824
4886
  const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
4825
4887
  data: {
4826
4888
  fields: viewResponse?.views?.list?.fields,
@@ -4844,29 +4906,35 @@ var many2manyFieldController = (props) => {
4844
4906
  const handleCreateNewOnPage = async () => {
4845
4907
  };
4846
4908
  return {
4847
- handleCreateNewOnPage,
4848
- optionsObject,
4849
- totalRows: dataResponse?.length ?? 0,
4850
4909
  rows,
4851
4910
  columns,
4911
+ optionsObject,
4912
+ viewData: viewResponse,
4913
+ totalRows: dataResponse?.length ?? 0,
4852
4914
  onToggleColumnOptional,
4853
4915
  typeTable,
4854
4916
  isLoading,
4855
4917
  isFetched,
4856
4918
  isPlaceholderData,
4857
- setPage,
4858
4919
  page,
4859
- viewData: viewResponse,
4860
- domain: domainMany2Many,
4861
- setDomain: setDomainMany2Many,
4862
- searchController: searchControllers
4920
+ pageLimit,
4921
+ groupByList,
4922
+ selectedRowKeys,
4923
+ domain: domainList,
4924
+ setPage,
4925
+ setDomain,
4926
+ setPageLimit,
4927
+ setGroupByList,
4928
+ setSelectedRowKeys,
4929
+ searchController: searchControllers,
4930
+ handleCreateNewOnPage
4863
4931
  };
4864
4932
  };
4865
4933
 
4866
4934
  // src/widget/basic/many2many-tags-field/controller.ts
4867
4935
  import { useMemo as useMemo9 } from "react";
4868
4936
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
4869
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
4937
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
4870
4938
  var many2manyTagsController = (props) => {
4871
4939
  const {
4872
4940
  relation,
@@ -4883,7 +4951,7 @@ var many2manyTagsController = (props) => {
4883
4951
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
4884
4952
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
4885
4953
  const domainObject = useMemo9(
4886
- () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
4954
+ () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
4887
4955
  [domain, formValues]
4888
4956
  );
4889
4957
  const data = {
@@ -4926,8 +4994,8 @@ var many2manyTagsController = (props) => {
4926
4994
  };
4927
4995
 
4928
4996
  // src/widget/basic/status-bar-field/controller.ts
4929
- import { useState as useState9 } from "react";
4930
- import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
4997
+ import { useState as useState8 } from "react";
4998
+ import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
4931
4999
  var durationController = (props) => {
4932
5000
  const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
4933
5001
  const specification = {
@@ -4937,13 +5005,13 @@ var durationController = (props) => {
4937
5005
  };
4938
5006
  const { useGetListData: useGetListData2, useChangeStatus: useChangeStatus2 } = (0, provider_exports.useService)();
4939
5007
  const { env } = (0, provider_exports.useEnv)();
4940
- const [disabled, setDisabled] = useState9(false);
4941
- const [modelStatus, setModalStatus] = useState9(false);
5008
+ const [disabled, setDisabled] = useState8(false);
5009
+ const [modelStatus, setModalStatus] = useState8(false);
4942
5010
  const queryKey = [`data-status-duration`, specification];
4943
5011
  const listDataProps = {
4944
5012
  model: relation,
4945
5013
  specification,
4946
- domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5014
+ domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
4947
5015
  limit: 10,
4948
5016
  offset: 0,
4949
5017
  fields: "",
@@ -5028,10 +5096,10 @@ var priorityFieldController = (props) => {
5028
5096
  };
5029
5097
 
5030
5098
  // src/widget/basic/download-file-field/controller.ts
5031
- import { useId, useState as useState10 } from "react";
5099
+ import { useId, useState as useState9 } from "react";
5032
5100
  var downloadFileController = () => {
5033
5101
  const inputId = useId();
5034
- const [file, setFile] = useState10(null);
5102
+ const [file, setFile] = useState9(null);
5035
5103
  const handleFileChange = (e) => {
5036
5104
  setFile(e.target.files[0]);
5037
5105
  };
@@ -5963,11 +6031,11 @@ var dateFieldController = (props) => {
5963
6031
  };
5964
6032
 
5965
6033
  // src/widget/basic/copy-link-button/controller.ts
5966
- import { useState as useState11 } from "react";
6034
+ import { useState as useState10 } from "react";
5967
6035
  import { copyTextToClipboard } from "@fctc/interface-logic/utils";
5968
6036
  var copyLinkButtonController = (props) => {
5969
6037
  const { value, defaultValue } = props;
5970
- const [isCopied, setIsCopied] = useState11(false);
6038
+ const [isCopied, setIsCopied] = useState10(false);
5971
6039
  const handleCopyToClipboard = async (value2) => {
5972
6040
  await copyTextToClipboard(value2);
5973
6041
  setIsCopied(true);
@@ -6015,14 +6083,14 @@ var colorFieldController = (props) => {
6015
6083
  };
6016
6084
 
6017
6085
  // src/widget/basic/binary-field/controller.ts
6018
- import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
6086
+ import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState11 } from "react";
6019
6087
  import { isBase64Image } from "@fctc/interface-logic/utils";
6020
6088
  var binaryFieldController = (props) => {
6021
6089
  const { name, methods, readonly = false, value } = props;
6022
6090
  const inputId = useId2();
6023
- const [selectedImage, setSelectedImage] = useState12(null);
6024
- const [initialImage, setInitialImage] = useState12(value || null);
6025
- const [isInsideTable, setIsInsideTable] = useState12(false);
6091
+ const [selectedImage, setSelectedImage] = useState11(null);
6092
+ const [initialImage, setInitialImage] = useState11(value || null);
6093
+ const [isInsideTable, setIsInsideTable] = useState11(false);
6026
6094
  const { setValue } = methods;
6027
6095
  const binaryRef = useRef4(null);
6028
6096
  const convertUrlToBase64 = async (url) => {
@@ -6179,11 +6247,11 @@ var tableHeadController = (props) => {
6179
6247
  };
6180
6248
 
6181
6249
  // src/widget/advance/table/table-view/controller.ts
6182
- import { useEffect as useEffect13, useState as useState13 } from "react";
6250
+ import { useEffect as useEffect13, useState as useState12 } from "react";
6183
6251
  import { domainHelper } from "@fctc/interface-logic/utils";
6184
6252
  var tableController = ({ data }) => {
6185
- const [rows, setRows] = useState13(null);
6186
- const [columns, setColumns] = useState13(null);
6253
+ const [rows, setRows] = useState12(null);
6254
+ const [columns, setColumns] = useState12(null);
6187
6255
  const dataModelFields = data?.fields?.map((field) => {
6188
6256
  return {
6189
6257
  ...data.dataModel?.[field?.name],
@@ -6268,7 +6336,7 @@ var tableController = ({ data }) => {
6268
6336
  };
6269
6337
 
6270
6338
  // src/widget/advance/table/table-group/controller.ts
6271
- import { useEffect as useEffect14, useMemo as useMemo11, useState as useState14 } from "react";
6339
+ import { useEffect as useEffect14, useMemo as useMemo11, useState as useState13 } from "react";
6272
6340
  import { useAppSelector as useAppSelector2, selectList } from "@fctc/interface-logic/store";
6273
6341
  var tableGroupController = (props) => {
6274
6342
  const { env } = (0, provider_exports.useEnv)();
@@ -6285,10 +6353,10 @@ var tableGroupController = (props) => {
6285
6353
  groupByList,
6286
6354
  setSelectedRowKeys
6287
6355
  } = props;
6288
- const [pageGroup, setPageGroup] = useState14(0);
6356
+ const [pageGroup, setPageGroup] = useState13(0);
6289
6357
  const { selectedRowKeys } = useAppSelector2(selectList);
6290
- const [isShowGroup, setIsShowGroup] = useState14(false);
6291
- const [colEmptyGroup, setColEmptyGroup] = useState14({
6358
+ const [isShowGroup, setIsShowGroup] = useState13(false);
6359
+ const [colEmptyGroup, setColEmptyGroup] = useState13({
6292
6360
  fromStart: 1,
6293
6361
  fromEnd: 1
6294
6362
  });
@@ -6407,10 +6475,10 @@ import { SearchType } from "@fctc/interface-logic/constants";
6407
6475
  import {
6408
6476
  domainHelper as domainHelper2,
6409
6477
  evalJSONContext as evalJSONContext8,
6410
- evalJSONDomain as evalJSONDomain7,
6478
+ evalJSONDomain as evalJSONDomain6,
6411
6479
  validateAndParseDate
6412
6480
  } from "@fctc/interface-logic/utils";
6413
- import { useCallback as useCallback5, useEffect as useEffect15, useState as useState15 } from "react";
6481
+ import { useCallback as useCallback5, useEffect as useEffect15, useState as useState14 } from "react";
6414
6482
  var searchController = ({
6415
6483
  viewData,
6416
6484
  model,
@@ -6419,15 +6487,15 @@ var searchController = ({
6419
6487
  fieldsList
6420
6488
  }) => {
6421
6489
  const { env } = (0, provider_exports.useEnv)();
6422
- const [filterBy, setFilterBy] = useState15(null);
6423
- const [searchBy, setSearchBy] = useState15(null);
6424
- const [groupBy, setGroupBy] = useState15(null);
6425
- const [selectedTags, setSelectedTags] = useState15(null);
6426
- const [searchString, setSearchString] = useState15("");
6427
- const [searchMap, setSearchMap] = useState15({});
6490
+ const [filterBy, setFilterBy] = useState14(null);
6491
+ const [searchBy, setSearchBy] = useState14(null);
6492
+ const [groupBy, setGroupBy] = useState14(null);
6493
+ const [selectedTags, setSelectedTags] = useState14(null);
6494
+ const [searchString, setSearchString] = useState14("");
6495
+ const [searchMap, setSearchMap] = useState14({});
6428
6496
  const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
6429
6497
  const contextSearch = { ...env.context, ...actionContext };
6430
- const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
6498
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain6(domain, contextSearch) : [];
6431
6499
  const clearSearch = () => {
6432
6500
  setFilterBy([]);
6433
6501
  setGroupBy([]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fctc/widget-logic",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "types": "dist/index.d.ts",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",
@@ -74,7 +74,7 @@
74
74
  "test": "jest"
75
75
  },
76
76
  "dependencies": {
77
- "@fctc/interface-logic": "^2.7.1",
77
+ "@fctc/interface-logic": "^2.7.2",
78
78
  "@headlessui/react": "^2.2.6",
79
79
  "@tanstack/react-query": "^5.84.0",
80
80
  "i18next": "^25.3.2",