@fctc/widget-logic 1.9.6 → 1.9.7

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