@fctc/widget-logic 1.9.6 → 1.9.7

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,67 +5566,43 @@ 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);
5597
5573
  };
5598
5574
  }, [viewResponse]);
5599
- const { rows, columns, typeTable } = tableController({
5575
+ const { rows, columns, typeTable, onToggleColumnOptional } = 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,
5642
5593
  optionsObject,
5594
+ totalRows: dataResponse?.length ?? 0,
5643
5595
  rows,
5644
5596
  columns,
5597
+ onToggleColumnOptional,
5645
5598
  typeTable,
5646
- isDataLoading,
5647
- isDataResponseFetched,
5648
- isPlaceholderData
5599
+ isLoading,
5600
+ isFetched,
5601
+ isPlaceholderData,
5602
+ setPage,
5603
+ page,
5604
+ domain: domainMany2Many,
5605
+ setDomain: setDomainMany2Many
5649
5606
  };
5650
5607
  };
5651
5608
 
@@ -5654,7 +5611,7 @@ import { useMemo as useMemo11 } from "react";
5654
5611
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5655
5612
  import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5656
5613
  import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5657
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5614
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5658
5615
  var many2manyTagsController = (props) => {
5659
5616
  const {
5660
5617
  relation,
@@ -5668,7 +5625,7 @@ var many2manyTagsController = (props) => {
5668
5625
  const env = getEnv7();
5669
5626
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5670
5627
  const domainObject = useMemo11(
5671
- () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
5628
+ () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5672
5629
  [domain, formValues]
5673
5630
  );
5674
5631
  const data = {
@@ -5711,9 +5668,9 @@ var many2manyTagsController = (props) => {
5711
5668
 
5712
5669
  // src/widget/basic/status-bar-field/controller.ts
5713
5670
  import { useState as useState9 } from "react";
5714
- import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5671
+ import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5715
5672
  var durationController = (props) => {
5716
- const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5673
+ const { relation, domain, formValues, name, id, model, onRefetch } = props;
5717
5674
  const specification = {
5718
5675
  id: 0,
5719
5676
  name: "",
@@ -5727,7 +5684,7 @@ var durationController = (props) => {
5727
5684
  const listDataProps = {
5728
5685
  model: relation,
5729
5686
  specification,
5730
- domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
5687
+ domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5731
5688
  limit: 10,
5732
5689
  offset: 0,
5733
5690
  fields: "",
@@ -5737,11 +5694,7 @@ var durationController = (props) => {
5737
5694
  },
5738
5695
  sort: ""
5739
5696
  };
5740
- const { data: dataResponse } = useGetListData3(
5741
- listDataProps,
5742
- queryKey,
5743
- enabled
5744
- );
5697
+ const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5745
5698
  const { mutate: fetchChangeStatus } = useChangeStatus();
5746
5699
  const handleClick = async (stage_id) => {
5747
5700
  setDisabled(true);
@@ -6917,7 +6870,7 @@ var binaryFieldController = (props) => {
6917
6870
  };
6918
6871
 
6919
6872
  // src/widget/advance/table/table-body/controller.ts
6920
- import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
6873
+ import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
6921
6874
  import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
6922
6875
  var tableBodyController = (props) => {
6923
6876
  const {
@@ -6930,7 +6883,7 @@ var tableBodyController = (props) => {
6930
6883
  selectedRowKeysRef,
6931
6884
  onClickRow
6932
6885
  } = props;
6933
- const appDispatch = useAppDispatch6();
6886
+ const appDispatch = useAppDispatch5();
6934
6887
  const checked = useMemo12(() => {
6935
6888
  if (!row?.id) return false;
6936
6889
  if (selectedRowKeys?.includes(row.id)) {
@@ -6985,14 +6938,14 @@ var tableBodyController = (props) => {
6985
6938
 
6986
6939
  // src/widget/advance/table/table-head/controller.ts
6987
6940
  import {
6988
- useAppDispatch as useAppDispatch7,
6941
+ useAppDispatch as useAppDispatch6,
6989
6942
  useAppSelector as useAppSelector4,
6990
6943
  selectSearch as selectSearch3,
6991
6944
  setSelectedRowKeys as setSelectedRowKeys2
6992
6945
  } from "@fctc/interface-logic/store";
6993
6946
  var tableHeadController = (props) => {
6994
6947
  const { typeTable, rows, selectedRowKeysRef } = props;
6995
- const appDispatch = useAppDispatch7();
6948
+ const appDispatch = useAppDispatch6();
6996
6949
  const { groupByDomain } = useAppSelector4(selectSearch3);
6997
6950
  const handleCheckBoxAll = (event) => {
6998
6951
  if (event?.target?.checked && typeTable === "list") {
@@ -7118,7 +7071,7 @@ import {
7118
7071
  useAppSelector as useAppSelector6,
7119
7072
  selectSearch as selectSearch5,
7120
7073
  selectList as selectList4,
7121
- useAppDispatch as useAppDispatch8,
7074
+ useAppDispatch as useAppDispatch7,
7122
7075
  setSelectedRowKeys as setSelectedRowKeys3
7123
7076
  } from "@fctc/interface-logic/store";
7124
7077
 
@@ -7151,7 +7104,7 @@ var tableGroupController = (props) => {
7151
7104
  const [pageGroup, setPageGroup] = useState14(0);
7152
7105
  const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
7153
7106
  const { selectedRowKeys } = useAppSelector6(selectList4);
7154
- const appDispatch = useAppDispatch8();
7107
+ const appDispatch = useAppDispatch7();
7155
7108
  const { toDataJS } = useOdooDataTransform();
7156
7109
  const initVal = toDataJS(row, viewData, model);
7157
7110
  const [isShowGroup, setIsShowGroup] = useState14(false);
@@ -7292,7 +7245,7 @@ var import_moment2 = __toESM(require_moment());
7292
7245
  import { SearchType } from "@fctc/interface-logic/constants";
7293
7246
  import {
7294
7247
  domainHelper as domainHelper2,
7295
- evalJSONDomain as evalJSONDomain6,
7248
+ evalJSONDomain as evalJSONDomain7,
7296
7249
  validateAndParseDate
7297
7250
  } from "@fctc/interface-logic/utils";
7298
7251
  import { useCallback as useCallback3, useEffect as useEffect16, useState as useState15 } from "react";
@@ -7309,7 +7262,7 @@ var searchController = ({
7309
7262
  const [groupBy, setGroupBy] = useState15(null);
7310
7263
  const [selectedTags, setSelectedTags] = useState15(null);
7311
7264
  const [searchString, setSearchString] = useState15("");
7312
- const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain6(actionData?.domain, contextSearch) : [];
7265
+ const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain7(actionData?.domain, contextSearch) : [];
7313
7266
  const aid = actionData?.id;
7314
7267
  const model = actionData?.res_model;
7315
7268
  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,27 +59,28 @@ 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) => {
75
70
  handleCreateNewOnPage: () => Promise<void>;
76
71
  optionsObject: any;
72
+ totalRows: any;
77
73
  rows: any[];
78
74
  columns: any;
75
+ onToggleColumnOptional: (item: any) => void;
79
76
  typeTable: "list" | "group" | "calendar" | undefined;
80
- isDataLoading: boolean;
81
- isDataResponseFetched: boolean;
77
+ isLoading: boolean;
78
+ isFetched: boolean;
82
79
  isPlaceholderData: boolean;
80
+ setPage: react.Dispatch<react.SetStateAction<number>>;
81
+ page: number;
82
+ domain: any;
83
+ setDomain: react.Dispatch<any>;
83
84
  };
84
85
 
85
86
  interface IMany2ManyTagFieldProps extends IInputFieldProps {
@@ -98,7 +99,6 @@ declare const many2manyTagsController: (props: IMany2ManyTagFieldProps) => {
98
99
 
99
100
  interface IDurationFieldProps extends IInputFieldProps {
100
101
  id: any;
101
- enabled?: any;
102
102
  }
103
103
 
104
104
  declare const durationController: (props: IDurationFieldProps) => {
package/dist/widget.d.ts CHANGED
@@ -59,27 +59,28 @@ 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) => {
75
70
  handleCreateNewOnPage: () => Promise<void>;
76
71
  optionsObject: any;
72
+ totalRows: any;
77
73
  rows: any[];
78
74
  columns: any;
75
+ onToggleColumnOptional: (item: any) => void;
79
76
  typeTable: "list" | "group" | "calendar" | undefined;
80
- isDataLoading: boolean;
81
- isDataResponseFetched: boolean;
77
+ isLoading: boolean;
78
+ isFetched: boolean;
82
79
  isPlaceholderData: boolean;
80
+ setPage: react.Dispatch<react.SetStateAction<number>>;
81
+ page: number;
82
+ domain: any;
83
+ setDomain: react.Dispatch<any>;
83
84
  };
84
85
 
85
86
  interface IMany2ManyTagFieldProps extends IInputFieldProps {
@@ -98,7 +99,6 @@ declare const many2manyTagsController: (props: IMany2ManyTagFieldProps) => {
98
99
 
99
100
  interface IDurationFieldProps extends IInputFieldProps {
100
101
  id: any;
101
- enabled?: any;
102
102
  }
103
103
 
104
104
  declare const durationController: (props: IDurationFieldProps) => {