@fctc/widget-logic 2.2.3 → 2.2.4

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
@@ -4072,7 +4072,6 @@ __export(index_exports, {
4072
4072
  searchController: () => searchController,
4073
4073
  setStorageItemAsync: () => setStorageItemAsync,
4074
4074
  statusDropdownController: () => statusDropdownController,
4075
- tableBodyController: () => tableBodyController,
4076
4075
  tableController: () => tableController,
4077
4076
  tableGroupController: () => tableGroupController,
4078
4077
  tableHeadController: () => tableHeadController,
@@ -5320,6 +5319,7 @@ var many2oneFieldController = (props) => {
5320
5319
  options: fieldOptions,
5321
5320
  showDetail
5322
5321
  } = props;
5322
+ const { env } = (0, provider_exports.useEnv)();
5323
5323
  const [options, setOptions] = useState8([]);
5324
5324
  const [inputValue, setInputValue] = useState8("");
5325
5325
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
@@ -5329,15 +5329,14 @@ var many2oneFieldController = (props) => {
5329
5329
  const [domainObject, setDomainObject] = useState8(null);
5330
5330
  const actionData = sessionStorageUtils.getActionData();
5331
5331
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5332
- const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
5333
5332
  const initValue = methods?.getValues(name);
5334
5333
  const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
5335
5334
  const contextObject = {
5336
5335
  ...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
5337
5336
  ...fieldContext,
5338
- ...context
5337
+ ...env?.context
5339
5338
  };
5340
- const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5339
+ const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5341
5340
  const data = {
5342
5341
  model: relation,
5343
5342
  domain: domainObject,
@@ -5353,7 +5352,7 @@ var many2oneFieldController = (props) => {
5353
5352
  data: dataOfSelection,
5354
5353
  refetch,
5355
5354
  isFetching
5356
- } = useGetSelection3({
5355
+ } = useGetSelection2({
5357
5356
  data,
5358
5357
  queryKey,
5359
5358
  enabled: false
@@ -5507,15 +5506,9 @@ var many2oneButtonController = (props) => {
5507
5506
 
5508
5507
  // src/widget/basic/many2many-field/controller.ts
5509
5508
  import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
5510
- import {
5511
- useAppDispatch as useAppDispatch5,
5512
- setFirstDomain,
5513
- setViewDataStore,
5514
- setPage,
5515
- setGroupByDomain
5516
- } from "@fctc/interface-logic/store";
5517
5509
  import {
5518
5510
  evalJSONContext as evalJSONContext4,
5511
+ evalJSONDomain as evalJSONDomain4,
5519
5512
  formatSortingString as formatSortingString2
5520
5513
  } from "@fctc/interface-logic/utils";
5521
5514
  var many2manyFieldController = (props) => {
@@ -5523,45 +5516,43 @@ var many2manyFieldController = (props) => {
5523
5516
  relation,
5524
5517
  domain,
5525
5518
  context,
5519
+ options,
5526
5520
  tab,
5527
- model,
5528
- aid,
5529
- setSelectedRowKeys: setSelectedRowKeys4,
5530
- fields,
5531
- setFields,
5521
+ setSelectedRowKeys: setSelectedRowKeys3,
5532
5522
  groupByDomain,
5533
- page,
5534
- options,
5535
- sessionStorageUtils
5523
+ enabled: enabledCallAPI,
5524
+ actionData
5536
5525
  } = props;
5537
- const appDispatch = useAppDispatch5();
5538
- const actionData = sessionStorageUtils.getActionData();
5539
- const [debouncedPage] = useDebounce(page, 500);
5540
- const [order, setOrder] = useState9();
5541
- const [isLoadedData, setIsLoadedData] = useState9(false);
5542
- const [domainMany2Many, setDomainMany2Many] = useState9(domain);
5543
5526
  const { env } = (0, provider_exports.useEnv)();
5544
5527
  const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5528
+ const [order, setOrder] = useState9();
5529
+ const [page, setPage] = useState9(0);
5530
+ const [domainMany2Many, setDomainMany2Many] = useState9(null);
5531
+ const [debouncedPage] = useDebounce(page, 500);
5532
+ const contextObject = {
5533
+ ...env.context,
5534
+ ...context || {}
5535
+ };
5545
5536
  const viewParams = {
5546
5537
  model: relation,
5547
5538
  views: [
5548
5539
  [false, "list"],
5549
5540
  [false, "search"]
5550
5541
  ],
5551
- context
5542
+ context: contextObject
5552
5543
  };
5553
- const { data: viewResponse } = useGetView2(viewParams, actionData);
5544
+ const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
5554
5545
  const baseModel = useMemo10(
5555
5546
  () => ({
5556
5547
  name: String(relation),
5557
5548
  view: viewResponse || {},
5558
- actContext: context,
5549
+ actContext: contextObject,
5559
5550
  fields: [
5560
5551
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5561
5552
  ...tab?.fields ? tab.fields : []
5562
5553
  ]
5563
5554
  }),
5564
- [model, viewResponse]
5555
+ [relation, viewResponse]
5565
5556
  );
5566
5557
  const initModel = (0, hooks_exports.useModel)();
5567
5558
  const modelInstance = useMemo10(() => {
@@ -5580,26 +5571,15 @@ var many2manyFieldController = (props) => {
5580
5571
  const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
5581
5572
  const fetchData = async () => {
5582
5573
  try {
5583
- setDomainMany2Many(domain);
5584
- appDispatch(setFirstDomain(domain));
5585
- appDispatch(setViewDataStore(viewResponse));
5586
- const modalData = viewResponse?.views?.list?.fields.map((field) => ({
5587
- ...viewResponse?.models?.[String(model)]?.[field?.name],
5588
- ...field
5589
- }));
5590
- if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
5591
- setFields({
5592
- ...fields,
5593
- [`${aid}_${relation}_popupmany2many`]: modalData
5594
- });
5595
- }
5596
- appDispatch(setPage(0));
5574
+ const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
5575
+ setDomainMany2Many(domainParse);
5576
+ setPage(0);
5597
5577
  } catch (err) {
5598
5578
  console.log(err);
5599
5579
  }
5600
5580
  };
5601
5581
  const queryKey = [
5602
- `view-${relation}-${aid}`,
5582
+ `view-${relation}`,
5603
5583
  specification,
5604
5584
  domainMany2Many,
5605
5585
  debouncedPage,
@@ -5612,16 +5592,16 @@ var many2manyFieldController = (props) => {
5612
5592
  domain: domainMany2Many,
5613
5593
  offset: debouncedPage * 10,
5614
5594
  limit: 10,
5615
- context,
5595
+ context: contextObject,
5616
5596
  fields: groupByDomain?.fields,
5617
5597
  groupby: [groupByDomain?.contexts[0]?.group_by],
5618
5598
  sort: order ? order : default_order ? formatSortingString2(default_order) : ""
5619
5599
  };
5620
- const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5600
+ const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5621
5601
  const {
5622
5602
  data: dataResponse,
5623
- isLoading: isDataLoading,
5624
- isFetched: isDataResponseFetched,
5603
+ isLoading,
5604
+ isFetched,
5625
5605
  isPlaceholderData
5626
5606
  } = useGetListData3(data, queryKey, enabled);
5627
5607
  useEffect11(() => {
@@ -5629,76 +5609,57 @@ var many2manyFieldController = (props) => {
5629
5609
  fetchData();
5630
5610
  }
5631
5611
  return () => {
5632
- appDispatch(setGroupByDomain(null));
5633
- setFields((prevFields) => ({
5634
- ...prevFields,
5635
- [`${aid}_${relation}_popupmany2many`]: null
5636
- }));
5637
- appDispatch(setPage(0));
5638
- setSelectedRowKeys4([]);
5612
+ setPage(0);
5613
+ setSelectedRowKeys3([]);
5639
5614
  setDomainMany2Many(null);
5640
- setIsLoadedData(false);
5641
5615
  };
5642
5616
  }, [viewResponse]);
5643
- const { rows, columns, typeTable } = tableController({
5617
+ const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
5644
5618
  data: {
5645
- fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5619
+ fields: viewResponse?.views?.list?.fields,
5646
5620
  records: dataResponse?.records ?? dataResponse?.groups,
5647
5621
  dataModel: viewResponse?.models?.[String(relation)],
5648
- context: { ...env.context, ...context },
5622
+ context: contextObject,
5649
5623
  typeTable: dataResponse?.groups ? "group" : "list"
5650
5624
  }
5651
5625
  });
5652
- const dataFormView = {
5653
- id: null,
5654
- model: relation,
5655
- context
5656
- };
5657
- const {
5658
- refetch,
5659
- data: dataFormViewResponse,
5660
- isSuccess
5661
- } = useGetFormView({
5662
- data: dataFormView,
5663
- queryKey: [`form-view-action-${relation}`],
5664
- enabled: false
5626
+ const searchControllers = searchController({
5627
+ viewData: viewResponse,
5628
+ model: relation ?? "",
5629
+ context: contextObject,
5630
+ domain,
5631
+ fieldsList: [
5632
+ ...columns?.filter(
5633
+ (col) => col?.field?.type_co === "field" && col?.optional !== "hide"
5634
+ )?.map((col) => ({ ...col.field })) ?? []
5635
+ ]
5665
5636
  });
5666
- useEffect11(() => {
5667
- if (isSuccess && dataFormViewResponse) {
5668
- sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
5669
- window.location.href = `/form/menu?model=${relation}`;
5670
- }
5671
- }, [isSuccess]);
5672
- useEffect11(() => {
5673
- if (domainMany2Many && !isLoadedData) {
5674
- setIsLoadedData(true);
5675
- }
5676
- }, [domainMany2Many]);
5677
5637
  const handleCreateNewOnPage = async () => {
5678
- try {
5679
- refetch();
5680
- } catch (error) {
5681
- console.log(error);
5682
- }
5683
5638
  };
5684
5639
  return {
5685
5640
  handleCreateNewOnPage,
5686
5641
  optionsObject,
5642
+ totalRows: dataResponse?.length ?? 0,
5687
5643
  rows,
5688
5644
  columns,
5645
+ onToggleColumnOptional,
5689
5646
  typeTable,
5690
- isDataLoading,
5691
- isDataResponseFetched,
5692
- isPlaceholderData
5647
+ isLoading,
5648
+ isFetched,
5649
+ isPlaceholderData,
5650
+ setPage,
5651
+ page,
5652
+ viewData: viewResponse,
5653
+ domain: domainMany2Many,
5654
+ setDomain: setDomainMany2Many,
5655
+ searchController: searchControllers
5693
5656
  };
5694
5657
  };
5695
5658
 
5696
5659
  // src/widget/basic/many2many-tags-field/controller.ts
5697
5660
  import { useMemo as useMemo11 } from "react";
5698
5661
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5699
- import { getEnv as getEnv8 } from "@fctc/interface-logic/environment";
5700
- import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5701
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5662
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5702
5663
  var many2manyTagsController = (props) => {
5703
5664
  const {
5704
5665
  relation,
@@ -5709,10 +5670,11 @@ var many2manyTagsController = (props) => {
5709
5670
  placeholderNoOption
5710
5671
  } = props;
5711
5672
  const isUser = relation === "res.users" || relation === "res.partner";
5712
- const env = getEnv8();
5673
+ const { env } = (0, provider_exports.useEnv)();
5674
+ const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5713
5675
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5714
5676
  const domainObject = useMemo11(
5715
- () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
5677
+ () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5716
5678
  [domain, formValues]
5717
5679
  );
5718
5680
  const data = {
@@ -5748,16 +5710,15 @@ var many2manyTagsController = (props) => {
5748
5710
  options,
5749
5711
  customNoOptionsMessage,
5750
5712
  tranfer,
5751
- dataOfSelection,
5752
5713
  isUser
5753
5714
  };
5754
5715
  };
5755
5716
 
5756
5717
  // src/widget/basic/status-bar-field/controller.ts
5757
5718
  import { useState as useState10 } from "react";
5758
- import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5719
+ import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5759
5720
  var durationController = (props) => {
5760
- const { relation, domain, formValues, name, id, model, onRefetch } = props;
5721
+ const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5761
5722
  const specification = {
5762
5723
  id: 0,
5763
5724
  name: "",
@@ -5771,7 +5732,7 @@ var durationController = (props) => {
5771
5732
  const listDataProps = {
5772
5733
  model: relation,
5773
5734
  specification,
5774
- domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
5735
+ domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5775
5736
  limit: 10,
5776
5737
  offset: 0,
5777
5738
  fields: "",
@@ -5781,7 +5742,11 @@ var durationController = (props) => {
5781
5742
  },
5782
5743
  sort: ""
5783
5744
  };
5784
- const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5745
+ const { data: dataResponse } = useGetListData3(
5746
+ listDataProps,
5747
+ queryKey,
5748
+ enabled
5749
+ );
5785
5750
  const { mutate: fetchChangeStatus } = useChangeStatus();
5786
5751
  const handleClick = async (stage_id) => {
5787
5752
  setDisabled(true);
@@ -5817,41 +5782,28 @@ var durationController = (props) => {
5817
5782
  };
5818
5783
 
5819
5784
  // src/widget/basic/priority-field/controller.ts
5820
- import { useSave as useSave2 } from "@fctc/interface-logic/hooks";
5821
5785
  import { evalJSONContext as evalJSONContext6 } from "@fctc/interface-logic/utils";
5822
5786
  var priorityFieldController = (props) => {
5823
- const {
5824
- value,
5825
- isForm,
5826
- name,
5827
- methods,
5828
- onChange,
5829
- model,
5830
- selection,
5831
- id,
5832
- actionData,
5833
- viewData,
5834
- context
5835
- } = props;
5787
+ const { name, model, index, actionData, context, onChange, specification } = props;
5836
5788
  const _context = { ...evalJSONContext6(actionData?.context) };
5837
5789
  const contextObject = { ...context, ..._context };
5838
- const defaultPriority = parseInt(value) + 1;
5839
- const label = viewData?.models?.[model]?.[name ?? ""]?.string ?? name;
5790
+ const { useSave: useSave2 } = (0, provider_exports.useService)();
5840
5791
  const { mutateAsync: fetchSave } = useSave2();
5841
5792
  const savePriorities = async ({
5842
- value: value2,
5793
+ value,
5843
5794
  resetPriority
5844
5795
  }) => {
5845
- const priorityValue = value2 <= 0 ? 0 : value2 - 1;
5796
+ const priorityValue = value <= 0 ? 0 : value - 1;
5846
5797
  try {
5847
5798
  fetchSave({
5848
- ids: id ? [id] : [],
5849
- data: { [name ?? ""]: String(priorityValue) },
5850
- model: model ?? "",
5851
- context: contextObject
5799
+ ids: index ? [index] : [],
5800
+ data: { [String(name)]: String(priorityValue) },
5801
+ model: String(model),
5802
+ context: contextObject,
5803
+ specification
5852
5804
  });
5853
5805
  if (typeof onChange === "function") {
5854
- onChange(name ?? "", String(priorityValue));
5806
+ onChange(String(name), String(priorityValue));
5855
5807
  }
5856
5808
  } catch (error) {
5857
5809
  if (resetPriority) {
@@ -5860,14 +5812,7 @@ var priorityFieldController = (props) => {
5860
5812
  }
5861
5813
  };
5862
5814
  return {
5863
- selection,
5864
- isForm,
5865
- methods,
5866
- defaultPriority,
5867
- savePriorities,
5868
- label,
5869
- id,
5870
- onChange
5815
+ savePriorities
5871
5816
  };
5872
5817
  };
5873
5818
 
@@ -6830,11 +6775,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
6830
6775
  var colorFieldController = (props) => {
6831
6776
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
6832
6777
  const { env } = (0, provider_exports.useEnv)();
6833
- const { useSave: useSave3 } = (0, provider_exports.useService)();
6778
+ const { useSave: useSave2 } = (0, provider_exports.useService)();
6834
6779
  const _context = { ...evalJSONContext7(actionData?.context) || {} };
6835
6780
  const contextObject = { ...env.context, ..._context };
6836
6781
  const idDefault = isForm ? idForm : formValues?.id;
6837
- const { mutate: onSave } = useSave3();
6782
+ const { mutate: onSave } = useSave2();
6838
6783
  const savePickColor = async (colorObject) => {
6839
6784
  const { id } = colorObject;
6840
6785
  if (value === id) return;
@@ -6956,108 +6901,41 @@ var binaryFieldController = (props) => {
6956
6901
  };
6957
6902
  };
6958
6903
 
6959
- // src/widget/advance/table/table-body/controller.ts
6960
- import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
6961
- import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
6962
- var tableBodyController = (props) => {
6963
- const {
6964
- checkedAll,
6965
- checkboxRef,
6966
- setIsAutoSelect,
6967
- selectedRowKeys,
6968
- row,
6969
- isAutoSelect,
6970
- selectedRowKeysRef,
6971
- onClickRow
6972
- } = props;
6973
- const appDispatch = useAppDispatch6();
6974
- const checked = useMemo12(() => {
6975
- if (!row?.id) return false;
6976
- if (selectedRowKeys?.includes(row.id)) {
6977
- return true;
6978
- }
6979
- return checkedAll;
6980
- }, [row?.id, selectedRowKeys, checkedAll]);
6981
- const handleCheckBoxSingle = (event) => {
6982
- event.stopPropagation();
6983
- if (checkedAll) {
6984
- checkboxRef.current = "uncheck";
6985
- setIsAutoSelect(true);
6986
- return;
6987
- }
6988
- const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
6989
- console.log("newSelectedRowKeys", newSelectedRowKeys);
6990
- appDispatch(setSelectedRowKeys(newSelectedRowKeys));
6991
- };
6992
- const handleClickRow = (col, row2) => {
6993
- onClickRow(col, row2);
6994
- };
6995
- useEffect13(() => {
6996
- if (!row?.id) return;
6997
- if (isAutoSelect) {
6998
- if (checkboxRef?.current === "uncheck") {
6999
- const filtered = selectedRowKeysRef.current.filter(
7000
- (id) => id !== row.id
7001
- );
7002
- selectedRowKeysRef.current = filtered;
7003
- appDispatch(setSelectedRowKeys(filtered));
7004
- } else {
7005
- const unique = Array.from(
7006
- /* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
7007
- );
7008
- selectedRowKeysRef.current = unique;
7009
- appDispatch(setSelectedRowKeys(unique));
7010
- }
7011
- }
7012
- }, [isAutoSelect]);
7013
- useEffect13(() => {
7014
- if (!checkedAll) {
7015
- checkboxRef.current = "enabled";
7016
- false;
7017
- }
7018
- }, [checkedAll]);
7019
- return {
7020
- handleCheckBoxSingle,
7021
- checked,
7022
- handleClickRow
7023
- };
7024
- };
7025
-
7026
6904
  // src/widget/advance/table/table-head/controller.ts
7027
6905
  import {
7028
- useAppDispatch as useAppDispatch7,
6906
+ useAppDispatch as useAppDispatch5,
7029
6907
  useAppSelector as useAppSelector4,
7030
6908
  selectSearch as selectSearch3,
7031
- setSelectedRowKeys as setSelectedRowKeys2
6909
+ setSelectedRowKeys
7032
6910
  } from "@fctc/interface-logic/store";
7033
6911
  var tableHeadController = (props) => {
7034
6912
  const { typeTable, rows, selectedRowKeysRef } = props;
7035
- const appDispatch = useAppDispatch7();
6913
+ const appDispatch = useAppDispatch5();
7036
6914
  const { groupByDomain } = useAppSelector4(selectSearch3);
7037
6915
  const handleCheckBoxAll = (event) => {
7038
6916
  if (event?.target?.checked && typeTable === "list") {
7039
6917
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
7040
- appDispatch(setSelectedRowKeys2(allRowKeys));
6918
+ appDispatch(setSelectedRowKeys(allRowKeys));
7041
6919
  } else if (event?.target?.checked && typeTable === "group") {
7042
6920
  const rowsIDs = document.querySelectorAll("tr[data-row-id]");
7043
6921
  const ids = Array.from(rowsIDs)?.map(
7044
6922
  (row) => Number(row?.getAttribute("data-row-id"))
7045
6923
  );
7046
6924
  if (ids?.length > 0) {
7047
- appDispatch(setSelectedRowKeys2(ids));
6925
+ appDispatch(setSelectedRowKeys(ids));
7048
6926
  } else {
7049
6927
  const sum = countSum(
7050
6928
  rows,
7051
6929
  typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
7052
6930
  );
7053
6931
  const keys = Array.from({ length: sum }, (_) => void 0);
7054
- appDispatch(setSelectedRowKeys2(keys));
6932
+ appDispatch(setSelectedRowKeys(keys));
7055
6933
  }
7056
6934
  if (selectedRowKeysRef) {
7057
6935
  selectedRowKeysRef.current = [];
7058
6936
  }
7059
6937
  } else {
7060
- appDispatch(setSelectedRowKeys2([]));
6938
+ appDispatch(setSelectedRowKeys([]));
7061
6939
  }
7062
6940
  };
7063
6941
  return {
@@ -7066,7 +6944,7 @@ var tableHeadController = (props) => {
7066
6944
  };
7067
6945
 
7068
6946
  // src/widget/advance/table/table-view/controller.ts
7069
- import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState14 } from "react";
6947
+ import { useEffect as useEffect13, useMemo as useMemo12, useRef as useRef5, useState as useState14 } from "react";
7070
6948
  import {
7071
6949
  useAppSelector as useAppSelector5,
7072
6950
  selectSearch as selectSearch4,
@@ -7103,7 +6981,7 @@ var tableController = ({ data }) => {
7103
6981
  return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
7104
6982
  });
7105
6983
  };
7106
- useEffect14(() => {
6984
+ useEffect13(() => {
7107
6985
  setRows(transformData(data.records || null));
7108
6986
  }, [data.records]);
7109
6987
  const handleGetColumns = () => {
@@ -7124,7 +7002,7 @@ var tableController = ({ data }) => {
7124
7002
  }
7125
7003
  return cols;
7126
7004
  };
7127
- useEffect14(() => {
7005
+ useEffect13(() => {
7128
7006
  const columns2 = handleGetColumns();
7129
7007
  setColumns(columns2);
7130
7008
  }, [data.records]);
@@ -7149,7 +7027,7 @@ var tableController = ({ data }) => {
7149
7027
  };
7150
7028
 
7151
7029
  // src/widget/advance/table/table-group/controller.ts
7152
- import { useEffect as useEffect15, useMemo as useMemo14, useState as useState15 } from "react";
7030
+ import { useEffect as useEffect14, useMemo as useMemo13, useState as useState15 } from "react";
7153
7031
  import {
7154
7032
  useOdooDataTransform,
7155
7033
  useGetListData as useGetListData2
@@ -7158,8 +7036,8 @@ import {
7158
7036
  useAppSelector as useAppSelector6,
7159
7037
  selectSearch as selectSearch5,
7160
7038
  selectList as selectList4,
7161
- useAppDispatch as useAppDispatch8,
7162
- setSelectedRowKeys as setSelectedRowKeys3
7039
+ useAppDispatch as useAppDispatch6,
7040
+ setSelectedRowKeys as setSelectedRowKeys2
7163
7041
  } from "@fctc/interface-logic/store";
7164
7042
 
7165
7043
  // src/environment.ts
@@ -7191,7 +7069,7 @@ var tableGroupController = (props) => {
7191
7069
  const [pageGroup, setPageGroup] = useState15(0);
7192
7070
  const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
7193
7071
  const { selectedRowKeys } = useAppSelector6(selectList4);
7194
- const appDispatch = useAppDispatch8();
7072
+ const appDispatch = useAppDispatch6();
7195
7073
  const { toDataJS } = useOdooDataTransform();
7196
7074
  const initVal = toDataJS(row, viewData, model);
7197
7075
  const [isShowGroup, setIsShowGroup] = useState15(false);
@@ -7199,7 +7077,7 @@ var tableGroupController = (props) => {
7199
7077
  fromStart: 1,
7200
7078
  fromEnd: 1
7201
7079
  });
7202
- const processedData = useMemo14(() => {
7080
+ const processedData = useMemo13(() => {
7203
7081
  const calculateColSpanEmpty = () => {
7204
7082
  const startIndex = columns.findIndex(
7205
7083
  (col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
@@ -7214,7 +7092,7 @@ var tableGroupController = (props) => {
7214
7092
  };
7215
7093
  return calculateColSpanEmpty();
7216
7094
  }, [columns, row]);
7217
- const shouldFetchData = useMemo14(() => {
7095
+ const shouldFetchData = useMemo13(() => {
7218
7096
  return !!isShowGroup;
7219
7097
  }, [isShowGroup]);
7220
7098
  const enabled = shouldFetchData && !!processedData;
@@ -7254,7 +7132,7 @@ var tableGroupController = (props) => {
7254
7132
  }
7255
7133
  });
7256
7134
  const leftPadding = level > 1 ? level * 8 + "px" : "0px";
7257
- useEffect15(() => {
7135
+ useEffect14(() => {
7258
7136
  if (isShowGroup && selectedTags?.length > 0) {
7259
7137
  setIsShowGroup(false);
7260
7138
  }
@@ -7277,24 +7155,24 @@ var tableGroupController = (props) => {
7277
7155
  const filteredIds = selectedRowKeys.filter(
7278
7156
  (id) => !ids.includes(id)
7279
7157
  );
7280
- appDispatch(setSelectedRowKeys3(filteredIds));
7158
+ appDispatch(setSelectedRowKeys2(filteredIds));
7281
7159
  } else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
7282
7160
  const clonedKeys = [...selectedRowKeys];
7283
- appDispatch(setSelectedRowKeys3([...clonedKeys, -1]));
7284
- setTimeout(() => appDispatch(setSelectedRowKeys3(clonedKeys)), 500);
7161
+ appDispatch(setSelectedRowKeys2([...clonedKeys, -1]));
7162
+ setTimeout(() => appDispatch(setSelectedRowKeys2(clonedKeys)), 500);
7285
7163
  } else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
7286
7164
  const filteredKeys = selectedRowKeys.filter((id) => id > -1);
7287
- appDispatch(setSelectedRowKeys3(filteredKeys));
7165
+ appDispatch(setSelectedRowKeys2(filteredKeys));
7288
7166
  }
7289
7167
  toggleShowGroup();
7290
7168
  };
7291
- useEffect15(() => {
7169
+ useEffect14(() => {
7292
7170
  if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
7293
7171
  return;
7294
7172
  }
7295
7173
  const clonedKeys = [...selectedRowKeys];
7296
- setSelectedRowKeys3([...clonedKeys, -1]);
7297
- setTimeout(() => setSelectedRowKeys3(clonedKeys), 500);
7174
+ setSelectedRowKeys2([...clonedKeys, -1]);
7175
+ setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
7298
7176
  }, [isQueryFetched]);
7299
7177
  return {
7300
7178
  handleExpandChildGroup,
@@ -7332,26 +7210,28 @@ var import_moment2 = __toESM(require_moment());
7332
7210
  import { SearchType } from "@fctc/interface-logic/constants";
7333
7211
  import {
7334
7212
  domainHelper as domainHelper2,
7335
- evalJSONDomain as evalJSONDomain6,
7213
+ evalJSONContext as evalJSONContext8,
7214
+ evalJSONDomain as evalJSONDomain7,
7336
7215
  validateAndParseDate
7337
7216
  } from "@fctc/interface-logic/utils";
7338
- import { useCallback as useCallback3, useEffect as useEffect16, useState as useState16 } from "react";
7217
+ import { useCallback as useCallback3, useEffect as useEffect15, useState as useState16 } from "react";
7339
7218
  var searchController = ({
7340
7219
  viewData,
7341
- actionData,
7342
- fieldsList,
7343
- contextSearch,
7344
- setSearchMap,
7345
- searchMap
7220
+ model,
7221
+ domain,
7222
+ context,
7223
+ fieldsList
7346
7224
  }) => {
7225
+ const { env } = (0, provider_exports.useEnv)();
7347
7226
  const [filterBy, setFilterBy] = useState16(null);
7348
7227
  const [searchBy, setSearchBy] = useState16(null);
7349
7228
  const [groupBy, setGroupBy] = useState16(null);
7350
7229
  const [selectedTags, setSelectedTags] = useState16(null);
7351
7230
  const [searchString, setSearchString] = useState16("");
7352
- const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain6(actionData?.domain, contextSearch) : [];
7353
- const aid = actionData?.id;
7354
- const model = actionData?.res_model;
7231
+ const [searchMap, setSearchMap] = useState16({});
7232
+ const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
7233
+ const contextSearch = { ...env.context, ...actionContext };
7234
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
7355
7235
  const clearSearch = () => {
7356
7236
  setFilterBy([]);
7357
7237
  setGroupBy([]);
@@ -7395,10 +7275,9 @@ var searchController = ({
7395
7275
  }
7396
7276
  }
7397
7277
  };
7398
- useEffect16(() => {
7399
- clearSearch();
7278
+ useEffect15(() => {
7400
7279
  fetchData();
7401
- }, [aid, model, viewData]);
7280
+ }, [model, viewData]);
7402
7281
  const onChangeSearchInput = (search_string) => {
7403
7282
  setSearchString(search_string);
7404
7283
  };
@@ -7435,27 +7314,27 @@ var searchController = ({
7435
7314
  };
7436
7315
  const formatDomain = () => {
7437
7316
  if (domainAction) {
7438
- const domain = [];
7317
+ const domain2 = [];
7439
7318
  if (domainAction?.length > 0) {
7440
- if (Object.keys(searchMap).length > 0) {
7441
- domain.push("&");
7319
+ if (Object.keys(searchMap).some((key) => !key.includes(SearchType.GROUP))) {
7320
+ domain2.push("&");
7442
7321
  }
7443
7322
  domainAction.forEach((domainItem) => {
7444
- domain.push(domainItem);
7323
+ domain2.push(domainItem);
7445
7324
  });
7446
7325
  }
7447
7326
  Object.keys(searchMap).forEach((key, keyIndex, keys) => {
7448
7327
  if (!key?.includes(SearchType.GROUP)) {
7449
7328
  if (keys.length > 1 && keyIndex < keys.length - 1) {
7450
- domain.push("&");
7329
+ domain2.push("&");
7451
7330
  }
7452
7331
  const valuesOfKey = searchMap[key];
7453
7332
  valuesOfKey.forEach((value, index) => {
7454
7333
  if (index < valuesOfKey.length - 1) {
7455
- domain.push("|");
7334
+ domain2.push("|");
7456
7335
  }
7457
7336
  if (value.domain) {
7458
- domain.push(...value.domain);
7337
+ domain2.push(...value.domain);
7459
7338
  return;
7460
7339
  }
7461
7340
  let valueDomainItem = value?.value;
@@ -7471,11 +7350,11 @@ var searchController = ({
7471
7350
  }
7472
7351
  }
7473
7352
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
7474
- domain.push([value.name, operator, valueDomainItem]);
7353
+ domain2.push([value.name, operator, valueDomainItem]);
7475
7354
  });
7476
7355
  }
7477
7356
  });
7478
- return [...domain];
7357
+ return [...domain2];
7479
7358
  }
7480
7359
  };
7481
7360
  const setTagSearch = useCallback3(
@@ -7506,16 +7385,16 @@ var searchController = ({
7506
7385
  const contexts = [];
7507
7386
  let groupValues = [];
7508
7387
  objValues?.forEach((objValue) => {
7509
- const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7388
+ const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7510
7389
  const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
7511
7390
  contexts.push(
7512
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({ group_by: item })) : [context]
7391
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
7513
7392
  );
7514
7393
  groupValues[indexAppend] = {
7515
7394
  contexts: [
7516
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({
7395
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
7517
7396
  group_by: item
7518
- })) : [context]
7397
+ })) : [context2]
7519
7398
  ],
7520
7399
  strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
7521
7400
  };
@@ -7541,40 +7420,39 @@ var searchController = ({
7541
7420
  },
7542
7421
  [searchMap]
7543
7422
  );
7544
- useEffect16(() => {
7545
- setSelectedTags(null);
7423
+ useEffect15(() => {
7546
7424
  setTagSearch(searchMap);
7547
7425
  }, [searchMap]);
7548
7426
  const handleAddTagSearch = (tag) => {
7549
7427
  const {
7550
- domain,
7428
+ domain: domain2,
7551
7429
  groupIndex,
7552
7430
  value,
7553
7431
  type,
7554
7432
  title,
7555
- context,
7433
+ context: context2,
7556
7434
  active,
7557
7435
  dataIndex
7558
7436
  } = tag;
7559
- const domainFormat = new domainHelper2.Domain(domain);
7437
+ const domainFormat = new domainHelper2.Domain(domain2);
7560
7438
  if (type === SearchType.FILTER) {
7561
7439
  addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
7562
7440
  ...tag,
7563
- domain: domain ? domainFormat.toList(context) : null
7441
+ domain: domain2 ? domainFormat.toList(context2) : null
7564
7442
  });
7565
7443
  } else if (type === SearchType.SEARCH) {
7566
7444
  addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
7567
7445
  ...tag,
7568
- domain: domain ? domainFormat.toList({
7569
- ...context,
7446
+ domain: domain2 ? domainFormat.toList({
7447
+ ...context2,
7570
7448
  self: value
7571
7449
  }) : null
7572
7450
  });
7573
7451
  } else if (type === SearchType.GROUP) {
7574
7452
  addSearchItems(`${SearchType.GROUP}`, {
7575
7453
  ...tag,
7576
- domain: domain ? domainFormat.toList({
7577
- context,
7454
+ domain: domain2 ? domainFormat.toList({
7455
+ context: context2,
7578
7456
  self: value
7579
7457
  }) : null
7580
7458
  });
@@ -7594,7 +7472,8 @@ var searchController = ({
7594
7472
  removeSearchItems,
7595
7473
  onSearchString: onChangeSearchInput,
7596
7474
  handleAddTagSearch,
7597
- domain: formatDomain()
7475
+ domain: formatDomain(),
7476
+ context: contextSearch
7598
7477
  };
7599
7478
  };
7600
7479
 
@@ -7661,7 +7540,6 @@ export {
7661
7540
  searchController,
7662
7541
  setStorageItemAsync,
7663
7542
  statusDropdownController,
7664
- tableBodyController,
7665
7543
  tableController,
7666
7544
  tableGroupController,
7667
7545
  tableHeadController,