@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.js CHANGED
@@ -4068,7 +4068,6 @@ __export(index_exports, {
4068
4068
  searchController: () => searchController,
4069
4069
  setStorageItemAsync: () => setStorageItemAsync,
4070
4070
  statusDropdownController: () => statusDropdownController,
4071
- tableBodyController: () => tableBodyController,
4072
4071
  tableController: () => tableController,
4073
4072
  tableGroupController: () => tableGroupController,
4074
4073
  tableHeadController: () => tableHeadController,
@@ -5290,6 +5289,7 @@ var many2oneFieldController = (props) => {
5290
5289
  options: fieldOptions,
5291
5290
  showDetail
5292
5291
  } = props;
5292
+ const { env } = (0, provider_exports.useEnv)();
5293
5293
  const [options, setOptions] = (0, import_react15.useState)([]);
5294
5294
  const [inputValue, setInputValue] = (0, import_react15.useState)("");
5295
5295
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
@@ -5299,15 +5299,14 @@ var many2oneFieldController = (props) => {
5299
5299
  const [domainObject, setDomainObject] = (0, import_react15.useState)(null);
5300
5300
  const actionData = sessionStorageUtils.getActionData();
5301
5301
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5302
- const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
5303
5302
  const initValue = methods?.getValues(name);
5304
5303
  const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
5305
5304
  const contextObject = {
5306
5305
  ...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
5307
5306
  ...fieldContext,
5308
- ...context
5307
+ ...env?.context
5309
5308
  };
5310
- const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5309
+ const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5311
5310
  const data = {
5312
5311
  model: relation,
5313
5312
  domain: domainObject,
@@ -5323,7 +5322,7 @@ var many2oneFieldController = (props) => {
5323
5322
  data: dataOfSelection,
5324
5323
  refetch,
5325
5324
  isFetching
5326
- } = useGetSelection3({
5325
+ } = useGetSelection2({
5327
5326
  data,
5328
5327
  queryKey,
5329
5328
  enabled: false
@@ -5477,52 +5476,49 @@ var many2oneButtonController = (props) => {
5477
5476
 
5478
5477
  // src/widget/basic/many2many-field/controller.ts
5479
5478
  var import_react16 = require("react");
5480
- var import_store8 = require("@fctc/interface-logic/store");
5481
5479
  var import_utils7 = require("@fctc/interface-logic/utils");
5482
5480
  var many2manyFieldController = (props) => {
5483
5481
  const {
5484
5482
  relation,
5485
5483
  domain,
5486
5484
  context,
5485
+ options,
5487
5486
  tab,
5488
- model,
5489
- aid,
5490
- setSelectedRowKeys: setSelectedRowKeys4,
5491
- fields,
5492
- setFields,
5487
+ setSelectedRowKeys: setSelectedRowKeys3,
5493
5488
  groupByDomain,
5494
- page,
5495
- options,
5496
- sessionStorageUtils
5489
+ enabled: enabledCallAPI,
5490
+ actionData
5497
5491
  } = props;
5498
- const appDispatch = (0, import_store8.useAppDispatch)();
5499
- const actionData = sessionStorageUtils.getActionData();
5500
- const [debouncedPage] = useDebounce(page, 500);
5501
- const [order, setOrder] = (0, import_react16.useState)();
5502
- const [isLoadedData, setIsLoadedData] = (0, import_react16.useState)(false);
5503
- const [domainMany2Many, setDomainMany2Many] = (0, import_react16.useState)(domain);
5504
5492
  const { env } = (0, provider_exports.useEnv)();
5505
5493
  const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5494
+ const [order, setOrder] = (0, import_react16.useState)();
5495
+ const [page, setPage] = (0, import_react16.useState)(0);
5496
+ const [domainMany2Many, setDomainMany2Many] = (0, import_react16.useState)(null);
5497
+ const [debouncedPage] = useDebounce(page, 500);
5498
+ const contextObject = {
5499
+ ...env.context,
5500
+ ...context || {}
5501
+ };
5506
5502
  const viewParams = {
5507
5503
  model: relation,
5508
5504
  views: [
5509
5505
  [false, "list"],
5510
5506
  [false, "search"]
5511
5507
  ],
5512
- context
5508
+ context: contextObject
5513
5509
  };
5514
- const { data: viewResponse } = useGetView2(viewParams, actionData);
5510
+ const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
5515
5511
  const baseModel = (0, import_react16.useMemo)(
5516
5512
  () => ({
5517
5513
  name: String(relation),
5518
5514
  view: viewResponse || {},
5519
- actContext: context,
5515
+ actContext: contextObject,
5520
5516
  fields: [
5521
5517
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5522
5518
  ...tab?.fields ? tab.fields : []
5523
5519
  ]
5524
5520
  }),
5525
- [model, viewResponse]
5521
+ [relation, viewResponse]
5526
5522
  );
5527
5523
  const initModel = (0, hooks_exports.useModel)();
5528
5524
  const modelInstance = (0, import_react16.useMemo)(() => {
@@ -5541,26 +5537,15 @@ var many2manyFieldController = (props) => {
5541
5537
  const optionsObject = tab?.options ? (0, import_utils7.evalJSONContext)(tab?.options) : (options ? (0, import_utils7.evalJSONContext)(options) : {}) || {};
5542
5538
  const fetchData = async () => {
5543
5539
  try {
5544
- setDomainMany2Many(domain);
5545
- appDispatch((0, import_store8.setFirstDomain)(domain));
5546
- appDispatch((0, import_store8.setViewDataStore)(viewResponse));
5547
- const modalData = viewResponse?.views?.list?.fields.map((field) => ({
5548
- ...viewResponse?.models?.[String(model)]?.[field?.name],
5549
- ...field
5550
- }));
5551
- if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
5552
- setFields({
5553
- ...fields,
5554
- [`${aid}_${relation}_popupmany2many`]: modalData
5555
- });
5556
- }
5557
- appDispatch((0, import_store8.setPage)(0));
5540
+ const domainParse = typeof domain === "string" ? (0, import_utils7.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5541
+ setDomainMany2Many(domainParse);
5542
+ setPage(0);
5558
5543
  } catch (err) {
5559
5544
  console.log(err);
5560
5545
  }
5561
5546
  };
5562
5547
  const queryKey = [
5563
- `view-${relation}-${aid}`,
5548
+ `view-${relation}`,
5564
5549
  specification,
5565
5550
  domainMany2Many,
5566
5551
  debouncedPage,
@@ -5573,16 +5558,16 @@ var many2manyFieldController = (props) => {
5573
5558
  domain: domainMany2Many,
5574
5559
  offset: debouncedPage * 10,
5575
5560
  limit: 10,
5576
- context,
5561
+ context: contextObject,
5577
5562
  fields: groupByDomain?.fields,
5578
5563
  groupby: [groupByDomain?.contexts[0]?.group_by],
5579
5564
  sort: order ? order : default_order ? (0, import_utils7.formatSortingString)(default_order) : ""
5580
5565
  };
5581
- const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5566
+ const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5582
5567
  const {
5583
5568
  data: dataResponse,
5584
- isLoading: isDataLoading,
5585
- isFetched: isDataResponseFetched,
5569
+ isLoading,
5570
+ isFetched,
5586
5571
  isPlaceholderData
5587
5572
  } = useGetListData3(data, queryKey, enabled);
5588
5573
  (0, import_react16.useEffect)(() => {
@@ -5590,75 +5575,56 @@ var many2manyFieldController = (props) => {
5590
5575
  fetchData();
5591
5576
  }
5592
5577
  return () => {
5593
- appDispatch((0, import_store8.setGroupByDomain)(null));
5594
- setFields((prevFields) => ({
5595
- ...prevFields,
5596
- [`${aid}_${relation}_popupmany2many`]: null
5597
- }));
5598
- appDispatch((0, import_store8.setPage)(0));
5599
- setSelectedRowKeys4([]);
5578
+ setPage(0);
5579
+ setSelectedRowKeys3([]);
5600
5580
  setDomainMany2Many(null);
5601
- setIsLoadedData(false);
5602
5581
  };
5603
5582
  }, [viewResponse]);
5604
- const { rows, columns, typeTable } = tableController({
5583
+ const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
5605
5584
  data: {
5606
- fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5585
+ fields: viewResponse?.views?.list?.fields,
5607
5586
  records: dataResponse?.records ?? dataResponse?.groups,
5608
5587
  dataModel: viewResponse?.models?.[String(relation)],
5609
- context: { ...env.context, ...context },
5588
+ context: contextObject,
5610
5589
  typeTable: dataResponse?.groups ? "group" : "list"
5611
5590
  }
5612
5591
  });
5613
- const dataFormView = {
5614
- id: null,
5615
- model: relation,
5616
- context
5617
- };
5618
- const {
5619
- refetch,
5620
- data: dataFormViewResponse,
5621
- isSuccess
5622
- } = useGetFormView({
5623
- data: dataFormView,
5624
- queryKey: [`form-view-action-${relation}`],
5625
- enabled: false
5592
+ const searchControllers = searchController({
5593
+ viewData: viewResponse,
5594
+ model: relation ?? "",
5595
+ context: contextObject,
5596
+ domain,
5597
+ fieldsList: [
5598
+ ...columns?.filter(
5599
+ (col) => col?.field?.type_co === "field" && col?.optional !== "hide"
5600
+ )?.map((col) => ({ ...col.field })) ?? []
5601
+ ]
5626
5602
  });
5627
- (0, import_react16.useEffect)(() => {
5628
- if (isSuccess && dataFormViewResponse) {
5629
- sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
5630
- window.location.href = `/form/menu?model=${relation}`;
5631
- }
5632
- }, [isSuccess]);
5633
- (0, import_react16.useEffect)(() => {
5634
- if (domainMany2Many && !isLoadedData) {
5635
- setIsLoadedData(true);
5636
- }
5637
- }, [domainMany2Many]);
5638
5603
  const handleCreateNewOnPage = async () => {
5639
- try {
5640
- refetch();
5641
- } catch (error) {
5642
- console.log(error);
5643
- }
5644
5604
  };
5645
5605
  return {
5646
5606
  handleCreateNewOnPage,
5647
5607
  optionsObject,
5608
+ totalRows: dataResponse?.length ?? 0,
5648
5609
  rows,
5649
5610
  columns,
5611
+ onToggleColumnOptional,
5650
5612
  typeTable,
5651
- isDataLoading,
5652
- isDataResponseFetched,
5653
- isPlaceholderData
5613
+ isLoading,
5614
+ isFetched,
5615
+ isPlaceholderData,
5616
+ setPage,
5617
+ page,
5618
+ viewData: viewResponse,
5619
+ domain: domainMany2Many,
5620
+ setDomain: setDomainMany2Many,
5621
+ searchController: searchControllers
5654
5622
  };
5655
5623
  };
5656
5624
 
5657
5625
  // src/widget/basic/many2many-tags-field/controller.ts
5658
5626
  var import_react17 = require("react");
5659
5627
  var import_constants4 = require("@fctc/interface-logic/constants");
5660
- var import_environment8 = require("@fctc/interface-logic/environment");
5661
- var import_hooks15 = require("@fctc/interface-logic/hooks");
5662
5628
  var import_utils8 = require("@fctc/interface-logic/utils");
5663
5629
  var many2manyTagsController = (props) => {
5664
5630
  const {
@@ -5670,7 +5636,8 @@ var many2manyTagsController = (props) => {
5670
5636
  placeholderNoOption
5671
5637
  } = props;
5672
5638
  const isUser = relation === "res.users" || relation === "res.partner";
5673
- const env = (0, import_environment8.getEnv)();
5639
+ const { env } = (0, provider_exports.useEnv)();
5640
+ const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5674
5641
  const addtionalFields = optionsFields ? (0, import_utils8.evalJSONContext)(optionsFields) : null;
5675
5642
  const domainObject = (0, import_react17.useMemo)(
5676
5643
  () => (0, import_utils8.evalJSONDomain)(domain, JSON.parse(JSON.stringify(formValues || {}))),
@@ -5689,7 +5656,7 @@ var many2manyTagsController = (props) => {
5689
5656
  enabled: true,
5690
5657
  context: env.context
5691
5658
  };
5692
- const { data: dataOfSelection } = (0, import_hooks15.useGetSelection)({
5659
+ const { data: dataOfSelection } = useGetSelection2({
5693
5660
  data,
5694
5661
  queryKey: [`data_${relation}`, domainObject]
5695
5662
  });
@@ -5709,7 +5676,6 @@ var many2manyTagsController = (props) => {
5709
5676
  options,
5710
5677
  customNoOptionsMessage,
5711
5678
  tranfer,
5712
- dataOfSelection,
5713
5679
  isUser
5714
5680
  };
5715
5681
  };
@@ -5718,7 +5684,7 @@ var many2manyTagsController = (props) => {
5718
5684
  var import_react18 = require("react");
5719
5685
  var import_utils9 = require("@fctc/interface-logic/utils");
5720
5686
  var durationController = (props) => {
5721
- const { relation, domain, formValues, name, id, model, onRefetch } = props;
5687
+ const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5722
5688
  const specification = {
5723
5689
  id: 0,
5724
5690
  name: "",
@@ -5742,7 +5708,11 @@ var durationController = (props) => {
5742
5708
  },
5743
5709
  sort: ""
5744
5710
  };
5745
- const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5711
+ const { data: dataResponse } = useGetListData3(
5712
+ listDataProps,
5713
+ queryKey,
5714
+ enabled
5715
+ );
5746
5716
  const { mutate: fetchChangeStatus } = useChangeStatus();
5747
5717
  const handleClick = async (stage_id) => {
5748
5718
  setDisabled(true);
@@ -5778,41 +5748,28 @@ var durationController = (props) => {
5778
5748
  };
5779
5749
 
5780
5750
  // src/widget/basic/priority-field/controller.ts
5781
- var import_hooks16 = require("@fctc/interface-logic/hooks");
5782
5751
  var import_utils10 = require("@fctc/interface-logic/utils");
5783
5752
  var priorityFieldController = (props) => {
5784
- const {
5785
- value,
5786
- isForm,
5787
- name,
5788
- methods,
5789
- onChange,
5790
- model,
5791
- selection,
5792
- id,
5793
- actionData,
5794
- viewData,
5795
- context
5796
- } = props;
5753
+ const { name, model, index, actionData, context, onChange, specification } = props;
5797
5754
  const _context = { ...(0, import_utils10.evalJSONContext)(actionData?.context) };
5798
5755
  const contextObject = { ...context, ..._context };
5799
- const defaultPriority = parseInt(value) + 1;
5800
- const label = viewData?.models?.[model]?.[name ?? ""]?.string ?? name;
5801
- const { mutateAsync: fetchSave } = (0, import_hooks16.useSave)();
5756
+ const { useSave: useSave2 } = (0, provider_exports.useService)();
5757
+ const { mutateAsync: fetchSave } = useSave2();
5802
5758
  const savePriorities = async ({
5803
- value: value2,
5759
+ value,
5804
5760
  resetPriority
5805
5761
  }) => {
5806
- const priorityValue = value2 <= 0 ? 0 : value2 - 1;
5762
+ const priorityValue = value <= 0 ? 0 : value - 1;
5807
5763
  try {
5808
5764
  fetchSave({
5809
- ids: id ? [id] : [],
5810
- data: { [name ?? ""]: String(priorityValue) },
5811
- model: model ?? "",
5812
- context: contextObject
5765
+ ids: index ? [index] : [],
5766
+ data: { [String(name)]: String(priorityValue) },
5767
+ model: String(model),
5768
+ context: contextObject,
5769
+ specification
5813
5770
  });
5814
5771
  if (typeof onChange === "function") {
5815
- onChange(name ?? "", String(priorityValue));
5772
+ onChange(String(name), String(priorityValue));
5816
5773
  }
5817
5774
  } catch (error) {
5818
5775
  if (resetPriority) {
@@ -5821,14 +5778,7 @@ var priorityFieldController = (props) => {
5821
5778
  }
5822
5779
  };
5823
5780
  return {
5824
- selection,
5825
- isForm,
5826
- methods,
5827
- defaultPriority,
5828
- savePriorities,
5829
- label,
5830
- id,
5831
- onChange
5781
+ savePriorities
5832
5782
  };
5833
5783
  };
5834
5784
 
@@ -6791,11 +6741,11 @@ var import_utils12 = require("@fctc/interface-logic/utils");
6791
6741
  var colorFieldController = (props) => {
6792
6742
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
6793
6743
  const { env } = (0, provider_exports.useEnv)();
6794
- const { useSave: useSave3 } = (0, provider_exports.useService)();
6744
+ const { useSave: useSave2 } = (0, provider_exports.useService)();
6795
6745
  const _context = { ...(0, import_utils12.evalJSONContext)(actionData?.context) || {} };
6796
6746
  const contextObject = { ...env.context, ..._context };
6797
6747
  const idDefault = isForm ? idForm : formValues?.id;
6798
- const { mutate: onSave } = useSave3();
6748
+ const { mutate: onSave } = useSave2();
6799
6749
  const savePickColor = async (colorObject) => {
6800
6750
  const { id } = colorObject;
6801
6751
  if (value === id) return;
@@ -6917,103 +6867,36 @@ var binaryFieldController = (props) => {
6917
6867
  };
6918
6868
  };
6919
6869
 
6920
- // src/widget/advance/table/table-body/controller.ts
6921
- var import_store9 = require("@fctc/interface-logic/store");
6922
- var import_react22 = require("react");
6923
- var tableBodyController = (props) => {
6924
- const {
6925
- checkedAll,
6926
- checkboxRef,
6927
- setIsAutoSelect,
6928
- selectedRowKeys,
6929
- row,
6930
- isAutoSelect,
6931
- selectedRowKeysRef,
6932
- onClickRow
6933
- } = props;
6934
- const appDispatch = (0, import_store9.useAppDispatch)();
6935
- const checked = (0, import_react22.useMemo)(() => {
6936
- if (!row?.id) return false;
6937
- if (selectedRowKeys?.includes(row.id)) {
6938
- return true;
6939
- }
6940
- return checkedAll;
6941
- }, [row?.id, selectedRowKeys, checkedAll]);
6942
- const handleCheckBoxSingle = (event) => {
6943
- event.stopPropagation();
6944
- if (checkedAll) {
6945
- checkboxRef.current = "uncheck";
6946
- setIsAutoSelect(true);
6947
- return;
6948
- }
6949
- const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
6950
- console.log("newSelectedRowKeys", newSelectedRowKeys);
6951
- appDispatch((0, import_store9.setSelectedRowKeys)(newSelectedRowKeys));
6952
- };
6953
- const handleClickRow = (col, row2) => {
6954
- onClickRow(col, row2);
6955
- };
6956
- (0, import_react22.useEffect)(() => {
6957
- if (!row?.id) return;
6958
- if (isAutoSelect) {
6959
- if (checkboxRef?.current === "uncheck") {
6960
- const filtered = selectedRowKeysRef.current.filter(
6961
- (id) => id !== row.id
6962
- );
6963
- selectedRowKeysRef.current = filtered;
6964
- appDispatch((0, import_store9.setSelectedRowKeys)(filtered));
6965
- } else {
6966
- const unique = Array.from(
6967
- /* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
6968
- );
6969
- selectedRowKeysRef.current = unique;
6970
- appDispatch((0, import_store9.setSelectedRowKeys)(unique));
6971
- }
6972
- }
6973
- }, [isAutoSelect]);
6974
- (0, import_react22.useEffect)(() => {
6975
- if (!checkedAll) {
6976
- checkboxRef.current = "enabled";
6977
- false;
6978
- }
6979
- }, [checkedAll]);
6980
- return {
6981
- handleCheckBoxSingle,
6982
- checked,
6983
- handleClickRow
6984
- };
6985
- };
6986
-
6987
6870
  // src/widget/advance/table/table-head/controller.ts
6988
- var import_store10 = require("@fctc/interface-logic/store");
6871
+ var import_store8 = require("@fctc/interface-logic/store");
6989
6872
  var tableHeadController = (props) => {
6990
6873
  const { typeTable, rows, selectedRowKeysRef } = props;
6991
- const appDispatch = (0, import_store10.useAppDispatch)();
6992
- const { groupByDomain } = (0, import_store10.useAppSelector)(import_store10.selectSearch);
6874
+ const appDispatch = (0, import_store8.useAppDispatch)();
6875
+ const { groupByDomain } = (0, import_store8.useAppSelector)(import_store8.selectSearch);
6993
6876
  const handleCheckBoxAll = (event) => {
6994
6877
  if (event?.target?.checked && typeTable === "list") {
6995
6878
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
6996
- appDispatch((0, import_store10.setSelectedRowKeys)(allRowKeys));
6879
+ appDispatch((0, import_store8.setSelectedRowKeys)(allRowKeys));
6997
6880
  } else if (event?.target?.checked && typeTable === "group") {
6998
6881
  const rowsIDs = document.querySelectorAll("tr[data-row-id]");
6999
6882
  const ids = Array.from(rowsIDs)?.map(
7000
6883
  (row) => Number(row?.getAttribute("data-row-id"))
7001
6884
  );
7002
6885
  if (ids?.length > 0) {
7003
- appDispatch((0, import_store10.setSelectedRowKeys)(ids));
6886
+ appDispatch((0, import_store8.setSelectedRowKeys)(ids));
7004
6887
  } else {
7005
6888
  const sum = countSum(
7006
6889
  rows,
7007
6890
  typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
7008
6891
  );
7009
6892
  const keys = Array.from({ length: sum }, (_) => void 0);
7010
- appDispatch((0, import_store10.setSelectedRowKeys)(keys));
6893
+ appDispatch((0, import_store8.setSelectedRowKeys)(keys));
7011
6894
  }
7012
6895
  if (selectedRowKeysRef) {
7013
6896
  selectedRowKeysRef.current = [];
7014
6897
  }
7015
6898
  } else {
7016
- appDispatch((0, import_store10.setSelectedRowKeys)([]));
6899
+ appDispatch((0, import_store8.setSelectedRowKeys)([]));
7017
6900
  }
7018
6901
  };
7019
6902
  return {
@@ -7022,12 +6905,12 @@ var tableHeadController = (props) => {
7022
6905
  };
7023
6906
 
7024
6907
  // src/widget/advance/table/table-view/controller.ts
7025
- var import_react23 = require("react");
7026
- var import_store11 = require("@fctc/interface-logic/store");
6908
+ var import_react22 = require("react");
6909
+ var import_store9 = require("@fctc/interface-logic/store");
7027
6910
  var import_utils14 = require("@fctc/interface-logic/utils");
7028
6911
  var tableController = ({ data }) => {
7029
- const [rows, setRows] = (0, import_react23.useState)(data.records || []);
7030
- const [columns, setColumns] = (0, import_react23.useState)([]);
6912
+ const [rows, setRows] = (0, import_react22.useState)(data.records || []);
6913
+ const [columns, setColumns] = (0, import_react22.useState)([]);
7031
6914
  const dataModelFields = data.fields?.map((field) => {
7032
6915
  return {
7033
6916
  ...data.dataModel?.[field?.name],
@@ -7055,7 +6938,7 @@ var tableController = ({ data }) => {
7055
6938
  return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
7056
6939
  });
7057
6940
  };
7058
- (0, import_react23.useEffect)(() => {
6941
+ (0, import_react22.useEffect)(() => {
7059
6942
  setRows(transformData(data.records || null));
7060
6943
  }, [data.records]);
7061
6944
  const handleGetColumns = () => {
@@ -7076,7 +6959,7 @@ var tableController = ({ data }) => {
7076
6959
  }
7077
6960
  return cols;
7078
6961
  };
7079
- (0, import_react23.useEffect)(() => {
6962
+ (0, import_react22.useEffect)(() => {
7080
6963
  const columns2 = handleGetColumns();
7081
6964
  setColumns(columns2);
7082
6965
  }, [data.records]);
@@ -7101,9 +6984,9 @@ var tableController = ({ data }) => {
7101
6984
  };
7102
6985
 
7103
6986
  // src/widget/advance/table/table-group/controller.ts
7104
- var import_react24 = require("react");
7105
- var import_hooks17 = require("@fctc/interface-logic/hooks");
7106
- var import_store12 = require("@fctc/interface-logic/store");
6987
+ var import_react23 = require("react");
6988
+ var import_hooks15 = require("@fctc/interface-logic/hooks");
6989
+ var import_store10 = require("@fctc/interface-logic/store");
7107
6990
 
7108
6991
  // src/environment.ts
7109
6992
  var environment_exports = {};
@@ -7130,18 +7013,18 @@ var tableGroupController = (props) => {
7130
7013
  setIsAutoSelect,
7131
7014
  selectedRowKeysRef
7132
7015
  } = props;
7133
- const [pageGroup, setPageGroup] = (0, import_react24.useState)(0);
7134
- const { groupByDomain, selectedTags } = (0, import_store12.useAppSelector)(import_store12.selectSearch);
7135
- const { selectedRowKeys } = (0, import_store12.useAppSelector)(import_store12.selectList);
7136
- const appDispatch = (0, import_store12.useAppDispatch)();
7137
- const { toDataJS } = (0, import_hooks17.useOdooDataTransform)();
7016
+ const [pageGroup, setPageGroup] = (0, import_react23.useState)(0);
7017
+ const { groupByDomain, selectedTags } = (0, import_store10.useAppSelector)(import_store10.selectSearch);
7018
+ const { selectedRowKeys } = (0, import_store10.useAppSelector)(import_store10.selectList);
7019
+ const appDispatch = (0, import_store10.useAppDispatch)();
7020
+ const { toDataJS } = (0, import_hooks15.useOdooDataTransform)();
7138
7021
  const initVal = toDataJS(row, viewData, model);
7139
- const [isShowGroup, setIsShowGroup] = (0, import_react24.useState)(false);
7140
- const [colEmptyGroup, setColEmptyGroup] = (0, import_react24.useState)({
7022
+ const [isShowGroup, setIsShowGroup] = (0, import_react23.useState)(false);
7023
+ const [colEmptyGroup, setColEmptyGroup] = (0, import_react23.useState)({
7141
7024
  fromStart: 1,
7142
7025
  fromEnd: 1
7143
7026
  });
7144
- const processedData = (0, import_react24.useMemo)(() => {
7027
+ const processedData = (0, import_react23.useMemo)(() => {
7145
7028
  const calculateColSpanEmpty = () => {
7146
7029
  const startIndex = columns.findIndex(
7147
7030
  (col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
@@ -7156,7 +7039,7 @@ var tableGroupController = (props) => {
7156
7039
  };
7157
7040
  return calculateColSpanEmpty();
7158
7041
  }, [columns, row]);
7159
- const shouldFetchData = (0, import_react24.useMemo)(() => {
7042
+ const shouldFetchData = (0, import_react23.useMemo)(() => {
7160
7043
  return !!isShowGroup;
7161
7044
  }, [isShowGroup]);
7162
7045
  const enabled = shouldFetchData && !!processedData;
@@ -7181,7 +7064,7 @@ var tableGroupController = (props) => {
7181
7064
  isPlaceholderData,
7182
7065
  isLoading,
7183
7066
  isFetching
7184
- } = (0, import_hooks17.useGetListData)(listDataProps, queryKey, enabled);
7067
+ } = (0, import_hooks15.useGetListData)(listDataProps, queryKey, enabled);
7185
7068
  const {
7186
7069
  columns: columnsGroup,
7187
7070
  rows: rowsGroup,
@@ -7196,7 +7079,7 @@ var tableGroupController = (props) => {
7196
7079
  }
7197
7080
  });
7198
7081
  const leftPadding = level > 1 ? level * 8 + "px" : "0px";
7199
- (0, import_react24.useEffect)(() => {
7082
+ (0, import_react23.useEffect)(() => {
7200
7083
  if (isShowGroup && selectedTags?.length > 0) {
7201
7084
  setIsShowGroup(false);
7202
7085
  }
@@ -7219,24 +7102,24 @@ var tableGroupController = (props) => {
7219
7102
  const filteredIds = selectedRowKeys.filter(
7220
7103
  (id) => !ids.includes(id)
7221
7104
  );
7222
- appDispatch((0, import_store12.setSelectedRowKeys)(filteredIds));
7105
+ appDispatch((0, import_store10.setSelectedRowKeys)(filteredIds));
7223
7106
  } else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
7224
7107
  const clonedKeys = [...selectedRowKeys];
7225
- appDispatch((0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]));
7226
- setTimeout(() => appDispatch((0, import_store12.setSelectedRowKeys)(clonedKeys)), 500);
7108
+ appDispatch((0, import_store10.setSelectedRowKeys)([...clonedKeys, -1]));
7109
+ setTimeout(() => appDispatch((0, import_store10.setSelectedRowKeys)(clonedKeys)), 500);
7227
7110
  } else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
7228
7111
  const filteredKeys = selectedRowKeys.filter((id) => id > -1);
7229
- appDispatch((0, import_store12.setSelectedRowKeys)(filteredKeys));
7112
+ appDispatch((0, import_store10.setSelectedRowKeys)(filteredKeys));
7230
7113
  }
7231
7114
  toggleShowGroup();
7232
7115
  };
7233
- (0, import_react24.useEffect)(() => {
7116
+ (0, import_react23.useEffect)(() => {
7234
7117
  if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
7235
7118
  return;
7236
7119
  }
7237
7120
  const clonedKeys = [...selectedRowKeys];
7238
- (0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]);
7239
- setTimeout(() => (0, import_store12.setSelectedRowKeys)(clonedKeys), 500);
7121
+ (0, import_store10.setSelectedRowKeys)([...clonedKeys, -1]);
7122
+ setTimeout(() => (0, import_store10.setSelectedRowKeys)(clonedKeys), 500);
7240
7123
  }, [isQueryFetched]);
7241
7124
  return {
7242
7125
  handleExpandChildGroup,
@@ -7273,23 +7156,24 @@ var tableGroupController = (props) => {
7273
7156
  var import_constants5 = require("@fctc/interface-logic/constants");
7274
7157
  var import_utils15 = require("@fctc/interface-logic/utils");
7275
7158
  var import_moment2 = __toESM(require_moment());
7276
- var import_react25 = require("react");
7159
+ var import_react24 = require("react");
7277
7160
  var searchController = ({
7278
7161
  viewData,
7279
- actionData,
7280
- fieldsList,
7281
- contextSearch,
7282
- setSearchMap,
7283
- searchMap
7162
+ model,
7163
+ domain,
7164
+ context,
7165
+ fieldsList
7284
7166
  }) => {
7285
- const [filterBy, setFilterBy] = (0, import_react25.useState)(null);
7286
- const [searchBy, setSearchBy] = (0, import_react25.useState)(null);
7287
- const [groupBy, setGroupBy] = (0, import_react25.useState)(null);
7288
- const [selectedTags, setSelectedTags] = (0, import_react25.useState)(null);
7289
- const [searchString, setSearchString] = (0, import_react25.useState)("");
7290
- const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : (0, import_utils15.evalJSONDomain)(actionData?.domain, contextSearch) : [];
7291
- const aid = actionData?.id;
7292
- const model = actionData?.res_model;
7167
+ const { env } = (0, provider_exports.useEnv)();
7168
+ const [filterBy, setFilterBy] = (0, import_react24.useState)(null);
7169
+ const [searchBy, setSearchBy] = (0, import_react24.useState)(null);
7170
+ const [groupBy, setGroupBy] = (0, import_react24.useState)(null);
7171
+ const [selectedTags, setSelectedTags] = (0, import_react24.useState)(null);
7172
+ const [searchString, setSearchString] = (0, import_react24.useState)("");
7173
+ const [searchMap, setSearchMap] = (0, import_react24.useState)({});
7174
+ const actionContext = typeof context === "string" ? (0, import_utils15.evalJSONContext)(context) : context;
7175
+ const contextSearch = { ...env.context, ...actionContext };
7176
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : (0, import_utils15.evalJSONDomain)(domain, contextSearch) : [];
7293
7177
  const clearSearch = () => {
7294
7178
  setFilterBy([]);
7295
7179
  setGroupBy([]);
@@ -7333,10 +7217,9 @@ var searchController = ({
7333
7217
  }
7334
7218
  }
7335
7219
  };
7336
- (0, import_react25.useEffect)(() => {
7337
- clearSearch();
7220
+ (0, import_react24.useEffect)(() => {
7338
7221
  fetchData();
7339
- }, [aid, model, viewData]);
7222
+ }, [model, viewData]);
7340
7223
  const onChangeSearchInput = (search_string) => {
7341
7224
  setSearchString(search_string);
7342
7225
  };
@@ -7373,27 +7256,27 @@ var searchController = ({
7373
7256
  };
7374
7257
  const formatDomain = () => {
7375
7258
  if (domainAction) {
7376
- const domain = [];
7259
+ const domain2 = [];
7377
7260
  if (domainAction?.length > 0) {
7378
- if (Object.keys(searchMap).length > 0) {
7379
- domain.push("&");
7261
+ if (Object.keys(searchMap).some((key) => !key.includes(import_constants5.SearchType.GROUP))) {
7262
+ domain2.push("&");
7380
7263
  }
7381
7264
  domainAction.forEach((domainItem) => {
7382
- domain.push(domainItem);
7265
+ domain2.push(domainItem);
7383
7266
  });
7384
7267
  }
7385
7268
  Object.keys(searchMap).forEach((key, keyIndex, keys) => {
7386
7269
  if (!key?.includes(import_constants5.SearchType.GROUP)) {
7387
7270
  if (keys.length > 1 && keyIndex < keys.length - 1) {
7388
- domain.push("&");
7271
+ domain2.push("&");
7389
7272
  }
7390
7273
  const valuesOfKey = searchMap[key];
7391
7274
  valuesOfKey.forEach((value, index) => {
7392
7275
  if (index < valuesOfKey.length - 1) {
7393
- domain.push("|");
7276
+ domain2.push("|");
7394
7277
  }
7395
7278
  if (value.domain) {
7396
- domain.push(...value.domain);
7279
+ domain2.push(...value.domain);
7397
7280
  return;
7398
7281
  }
7399
7282
  let valueDomainItem = value?.value;
@@ -7409,14 +7292,14 @@ var searchController = ({
7409
7292
  }
7410
7293
  }
7411
7294
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
7412
- domain.push([value.name, operator, valueDomainItem]);
7295
+ domain2.push([value.name, operator, valueDomainItem]);
7413
7296
  });
7414
7297
  }
7415
7298
  });
7416
- return [...domain];
7299
+ return [...domain2];
7417
7300
  }
7418
7301
  };
7419
- const setTagSearch = (0, import_react25.useCallback)(
7302
+ const setTagSearch = (0, import_react24.useCallback)(
7420
7303
  (updatedMap) => {
7421
7304
  if (!updatedMap) return;
7422
7305
  const tagsSearch = Object.entries(updatedMap).map(
@@ -7444,16 +7327,16 @@ var searchController = ({
7444
7327
  const contexts = [];
7445
7328
  let groupValues = [];
7446
7329
  objValues?.forEach((objValue) => {
7447
- const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7330
+ const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7448
7331
  const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
7449
7332
  contexts.push(
7450
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({ group_by: item })) : [context]
7333
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
7451
7334
  );
7452
7335
  groupValues[indexAppend] = {
7453
7336
  contexts: [
7454
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({
7337
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
7455
7338
  group_by: item
7456
- })) : [context]
7339
+ })) : [context2]
7457
7340
  ],
7458
7341
  strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
7459
7342
  };
@@ -7479,40 +7362,39 @@ var searchController = ({
7479
7362
  },
7480
7363
  [searchMap]
7481
7364
  );
7482
- (0, import_react25.useEffect)(() => {
7483
- setSelectedTags(null);
7365
+ (0, import_react24.useEffect)(() => {
7484
7366
  setTagSearch(searchMap);
7485
7367
  }, [searchMap]);
7486
7368
  const handleAddTagSearch = (tag) => {
7487
7369
  const {
7488
- domain,
7370
+ domain: domain2,
7489
7371
  groupIndex,
7490
7372
  value,
7491
7373
  type,
7492
7374
  title,
7493
- context,
7375
+ context: context2,
7494
7376
  active,
7495
7377
  dataIndex
7496
7378
  } = tag;
7497
- const domainFormat = new import_utils15.domainHelper.Domain(domain);
7379
+ const domainFormat = new import_utils15.domainHelper.Domain(domain2);
7498
7380
  if (type === import_constants5.SearchType.FILTER) {
7499
7381
  addSearchItems(`${import_constants5.SearchType.FILTER}_${groupIndex}`, {
7500
7382
  ...tag,
7501
- domain: domain ? domainFormat.toList(context) : null
7383
+ domain: domain2 ? domainFormat.toList(context2) : null
7502
7384
  });
7503
7385
  } else if (type === import_constants5.SearchType.SEARCH) {
7504
7386
  addSearchItems(`${import_constants5.SearchType.SEARCH}_${String(dataIndex)}`, {
7505
7387
  ...tag,
7506
- domain: domain ? domainFormat.toList({
7507
- ...context,
7388
+ domain: domain2 ? domainFormat.toList({
7389
+ ...context2,
7508
7390
  self: value
7509
7391
  }) : null
7510
7392
  });
7511
7393
  } else if (type === import_constants5.SearchType.GROUP) {
7512
7394
  addSearchItems(`${import_constants5.SearchType.GROUP}`, {
7513
7395
  ...tag,
7514
- domain: domain ? domainFormat.toList({
7515
- context,
7396
+ domain: domain2 ? domainFormat.toList({
7397
+ context: context2,
7516
7398
  self: value
7517
7399
  }) : null
7518
7400
  });
@@ -7532,7 +7414,8 @@ var searchController = ({
7532
7414
  removeSearchItems,
7533
7415
  onSearchString: onChangeSearchInput,
7534
7416
  handleAddTagSearch,
7535
- domain: formatDomain()
7417
+ domain: formatDomain(),
7418
+ context: contextSearch
7536
7419
  };
7537
7420
  };
7538
7421
 
@@ -7597,7 +7480,6 @@ __reExport(index_exports, types_exports, module.exports);
7597
7480
  searchController,
7598
7481
  setStorageItemAsync,
7599
7482
  statusDropdownController,
7600
- tableBodyController,
7601
7483
  tableController,
7602
7484
  tableGroupController,
7603
7485
  tableHeadController,