@fctc/widget-logic 1.9.5 → 1.9.6

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
@@ -5246,7 +5246,6 @@ var many2oneFieldController = (props) => {
5246
5246
  options: fieldOptions,
5247
5247
  showDetail
5248
5248
  } = props;
5249
- const { env } = (0, provider_exports.useEnv)();
5250
5249
  const [options, setOptions] = (0, import_react14.useState)([]);
5251
5250
  const [inputValue, setInputValue] = (0, import_react14.useState)("");
5252
5251
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
@@ -5256,12 +5255,13 @@ var many2oneFieldController = (props) => {
5256
5255
  const [domainObject, setDomainObject] = (0, import_react14.useState)(null);
5257
5256
  const actionData = sessionStorageUtils.getActionData();
5258
5257
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5258
+ const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
5259
5259
  const initValue = methods?.getValues(name);
5260
5260
  const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
5261
5261
  const contextObject = {
5262
5262
  ...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
5263
5263
  ...fieldContext,
5264
- ...env?.context
5264
+ ...context
5265
5265
  };
5266
5266
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5267
5267
  const data = {
@@ -5433,49 +5433,52 @@ var many2oneButtonController = (props) => {
5433
5433
 
5434
5434
  // src/widget/basic/many2many-field/controller.ts
5435
5435
  var import_react15 = require("react");
5436
+ var import_store8 = require("@fctc/interface-logic/store");
5436
5437
  var import_utils6 = require("@fctc/interface-logic/utils");
5437
5438
  var many2manyFieldController = (props) => {
5438
5439
  const {
5439
5440
  relation,
5440
5441
  domain,
5441
5442
  context,
5442
- options,
5443
5443
  tab,
5444
+ model,
5445
+ aid,
5444
5446
  setSelectedRowKeys: setSelectedRowKeys4,
5447
+ fields,
5448
+ setFields,
5445
5449
  groupByDomain,
5446
- enabled: enabledCallAPI
5450
+ page,
5451
+ options,
5452
+ sessionStorageUtils
5447
5453
  } = props;
5448
- const { env } = (0, provider_exports.useEnv)();
5449
- const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5454
+ const appDispatch = (0, import_store8.useAppDispatch)();
5455
+ const actionData = sessionStorageUtils.getActionData();
5456
+ const [debouncedPage] = useDebounce(page, 500);
5450
5457
  const [order, setOrder] = (0, import_react15.useState)();
5451
5458
  const [isLoadedData, setIsLoadedData] = (0, import_react15.useState)(false);
5452
- const [page, setPage] = (0, import_react15.useState)(0);
5453
- const [domainMany2Many, setDomainMany2Many] = (0, import_react15.useState)(null);
5454
- const [debouncedPage] = useDebounce(page, 500);
5455
- const contextObject = {
5456
- ...env.context,
5457
- ...context || {}
5458
- };
5459
+ const [domainMany2Many, setDomainMany2Many] = (0, import_react15.useState)(domain);
5460
+ const { env } = (0, provider_exports.useEnv)();
5461
+ const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5459
5462
  const viewParams = {
5460
5463
  model: relation,
5461
5464
  views: [
5462
5465
  [false, "list"],
5463
5466
  [false, "search"]
5464
5467
  ],
5465
- context: contextObject
5468
+ context
5466
5469
  };
5467
- const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
5470
+ const { data: viewResponse } = useGetView2(viewParams, actionData);
5468
5471
  const baseModel = (0, import_react15.useMemo)(
5469
5472
  () => ({
5470
5473
  name: String(relation),
5471
5474
  view: viewResponse || {},
5472
- actContext: contextObject,
5475
+ actContext: context,
5473
5476
  fields: [
5474
5477
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5475
5478
  ...tab?.fields ? tab.fields : []
5476
5479
  ]
5477
5480
  }),
5478
- [relation, viewResponse]
5481
+ [model, viewResponse]
5479
5482
  );
5480
5483
  const initModel = (0, hooks_exports.useModel)();
5481
5484
  const modelInstance = (0, import_react15.useMemo)(() => {
@@ -5494,15 +5497,26 @@ var many2manyFieldController = (props) => {
5494
5497
  const optionsObject = tab?.options ? (0, import_utils6.evalJSONContext)(tab?.options) : (options ? (0, import_utils6.evalJSONContext)(options) : {}) || {};
5495
5498
  const fetchData = async () => {
5496
5499
  try {
5497
- const domainParse = typeof domain === "string" ? (0, import_utils6.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5498
- setDomainMany2Many(domainParse);
5499
- setPage(0);
5500
+ setDomainMany2Many(domain);
5501
+ appDispatch((0, import_store8.setFirstDomain)(domain));
5502
+ appDispatch((0, import_store8.setViewDataStore)(viewResponse));
5503
+ const modalData = viewResponse?.views?.list?.fields.map((field) => ({
5504
+ ...viewResponse?.models?.[String(model)]?.[field?.name],
5505
+ ...field
5506
+ }));
5507
+ if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
5508
+ setFields({
5509
+ ...fields,
5510
+ [`${aid}_${relation}_popupmany2many`]: modalData
5511
+ });
5512
+ }
5513
+ appDispatch((0, import_store8.setPage)(0));
5500
5514
  } catch (err) {
5501
5515
  console.log(err);
5502
5516
  }
5503
5517
  };
5504
5518
  const queryKey = [
5505
- `view-${relation}`,
5519
+ `view-${relation}-${aid}`,
5506
5520
  specification,
5507
5521
  domainMany2Many,
5508
5522
  debouncedPage,
@@ -5515,16 +5529,16 @@ var many2manyFieldController = (props) => {
5515
5529
  domain: domainMany2Many,
5516
5530
  offset: debouncedPage * 10,
5517
5531
  limit: 10,
5518
- context: contextObject,
5532
+ context,
5519
5533
  fields: groupByDomain?.fields,
5520
5534
  groupby: [groupByDomain?.contexts[0]?.group_by],
5521
5535
  sort: order ? order : default_order ? (0, import_utils6.formatSortingString)(default_order) : ""
5522
5536
  };
5523
- const enabled = enabledCallAPI && isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5537
+ const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5524
5538
  const {
5525
5539
  data: dataResponse,
5526
- isLoading,
5527
- isFetched,
5540
+ isLoading: isDataLoading,
5541
+ isFetched: isDataResponseFetched,
5528
5542
  isPlaceholderData
5529
5543
  } = useGetListData3(data, queryKey, enabled);
5530
5544
  (0, import_react15.useEffect)(() => {
@@ -5532,7 +5546,12 @@ var many2manyFieldController = (props) => {
5532
5546
  fetchData();
5533
5547
  }
5534
5548
  return () => {
5535
- setPage(0);
5549
+ appDispatch((0, import_store8.setGroupByDomain)(null));
5550
+ setFields((prevFields) => ({
5551
+ ...prevFields,
5552
+ [`${aid}_${relation}_popupmany2many`]: null
5553
+ }));
5554
+ appDispatch((0, import_store8.setPage)(0));
5536
5555
  setSelectedRowKeys4([]);
5537
5556
  setDomainMany2Many(null);
5538
5557
  setIsLoadedData(false);
@@ -5540,19 +5559,44 @@ var many2manyFieldController = (props) => {
5540
5559
  }, [viewResponse]);
5541
5560
  const { rows, columns, typeTable } = tableController({
5542
5561
  data: {
5543
- fields: viewResponse?.views?.list?.fields,
5562
+ fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5544
5563
  records: dataResponse?.records ?? dataResponse?.groups,
5545
5564
  dataModel: viewResponse?.models?.[String(relation)],
5546
- context: contextObject,
5565
+ context: { ...env.context, ...context },
5547
5566
  typeTable: dataResponse?.groups ? "group" : "list"
5548
5567
  }
5549
5568
  });
5569
+ const dataFormView = {
5570
+ id: null,
5571
+ model: relation,
5572
+ context
5573
+ };
5574
+ const {
5575
+ refetch,
5576
+ data: dataFormViewResponse,
5577
+ isSuccess
5578
+ } = useGetFormView({
5579
+ data: dataFormView,
5580
+ queryKey: [`form-view-action-${relation}`],
5581
+ enabled: false
5582
+ });
5583
+ (0, import_react15.useEffect)(() => {
5584
+ if (isSuccess && dataFormViewResponse) {
5585
+ sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
5586
+ window.location.href = `/form/menu?model=${relation}`;
5587
+ }
5588
+ }, [isSuccess]);
5550
5589
  (0, import_react15.useEffect)(() => {
5551
5590
  if (domainMany2Many && !isLoadedData) {
5552
5591
  setIsLoadedData(true);
5553
5592
  }
5554
5593
  }, [domainMany2Many]);
5555
5594
  const handleCreateNewOnPage = async () => {
5595
+ try {
5596
+ refetch();
5597
+ } catch (error) {
5598
+ console.log(error);
5599
+ }
5556
5600
  };
5557
5601
  return {
5558
5602
  handleCreateNewOnPage,
@@ -5560,13 +5604,9 @@ var many2manyFieldController = (props) => {
5560
5604
  rows,
5561
5605
  columns,
5562
5606
  typeTable,
5563
- isLoading,
5564
- isFetched,
5565
- isPlaceholderData,
5566
- setPage,
5567
- page,
5568
- domain: domainMany2Many,
5569
- setDomain: setDomainMany2Many
5607
+ isDataLoading,
5608
+ isDataResponseFetched,
5609
+ isPlaceholderData
5570
5610
  };
5571
5611
  };
5572
5612
 
@@ -5634,7 +5674,7 @@ var many2manyTagsController = (props) => {
5634
5674
  var import_react17 = require("react");
5635
5675
  var import_utils8 = require("@fctc/interface-logic/utils");
5636
5676
  var durationController = (props) => {
5637
- const { relation, domain, formValues, name, id, model, onRefetch } = props;
5677
+ const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5638
5678
  const specification = {
5639
5679
  id: 0,
5640
5680
  name: "",
@@ -5658,7 +5698,11 @@ var durationController = (props) => {
5658
5698
  },
5659
5699
  sort: ""
5660
5700
  };
5661
- const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5701
+ const { data: dataResponse } = useGetListData3(
5702
+ listDataProps,
5703
+ queryKey,
5704
+ enabled
5705
+ );
5662
5706
  const { mutate: fetchChangeStatus } = useChangeStatus();
5663
5707
  const handleClick = async (stage_id) => {
5664
5708
  setDisabled(true);
@@ -6834,7 +6878,7 @@ var binaryFieldController = (props) => {
6834
6878
  };
6835
6879
 
6836
6880
  // src/widget/advance/table/table-body/controller.ts
6837
- var import_store8 = require("@fctc/interface-logic/store");
6881
+ var import_store9 = require("@fctc/interface-logic/store");
6838
6882
  var import_react21 = require("react");
6839
6883
  var tableBodyController = (props) => {
6840
6884
  const {
@@ -6847,7 +6891,7 @@ var tableBodyController = (props) => {
6847
6891
  selectedRowKeysRef,
6848
6892
  onClickRow
6849
6893
  } = props;
6850
- const appDispatch = (0, import_store8.useAppDispatch)();
6894
+ const appDispatch = (0, import_store9.useAppDispatch)();
6851
6895
  const checked = (0, import_react21.useMemo)(() => {
6852
6896
  if (!row?.id) return false;
6853
6897
  if (selectedRowKeys?.includes(row.id)) {
@@ -6864,7 +6908,7 @@ var tableBodyController = (props) => {
6864
6908
  }
6865
6909
  const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
6866
6910
  console.log("newSelectedRowKeys", newSelectedRowKeys);
6867
- appDispatch((0, import_store8.setSelectedRowKeys)(newSelectedRowKeys));
6911
+ appDispatch((0, import_store9.setSelectedRowKeys)(newSelectedRowKeys));
6868
6912
  };
6869
6913
  const handleClickRow = (col, row2) => {
6870
6914
  onClickRow(col, row2);
@@ -6877,13 +6921,13 @@ var tableBodyController = (props) => {
6877
6921
  (id) => id !== row.id
6878
6922
  );
6879
6923
  selectedRowKeysRef.current = filtered;
6880
- appDispatch((0, import_store8.setSelectedRowKeys)(filtered));
6924
+ appDispatch((0, import_store9.setSelectedRowKeys)(filtered));
6881
6925
  } else {
6882
6926
  const unique = Array.from(
6883
6927
  /* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
6884
6928
  );
6885
6929
  selectedRowKeysRef.current = unique;
6886
- appDispatch((0, import_store8.setSelectedRowKeys)(unique));
6930
+ appDispatch((0, import_store9.setSelectedRowKeys)(unique));
6887
6931
  }
6888
6932
  }
6889
6933
  }, [isAutoSelect]);
@@ -6901,35 +6945,35 @@ var tableBodyController = (props) => {
6901
6945
  };
6902
6946
 
6903
6947
  // src/widget/advance/table/table-head/controller.ts
6904
- var import_store9 = require("@fctc/interface-logic/store");
6948
+ var import_store10 = require("@fctc/interface-logic/store");
6905
6949
  var tableHeadController = (props) => {
6906
6950
  const { typeTable, rows, selectedRowKeysRef } = props;
6907
- const appDispatch = (0, import_store9.useAppDispatch)();
6908
- const { groupByDomain } = (0, import_store9.useAppSelector)(import_store9.selectSearch);
6951
+ const appDispatch = (0, import_store10.useAppDispatch)();
6952
+ const { groupByDomain } = (0, import_store10.useAppSelector)(import_store10.selectSearch);
6909
6953
  const handleCheckBoxAll = (event) => {
6910
6954
  if (event?.target?.checked && typeTable === "list") {
6911
6955
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
6912
- appDispatch((0, import_store9.setSelectedRowKeys)(allRowKeys));
6956
+ appDispatch((0, import_store10.setSelectedRowKeys)(allRowKeys));
6913
6957
  } else if (event?.target?.checked && typeTable === "group") {
6914
6958
  const rowsIDs = document.querySelectorAll("tr[data-row-id]");
6915
6959
  const ids = Array.from(rowsIDs)?.map(
6916
6960
  (row) => Number(row?.getAttribute("data-row-id"))
6917
6961
  );
6918
6962
  if (ids?.length > 0) {
6919
- appDispatch((0, import_store9.setSelectedRowKeys)(ids));
6963
+ appDispatch((0, import_store10.setSelectedRowKeys)(ids));
6920
6964
  } else {
6921
6965
  const sum = countSum(
6922
6966
  rows,
6923
6967
  typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
6924
6968
  );
6925
6969
  const keys = Array.from({ length: sum }, (_) => void 0);
6926
- appDispatch((0, import_store9.setSelectedRowKeys)(keys));
6970
+ appDispatch((0, import_store10.setSelectedRowKeys)(keys));
6927
6971
  }
6928
6972
  if (selectedRowKeysRef) {
6929
6973
  selectedRowKeysRef.current = [];
6930
6974
  }
6931
6975
  } else {
6932
- appDispatch((0, import_store9.setSelectedRowKeys)([]));
6976
+ appDispatch((0, import_store10.setSelectedRowKeys)([]));
6933
6977
  }
6934
6978
  };
6935
6979
  return {
@@ -6939,7 +6983,7 @@ var tableHeadController = (props) => {
6939
6983
 
6940
6984
  // src/widget/advance/table/table-view/controller.ts
6941
6985
  var import_react22 = require("react");
6942
- var import_store10 = require("@fctc/interface-logic/store");
6986
+ var import_store11 = require("@fctc/interface-logic/store");
6943
6987
  var import_utils13 = require("@fctc/interface-logic/utils");
6944
6988
  var tableController = ({ data }) => {
6945
6989
  const [rows, setRows] = (0, import_react22.useState)(data.records || []);
@@ -7019,7 +7063,7 @@ var tableController = ({ data }) => {
7019
7063
  // src/widget/advance/table/table-group/controller.ts
7020
7064
  var import_react23 = require("react");
7021
7065
  var import_hooks16 = require("@fctc/interface-logic/hooks");
7022
- var import_store11 = require("@fctc/interface-logic/store");
7066
+ var import_store12 = require("@fctc/interface-logic/store");
7023
7067
 
7024
7068
  // src/environment.ts
7025
7069
  var environment_exports = {};
@@ -7047,9 +7091,9 @@ var tableGroupController = (props) => {
7047
7091
  selectedRowKeysRef
7048
7092
  } = props;
7049
7093
  const [pageGroup, setPageGroup] = (0, import_react23.useState)(0);
7050
- const { groupByDomain, selectedTags } = (0, import_store11.useAppSelector)(import_store11.selectSearch);
7051
- const { selectedRowKeys } = (0, import_store11.useAppSelector)(import_store11.selectList);
7052
- const appDispatch = (0, import_store11.useAppDispatch)();
7094
+ const { groupByDomain, selectedTags } = (0, import_store12.useAppSelector)(import_store12.selectSearch);
7095
+ const { selectedRowKeys } = (0, import_store12.useAppSelector)(import_store12.selectList);
7096
+ const appDispatch = (0, import_store12.useAppDispatch)();
7053
7097
  const { toDataJS } = (0, import_hooks16.useOdooDataTransform)();
7054
7098
  const initVal = toDataJS(row, viewData, model);
7055
7099
  const [isShowGroup, setIsShowGroup] = (0, import_react23.useState)(false);
@@ -7135,14 +7179,14 @@ var tableGroupController = (props) => {
7135
7179
  const filteredIds = selectedRowKeys.filter(
7136
7180
  (id) => !ids.includes(id)
7137
7181
  );
7138
- appDispatch((0, import_store11.setSelectedRowKeys)(filteredIds));
7182
+ appDispatch((0, import_store12.setSelectedRowKeys)(filteredIds));
7139
7183
  } else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
7140
7184
  const clonedKeys = [...selectedRowKeys];
7141
- appDispatch((0, import_store11.setSelectedRowKeys)([...clonedKeys, -1]));
7142
- setTimeout(() => appDispatch((0, import_store11.setSelectedRowKeys)(clonedKeys)), 500);
7185
+ appDispatch((0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]));
7186
+ setTimeout(() => appDispatch((0, import_store12.setSelectedRowKeys)(clonedKeys)), 500);
7143
7187
  } else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
7144
7188
  const filteredKeys = selectedRowKeys.filter((id) => id > -1);
7145
- appDispatch((0, import_store11.setSelectedRowKeys)(filteredKeys));
7189
+ appDispatch((0, import_store12.setSelectedRowKeys)(filteredKeys));
7146
7190
  }
7147
7191
  toggleShowGroup();
7148
7192
  };
@@ -7151,8 +7195,8 @@ var tableGroupController = (props) => {
7151
7195
  return;
7152
7196
  }
7153
7197
  const clonedKeys = [...selectedRowKeys];
7154
- (0, import_store11.setSelectedRowKeys)([...clonedKeys, -1]);
7155
- setTimeout(() => (0, import_store11.setSelectedRowKeys)(clonedKeys), 500);
7198
+ (0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]);
7199
+ setTimeout(() => (0, import_store12.setSelectedRowKeys)(clonedKeys), 500);
7156
7200
  }, [isQueryFetched]);
7157
7201
  return {
7158
7202
  handleExpandChildGroup,