@fctc/widget-logic 1.9.4 → 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,47 +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,
5450
+ page,
5451
+ options,
5446
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 actionData = sessionStorageUtils.getActionData();
5456
- const contextObject = { ...env.context, ...context };
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)();
5457
5462
  const viewParams = {
5458
5463
  model: relation,
5459
5464
  views: [
5460
5465
  [false, "list"],
5461
5466
  [false, "search"]
5462
5467
  ],
5463
- context: contextObject
5468
+ context
5464
5469
  };
5465
5470
  const { data: viewResponse } = useGetView2(viewParams, actionData);
5466
5471
  const baseModel = (0, import_react15.useMemo)(
5467
5472
  () => ({
5468
5473
  name: String(relation),
5469
5474
  view: viewResponse || {},
5470
- actContext: contextObject,
5475
+ actContext: context,
5471
5476
  fields: [
5472
5477
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5473
5478
  ...tab?.fields ? tab.fields : []
5474
5479
  ]
5475
5480
  }),
5476
- [relation, viewResponse]
5481
+ [model, viewResponse]
5477
5482
  );
5478
5483
  const initModel = (0, hooks_exports.useModel)();
5479
5484
  const modelInstance = (0, import_react15.useMemo)(() => {
@@ -5492,15 +5497,26 @@ var many2manyFieldController = (props) => {
5492
5497
  const optionsObject = tab?.options ? (0, import_utils6.evalJSONContext)(tab?.options) : (options ? (0, import_utils6.evalJSONContext)(options) : {}) || {};
5493
5498
  const fetchData = async () => {
5494
5499
  try {
5495
- const domainParse = typeof domain === "string" ? (0, import_utils6.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5496
- setDomainMany2Many(domainParse);
5497
- 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));
5498
5514
  } catch (err) {
5499
5515
  console.log(err);
5500
5516
  }
5501
5517
  };
5502
5518
  const queryKey = [
5503
- `view-${relation}`,
5519
+ `view-${relation}-${aid}`,
5504
5520
  specification,
5505
5521
  domainMany2Many,
5506
5522
  debouncedPage,
@@ -5513,7 +5529,7 @@ var many2manyFieldController = (props) => {
5513
5529
  domain: domainMany2Many,
5514
5530
  offset: debouncedPage * 10,
5515
5531
  limit: 10,
5516
- context: contextObject,
5532
+ context,
5517
5533
  fields: groupByDomain?.fields,
5518
5534
  groupby: [groupByDomain?.contexts[0]?.group_by],
5519
5535
  sort: order ? order : default_order ? (0, import_utils6.formatSortingString)(default_order) : ""
@@ -5521,8 +5537,8 @@ var many2manyFieldController = (props) => {
5521
5537
  const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5522
5538
  const {
5523
5539
  data: dataResponse,
5524
- isLoading,
5525
- isFetched,
5540
+ isLoading: isDataLoading,
5541
+ isFetched: isDataResponseFetched,
5526
5542
  isPlaceholderData
5527
5543
  } = useGetListData3(data, queryKey, enabled);
5528
5544
  (0, import_react15.useEffect)(() => {
@@ -5530,7 +5546,12 @@ var many2manyFieldController = (props) => {
5530
5546
  fetchData();
5531
5547
  }
5532
5548
  return () => {
5533
- 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));
5534
5555
  setSelectedRowKeys4([]);
5535
5556
  setDomainMany2Many(null);
5536
5557
  setIsLoadedData(false);
@@ -5538,19 +5559,44 @@ var many2manyFieldController = (props) => {
5538
5559
  }, [viewResponse]);
5539
5560
  const { rows, columns, typeTable } = tableController({
5540
5561
  data: {
5541
- fields: viewResponse?.views?.list?.fields,
5562
+ fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5542
5563
  records: dataResponse?.records ?? dataResponse?.groups,
5543
5564
  dataModel: viewResponse?.models?.[String(relation)],
5544
- context: contextObject,
5565
+ context: { ...env.context, ...context },
5545
5566
  typeTable: dataResponse?.groups ? "group" : "list"
5546
5567
  }
5547
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]);
5548
5589
  (0, import_react15.useEffect)(() => {
5549
5590
  if (domainMany2Many && !isLoadedData) {
5550
5591
  setIsLoadedData(true);
5551
5592
  }
5552
5593
  }, [domainMany2Many]);
5553
5594
  const handleCreateNewOnPage = async () => {
5595
+ try {
5596
+ refetch();
5597
+ } catch (error) {
5598
+ console.log(error);
5599
+ }
5554
5600
  };
5555
5601
  return {
5556
5602
  handleCreateNewOnPage,
@@ -5558,13 +5604,9 @@ var many2manyFieldController = (props) => {
5558
5604
  rows,
5559
5605
  columns,
5560
5606
  typeTable,
5561
- isLoading,
5562
- isFetched,
5563
- isPlaceholderData,
5564
- setPage,
5565
- page,
5566
- domain: domainMany2Many,
5567
- setDomain: setDomainMany2Many
5607
+ isDataLoading,
5608
+ isDataResponseFetched,
5609
+ isPlaceholderData
5568
5610
  };
5569
5611
  };
5570
5612
 
@@ -5632,7 +5674,7 @@ var many2manyTagsController = (props) => {
5632
5674
  var import_react17 = require("react");
5633
5675
  var import_utils8 = require("@fctc/interface-logic/utils");
5634
5676
  var durationController = (props) => {
5635
- const { relation, domain, formValues, name, id, model, onRefetch } = props;
5677
+ const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5636
5678
  const specification = {
5637
5679
  id: 0,
5638
5680
  name: "",
@@ -5656,7 +5698,11 @@ var durationController = (props) => {
5656
5698
  },
5657
5699
  sort: ""
5658
5700
  };
5659
- const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5701
+ const { data: dataResponse } = useGetListData3(
5702
+ listDataProps,
5703
+ queryKey,
5704
+ enabled
5705
+ );
5660
5706
  const { mutate: fetchChangeStatus } = useChangeStatus();
5661
5707
  const handleClick = async (stage_id) => {
5662
5708
  setDisabled(true);
@@ -6832,7 +6878,7 @@ var binaryFieldController = (props) => {
6832
6878
  };
6833
6879
 
6834
6880
  // src/widget/advance/table/table-body/controller.ts
6835
- var import_store8 = require("@fctc/interface-logic/store");
6881
+ var import_store9 = require("@fctc/interface-logic/store");
6836
6882
  var import_react21 = require("react");
6837
6883
  var tableBodyController = (props) => {
6838
6884
  const {
@@ -6845,7 +6891,7 @@ var tableBodyController = (props) => {
6845
6891
  selectedRowKeysRef,
6846
6892
  onClickRow
6847
6893
  } = props;
6848
- const appDispatch = (0, import_store8.useAppDispatch)();
6894
+ const appDispatch = (0, import_store9.useAppDispatch)();
6849
6895
  const checked = (0, import_react21.useMemo)(() => {
6850
6896
  if (!row?.id) return false;
6851
6897
  if (selectedRowKeys?.includes(row.id)) {
@@ -6862,7 +6908,7 @@ var tableBodyController = (props) => {
6862
6908
  }
6863
6909
  const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
6864
6910
  console.log("newSelectedRowKeys", newSelectedRowKeys);
6865
- appDispatch((0, import_store8.setSelectedRowKeys)(newSelectedRowKeys));
6911
+ appDispatch((0, import_store9.setSelectedRowKeys)(newSelectedRowKeys));
6866
6912
  };
6867
6913
  const handleClickRow = (col, row2) => {
6868
6914
  onClickRow(col, row2);
@@ -6875,13 +6921,13 @@ var tableBodyController = (props) => {
6875
6921
  (id) => id !== row.id
6876
6922
  );
6877
6923
  selectedRowKeysRef.current = filtered;
6878
- appDispatch((0, import_store8.setSelectedRowKeys)(filtered));
6924
+ appDispatch((0, import_store9.setSelectedRowKeys)(filtered));
6879
6925
  } else {
6880
6926
  const unique = Array.from(
6881
6927
  /* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
6882
6928
  );
6883
6929
  selectedRowKeysRef.current = unique;
6884
- appDispatch((0, import_store8.setSelectedRowKeys)(unique));
6930
+ appDispatch((0, import_store9.setSelectedRowKeys)(unique));
6885
6931
  }
6886
6932
  }
6887
6933
  }, [isAutoSelect]);
@@ -6899,35 +6945,35 @@ var tableBodyController = (props) => {
6899
6945
  };
6900
6946
 
6901
6947
  // src/widget/advance/table/table-head/controller.ts
6902
- var import_store9 = require("@fctc/interface-logic/store");
6948
+ var import_store10 = require("@fctc/interface-logic/store");
6903
6949
  var tableHeadController = (props) => {
6904
6950
  const { typeTable, rows, selectedRowKeysRef } = props;
6905
- const appDispatch = (0, import_store9.useAppDispatch)();
6906
- 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);
6907
6953
  const handleCheckBoxAll = (event) => {
6908
6954
  if (event?.target?.checked && typeTable === "list") {
6909
6955
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
6910
- appDispatch((0, import_store9.setSelectedRowKeys)(allRowKeys));
6956
+ appDispatch((0, import_store10.setSelectedRowKeys)(allRowKeys));
6911
6957
  } else if (event?.target?.checked && typeTable === "group") {
6912
6958
  const rowsIDs = document.querySelectorAll("tr[data-row-id]");
6913
6959
  const ids = Array.from(rowsIDs)?.map(
6914
6960
  (row) => Number(row?.getAttribute("data-row-id"))
6915
6961
  );
6916
6962
  if (ids?.length > 0) {
6917
- appDispatch((0, import_store9.setSelectedRowKeys)(ids));
6963
+ appDispatch((0, import_store10.setSelectedRowKeys)(ids));
6918
6964
  } else {
6919
6965
  const sum = countSum(
6920
6966
  rows,
6921
6967
  typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
6922
6968
  );
6923
6969
  const keys = Array.from({ length: sum }, (_) => void 0);
6924
- appDispatch((0, import_store9.setSelectedRowKeys)(keys));
6970
+ appDispatch((0, import_store10.setSelectedRowKeys)(keys));
6925
6971
  }
6926
6972
  if (selectedRowKeysRef) {
6927
6973
  selectedRowKeysRef.current = [];
6928
6974
  }
6929
6975
  } else {
6930
- appDispatch((0, import_store9.setSelectedRowKeys)([]));
6976
+ appDispatch((0, import_store10.setSelectedRowKeys)([]));
6931
6977
  }
6932
6978
  };
6933
6979
  return {
@@ -6937,7 +6983,7 @@ var tableHeadController = (props) => {
6937
6983
 
6938
6984
  // src/widget/advance/table/table-view/controller.ts
6939
6985
  var import_react22 = require("react");
6940
- var import_store10 = require("@fctc/interface-logic/store");
6986
+ var import_store11 = require("@fctc/interface-logic/store");
6941
6987
  var import_utils13 = require("@fctc/interface-logic/utils");
6942
6988
  var tableController = ({ data }) => {
6943
6989
  const [rows, setRows] = (0, import_react22.useState)(data.records || []);
@@ -7017,7 +7063,7 @@ var tableController = ({ data }) => {
7017
7063
  // src/widget/advance/table/table-group/controller.ts
7018
7064
  var import_react23 = require("react");
7019
7065
  var import_hooks16 = require("@fctc/interface-logic/hooks");
7020
- var import_store11 = require("@fctc/interface-logic/store");
7066
+ var import_store12 = require("@fctc/interface-logic/store");
7021
7067
 
7022
7068
  // src/environment.ts
7023
7069
  var environment_exports = {};
@@ -7045,9 +7091,9 @@ var tableGroupController = (props) => {
7045
7091
  selectedRowKeysRef
7046
7092
  } = props;
7047
7093
  const [pageGroup, setPageGroup] = (0, import_react23.useState)(0);
7048
- const { groupByDomain, selectedTags } = (0, import_store11.useAppSelector)(import_store11.selectSearch);
7049
- const { selectedRowKeys } = (0, import_store11.useAppSelector)(import_store11.selectList);
7050
- 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)();
7051
7097
  const { toDataJS } = (0, import_hooks16.useOdooDataTransform)();
7052
7098
  const initVal = toDataJS(row, viewData, model);
7053
7099
  const [isShowGroup, setIsShowGroup] = (0, import_react23.useState)(false);
@@ -7133,14 +7179,14 @@ var tableGroupController = (props) => {
7133
7179
  const filteredIds = selectedRowKeys.filter(
7134
7180
  (id) => !ids.includes(id)
7135
7181
  );
7136
- appDispatch((0, import_store11.setSelectedRowKeys)(filteredIds));
7182
+ appDispatch((0, import_store12.setSelectedRowKeys)(filteredIds));
7137
7183
  } else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
7138
7184
  const clonedKeys = [...selectedRowKeys];
7139
- appDispatch((0, import_store11.setSelectedRowKeys)([...clonedKeys, -1]));
7140
- 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);
7141
7187
  } else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
7142
7188
  const filteredKeys = selectedRowKeys.filter((id) => id > -1);
7143
- appDispatch((0, import_store11.setSelectedRowKeys)(filteredKeys));
7189
+ appDispatch((0, import_store12.setSelectedRowKeys)(filteredKeys));
7144
7190
  }
7145
7191
  toggleShowGroup();
7146
7192
  };
@@ -7149,8 +7195,8 @@ var tableGroupController = (props) => {
7149
7195
  return;
7150
7196
  }
7151
7197
  const clonedKeys = [...selectedRowKeys];
7152
- (0, import_store11.setSelectedRowKeys)([...clonedKeys, -1]);
7153
- setTimeout(() => (0, import_store11.setSelectedRowKeys)(clonedKeys), 500);
7198
+ (0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]);
7199
+ setTimeout(() => (0, import_store12.setSelectedRowKeys)(clonedKeys), 500);
7154
7200
  }, [isQueryFetched]);
7155
7201
  return {
7156
7202
  handleExpandChildGroup,