@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/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,47 +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,
5176
+ page,
5177
+ options,
5172
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 actionData = sessionStorageUtils.getActionData();
5182
- const contextObject = { ...env.context, ...context };
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)();
5183
5188
  const viewParams = {
5184
5189
  model: relation,
5185
5190
  views: [
5186
5191
  [false, "list"],
5187
5192
  [false, "search"]
5188
5193
  ],
5189
- context: contextObject
5194
+ context
5190
5195
  };
5191
5196
  const { data: viewResponse } = useGetView2(viewParams, actionData);
5192
5197
  const baseModel = (0, import_react15.useMemo)(
5193
5198
  () => ({
5194
5199
  name: String(relation),
5195
5200
  view: viewResponse || {},
5196
- actContext: contextObject,
5201
+ actContext: context,
5197
5202
  fields: [
5198
5203
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5199
5204
  ...tab?.fields ? tab.fields : []
5200
5205
  ]
5201
5206
  }),
5202
- [relation, viewResponse]
5207
+ [model, viewResponse]
5203
5208
  );
5204
5209
  const initModel = (0, hooks_exports.useModel)();
5205
5210
  const modelInstance = (0, import_react15.useMemo)(() => {
@@ -5218,15 +5223,26 @@ var many2manyFieldController = (props) => {
5218
5223
  const optionsObject = tab?.options ? (0, import_utils6.evalJSONContext)(tab?.options) : (options ? (0, import_utils6.evalJSONContext)(options) : {}) || {};
5219
5224
  const fetchData = async () => {
5220
5225
  try {
5221
- const domainParse = typeof domain === "string" ? (0, import_utils6.evalJSONDomain)(domain, contextObject) : Array.isArray(domain) ? domain : [];
5222
- setDomainMany2Many(domainParse);
5223
- 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));
5224
5240
  } catch (err) {
5225
5241
  console.log(err);
5226
5242
  }
5227
5243
  };
5228
5244
  const queryKey = [
5229
- `view-${relation}`,
5245
+ `view-${relation}-${aid}`,
5230
5246
  specification,
5231
5247
  domainMany2Many,
5232
5248
  debouncedPage,
@@ -5239,7 +5255,7 @@ var many2manyFieldController = (props) => {
5239
5255
  domain: domainMany2Many,
5240
5256
  offset: debouncedPage * 10,
5241
5257
  limit: 10,
5242
- context: contextObject,
5258
+ context,
5243
5259
  fields: groupByDomain?.fields,
5244
5260
  groupby: [groupByDomain?.contexts[0]?.group_by],
5245
5261
  sort: order ? order : default_order ? (0, import_utils6.formatSortingString)(default_order) : ""
@@ -5247,8 +5263,8 @@ var many2manyFieldController = (props) => {
5247
5263
  const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5248
5264
  const {
5249
5265
  data: dataResponse,
5250
- isLoading,
5251
- isFetched,
5266
+ isLoading: isDataLoading,
5267
+ isFetched: isDataResponseFetched,
5252
5268
  isPlaceholderData
5253
5269
  } = useGetListData3(data, queryKey, enabled);
5254
5270
  (0, import_react15.useEffect)(() => {
@@ -5256,7 +5272,12 @@ var many2manyFieldController = (props) => {
5256
5272
  fetchData();
5257
5273
  }
5258
5274
  return () => {
5259
- 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));
5260
5281
  setSelectedRowKeys4([]);
5261
5282
  setDomainMany2Many(null);
5262
5283
  setIsLoadedData(false);
@@ -5264,19 +5285,44 @@ var many2manyFieldController = (props) => {
5264
5285
  }, [viewResponse]);
5265
5286
  const { rows, columns, typeTable } = tableController({
5266
5287
  data: {
5267
- fields: viewResponse?.views?.list?.fields,
5288
+ fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5268
5289
  records: dataResponse?.records ?? dataResponse?.groups,
5269
5290
  dataModel: viewResponse?.models?.[String(relation)],
5270
- context: contextObject,
5291
+ context: { ...env.context, ...context },
5271
5292
  typeTable: dataResponse?.groups ? "group" : "list"
5272
5293
  }
5273
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]);
5274
5315
  (0, import_react15.useEffect)(() => {
5275
5316
  if (domainMany2Many && !isLoadedData) {
5276
5317
  setIsLoadedData(true);
5277
5318
  }
5278
5319
  }, [domainMany2Many]);
5279
5320
  const handleCreateNewOnPage = async () => {
5321
+ try {
5322
+ refetch();
5323
+ } catch (error) {
5324
+ console.log(error);
5325
+ }
5280
5326
  };
5281
5327
  return {
5282
5328
  handleCreateNewOnPage,
@@ -5284,13 +5330,9 @@ var many2manyFieldController = (props) => {
5284
5330
  rows,
5285
5331
  columns,
5286
5332
  typeTable,
5287
- isLoading,
5288
- isFetched,
5289
- isPlaceholderData,
5290
- setPage,
5291
- page,
5292
- domain: domainMany2Many,
5293
- setDomain: setDomainMany2Many
5333
+ isDataLoading,
5334
+ isDataResponseFetched,
5335
+ isPlaceholderData
5294
5336
  };
5295
5337
  };
5296
5338
 
@@ -5358,7 +5400,7 @@ var many2manyTagsController = (props) => {
5358
5400
  var import_react17 = require("react");
5359
5401
  var import_utils8 = require("@fctc/interface-logic/utils");
5360
5402
  var durationController = (props) => {
5361
- const { relation, domain, formValues, name, id, model, onRefetch } = props;
5403
+ const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5362
5404
  const specification = {
5363
5405
  id: 0,
5364
5406
  name: "",
@@ -5382,7 +5424,11 @@ var durationController = (props) => {
5382
5424
  },
5383
5425
  sort: ""
5384
5426
  };
5385
- const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5427
+ const { data: dataResponse } = useGetListData3(
5428
+ listDataProps,
5429
+ queryKey,
5430
+ enabled
5431
+ );
5386
5432
  const { mutate: fetchChangeStatus } = useChangeStatus();
5387
5433
  const handleClick = async (stage_id) => {
5388
5434
  setDisabled(true);
@@ -6558,7 +6604,7 @@ var binaryFieldController = (props) => {
6558
6604
  };
6559
6605
 
6560
6606
  // src/widget/advance/table/table-body/controller.ts
6561
- var import_store8 = require("@fctc/interface-logic/store");
6607
+ var import_store9 = require("@fctc/interface-logic/store");
6562
6608
  var import_react21 = require("react");
6563
6609
  var tableBodyController = (props) => {
6564
6610
  const {
@@ -6571,7 +6617,7 @@ var tableBodyController = (props) => {
6571
6617
  selectedRowKeysRef,
6572
6618
  onClickRow
6573
6619
  } = props;
6574
- const appDispatch = (0, import_store8.useAppDispatch)();
6620
+ const appDispatch = (0, import_store9.useAppDispatch)();
6575
6621
  const checked = (0, import_react21.useMemo)(() => {
6576
6622
  if (!row?.id) return false;
6577
6623
  if (selectedRowKeys?.includes(row.id)) {
@@ -6588,7 +6634,7 @@ var tableBodyController = (props) => {
6588
6634
  }
6589
6635
  const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
6590
6636
  console.log("newSelectedRowKeys", newSelectedRowKeys);
6591
- appDispatch((0, import_store8.setSelectedRowKeys)(newSelectedRowKeys));
6637
+ appDispatch((0, import_store9.setSelectedRowKeys)(newSelectedRowKeys));
6592
6638
  };
6593
6639
  const handleClickRow = (col, row2) => {
6594
6640
  onClickRow(col, row2);
@@ -6601,13 +6647,13 @@ var tableBodyController = (props) => {
6601
6647
  (id) => id !== row.id
6602
6648
  );
6603
6649
  selectedRowKeysRef.current = filtered;
6604
- appDispatch((0, import_store8.setSelectedRowKeys)(filtered));
6650
+ appDispatch((0, import_store9.setSelectedRowKeys)(filtered));
6605
6651
  } else {
6606
6652
  const unique = Array.from(
6607
6653
  /* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
6608
6654
  );
6609
6655
  selectedRowKeysRef.current = unique;
6610
- appDispatch((0, import_store8.setSelectedRowKeys)(unique));
6656
+ appDispatch((0, import_store9.setSelectedRowKeys)(unique));
6611
6657
  }
6612
6658
  }
6613
6659
  }, [isAutoSelect]);
@@ -6625,35 +6671,35 @@ var tableBodyController = (props) => {
6625
6671
  };
6626
6672
 
6627
6673
  // src/widget/advance/table/table-head/controller.ts
6628
- var import_store9 = require("@fctc/interface-logic/store");
6674
+ var import_store10 = require("@fctc/interface-logic/store");
6629
6675
  var tableHeadController = (props) => {
6630
6676
  const { typeTable, rows, selectedRowKeysRef } = props;
6631
- const appDispatch = (0, import_store9.useAppDispatch)();
6632
- 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);
6633
6679
  const handleCheckBoxAll = (event) => {
6634
6680
  if (event?.target?.checked && typeTable === "list") {
6635
6681
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
6636
- appDispatch((0, import_store9.setSelectedRowKeys)(allRowKeys));
6682
+ appDispatch((0, import_store10.setSelectedRowKeys)(allRowKeys));
6637
6683
  } else if (event?.target?.checked && typeTable === "group") {
6638
6684
  const rowsIDs = document.querySelectorAll("tr[data-row-id]");
6639
6685
  const ids = Array.from(rowsIDs)?.map(
6640
6686
  (row) => Number(row?.getAttribute("data-row-id"))
6641
6687
  );
6642
6688
  if (ids?.length > 0) {
6643
- appDispatch((0, import_store9.setSelectedRowKeys)(ids));
6689
+ appDispatch((0, import_store10.setSelectedRowKeys)(ids));
6644
6690
  } else {
6645
6691
  const sum = countSum(
6646
6692
  rows,
6647
6693
  typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
6648
6694
  );
6649
6695
  const keys = Array.from({ length: sum }, (_) => void 0);
6650
- appDispatch((0, import_store9.setSelectedRowKeys)(keys));
6696
+ appDispatch((0, import_store10.setSelectedRowKeys)(keys));
6651
6697
  }
6652
6698
  if (selectedRowKeysRef) {
6653
6699
  selectedRowKeysRef.current = [];
6654
6700
  }
6655
6701
  } else {
6656
- appDispatch((0, import_store9.setSelectedRowKeys)([]));
6702
+ appDispatch((0, import_store10.setSelectedRowKeys)([]));
6657
6703
  }
6658
6704
  };
6659
6705
  return {
@@ -6663,7 +6709,7 @@ var tableHeadController = (props) => {
6663
6709
 
6664
6710
  // src/widget/advance/table/table-view/controller.ts
6665
6711
  var import_react22 = require("react");
6666
- var import_store10 = require("@fctc/interface-logic/store");
6712
+ var import_store11 = require("@fctc/interface-logic/store");
6667
6713
  var import_utils13 = require("@fctc/interface-logic/utils");
6668
6714
  var tableController = ({ data }) => {
6669
6715
  const [rows, setRows] = (0, import_react22.useState)(data.records || []);
@@ -6743,7 +6789,7 @@ var tableController = ({ data }) => {
6743
6789
  // src/widget/advance/table/table-group/controller.ts
6744
6790
  var import_react23 = require("react");
6745
6791
  var import_hooks16 = require("@fctc/interface-logic/hooks");
6746
- var import_store11 = require("@fctc/interface-logic/store");
6792
+ var import_store12 = require("@fctc/interface-logic/store");
6747
6793
 
6748
6794
  // src/environment.ts
6749
6795
  var environment_exports = {};
@@ -6771,9 +6817,9 @@ var tableGroupController = (props) => {
6771
6817
  selectedRowKeysRef
6772
6818
  } = props;
6773
6819
  const [pageGroup, setPageGroup] = (0, import_react23.useState)(0);
6774
- const { groupByDomain, selectedTags } = (0, import_store11.useAppSelector)(import_store11.selectSearch);
6775
- const { selectedRowKeys } = (0, import_store11.useAppSelector)(import_store11.selectList);
6776
- 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)();
6777
6823
  const { toDataJS } = (0, import_hooks16.useOdooDataTransform)();
6778
6824
  const initVal = toDataJS(row, viewData, model);
6779
6825
  const [isShowGroup, setIsShowGroup] = (0, import_react23.useState)(false);
@@ -6859,14 +6905,14 @@ var tableGroupController = (props) => {
6859
6905
  const filteredIds = selectedRowKeys.filter(
6860
6906
  (id) => !ids.includes(id)
6861
6907
  );
6862
- appDispatch((0, import_store11.setSelectedRowKeys)(filteredIds));
6908
+ appDispatch((0, import_store12.setSelectedRowKeys)(filteredIds));
6863
6909
  } else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
6864
6910
  const clonedKeys = [...selectedRowKeys];
6865
- appDispatch((0, import_store11.setSelectedRowKeys)([...clonedKeys, -1]));
6866
- 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);
6867
6913
  } else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
6868
6914
  const filteredKeys = selectedRowKeys.filter((id) => id > -1);
6869
- appDispatch((0, import_store11.setSelectedRowKeys)(filteredKeys));
6915
+ appDispatch((0, import_store12.setSelectedRowKeys)(filteredKeys));
6870
6916
  }
6871
6917
  toggleShowGroup();
6872
6918
  };
@@ -6875,8 +6921,8 @@ var tableGroupController = (props) => {
6875
6921
  return;
6876
6922
  }
6877
6923
  const clonedKeys = [...selectedRowKeys];
6878
- (0, import_store11.setSelectedRowKeys)([...clonedKeys, -1]);
6879
- setTimeout(() => (0, import_store11.setSelectedRowKeys)(clonedKeys), 500);
6924
+ (0, import_store12.setSelectedRowKeys)([...clonedKeys, -1]);
6925
+ setTimeout(() => (0, import_store12.setSelectedRowKeys)(clonedKeys), 500);
6880
6926
  }, [isQueryFetched]);
6881
6927
  return {
6882
6928
  handleExpandChildGroup,