@fctc/widget-logic 2.2.2 → 2.2.3

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