@fctc/widget-logic 1.9.5 → 1.9.6

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