@fctc/widget-logic 1.9.3 → 1.9.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.mjs CHANGED
@@ -5276,6 +5276,7 @@ var many2oneFieldController = (props) => {
5276
5276
  options: fieldOptions,
5277
5277
  showDetail
5278
5278
  } = props;
5279
+ const { env } = (0, provider_exports.useEnv)();
5279
5280
  const [options, setOptions] = useState7([]);
5280
5281
  const [inputValue, setInputValue] = useState7("");
5281
5282
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
@@ -5285,13 +5286,12 @@ var many2oneFieldController = (props) => {
5285
5286
  const [domainObject, setDomainObject] = useState7(null);
5286
5287
  const actionData = sessionStorageUtils.getActionData();
5287
5288
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5288
- const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
5289
5289
  const initValue = methods?.getValues(name);
5290
5290
  const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
5291
5291
  const contextObject = {
5292
5292
  ...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
5293
5293
  ...fieldContext,
5294
- ...context
5294
+ ...env?.context
5295
5295
  };
5296
5296
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5297
5297
  const data = {
@@ -5463,15 +5463,9 @@ var many2oneButtonController = (props) => {
5463
5463
 
5464
5464
  // src/widget/basic/many2many-field/controller.ts
5465
5465
  import { useEffect as useEffect11, useMemo as useMemo10, useState as useState8 } from "react";
5466
- import {
5467
- useAppDispatch as useAppDispatch5,
5468
- setFirstDomain,
5469
- setViewDataStore,
5470
- setPage,
5471
- setGroupByDomain
5472
- } from "@fctc/interface-logic/store";
5473
5466
  import {
5474
5467
  evalJSONContext as evalJSONContext4,
5468
+ evalJSONDomain as evalJSONDomain4,
5475
5469
  formatSortingString as formatSortingString2
5476
5470
  } from "@fctc/interface-logic/utils";
5477
5471
  var many2manyFieldController = (props) => {
@@ -5479,45 +5473,43 @@ var many2manyFieldController = (props) => {
5479
5473
  relation,
5480
5474
  domain,
5481
5475
  context,
5476
+ options,
5482
5477
  tab,
5483
- model,
5484
- aid,
5485
5478
  setSelectedRowKeys: setSelectedRowKeys4,
5486
- fields,
5487
- setFields,
5488
5479
  groupByDomain,
5489
- page,
5490
- options,
5491
- sessionStorageUtils
5480
+ enabled: enabledCallAPI
5492
5481
  } = props;
5493
- const appDispatch = useAppDispatch5();
5494
- const actionData = sessionStorageUtils.getActionData();
5495
- const [debouncedPage] = useDebounce(page, 500);
5496
- const [order, setOrder] = useState8();
5497
- const [isLoadedData, setIsLoadedData] = useState8(false);
5498
- const [domainMany2Many, setDomainMany2Many] = useState8(domain);
5499
5482
  const { env } = (0, provider_exports.useEnv)();
5500
5483
  const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5484
+ const [order, setOrder] = useState8();
5485
+ const [isLoadedData, setIsLoadedData] = useState8(false);
5486
+ const [page, setPage] = useState8(0);
5487
+ const [domainMany2Many, setDomainMany2Many] = useState8(null);
5488
+ const [debouncedPage] = useDebounce(page, 500);
5489
+ const contextObject = {
5490
+ ...env.context,
5491
+ ...context || {}
5492
+ };
5501
5493
  const viewParams = {
5502
5494
  model: relation,
5503
5495
  views: [
5504
5496
  [false, "list"],
5505
5497
  [false, "search"]
5506
5498
  ],
5507
- context
5499
+ context: contextObject
5508
5500
  };
5509
- const { data: viewResponse } = useGetView2(viewParams, actionData);
5501
+ const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
5510
5502
  const baseModel = useMemo10(
5511
5503
  () => ({
5512
5504
  name: String(relation),
5513
5505
  view: viewResponse || {},
5514
- actContext: context,
5506
+ actContext: contextObject,
5515
5507
  fields: [
5516
5508
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5517
5509
  ...tab?.fields ? tab.fields : []
5518
5510
  ]
5519
5511
  }),
5520
- [model, viewResponse]
5512
+ [relation, viewResponse]
5521
5513
  );
5522
5514
  const initModel = (0, hooks_exports.useModel)();
5523
5515
  const modelInstance = useMemo10(() => {
@@ -5536,26 +5528,15 @@ var many2manyFieldController = (props) => {
5536
5528
  const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
5537
5529
  const fetchData = async () => {
5538
5530
  try {
5539
- setDomainMany2Many(domain);
5540
- appDispatch(setFirstDomain(domain));
5541
- appDispatch(setViewDataStore(viewResponse));
5542
- const modalData = viewResponse?.views?.list?.fields.map((field) => ({
5543
- ...viewResponse?.models?.[String(model)]?.[field?.name],
5544
- ...field
5545
- }));
5546
- if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
5547
- setFields({
5548
- ...fields,
5549
- [`${aid}_${relation}_popupmany2many`]: modalData
5550
- });
5551
- }
5552
- appDispatch(setPage(0));
5531
+ const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
5532
+ setDomainMany2Many(domainParse);
5533
+ setPage(0);
5553
5534
  } catch (err) {
5554
5535
  console.log(err);
5555
5536
  }
5556
5537
  };
5557
5538
  const queryKey = [
5558
- `view-${relation}-${aid}`,
5539
+ `view-${relation}`,
5559
5540
  specification,
5560
5541
  domainMany2Many,
5561
5542
  debouncedPage,
@@ -5568,16 +5549,16 @@ var many2manyFieldController = (props) => {
5568
5549
  domain: domainMany2Many,
5569
5550
  offset: debouncedPage * 10,
5570
5551
  limit: 10,
5571
- context,
5552
+ context: contextObject,
5572
5553
  fields: groupByDomain?.fields,
5573
5554
  groupby: [groupByDomain?.contexts[0]?.group_by],
5574
5555
  sort: order ? order : default_order ? formatSortingString2(default_order) : ""
5575
5556
  };
5576
- const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5557
+ const enabled = enabledCallAPI && isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5577
5558
  const {
5578
5559
  data: dataResponse,
5579
- isLoading: isDataLoading,
5580
- isFetched: isDataResponseFetched,
5560
+ isLoading,
5561
+ isFetched,
5581
5562
  isPlaceholderData
5582
5563
  } = useGetListData3(data, queryKey, enabled);
5583
5564
  useEffect11(() => {
@@ -5585,12 +5566,7 @@ var many2manyFieldController = (props) => {
5585
5566
  fetchData();
5586
5567
  }
5587
5568
  return () => {
5588
- appDispatch(setGroupByDomain(null));
5589
- setFields((prevFields) => ({
5590
- ...prevFields,
5591
- [`${aid}_${relation}_popupmany2many`]: null
5592
- }));
5593
- appDispatch(setPage(0));
5569
+ setPage(0);
5594
5570
  setSelectedRowKeys4([]);
5595
5571
  setDomainMany2Many(null);
5596
5572
  setIsLoadedData(false);
@@ -5598,44 +5574,19 @@ var many2manyFieldController = (props) => {
5598
5574
  }, [viewResponse]);
5599
5575
  const { rows, columns, typeTable } = tableController({
5600
5576
  data: {
5601
- fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5577
+ fields: viewResponse?.views?.list?.fields,
5602
5578
  records: dataResponse?.records ?? dataResponse?.groups,
5603
5579
  dataModel: viewResponse?.models?.[String(relation)],
5604
- context: { ...env.context, ...context },
5580
+ context: contextObject,
5605
5581
  typeTable: dataResponse?.groups ? "group" : "list"
5606
5582
  }
5607
5583
  });
5608
- const dataFormView = {
5609
- id: null,
5610
- model: relation,
5611
- context
5612
- };
5613
- const {
5614
- refetch,
5615
- data: dataFormViewResponse,
5616
- isSuccess
5617
- } = useGetFormView({
5618
- data: dataFormView,
5619
- queryKey: [`form-view-action-${relation}`],
5620
- enabled: false
5621
- });
5622
- useEffect11(() => {
5623
- if (isSuccess && dataFormViewResponse) {
5624
- sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
5625
- window.location.href = `/form/menu?model=${relation}`;
5626
- }
5627
- }, [isSuccess]);
5628
5584
  useEffect11(() => {
5629
5585
  if (domainMany2Many && !isLoadedData) {
5630
5586
  setIsLoadedData(true);
5631
5587
  }
5632
5588
  }, [domainMany2Many]);
5633
5589
  const handleCreateNewOnPage = async () => {
5634
- try {
5635
- refetch();
5636
- } catch (error) {
5637
- console.log(error);
5638
- }
5639
5590
  };
5640
5591
  return {
5641
5592
  handleCreateNewOnPage,
@@ -5643,9 +5594,13 @@ var many2manyFieldController = (props) => {
5643
5594
  rows,
5644
5595
  columns,
5645
5596
  typeTable,
5646
- isDataLoading,
5647
- isDataResponseFetched,
5648
- isPlaceholderData
5597
+ isLoading,
5598
+ isFetched,
5599
+ isPlaceholderData,
5600
+ setPage,
5601
+ page,
5602
+ domain: domainMany2Many,
5603
+ setDomain: setDomainMany2Many
5649
5604
  };
5650
5605
  };
5651
5606
 
@@ -5654,7 +5609,7 @@ import { useMemo as useMemo11 } from "react";
5654
5609
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5655
5610
  import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5656
5611
  import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5657
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5612
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5658
5613
  var many2manyTagsController = (props) => {
5659
5614
  const {
5660
5615
  relation,
@@ -5668,7 +5623,7 @@ var many2manyTagsController = (props) => {
5668
5623
  const env = getEnv7();
5669
5624
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5670
5625
  const domainObject = useMemo11(
5671
- () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
5626
+ () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5672
5627
  [domain, formValues]
5673
5628
  );
5674
5629
  const data = {
@@ -5711,7 +5666,7 @@ var many2manyTagsController = (props) => {
5711
5666
 
5712
5667
  // src/widget/basic/status-bar-field/controller.ts
5713
5668
  import { useState as useState9 } from "react";
5714
- import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5669
+ import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5715
5670
  var durationController = (props) => {
5716
5671
  const { relation, domain, formValues, name, id, model, onRefetch } = props;
5717
5672
  const specification = {
@@ -5727,7 +5682,7 @@ var durationController = (props) => {
5727
5682
  const listDataProps = {
5728
5683
  model: relation,
5729
5684
  specification,
5730
- domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
5685
+ domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5731
5686
  limit: 10,
5732
5687
  offset: 0,
5733
5688
  fields: "",
@@ -6913,7 +6868,7 @@ var binaryFieldController = (props) => {
6913
6868
  };
6914
6869
 
6915
6870
  // src/widget/advance/table/table-body/controller.ts
6916
- import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
6871
+ import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
6917
6872
  import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
6918
6873
  var tableBodyController = (props) => {
6919
6874
  const {
@@ -6926,7 +6881,7 @@ var tableBodyController = (props) => {
6926
6881
  selectedRowKeysRef,
6927
6882
  onClickRow
6928
6883
  } = props;
6929
- const appDispatch = useAppDispatch6();
6884
+ const appDispatch = useAppDispatch5();
6930
6885
  const checked = useMemo12(() => {
6931
6886
  if (!row?.id) return false;
6932
6887
  if (selectedRowKeys?.includes(row.id)) {
@@ -6981,14 +6936,14 @@ var tableBodyController = (props) => {
6981
6936
 
6982
6937
  // src/widget/advance/table/table-head/controller.ts
6983
6938
  import {
6984
- useAppDispatch as useAppDispatch7,
6939
+ useAppDispatch as useAppDispatch6,
6985
6940
  useAppSelector as useAppSelector4,
6986
6941
  selectSearch as selectSearch3,
6987
6942
  setSelectedRowKeys as setSelectedRowKeys2
6988
6943
  } from "@fctc/interface-logic/store";
6989
6944
  var tableHeadController = (props) => {
6990
6945
  const { typeTable, rows, selectedRowKeysRef } = props;
6991
- const appDispatch = useAppDispatch7();
6946
+ const appDispatch = useAppDispatch6();
6992
6947
  const { groupByDomain } = useAppSelector4(selectSearch3);
6993
6948
  const handleCheckBoxAll = (event) => {
6994
6949
  if (event?.target?.checked && typeTable === "list") {
@@ -7114,7 +7069,7 @@ import {
7114
7069
  useAppSelector as useAppSelector6,
7115
7070
  selectSearch as selectSearch5,
7116
7071
  selectList as selectList4,
7117
- useAppDispatch as useAppDispatch8,
7072
+ useAppDispatch as useAppDispatch7,
7118
7073
  setSelectedRowKeys as setSelectedRowKeys3
7119
7074
  } from "@fctc/interface-logic/store";
7120
7075
 
@@ -7147,7 +7102,7 @@ var tableGroupController = (props) => {
7147
7102
  const [pageGroup, setPageGroup] = useState14(0);
7148
7103
  const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
7149
7104
  const { selectedRowKeys } = useAppSelector6(selectList4);
7150
- const appDispatch = useAppDispatch8();
7105
+ const appDispatch = useAppDispatch7();
7151
7106
  const { toDataJS } = useOdooDataTransform();
7152
7107
  const initVal = toDataJS(row, viewData, model);
7153
7108
  const [isShowGroup, setIsShowGroup] = useState14(false);
@@ -7288,7 +7243,7 @@ var import_moment2 = __toESM(require_moment());
7288
7243
  import { SearchType } from "@fctc/interface-logic/constants";
7289
7244
  import {
7290
7245
  domainHelper as domainHelper2,
7291
- evalJSONDomain as evalJSONDomain6,
7246
+ evalJSONDomain as evalJSONDomain7,
7292
7247
  validateAndParseDate
7293
7248
  } from "@fctc/interface-logic/utils";
7294
7249
  import { useCallback as useCallback3, useEffect as useEffect16, useState as useState15 } from "react";
@@ -7305,7 +7260,7 @@ var searchController = ({
7305
7260
  const [groupBy, setGroupBy] = useState15(null);
7306
7261
  const [selectedTags, setSelectedTags] = useState15(null);
7307
7262
  const [searchString, setSearchString] = useState15("");
7308
- const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain6(actionData?.domain, contextSearch) : [];
7263
+ const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain7(actionData?.domain, contextSearch) : [];
7309
7264
  const aid = actionData?.id;
7310
7265
  const model = actionData?.res_model;
7311
7266
  const clearSearch = () => {
package/dist/types.d.mts CHANGED
@@ -28,6 +28,7 @@ interface IInputFieldProps {
28
28
  domain?: any;
29
29
  idForm?: boolean;
30
30
  widget?: string;
31
+ context?: string | Object;
31
32
  }
32
33
 
33
34
  export type { IInputFieldProps, ValuePropsType };
package/dist/types.d.ts CHANGED
@@ -28,6 +28,7 @@ interface IInputFieldProps {
28
28
  domain?: any;
29
29
  idForm?: boolean;
30
30
  widget?: string;
31
+ context?: string | Object;
31
32
  }
32
33
 
33
34
  export type { IInputFieldProps, ValuePropsType };
package/dist/widget.d.mts CHANGED
@@ -59,16 +59,11 @@ declare const many2oneButtonController: (props: any) => {
59
59
  };
60
60
 
61
61
  interface IMany2ManyControllerProps extends IInputFieldProps {
62
- context: any;
63
62
  tab: any;
64
- aid: number;
65
63
  setSelectedRowKeys: any;
66
- fields: any;
67
- setFields: any;
68
64
  groupByDomain: any;
69
- page: number;
70
65
  options: any;
71
- sessionStorageUtils: any;
66
+ enabled: boolean;
72
67
  }
73
68
 
74
69
  declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
@@ -77,9 +72,13 @@ declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
77
72
  rows: any[];
78
73
  columns: any;
79
74
  typeTable: "list" | "group" | "calendar" | undefined;
80
- isDataLoading: boolean;
81
- isDataResponseFetched: boolean;
75
+ isLoading: boolean;
76
+ isFetched: boolean;
82
77
  isPlaceholderData: boolean;
78
+ setPage: react.Dispatch<react.SetStateAction<number>>;
79
+ page: number;
80
+ domain: any;
81
+ setDomain: react.Dispatch<any>;
83
82
  };
84
83
 
85
84
  interface IMany2ManyTagFieldProps extends IInputFieldProps {
package/dist/widget.d.ts CHANGED
@@ -59,16 +59,11 @@ declare const many2oneButtonController: (props: any) => {
59
59
  };
60
60
 
61
61
  interface IMany2ManyControllerProps extends IInputFieldProps {
62
- context: any;
63
62
  tab: any;
64
- aid: number;
65
63
  setSelectedRowKeys: any;
66
- fields: any;
67
- setFields: any;
68
64
  groupByDomain: any;
69
- page: number;
70
65
  options: any;
71
- sessionStorageUtils: any;
66
+ enabled: boolean;
72
67
  }
73
68
 
74
69
  declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
@@ -77,9 +72,13 @@ declare const many2manyFieldController: (props: IMany2ManyControllerProps) => {
77
72
  rows: any[];
78
73
  columns: any;
79
74
  typeTable: "list" | "group" | "calendar" | undefined;
80
- isDataLoading: boolean;
81
- isDataResponseFetched: boolean;
75
+ isLoading: boolean;
76
+ isFetched: boolean;
82
77
  isPlaceholderData: boolean;
78
+ setPage: react.Dispatch<react.SetStateAction<number>>;
79
+ page: number;
80
+ domain: any;
81
+ setDomain: react.Dispatch<any>;
83
82
  };
84
83
 
85
84
  interface IMany2ManyTagFieldProps extends IInputFieldProps {