@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/widget.js CHANGED
@@ -4972,7 +4972,6 @@ var many2oneFieldController = (props) => {
4972
4972
  options: fieldOptions,
4973
4973
  showDetail
4974
4974
  } = props;
4975
- const { env } = (0, provider_exports.useEnv)();
4976
4975
  const [options, setOptions] = (0, import_react14.useState)([]);
4977
4976
  const [inputValue, setInputValue] = (0, import_react14.useState)("");
4978
4977
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
@@ -4982,12 +4981,13 @@ var many2oneFieldController = (props) => {
4982
4981
  const [domainObject, setDomainObject] = (0, import_react14.useState)(null);
4983
4982
  const actionData = sessionStorageUtils.getActionData();
4984
4983
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
4984
+ const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
4985
4985
  const initValue = methods?.getValues(name);
4986
4986
  const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
4987
4987
  const contextObject = {
4988
4988
  ...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
4989
4989
  ...fieldContext,
4990
- ...env?.context
4990
+ ...context
4991
4991
  };
4992
4992
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
4993
4993
  const data = {
@@ -5159,49 +5159,52 @@ var many2oneButtonController = (props) => {
5159
5159
 
5160
5160
  // src/widget/basic/many2many-field/controller.ts
5161
5161
  var import_react15 = require("react");
5162
+ var import_store8 = require("@fctc/interface-logic/store");
5162
5163
  var import_utils6 = require("@fctc/interface-logic/utils");
5163
5164
  var many2manyFieldController = (props) => {
5164
5165
  const {
5165
5166
  relation,
5166
5167
  domain,
5167
5168
  context,
5168
- options,
5169
5169
  tab,
5170
+ model,
5171
+ aid,
5170
5172
  setSelectedRowKeys: setSelectedRowKeys4,
5173
+ fields,
5174
+ setFields,
5171
5175
  groupByDomain,
5172
- enabled: enabledCallAPI
5176
+ page,
5177
+ options,
5178
+ sessionStorageUtils
5173
5179
  } = props;
5174
- const { env } = (0, provider_exports.useEnv)();
5175
- const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5180
+ const appDispatch = (0, import_store8.useAppDispatch)();
5181
+ const actionData = sessionStorageUtils.getActionData();
5182
+ const [debouncedPage] = useDebounce(page, 500);
5176
5183
  const [order, setOrder] = (0, import_react15.useState)();
5177
5184
  const [isLoadedData, setIsLoadedData] = (0, import_react15.useState)(false);
5178
- const [page, setPage] = (0, import_react15.useState)(0);
5179
- const [domainMany2Many, setDomainMany2Many] = (0, import_react15.useState)(null);
5180
- const [debouncedPage] = useDebounce(page, 500);
5181
- const contextObject = {
5182
- ...env.context,
5183
- ...context || {}
5184
- };
5185
+ const [domainMany2Many, setDomainMany2Many] = (0, import_react15.useState)(domain);
5186
+ const { env } = (0, provider_exports.useEnv)();
5187
+ const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5185
5188
  const viewParams = {
5186
5189
  model: relation,
5187
5190
  views: [
5188
5191
  [false, "list"],
5189
5192
  [false, "search"]
5190
5193
  ],
5191
- context: contextObject
5194
+ context
5192
5195
  };
5193
- const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
5196
+ const { data: viewResponse } = useGetView2(viewParams, actionData);
5194
5197
  const baseModel = (0, import_react15.useMemo)(
5195
5198
  () => ({
5196
5199
  name: String(relation),
5197
5200
  view: viewResponse || {},
5198
- actContext: contextObject,
5201
+ actContext: context,
5199
5202
  fields: [
5200
5203
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5201
5204
  ...tab?.fields ? tab.fields : []
5202
5205
  ]
5203
5206
  }),
5204
- [relation, viewResponse]
5207
+ [model, viewResponse]
5205
5208
  );
5206
5209
  const initModel = (0, hooks_exports.useModel)();
5207
5210
  const modelInstance = (0, import_react15.useMemo)(() => {
@@ -5220,15 +5223,26 @@ var many2manyFieldController = (props) => {
5220
5223
  const optionsObject = tab?.options ? (0, import_utils6.evalJSONContext)(tab?.options) : (options ? (0, import_utils6.evalJSONContext)(options) : {}) || {};
5221
5224
  const fetchData = async () => {
5222
5225
  try {
5223
- const domainParse = typeof domain === "string" ? (0, import_utils6.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5224
- setDomainMany2Many(domainParse);
5225
- setPage(0);
5226
+ setDomainMany2Many(domain);
5227
+ appDispatch((0, import_store8.setFirstDomain)(domain));
5228
+ appDispatch((0, import_store8.setViewDataStore)(viewResponse));
5229
+ const modalData = viewResponse?.views?.list?.fields.map((field) => ({
5230
+ ...viewResponse?.models?.[String(model)]?.[field?.name],
5231
+ ...field
5232
+ }));
5233
+ if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
5234
+ setFields({
5235
+ ...fields,
5236
+ [`${aid}_${relation}_popupmany2many`]: modalData
5237
+ });
5238
+ }
5239
+ appDispatch((0, import_store8.setPage)(0));
5226
5240
  } catch (err) {
5227
5241
  console.log(err);
5228
5242
  }
5229
5243
  };
5230
5244
  const queryKey = [
5231
- `view-${relation}`,
5245
+ `view-${relation}-${aid}`,
5232
5246
  specification,
5233
5247
  domainMany2Many,
5234
5248
  debouncedPage,
@@ -5241,16 +5255,16 @@ var many2manyFieldController = (props) => {
5241
5255
  domain: domainMany2Many,
5242
5256
  offset: debouncedPage * 10,
5243
5257
  limit: 10,
5244
- context: contextObject,
5258
+ context,
5245
5259
  fields: groupByDomain?.fields,
5246
5260
  groupby: [groupByDomain?.contexts[0]?.group_by],
5247
5261
  sort: order ? order : default_order ? (0, import_utils6.formatSortingString)(default_order) : ""
5248
5262
  };
5249
- const enabled = enabledCallAPI && isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5263
+ const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5250
5264
  const {
5251
5265
  data: dataResponse,
5252
- isLoading,
5253
- isFetched,
5266
+ isLoading: isDataLoading,
5267
+ isFetched: isDataResponseFetched,
5254
5268
  isPlaceholderData
5255
5269
  } = useGetListData3(data, queryKey, enabled);
5256
5270
  (0, import_react15.useEffect)(() => {
@@ -5258,7 +5272,12 @@ var many2manyFieldController = (props) => {
5258
5272
  fetchData();
5259
5273
  }
5260
5274
  return () => {
5261
- setPage(0);
5275
+ appDispatch((0, import_store8.setGroupByDomain)(null));
5276
+ setFields((prevFields) => ({
5277
+ ...prevFields,
5278
+ [`${aid}_${relation}_popupmany2many`]: null
5279
+ }));
5280
+ appDispatch((0, import_store8.setPage)(0));
5262
5281
  setSelectedRowKeys4([]);
5263
5282
  setDomainMany2Many(null);
5264
5283
  setIsLoadedData(false);
@@ -5266,19 +5285,44 @@ var many2manyFieldController = (props) => {
5266
5285
  }, [viewResponse]);
5267
5286
  const { rows, columns, typeTable } = tableController({
5268
5287
  data: {
5269
- fields: viewResponse?.views?.list?.fields,
5288
+ fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5270
5289
  records: dataResponse?.records ?? dataResponse?.groups,
5271
5290
  dataModel: viewResponse?.models?.[String(relation)],
5272
- context: contextObject,
5291
+ context: { ...env.context, ...context },
5273
5292
  typeTable: dataResponse?.groups ? "group" : "list"
5274
5293
  }
5275
5294
  });
5295
+ const dataFormView = {
5296
+ id: null,
5297
+ model: relation,
5298
+ context
5299
+ };
5300
+ const {
5301
+ refetch,
5302
+ data: dataFormViewResponse,
5303
+ isSuccess
5304
+ } = useGetFormView({
5305
+ data: dataFormView,
5306
+ queryKey: [`form-view-action-${relation}`],
5307
+ enabled: false
5308
+ });
5309
+ (0, import_react15.useEffect)(() => {
5310
+ if (isSuccess && dataFormViewResponse) {
5311
+ sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
5312
+ window.location.href = `/form/menu?model=${relation}`;
5313
+ }
5314
+ }, [isSuccess]);
5276
5315
  (0, import_react15.useEffect)(() => {
5277
5316
  if (domainMany2Many && !isLoadedData) {
5278
5317
  setIsLoadedData(true);
5279
5318
  }
5280
5319
  }, [domainMany2Many]);
5281
5320
  const handleCreateNewOnPage = async () => {
5321
+ try {
5322
+ refetch();
5323
+ } catch (error) {
5324
+ console.log(error);
5325
+ }
5282
5326
  };
5283
5327
  return {
5284
5328
  handleCreateNewOnPage,
@@ -5286,13 +5330,9 @@ var many2manyFieldController = (props) => {
5286
5330
  rows,
5287
5331
  columns,
5288
5332
  typeTable,
5289
- isLoading,
5290
- isFetched,
5291
- isPlaceholderData,
5292
- setPage,
5293
- page,
5294
- domain: domainMany2Many,
5295
- setDomain: setDomainMany2Many
5333
+ isDataLoading,
5334
+ isDataResponseFetched,
5335
+ isPlaceholderData
5296
5336
  };
5297
5337
  };
5298
5338
 
@@ -5360,7 +5400,7 @@ var many2manyTagsController = (props) => {
5360
5400
  var import_react17 = require("react");
5361
5401
  var import_utils8 = require("@fctc/interface-logic/utils");
5362
5402
  var durationController = (props) => {
5363
- const { relation, domain, formValues, name, id, model, onRefetch } = props;
5403
+ const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5364
5404
  const specification = {
5365
5405
  id: 0,
5366
5406
  name: "",
@@ -5384,7 +5424,11 @@ var durationController = (props) => {
5384
5424
  },
5385
5425
  sort: ""
5386
5426
  };
5387
- const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5427
+ const { data: dataResponse } = useGetListData3(
5428
+ listDataProps,
5429
+ queryKey,
5430
+ enabled
5431
+ );
5388
5432
  const { mutate: fetchChangeStatus } = useChangeStatus();
5389
5433
  const handleClick = async (stage_id) => {
5390
5434
  setDisabled(true);
@@ -6560,7 +6604,7 @@ var binaryFieldController = (props) => {
6560
6604
  };
6561
6605
 
6562
6606
  // src/widget/advance/table/table-body/controller.ts
6563
- var import_store8 = require("@fctc/interface-logic/store");
6607
+ var import_store9 = require("@fctc/interface-logic/store");
6564
6608
  var import_react21 = require("react");
6565
6609
  var tableBodyController = (props) => {
6566
6610
  const {
@@ -6573,7 +6617,7 @@ var tableBodyController = (props) => {
6573
6617
  selectedRowKeysRef,
6574
6618
  onClickRow
6575
6619
  } = props;
6576
- const appDispatch = (0, import_store8.useAppDispatch)();
6620
+ const appDispatch = (0, import_store9.useAppDispatch)();
6577
6621
  const checked = (0, import_react21.useMemo)(() => {
6578
6622
  if (!row?.id) return false;
6579
6623
  if (selectedRowKeys?.includes(row.id)) {
@@ -6590,7 +6634,7 @@ var tableBodyController = (props) => {
6590
6634
  }
6591
6635
  const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
6592
6636
  console.log("newSelectedRowKeys", newSelectedRowKeys);
6593
- appDispatch((0, import_store8.setSelectedRowKeys)(newSelectedRowKeys));
6637
+ appDispatch((0, import_store9.setSelectedRowKeys)(newSelectedRowKeys));
6594
6638
  };
6595
6639
  const handleClickRow = (col, row2) => {
6596
6640
  onClickRow(col, row2);
@@ -6603,13 +6647,13 @@ var tableBodyController = (props) => {
6603
6647
  (id) => id !== row.id
6604
6648
  );
6605
6649
  selectedRowKeysRef.current = filtered;
6606
- appDispatch((0, import_store8.setSelectedRowKeys)(filtered));
6650
+ appDispatch((0, import_store9.setSelectedRowKeys)(filtered));
6607
6651
  } else {
6608
6652
  const unique = Array.from(
6609
6653
  /* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
6610
6654
  );
6611
6655
  selectedRowKeysRef.current = unique;
6612
- appDispatch((0, import_store8.setSelectedRowKeys)(unique));
6656
+ appDispatch((0, import_store9.setSelectedRowKeys)(unique));
6613
6657
  }
6614
6658
  }
6615
6659
  }, [isAutoSelect]);
@@ -6627,35 +6671,35 @@ var tableBodyController = (props) => {
6627
6671
  };
6628
6672
 
6629
6673
  // src/widget/advance/table/table-head/controller.ts
6630
- var import_store9 = require("@fctc/interface-logic/store");
6674
+ var import_store10 = require("@fctc/interface-logic/store");
6631
6675
  var tableHeadController = (props) => {
6632
6676
  const { typeTable, rows, selectedRowKeysRef } = props;
6633
- const appDispatch = (0, import_store9.useAppDispatch)();
6634
- const { groupByDomain } = (0, import_store9.useAppSelector)(import_store9.selectSearch);
6677
+ const appDispatch = (0, import_store10.useAppDispatch)();
6678
+ const { groupByDomain } = (0, import_store10.useAppSelector)(import_store10.selectSearch);
6635
6679
  const handleCheckBoxAll = (event) => {
6636
6680
  if (event?.target?.checked && typeTable === "list") {
6637
6681
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
6638
- appDispatch((0, import_store9.setSelectedRowKeys)(allRowKeys));
6682
+ appDispatch((0, import_store10.setSelectedRowKeys)(allRowKeys));
6639
6683
  } else if (event?.target?.checked && typeTable === "group") {
6640
6684
  const rowsIDs = document.querySelectorAll("tr[data-row-id]");
6641
6685
  const ids = Array.from(rowsIDs)?.map(
6642
6686
  (row) => Number(row?.getAttribute("data-row-id"))
6643
6687
  );
6644
6688
  if (ids?.length > 0) {
6645
- appDispatch((0, import_store9.setSelectedRowKeys)(ids));
6689
+ appDispatch((0, import_store10.setSelectedRowKeys)(ids));
6646
6690
  } else {
6647
6691
  const sum = countSum(
6648
6692
  rows,
6649
6693
  typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
6650
6694
  );
6651
6695
  const keys = Array.from({ length: sum }, (_) => void 0);
6652
- appDispatch((0, import_store9.setSelectedRowKeys)(keys));
6696
+ appDispatch((0, import_store10.setSelectedRowKeys)(keys));
6653
6697
  }
6654
6698
  if (selectedRowKeysRef) {
6655
6699
  selectedRowKeysRef.current = [];
6656
6700
  }
6657
6701
  } else {
6658
- appDispatch((0, import_store9.setSelectedRowKeys)([]));
6702
+ appDispatch((0, import_store10.setSelectedRowKeys)([]));
6659
6703
  }
6660
6704
  };
6661
6705
  return {
@@ -6665,7 +6709,7 @@ var tableHeadController = (props) => {
6665
6709
 
6666
6710
  // src/widget/advance/table/table-view/controller.ts
6667
6711
  var import_react22 = require("react");
6668
- var import_store10 = require("@fctc/interface-logic/store");
6712
+ var import_store11 = require("@fctc/interface-logic/store");
6669
6713
  var import_utils13 = require("@fctc/interface-logic/utils");
6670
6714
  var tableController = ({ data }) => {
6671
6715
  const [rows, setRows] = (0, import_react22.useState)(data.records || []);
@@ -6745,7 +6789,7 @@ var tableController = ({ data }) => {
6745
6789
  // src/widget/advance/table/table-group/controller.ts
6746
6790
  var import_react23 = require("react");
6747
6791
  var import_hooks16 = require("@fctc/interface-logic/hooks");
6748
- var import_store11 = require("@fctc/interface-logic/store");
6792
+ var import_store12 = require("@fctc/interface-logic/store");
6749
6793
 
6750
6794
  // src/environment.ts
6751
6795
  var environment_exports = {};
@@ -6773,9 +6817,9 @@ var tableGroupController = (props) => {
6773
6817
  selectedRowKeysRef
6774
6818
  } = props;
6775
6819
  const [pageGroup, setPageGroup] = (0, import_react23.useState)(0);
6776
- const { groupByDomain, selectedTags } = (0, import_store11.useAppSelector)(import_store11.selectSearch);
6777
- const { selectedRowKeys } = (0, import_store11.useAppSelector)(import_store11.selectList);
6778
- const appDispatch = (0, import_store11.useAppDispatch)();
6820
+ const { groupByDomain, selectedTags } = (0, import_store12.useAppSelector)(import_store12.selectSearch);
6821
+ const { selectedRowKeys } = (0, import_store12.useAppSelector)(import_store12.selectList);
6822
+ const appDispatch = (0, import_store12.useAppDispatch)();
6779
6823
  const { toDataJS } = (0, import_hooks16.useOdooDataTransform)();
6780
6824
  const initVal = toDataJS(row, viewData, model);
6781
6825
  const [isShowGroup, setIsShowGroup] = (0, import_react23.useState)(false);
@@ -6861,14 +6905,14 @@ var tableGroupController = (props) => {
6861
6905
  const filteredIds = selectedRowKeys.filter(
6862
6906
  (id) => !ids.includes(id)
6863
6907
  );
6864
- appDispatch((0, import_store11.setSelectedRowKeys)(filteredIds));
6908
+ appDispatch((0, import_store12.setSelectedRowKeys)(filteredIds));
6865
6909
  } else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
6866
6910
  const clonedKeys = [...selectedRowKeys];
6867
- appDispatch((0, import_store11.setSelectedRowKeys)([...clonedKeys, -1]));
6868
- setTimeout(() => appDispatch((0, import_store11.setSelectedRowKeys)(clonedKeys)), 500);
6911
+ appDispatch((0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]));
6912
+ setTimeout(() => appDispatch((0, import_store12.setSelectedRowKeys)(clonedKeys)), 500);
6869
6913
  } else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
6870
6914
  const filteredKeys = selectedRowKeys.filter((id) => id > -1);
6871
- appDispatch((0, import_store11.setSelectedRowKeys)(filteredKeys));
6915
+ appDispatch((0, import_store12.setSelectedRowKeys)(filteredKeys));
6872
6916
  }
6873
6917
  toggleShowGroup();
6874
6918
  };
@@ -6877,8 +6921,8 @@ var tableGroupController = (props) => {
6877
6921
  return;
6878
6922
  }
6879
6923
  const clonedKeys = [...selectedRowKeys];
6880
- (0, import_store11.setSelectedRowKeys)([...clonedKeys, -1]);
6881
- setTimeout(() => (0, import_store11.setSelectedRowKeys)(clonedKeys), 500);
6924
+ (0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]);
6925
+ setTimeout(() => (0, import_store12.setSelectedRowKeys)(clonedKeys), 500);
6882
6926
  }, [isQueryFetched]);
6883
6927
  return {
6884
6928
  handleExpandChildGroup,