@fctc/widget-logic 2.0.8 → 2.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/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,15 +5286,14 @@ 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
- const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5296
+ const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5297
5297
  const data = {
5298
5298
  model: relation,
5299
5299
  domain: domainObject,
@@ -5309,7 +5309,7 @@ var many2oneFieldController = (props) => {
5309
5309
  data: dataOfSelection,
5310
5310
  refetch,
5311
5311
  isFetching
5312
- } = useGetSelection2({
5312
+ } = useGetSelection3({
5313
5313
  data,
5314
5314
  queryKey,
5315
5315
  enabled: false
@@ -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,
5481
+ actionData
5492
5482
  } = 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
5483
  const { env } = (0, provider_exports.useEnv)();
5500
5484
  const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5485
+ const [order, setOrder] = useState8();
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 && !!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,74 +5566,59 @@ 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
- setIsLoadedData(false);
5597
5572
  };
5598
5573
  }, [viewResponse]);
5599
- const { rows, columns, typeTable } = tableController({
5574
+ const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
5600
5575
  data: {
5601
- fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5576
+ fields: viewResponse?.views?.list?.fields,
5602
5577
  records: dataResponse?.records ?? dataResponse?.groups,
5603
5578
  dataModel: viewResponse?.models?.[String(relation)],
5604
- context: { ...env.context, ...context },
5579
+ context: contextObject,
5605
5580
  typeTable: dataResponse?.groups ? "group" : "list"
5606
5581
  }
5607
5582
  });
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
5583
+ const searchControllers = searchController({
5584
+ viewData: viewResponse,
5585
+ model: relation ?? "",
5586
+ context: contextObject,
5587
+ domain,
5588
+ fieldsList: [
5589
+ ...columns?.filter(
5590
+ (col) => col?.field?.type_co === "field" && col?.optional !== "hide"
5591
+ )?.map((col) => ({ ...col.field })) ?? []
5592
+ ]
5621
5593
  });
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
- useEffect11(() => {
5629
- if (domainMany2Many && !isLoadedData) {
5630
- setIsLoadedData(true);
5631
- }
5632
- }, [domainMany2Many]);
5633
5594
  const handleCreateNewOnPage = async () => {
5634
- try {
5635
- refetch();
5636
- } catch (error) {
5637
- console.log(error);
5638
- }
5639
5595
  };
5640
5596
  return {
5641
5597
  handleCreateNewOnPage,
5642
5598
  optionsObject,
5599
+ totalRows: dataResponse?.length ?? 0,
5643
5600
  rows,
5644
5601
  columns,
5602
+ onToggleColumnOptional,
5645
5603
  typeTable,
5646
- isDataLoading,
5647
- isDataResponseFetched,
5648
- isPlaceholderData
5604
+ isLoading,
5605
+ isFetched,
5606
+ isPlaceholderData,
5607
+ setPage,
5608
+ page,
5609
+ viewData: viewResponse,
5610
+ domain: domainMany2Many,
5611
+ setDomain: setDomainMany2Many,
5612
+ searchController: searchControllers
5649
5613
  };
5650
5614
  };
5651
5615
 
5652
5616
  // src/widget/basic/many2many-tags-field/controller.ts
5653
5617
  import { useMemo as useMemo11 } from "react";
5654
5618
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5655
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5619
+ import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5620
+ import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5621
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5656
5622
  var many2manyTagsController = (props) => {
5657
5623
  const {
5658
5624
  relation,
@@ -5663,11 +5629,10 @@ var many2manyTagsController = (props) => {
5663
5629
  placeholderNoOption
5664
5630
  } = props;
5665
5631
  const isUser = relation === "res.users" || relation === "res.partner";
5666
- const { env } = (0, provider_exports.useEnv)();
5667
- const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5632
+ const env = getEnv7();
5668
5633
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5669
5634
  const domainObject = useMemo11(
5670
- () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
5635
+ () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5671
5636
  [domain, formValues]
5672
5637
  );
5673
5638
  const data = {
@@ -5703,15 +5668,16 @@ var many2manyTagsController = (props) => {
5703
5668
  options,
5704
5669
  customNoOptionsMessage,
5705
5670
  tranfer,
5671
+ dataOfSelection,
5706
5672
  isUser
5707
5673
  };
5708
5674
  };
5709
5675
 
5710
5676
  // src/widget/basic/status-bar-field/controller.ts
5711
5677
  import { useState as useState9 } from "react";
5712
- import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5678
+ import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5713
5679
  var durationController = (props) => {
5714
- const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5680
+ const { relation, domain, formValues, name, id, model, onRefetch } = props;
5715
5681
  const specification = {
5716
5682
  id: 0,
5717
5683
  name: "",
@@ -5725,7 +5691,7 @@ var durationController = (props) => {
5725
5691
  const listDataProps = {
5726
5692
  model: relation,
5727
5693
  specification,
5728
- domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
5694
+ domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5729
5695
  limit: 10,
5730
5696
  offset: 0,
5731
5697
  fields: "",
@@ -5735,11 +5701,7 @@ var durationController = (props) => {
5735
5701
  },
5736
5702
  sort: ""
5737
5703
  };
5738
- const { data: dataResponse } = useGetListData3(
5739
- listDataProps,
5740
- queryKey,
5741
- enabled
5742
- );
5704
+ const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5743
5705
  const { mutate: fetchChangeStatus } = useChangeStatus();
5744
5706
  const handleClick = async (stage_id) => {
5745
5707
  setDisabled(true);
@@ -5775,18 +5737,32 @@ var durationController = (props) => {
5775
5737
  };
5776
5738
 
5777
5739
  // src/widget/basic/priority-field/controller.ts
5740
+ import { useSave as useSave2 } from "@fctc/interface-logic/hooks";
5778
5741
  import { evalJSONContext as evalJSONContext6 } from "@fctc/interface-logic/utils";
5779
5742
  var priorityFieldController = (props) => {
5780
- const { name, model, id, actionData, context, onChange } = props;
5743
+ const {
5744
+ value,
5745
+ isForm,
5746
+ name,
5747
+ methods,
5748
+ onChange,
5749
+ model,
5750
+ selection,
5751
+ id,
5752
+ actionData,
5753
+ viewData,
5754
+ context
5755
+ } = props;
5781
5756
  const _context = { ...evalJSONContext6(actionData?.context) };
5782
5757
  const contextObject = { ...context, ..._context };
5783
- const { useSave: useSave2 } = (0, provider_exports.useService)();
5758
+ const defaultPriority = parseInt(value) + 1;
5759
+ const label = viewData?.models?.[model]?.[name ?? ""]?.string ?? name;
5784
5760
  const { mutateAsync: fetchSave } = useSave2();
5785
5761
  const savePriorities = async ({
5786
- value,
5762
+ value: value2,
5787
5763
  resetPriority
5788
5764
  }) => {
5789
- const priorityValue = value <= 0 ? 0 : value - 1;
5765
+ const priorityValue = value2 <= 0 ? 0 : value2 - 1;
5790
5766
  try {
5791
5767
  fetchSave({
5792
5768
  ids: id ? [id] : [],
@@ -5804,7 +5780,14 @@ var priorityFieldController = (props) => {
5804
5780
  }
5805
5781
  };
5806
5782
  return {
5807
- savePriorities
5783
+ selection,
5784
+ isForm,
5785
+ methods,
5786
+ defaultPriority,
5787
+ savePriorities,
5788
+ label,
5789
+ id,
5790
+ onChange
5808
5791
  };
5809
5792
  };
5810
5793
 
@@ -6767,11 +6750,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
6767
6750
  var colorFieldController = (props) => {
6768
6751
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
6769
6752
  const { env } = (0, provider_exports.useEnv)();
6770
- const { useSave: useSave2 } = (0, provider_exports.useService)();
6753
+ const { useSave: useSave3 } = (0, provider_exports.useService)();
6771
6754
  const _context = { ...evalJSONContext7(actionData?.context) || {} };
6772
6755
  const contextObject = { ...env.context, ..._context };
6773
6756
  const idDefault = isForm ? idForm : formValues?.id;
6774
- const { mutate: onSave } = useSave2();
6757
+ const { mutate: onSave } = useSave3();
6775
6758
  const savePickColor = async (colorObject) => {
6776
6759
  const { id } = colorObject;
6777
6760
  if (value === id) return;
@@ -6894,25 +6877,20 @@ var binaryFieldController = (props) => {
6894
6877
  };
6895
6878
 
6896
6879
  // src/widget/advance/table/table-body/controller.ts
6897
- import {
6898
- useAppDispatch as useAppDispatch6,
6899
- setSelectedRowKeys,
6900
- useAppSelector as useAppSelector4,
6901
- selectList as selectList3
6902
- } from "@fctc/interface-logic/store";
6880
+ import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
6903
6881
  import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
6904
6882
  var tableBodyController = (props) => {
6905
6883
  const {
6906
6884
  checkedAll,
6907
6885
  checkboxRef,
6908
6886
  setIsAutoSelect,
6887
+ selectedRowKeys,
6909
6888
  row,
6910
6889
  isAutoSelect,
6911
6890
  selectedRowKeysRef,
6912
6891
  onClickRow
6913
6892
  } = props;
6914
- const appDispatch = useAppDispatch6();
6915
- const { selectedRowKeys } = useAppSelector4(selectList3);
6893
+ const appDispatch = useAppDispatch5();
6916
6894
  const checked = useMemo12(() => {
6917
6895
  if (!row?.id) return false;
6918
6896
  if (selectedRowKeys?.includes(row.id)) {
@@ -6928,6 +6906,7 @@ var tableBodyController = (props) => {
6928
6906
  return;
6929
6907
  }
6930
6908
  const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
6909
+ console.log("newSelectedRowKeys", newSelectedRowKeys);
6931
6910
  appDispatch(setSelectedRowKeys(newSelectedRowKeys));
6932
6911
  };
6933
6912
  const handleClickRow = (col, row2) => {
@@ -6966,15 +6945,15 @@ var tableBodyController = (props) => {
6966
6945
 
6967
6946
  // src/widget/advance/table/table-head/controller.ts
6968
6947
  import {
6969
- useAppDispatch as useAppDispatch7,
6970
- useAppSelector as useAppSelector5,
6948
+ useAppDispatch as useAppDispatch6,
6949
+ useAppSelector as useAppSelector4,
6971
6950
  selectSearch as selectSearch3,
6972
6951
  setSelectedRowKeys as setSelectedRowKeys2
6973
6952
  } from "@fctc/interface-logic/store";
6974
6953
  var tableHeadController = (props) => {
6975
6954
  const { typeTable, rows, selectedRowKeysRef } = props;
6976
- const appDispatch = useAppDispatch7();
6977
- const { groupByDomain } = useAppSelector5(selectSearch3);
6955
+ const appDispatch = useAppDispatch6();
6956
+ const { groupByDomain } = useAppSelector4(selectSearch3);
6978
6957
  const handleCheckBoxAll = (event) => {
6979
6958
  if (event?.target?.checked && typeTable === "list") {
6980
6959
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
@@ -7009,9 +6988,9 @@ var tableHeadController = (props) => {
7009
6988
  // src/widget/advance/table/table-view/controller.ts
7010
6989
  import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState13 } from "react";
7011
6990
  import {
7012
- useAppSelector as useAppSelector6,
6991
+ useAppSelector as useAppSelector5,
7013
6992
  selectSearch as selectSearch4,
7014
- selectList as selectList4
6993
+ selectList as selectList3
7015
6994
  } from "@fctc/interface-logic/store";
7016
6995
  import { domainHelper } from "@fctc/interface-logic/utils";
7017
6996
  var tableController = ({ data }) => {
@@ -7096,10 +7075,10 @@ import {
7096
7075
  useGetListData as useGetListData2
7097
7076
  } from "@fctc/interface-logic/hooks";
7098
7077
  import {
7099
- useAppSelector as useAppSelector7,
7078
+ useAppSelector as useAppSelector6,
7100
7079
  selectSearch as selectSearch5,
7101
- selectList as selectList5,
7102
- useAppDispatch as useAppDispatch8,
7080
+ selectList as selectList4,
7081
+ useAppDispatch as useAppDispatch7,
7103
7082
  setSelectedRowKeys as setSelectedRowKeys3
7104
7083
  } from "@fctc/interface-logic/store";
7105
7084
 
@@ -7130,9 +7109,9 @@ var tableGroupController = (props) => {
7130
7109
  selectedRowKeysRef
7131
7110
  } = props;
7132
7111
  const [pageGroup, setPageGroup] = useState14(0);
7133
- const { groupByDomain, selectedTags } = useAppSelector7(selectSearch5);
7134
- const { selectedRowKeys } = useAppSelector7(selectList5);
7135
- const appDispatch = useAppDispatch8();
7112
+ const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
7113
+ const { selectedRowKeys } = useAppSelector6(selectList4);
7114
+ const appDispatch = useAppDispatch7();
7136
7115
  const { toDataJS } = useOdooDataTransform();
7137
7116
  const initVal = toDataJS(row, viewData, model);
7138
7117
  const [isShowGroup, setIsShowGroup] = useState14(false);
@@ -7273,26 +7252,28 @@ var import_moment2 = __toESM(require_moment());
7273
7252
  import { SearchType } from "@fctc/interface-logic/constants";
7274
7253
  import {
7275
7254
  domainHelper as domainHelper2,
7276
- evalJSONDomain as evalJSONDomain6,
7255
+ evalJSONContext as evalJSONContext8,
7256
+ evalJSONDomain as evalJSONDomain7,
7277
7257
  validateAndParseDate
7278
7258
  } from "@fctc/interface-logic/utils";
7279
7259
  import { useCallback as useCallback3, useEffect as useEffect16, useState as useState15 } from "react";
7280
7260
  var searchController = ({
7281
7261
  viewData,
7282
- actionData,
7283
- fieldsList,
7284
- contextSearch,
7285
- setSearchMap,
7286
- searchMap
7262
+ model,
7263
+ domain,
7264
+ context,
7265
+ fieldsList
7287
7266
  }) => {
7267
+ const { env } = (0, provider_exports.useEnv)();
7288
7268
  const [filterBy, setFilterBy] = useState15(null);
7289
7269
  const [searchBy, setSearchBy] = useState15(null);
7290
7270
  const [groupBy, setGroupBy] = useState15(null);
7291
7271
  const [selectedTags, setSelectedTags] = useState15(null);
7292
7272
  const [searchString, setSearchString] = useState15("");
7293
- const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain6(actionData?.domain, contextSearch) : [];
7294
- const aid = actionData?.id;
7295
- const model = actionData?.res_model;
7273
+ const [searchMap, setSearchMap] = useState15({});
7274
+ const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
7275
+ const contextSearch = { ...env.context, ...actionContext };
7276
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
7296
7277
  const clearSearch = () => {
7297
7278
  setFilterBy([]);
7298
7279
  setGroupBy([]);
@@ -7337,9 +7318,8 @@ var searchController = ({
7337
7318
  }
7338
7319
  };
7339
7320
  useEffect16(() => {
7340
- clearSearch();
7341
7321
  fetchData();
7342
- }, [aid, model, viewData]);
7322
+ }, [model, viewData]);
7343
7323
  const onChangeSearchInput = (search_string) => {
7344
7324
  setSearchString(search_string);
7345
7325
  };
@@ -7376,27 +7356,27 @@ var searchController = ({
7376
7356
  };
7377
7357
  const formatDomain = () => {
7378
7358
  if (domainAction) {
7379
- const domain = [];
7359
+ const domain2 = [];
7380
7360
  if (domainAction?.length > 0) {
7381
- if (Object.keys(searchMap).length > 0) {
7382
- domain.push("&");
7361
+ if (Object.keys(searchMap).some((key) => !key.includes(SearchType.GROUP))) {
7362
+ domain2.push("&");
7383
7363
  }
7384
7364
  domainAction.forEach((domainItem) => {
7385
- domain.push(domainItem);
7365
+ domain2.push(domainItem);
7386
7366
  });
7387
7367
  }
7388
7368
  Object.keys(searchMap).forEach((key, keyIndex, keys) => {
7389
7369
  if (!key?.includes(SearchType.GROUP)) {
7390
7370
  if (keys.length > 1 && keyIndex < keys.length - 1) {
7391
- domain.push("&");
7371
+ domain2.push("&");
7392
7372
  }
7393
7373
  const valuesOfKey = searchMap[key];
7394
7374
  valuesOfKey.forEach((value, index) => {
7395
7375
  if (index < valuesOfKey.length - 1) {
7396
- domain.push("|");
7376
+ domain2.push("|");
7397
7377
  }
7398
7378
  if (value.domain) {
7399
- domain.push(...value.domain);
7379
+ domain2.push(...value.domain);
7400
7380
  return;
7401
7381
  }
7402
7382
  let valueDomainItem = value?.value;
@@ -7412,11 +7392,11 @@ var searchController = ({
7412
7392
  }
7413
7393
  }
7414
7394
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
7415
- domain.push([value.name, operator, valueDomainItem]);
7395
+ domain2.push([value.name, operator, valueDomainItem]);
7416
7396
  });
7417
7397
  }
7418
7398
  });
7419
- return [...domain];
7399
+ return [...domain2];
7420
7400
  }
7421
7401
  };
7422
7402
  const setTagSearch = useCallback3(
@@ -7447,16 +7427,16 @@ var searchController = ({
7447
7427
  const contexts = [];
7448
7428
  let groupValues = [];
7449
7429
  objValues?.forEach((objValue) => {
7450
- const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7430
+ const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7451
7431
  const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
7452
7432
  contexts.push(
7453
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({ group_by: item })) : [context]
7433
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
7454
7434
  );
7455
7435
  groupValues[indexAppend] = {
7456
7436
  contexts: [
7457
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({
7437
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
7458
7438
  group_by: item
7459
- })) : [context]
7439
+ })) : [context2]
7460
7440
  ],
7461
7441
  strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
7462
7442
  };
@@ -7483,39 +7463,38 @@ var searchController = ({
7483
7463
  [searchMap]
7484
7464
  );
7485
7465
  useEffect16(() => {
7486
- setSelectedTags(null);
7487
7466
  setTagSearch(searchMap);
7488
7467
  }, [searchMap]);
7489
7468
  const handleAddTagSearch = (tag) => {
7490
7469
  const {
7491
- domain,
7470
+ domain: domain2,
7492
7471
  groupIndex,
7493
7472
  value,
7494
7473
  type,
7495
7474
  title,
7496
- context,
7475
+ context: context2,
7497
7476
  active,
7498
7477
  dataIndex
7499
7478
  } = tag;
7500
- const domainFormat = new domainHelper2.Domain(domain);
7479
+ const domainFormat = new domainHelper2.Domain(domain2);
7501
7480
  if (type === SearchType.FILTER) {
7502
7481
  addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
7503
7482
  ...tag,
7504
- domain: domain ? domainFormat.toList(context) : null
7483
+ domain: domain2 ? domainFormat.toList(context2) : null
7505
7484
  });
7506
7485
  } else if (type === SearchType.SEARCH) {
7507
7486
  addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
7508
7487
  ...tag,
7509
- domain: domain ? domainFormat.toList({
7510
- ...context,
7488
+ domain: domain2 ? domainFormat.toList({
7489
+ ...context2,
7511
7490
  self: value
7512
7491
  }) : null
7513
7492
  });
7514
7493
  } else if (type === SearchType.GROUP) {
7515
7494
  addSearchItems(`${SearchType.GROUP}`, {
7516
7495
  ...tag,
7517
- domain: domain ? domainFormat.toList({
7518
- context,
7496
+ domain: domain2 ? domainFormat.toList({
7497
+ context: context2,
7519
7498
  self: value
7520
7499
  }) : null
7521
7500
  });
@@ -7535,7 +7514,8 @@ var searchController = ({
7535
7514
  removeSearchItems,
7536
7515
  onSearchString: onChangeSearchInput,
7537
7516
  handleAddTagSearch,
7538
- domain: formatDomain()
7517
+ domain: formatDomain(),
7518
+ context: contextSearch
7539
7519
  };
7540
7520
  };
7541
7521
 
package/dist/types.d.mts CHANGED
@@ -28,7 +28,7 @@ interface IInputFieldProps {
28
28
  domain?: any;
29
29
  idForm?: boolean;
30
30
  widget?: string;
31
- aid?: string | number;
31
+ context?: string | Object;
32
32
  }
33
33
 
34
34
  export type { IInputFieldProps, ValuePropsType };
package/dist/types.d.ts CHANGED
@@ -28,7 +28,7 @@ interface IInputFieldProps {
28
28
  domain?: any;
29
29
  idForm?: boolean;
30
30
  widget?: string;
31
- aid?: string | number;
31
+ context?: string | Object;
32
32
  }
33
33
 
34
34
  export type { IInputFieldProps, ValuePropsType };