@fctc/widget-logic 2.2.2 → 2.2.3

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.mjs CHANGED
@@ -5021,7 +5021,6 @@ var many2oneFieldController = (props) => {
5021
5021
  options: fieldOptions,
5022
5022
  showDetail
5023
5023
  } = props;
5024
- const { env } = (0, provider_exports.useEnv)();
5025
5024
  const [options, setOptions] = useState8([]);
5026
5025
  const [inputValue, setInputValue] = useState8("");
5027
5026
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
@@ -5031,14 +5030,15 @@ var many2oneFieldController = (props) => {
5031
5030
  const [domainObject, setDomainObject] = useState8(null);
5032
5031
  const actionData = sessionStorageUtils.getActionData();
5033
5032
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5033
+ const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
5034
5034
  const initValue = methods?.getValues(name);
5035
5035
  const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
5036
5036
  const contextObject = {
5037
5037
  ...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
5038
5038
  ...fieldContext,
5039
- ...env?.context
5039
+ ...context
5040
5040
  };
5041
- const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5041
+ const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5042
5042
  const data = {
5043
5043
  model: relation,
5044
5044
  domain: domainObject,
@@ -5054,7 +5054,7 @@ var many2oneFieldController = (props) => {
5054
5054
  data: dataOfSelection,
5055
5055
  refetch,
5056
5056
  isFetching
5057
- } = useGetSelection2({
5057
+ } = useGetSelection3({
5058
5058
  data,
5059
5059
  queryKey,
5060
5060
  enabled: false
@@ -5208,9 +5208,15 @@ var many2oneButtonController = (props) => {
5208
5208
 
5209
5209
  // src/widget/basic/many2many-field/controller.ts
5210
5210
  import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
5211
+ import {
5212
+ useAppDispatch as useAppDispatch5,
5213
+ setFirstDomain,
5214
+ setViewDataStore,
5215
+ setPage,
5216
+ setGroupByDomain
5217
+ } from "@fctc/interface-logic/store";
5211
5218
  import {
5212
5219
  evalJSONContext as evalJSONContext4,
5213
- evalJSONDomain as evalJSONDomain4,
5214
5220
  formatSortingString as formatSortingString2
5215
5221
  } from "@fctc/interface-logic/utils";
5216
5222
  var many2manyFieldController = (props) => {
@@ -5218,43 +5224,45 @@ var many2manyFieldController = (props) => {
5218
5224
  relation,
5219
5225
  domain,
5220
5226
  context,
5221
- options,
5222
5227
  tab,
5223
- setSelectedRowKeys: setSelectedRowKeys3,
5228
+ model,
5229
+ aid,
5230
+ setSelectedRowKeys: setSelectedRowKeys4,
5231
+ fields,
5232
+ setFields,
5224
5233
  groupByDomain,
5225
- enabled: enabledCallAPI,
5226
- actionData
5234
+ page,
5235
+ options,
5236
+ sessionStorageUtils
5227
5237
  } = props;
5238
+ const appDispatch = useAppDispatch5();
5239
+ const actionData = sessionStorageUtils.getActionData();
5240
+ const [debouncedPage] = useDebounce(page, 500);
5241
+ const [order, setOrder] = useState9();
5242
+ const [isLoadedData, setIsLoadedData] = useState9(false);
5243
+ const [domainMany2Many, setDomainMany2Many] = useState9(domain);
5228
5244
  const { env } = (0, provider_exports.useEnv)();
5229
5245
  const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5230
- const [order, setOrder] = useState9();
5231
- const [page, setPage] = useState9(0);
5232
- const [domainMany2Many, setDomainMany2Many] = useState9(null);
5233
- const [debouncedPage] = useDebounce(page, 500);
5234
- const contextObject = {
5235
- ...env.context,
5236
- ...context || {}
5237
- };
5238
5246
  const viewParams = {
5239
5247
  model: relation,
5240
5248
  views: [
5241
5249
  [false, "list"],
5242
5250
  [false, "search"]
5243
5251
  ],
5244
- context: contextObject
5252
+ context
5245
5253
  };
5246
- const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
5254
+ const { data: viewResponse } = useGetView2(viewParams, actionData);
5247
5255
  const baseModel = useMemo10(
5248
5256
  () => ({
5249
5257
  name: String(relation),
5250
5258
  view: viewResponse || {},
5251
- actContext: contextObject,
5259
+ actContext: context,
5252
5260
  fields: [
5253
5261
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5254
5262
  ...tab?.fields ? tab.fields : []
5255
5263
  ]
5256
5264
  }),
5257
- [relation, viewResponse]
5265
+ [model, viewResponse]
5258
5266
  );
5259
5267
  const initModel = (0, hooks_exports.useModel)();
5260
5268
  const modelInstance = useMemo10(() => {
@@ -5273,15 +5281,26 @@ var many2manyFieldController = (props) => {
5273
5281
  const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
5274
5282
  const fetchData = async () => {
5275
5283
  try {
5276
- const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
5277
- setDomainMany2Many(domainParse);
5278
- setPage(0);
5284
+ setDomainMany2Many(domain);
5285
+ appDispatch(setFirstDomain(domain));
5286
+ appDispatch(setViewDataStore(viewResponse));
5287
+ const modalData = viewResponse?.views?.list?.fields.map((field) => ({
5288
+ ...viewResponse?.models?.[String(model)]?.[field?.name],
5289
+ ...field
5290
+ }));
5291
+ if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
5292
+ setFields({
5293
+ ...fields,
5294
+ [`${aid}_${relation}_popupmany2many`]: modalData
5295
+ });
5296
+ }
5297
+ appDispatch(setPage(0));
5279
5298
  } catch (err) {
5280
5299
  console.log(err);
5281
5300
  }
5282
5301
  };
5283
5302
  const queryKey = [
5284
- `view-${relation}`,
5303
+ `view-${relation}-${aid}`,
5285
5304
  specification,
5286
5305
  domainMany2Many,
5287
5306
  debouncedPage,
@@ -5294,16 +5313,16 @@ var many2manyFieldController = (props) => {
5294
5313
  domain: domainMany2Many,
5295
5314
  offset: debouncedPage * 10,
5296
5315
  limit: 10,
5297
- context: contextObject,
5316
+ context,
5298
5317
  fields: groupByDomain?.fields,
5299
5318
  groupby: [groupByDomain?.contexts[0]?.group_by],
5300
5319
  sort: order ? order : default_order ? formatSortingString2(default_order) : ""
5301
5320
  };
5302
- const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5321
+ const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5303
5322
  const {
5304
5323
  data: dataResponse,
5305
- isLoading,
5306
- isFetched,
5324
+ isLoading: isDataLoading,
5325
+ isFetched: isDataResponseFetched,
5307
5326
  isPlaceholderData
5308
5327
  } = useGetListData3(data, queryKey, enabled);
5309
5328
  useEffect11(() => {
@@ -5311,57 +5330,76 @@ var many2manyFieldController = (props) => {
5311
5330
  fetchData();
5312
5331
  }
5313
5332
  return () => {
5314
- setPage(0);
5315
- setSelectedRowKeys3([]);
5333
+ appDispatch(setGroupByDomain(null));
5334
+ setFields((prevFields) => ({
5335
+ ...prevFields,
5336
+ [`${aid}_${relation}_popupmany2many`]: null
5337
+ }));
5338
+ appDispatch(setPage(0));
5339
+ setSelectedRowKeys4([]);
5316
5340
  setDomainMany2Many(null);
5341
+ setIsLoadedData(false);
5317
5342
  };
5318
5343
  }, [viewResponse]);
5319
- const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
5344
+ const { rows, columns, typeTable } = tableController({
5320
5345
  data: {
5321
- fields: viewResponse?.views?.list?.fields,
5346
+ fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5322
5347
  records: dataResponse?.records ?? dataResponse?.groups,
5323
5348
  dataModel: viewResponse?.models?.[String(relation)],
5324
- context: contextObject,
5349
+ context: { ...env.context, ...context },
5325
5350
  typeTable: dataResponse?.groups ? "group" : "list"
5326
5351
  }
5327
5352
  });
5328
- const searchControllers = searchController({
5329
- viewData: viewResponse,
5330
- model: relation ?? "",
5331
- context: contextObject,
5332
- domain,
5333
- fieldsList: [
5334
- ...columns?.filter(
5335
- (col) => col?.field?.type_co === "field" && col?.optional !== "hide"
5336
- )?.map((col) => ({ ...col.field })) ?? []
5337
- ]
5353
+ const dataFormView = {
5354
+ id: null,
5355
+ model: relation,
5356
+ context
5357
+ };
5358
+ const {
5359
+ refetch,
5360
+ data: dataFormViewResponse,
5361
+ isSuccess
5362
+ } = useGetFormView({
5363
+ data: dataFormView,
5364
+ queryKey: [`form-view-action-${relation}`],
5365
+ enabled: false
5338
5366
  });
5367
+ useEffect11(() => {
5368
+ if (isSuccess && dataFormViewResponse) {
5369
+ sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
5370
+ window.location.href = `/form/menu?model=${relation}`;
5371
+ }
5372
+ }, [isSuccess]);
5373
+ useEffect11(() => {
5374
+ if (domainMany2Many && !isLoadedData) {
5375
+ setIsLoadedData(true);
5376
+ }
5377
+ }, [domainMany2Many]);
5339
5378
  const handleCreateNewOnPage = async () => {
5379
+ try {
5380
+ refetch();
5381
+ } catch (error) {
5382
+ console.log(error);
5383
+ }
5340
5384
  };
5341
5385
  return {
5342
5386
  handleCreateNewOnPage,
5343
5387
  optionsObject,
5344
- totalRows: dataResponse?.length ?? 0,
5345
5388
  rows,
5346
5389
  columns,
5347
- onToggleColumnOptional,
5348
5390
  typeTable,
5349
- isLoading,
5350
- isFetched,
5351
- isPlaceholderData,
5352
- setPage,
5353
- page,
5354
- viewData: viewResponse,
5355
- domain: domainMany2Many,
5356
- setDomain: setDomainMany2Many,
5357
- searchController: searchControllers
5391
+ isDataLoading,
5392
+ isDataResponseFetched,
5393
+ isPlaceholderData
5358
5394
  };
5359
5395
  };
5360
5396
 
5361
5397
  // src/widget/basic/many2many-tags-field/controller.ts
5362
5398
  import { useMemo as useMemo11 } from "react";
5363
5399
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5364
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5400
+ import { getEnv as getEnv8 } from "@fctc/interface-logic/environment";
5401
+ import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5402
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5365
5403
  var many2manyTagsController = (props) => {
5366
5404
  const {
5367
5405
  relation,
@@ -5372,11 +5410,10 @@ var many2manyTagsController = (props) => {
5372
5410
  placeholderNoOption
5373
5411
  } = props;
5374
5412
  const isUser = relation === "res.users" || relation === "res.partner";
5375
- const { env } = (0, provider_exports.useEnv)();
5376
- const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5413
+ const env = getEnv8();
5377
5414
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5378
5415
  const domainObject = useMemo11(
5379
- () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5416
+ () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
5380
5417
  [domain, formValues]
5381
5418
  );
5382
5419
  const data = {
@@ -5412,15 +5449,16 @@ var many2manyTagsController = (props) => {
5412
5449
  options,
5413
5450
  customNoOptionsMessage,
5414
5451
  tranfer,
5452
+ dataOfSelection,
5415
5453
  isUser
5416
5454
  };
5417
5455
  };
5418
5456
 
5419
5457
  // src/widget/basic/status-bar-field/controller.ts
5420
5458
  import { useState as useState10 } from "react";
5421
- import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5459
+ import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5422
5460
  var durationController = (props) => {
5423
- const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5461
+ const { relation, domain, formValues, name, id, model, onRefetch } = props;
5424
5462
  const specification = {
5425
5463
  id: 0,
5426
5464
  name: "",
@@ -5434,7 +5472,7 @@ var durationController = (props) => {
5434
5472
  const listDataProps = {
5435
5473
  model: relation,
5436
5474
  specification,
5437
- domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5475
+ domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
5438
5476
  limit: 10,
5439
5477
  offset: 0,
5440
5478
  fields: "",
@@ -5444,11 +5482,7 @@ var durationController = (props) => {
5444
5482
  },
5445
5483
  sort: ""
5446
5484
  };
5447
- const { data: dataResponse } = useGetListData3(
5448
- listDataProps,
5449
- queryKey,
5450
- enabled
5451
- );
5485
+ const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5452
5486
  const { mutate: fetchChangeStatus } = useChangeStatus();
5453
5487
  const handleClick = async (stage_id) => {
5454
5488
  setDisabled(true);
@@ -5484,28 +5518,41 @@ var durationController = (props) => {
5484
5518
  };
5485
5519
 
5486
5520
  // src/widget/basic/priority-field/controller.ts
5521
+ import { useSave as useSave2 } from "@fctc/interface-logic/hooks";
5487
5522
  import { evalJSONContext as evalJSONContext6 } from "@fctc/interface-logic/utils";
5488
5523
  var priorityFieldController = (props) => {
5489
- const { name, model, index, actionData, context, onChange, specification } = props;
5524
+ const {
5525
+ value,
5526
+ isForm,
5527
+ name,
5528
+ methods,
5529
+ onChange,
5530
+ model,
5531
+ selection,
5532
+ id,
5533
+ actionData,
5534
+ viewData,
5535
+ context
5536
+ } = props;
5490
5537
  const _context = { ...evalJSONContext6(actionData?.context) };
5491
5538
  const contextObject = { ...context, ..._context };
5492
- const { useSave: useSave2 } = (0, provider_exports.useService)();
5539
+ const defaultPriority = parseInt(value) + 1;
5540
+ const label = viewData?.models?.[model]?.[name ?? ""]?.string ?? name;
5493
5541
  const { mutateAsync: fetchSave } = useSave2();
5494
5542
  const savePriorities = async ({
5495
- value,
5543
+ value: value2,
5496
5544
  resetPriority
5497
5545
  }) => {
5498
- const priorityValue = value <= 0 ? 0 : value - 1;
5546
+ const priorityValue = value2 <= 0 ? 0 : value2 - 1;
5499
5547
  try {
5500
5548
  fetchSave({
5501
- ids: index ? [index] : [],
5502
- data: { [String(name)]: String(priorityValue) },
5503
- model: String(model),
5504
- context: contextObject,
5505
- specification
5549
+ ids: id ? [id] : [],
5550
+ data: { [name ?? ""]: String(priorityValue) },
5551
+ model: model ?? "",
5552
+ context: contextObject
5506
5553
  });
5507
5554
  if (typeof onChange === "function") {
5508
- onChange(String(name), String(priorityValue));
5555
+ onChange(name ?? "", String(priorityValue));
5509
5556
  }
5510
5557
  } catch (error) {
5511
5558
  if (resetPriority) {
@@ -5514,7 +5561,14 @@ var priorityFieldController = (props) => {
5514
5561
  }
5515
5562
  };
5516
5563
  return {
5517
- savePriorities
5564
+ selection,
5565
+ isForm,
5566
+ methods,
5567
+ defaultPriority,
5568
+ savePriorities,
5569
+ label,
5570
+ id,
5571
+ onChange
5518
5572
  };
5519
5573
  };
5520
5574
 
@@ -6477,11 +6531,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
6477
6531
  var colorFieldController = (props) => {
6478
6532
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
6479
6533
  const { env } = (0, provider_exports.useEnv)();
6480
- const { useSave: useSave2 } = (0, provider_exports.useService)();
6534
+ const { useSave: useSave3 } = (0, provider_exports.useService)();
6481
6535
  const _context = { ...evalJSONContext7(actionData?.context) || {} };
6482
6536
  const contextObject = { ...env.context, ..._context };
6483
6537
  const idDefault = isForm ? idForm : formValues?.id;
6484
- const { mutate: onSave } = useSave2();
6538
+ const { mutate: onSave } = useSave3();
6485
6539
  const savePickColor = async (colorObject) => {
6486
6540
  const { id } = colorObject;
6487
6541
  if (value === id) return;
@@ -6603,41 +6657,108 @@ var binaryFieldController = (props) => {
6603
6657
  };
6604
6658
  };
6605
6659
 
6660
+ // src/widget/advance/table/table-body/controller.ts
6661
+ import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
6662
+ import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
6663
+ var tableBodyController = (props) => {
6664
+ const {
6665
+ checkedAll,
6666
+ checkboxRef,
6667
+ setIsAutoSelect,
6668
+ selectedRowKeys,
6669
+ row,
6670
+ isAutoSelect,
6671
+ selectedRowKeysRef,
6672
+ onClickRow
6673
+ } = props;
6674
+ const appDispatch = useAppDispatch6();
6675
+ const checked = useMemo12(() => {
6676
+ if (!row?.id) return false;
6677
+ if (selectedRowKeys?.includes(row.id)) {
6678
+ return true;
6679
+ }
6680
+ return checkedAll;
6681
+ }, [row?.id, selectedRowKeys, checkedAll]);
6682
+ const handleCheckBoxSingle = (event) => {
6683
+ event.stopPropagation();
6684
+ if (checkedAll) {
6685
+ checkboxRef.current = "uncheck";
6686
+ setIsAutoSelect(true);
6687
+ return;
6688
+ }
6689
+ const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
6690
+ console.log("newSelectedRowKeys", newSelectedRowKeys);
6691
+ appDispatch(setSelectedRowKeys(newSelectedRowKeys));
6692
+ };
6693
+ const handleClickRow = (col, row2) => {
6694
+ onClickRow(col, row2);
6695
+ };
6696
+ useEffect13(() => {
6697
+ if (!row?.id) return;
6698
+ if (isAutoSelect) {
6699
+ if (checkboxRef?.current === "uncheck") {
6700
+ const filtered = selectedRowKeysRef.current.filter(
6701
+ (id) => id !== row.id
6702
+ );
6703
+ selectedRowKeysRef.current = filtered;
6704
+ appDispatch(setSelectedRowKeys(filtered));
6705
+ } else {
6706
+ const unique = Array.from(
6707
+ /* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
6708
+ );
6709
+ selectedRowKeysRef.current = unique;
6710
+ appDispatch(setSelectedRowKeys(unique));
6711
+ }
6712
+ }
6713
+ }, [isAutoSelect]);
6714
+ useEffect13(() => {
6715
+ if (!checkedAll) {
6716
+ checkboxRef.current = "enabled";
6717
+ false;
6718
+ }
6719
+ }, [checkedAll]);
6720
+ return {
6721
+ handleCheckBoxSingle,
6722
+ checked,
6723
+ handleClickRow
6724
+ };
6725
+ };
6726
+
6606
6727
  // src/widget/advance/table/table-head/controller.ts
6607
6728
  import {
6608
- useAppDispatch as useAppDispatch5,
6729
+ useAppDispatch as useAppDispatch7,
6609
6730
  useAppSelector as useAppSelector4,
6610
6731
  selectSearch as selectSearch3,
6611
- setSelectedRowKeys
6732
+ setSelectedRowKeys as setSelectedRowKeys2
6612
6733
  } from "@fctc/interface-logic/store";
6613
6734
  var tableHeadController = (props) => {
6614
6735
  const { typeTable, rows, selectedRowKeysRef } = props;
6615
- const appDispatch = useAppDispatch5();
6736
+ const appDispatch = useAppDispatch7();
6616
6737
  const { groupByDomain } = useAppSelector4(selectSearch3);
6617
6738
  const handleCheckBoxAll = (event) => {
6618
6739
  if (event?.target?.checked && typeTable === "list") {
6619
6740
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
6620
- appDispatch(setSelectedRowKeys(allRowKeys));
6741
+ appDispatch(setSelectedRowKeys2(allRowKeys));
6621
6742
  } else if (event?.target?.checked && typeTable === "group") {
6622
6743
  const rowsIDs = document.querySelectorAll("tr[data-row-id]");
6623
6744
  const ids = Array.from(rowsIDs)?.map(
6624
6745
  (row) => Number(row?.getAttribute("data-row-id"))
6625
6746
  );
6626
6747
  if (ids?.length > 0) {
6627
- appDispatch(setSelectedRowKeys(ids));
6748
+ appDispatch(setSelectedRowKeys2(ids));
6628
6749
  } else {
6629
6750
  const sum = countSum(
6630
6751
  rows,
6631
6752
  typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
6632
6753
  );
6633
6754
  const keys = Array.from({ length: sum }, (_) => void 0);
6634
- appDispatch(setSelectedRowKeys(keys));
6755
+ appDispatch(setSelectedRowKeys2(keys));
6635
6756
  }
6636
6757
  if (selectedRowKeysRef) {
6637
6758
  selectedRowKeysRef.current = [];
6638
6759
  }
6639
6760
  } else {
6640
- appDispatch(setSelectedRowKeys([]));
6761
+ appDispatch(setSelectedRowKeys2([]));
6641
6762
  }
6642
6763
  };
6643
6764
  return {
@@ -6646,7 +6767,7 @@ var tableHeadController = (props) => {
6646
6767
  };
6647
6768
 
6648
6769
  // src/widget/advance/table/table-view/controller.ts
6649
- import { useEffect as useEffect13, useMemo as useMemo12, useRef as useRef5, useState as useState14 } from "react";
6770
+ import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState14 } from "react";
6650
6771
  import {
6651
6772
  useAppSelector as useAppSelector5,
6652
6773
  selectSearch as selectSearch4,
@@ -6683,7 +6804,7 @@ var tableController = ({ data }) => {
6683
6804
  return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
6684
6805
  });
6685
6806
  };
6686
- useEffect13(() => {
6807
+ useEffect14(() => {
6687
6808
  setRows(transformData(data.records || null));
6688
6809
  }, [data.records]);
6689
6810
  const handleGetColumns = () => {
@@ -6704,7 +6825,7 @@ var tableController = ({ data }) => {
6704
6825
  }
6705
6826
  return cols;
6706
6827
  };
6707
- useEffect13(() => {
6828
+ useEffect14(() => {
6708
6829
  const columns2 = handleGetColumns();
6709
6830
  setColumns(columns2);
6710
6831
  }, [data.records]);
@@ -6729,7 +6850,7 @@ var tableController = ({ data }) => {
6729
6850
  };
6730
6851
 
6731
6852
  // src/widget/advance/table/table-group/controller.ts
6732
- import { useEffect as useEffect14, useMemo as useMemo13, useState as useState15 } from "react";
6853
+ import { useEffect as useEffect15, useMemo as useMemo14, useState as useState15 } from "react";
6733
6854
  import {
6734
6855
  useOdooDataTransform,
6735
6856
  useGetListData as useGetListData2
@@ -6738,8 +6859,8 @@ import {
6738
6859
  useAppSelector as useAppSelector6,
6739
6860
  selectSearch as selectSearch5,
6740
6861
  selectList as selectList4,
6741
- useAppDispatch as useAppDispatch6,
6742
- setSelectedRowKeys as setSelectedRowKeys2
6862
+ useAppDispatch as useAppDispatch8,
6863
+ setSelectedRowKeys as setSelectedRowKeys3
6743
6864
  } from "@fctc/interface-logic/store";
6744
6865
 
6745
6866
  // src/environment.ts
@@ -6771,7 +6892,7 @@ var tableGroupController = (props) => {
6771
6892
  const [pageGroup, setPageGroup] = useState15(0);
6772
6893
  const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
6773
6894
  const { selectedRowKeys } = useAppSelector6(selectList4);
6774
- const appDispatch = useAppDispatch6();
6895
+ const appDispatch = useAppDispatch8();
6775
6896
  const { toDataJS } = useOdooDataTransform();
6776
6897
  const initVal = toDataJS(row, viewData, model);
6777
6898
  const [isShowGroup, setIsShowGroup] = useState15(false);
@@ -6779,7 +6900,7 @@ var tableGroupController = (props) => {
6779
6900
  fromStart: 1,
6780
6901
  fromEnd: 1
6781
6902
  });
6782
- const processedData = useMemo13(() => {
6903
+ const processedData = useMemo14(() => {
6783
6904
  const calculateColSpanEmpty = () => {
6784
6905
  const startIndex = columns.findIndex(
6785
6906
  (col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
@@ -6794,7 +6915,7 @@ var tableGroupController = (props) => {
6794
6915
  };
6795
6916
  return calculateColSpanEmpty();
6796
6917
  }, [columns, row]);
6797
- const shouldFetchData = useMemo13(() => {
6918
+ const shouldFetchData = useMemo14(() => {
6798
6919
  return !!isShowGroup;
6799
6920
  }, [isShowGroup]);
6800
6921
  const enabled = shouldFetchData && !!processedData;
@@ -6834,7 +6955,7 @@ var tableGroupController = (props) => {
6834
6955
  }
6835
6956
  });
6836
6957
  const leftPadding = level > 1 ? level * 8 + "px" : "0px";
6837
- useEffect14(() => {
6958
+ useEffect15(() => {
6838
6959
  if (isShowGroup && selectedTags?.length > 0) {
6839
6960
  setIsShowGroup(false);
6840
6961
  }
@@ -6857,24 +6978,24 @@ var tableGroupController = (props) => {
6857
6978
  const filteredIds = selectedRowKeys.filter(
6858
6979
  (id) => !ids.includes(id)
6859
6980
  );
6860
- appDispatch(setSelectedRowKeys2(filteredIds));
6981
+ appDispatch(setSelectedRowKeys3(filteredIds));
6861
6982
  } else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
6862
6983
  const clonedKeys = [...selectedRowKeys];
6863
- appDispatch(setSelectedRowKeys2([...clonedKeys, -1]));
6864
- setTimeout(() => appDispatch(setSelectedRowKeys2(clonedKeys)), 500);
6984
+ appDispatch(setSelectedRowKeys3([...clonedKeys, -1]));
6985
+ setTimeout(() => appDispatch(setSelectedRowKeys3(clonedKeys)), 500);
6865
6986
  } else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
6866
6987
  const filteredKeys = selectedRowKeys.filter((id) => id > -1);
6867
- appDispatch(setSelectedRowKeys2(filteredKeys));
6988
+ appDispatch(setSelectedRowKeys3(filteredKeys));
6868
6989
  }
6869
6990
  toggleShowGroup();
6870
6991
  };
6871
- useEffect14(() => {
6992
+ useEffect15(() => {
6872
6993
  if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
6873
6994
  return;
6874
6995
  }
6875
6996
  const clonedKeys = [...selectedRowKeys];
6876
- setSelectedRowKeys2([...clonedKeys, -1]);
6877
- setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
6997
+ setSelectedRowKeys3([...clonedKeys, -1]);
6998
+ setTimeout(() => setSelectedRowKeys3(clonedKeys), 500);
6878
6999
  }, [isQueryFetched]);
6879
7000
  return {
6880
7001
  handleExpandChildGroup,
@@ -6912,28 +7033,26 @@ var import_moment2 = __toESM(require_moment());
6912
7033
  import { SearchType } from "@fctc/interface-logic/constants";
6913
7034
  import {
6914
7035
  domainHelper as domainHelper2,
6915
- evalJSONContext as evalJSONContext8,
6916
- evalJSONDomain as evalJSONDomain7,
7036
+ evalJSONDomain as evalJSONDomain6,
6917
7037
  validateAndParseDate
6918
7038
  } from "@fctc/interface-logic/utils";
6919
- import { useCallback as useCallback3, useEffect as useEffect15, useState as useState16 } from "react";
7039
+ import { useCallback as useCallback3, useEffect as useEffect16, useState as useState16 } from "react";
6920
7040
  var searchController = ({
6921
7041
  viewData,
6922
- model,
6923
- domain,
6924
- context,
6925
- fieldsList
7042
+ actionData,
7043
+ fieldsList,
7044
+ contextSearch,
7045
+ setSearchMap,
7046
+ searchMap
6926
7047
  }) => {
6927
- const { env } = (0, provider_exports.useEnv)();
6928
7048
  const [filterBy, setFilterBy] = useState16(null);
6929
7049
  const [searchBy, setSearchBy] = useState16(null);
6930
7050
  const [groupBy, setGroupBy] = useState16(null);
6931
7051
  const [selectedTags, setSelectedTags] = useState16(null);
6932
7052
  const [searchString, setSearchString] = useState16("");
6933
- const [searchMap, setSearchMap] = useState16({});
6934
- const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
6935
- const contextSearch = { ...env.context, ...actionContext };
6936
- const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
7053
+ const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain6(actionData?.domain, contextSearch) : [];
7054
+ const aid = actionData?.id;
7055
+ const model = actionData?.res_model;
6937
7056
  const clearSearch = () => {
6938
7057
  setFilterBy([]);
6939
7058
  setGroupBy([]);
@@ -6977,9 +7096,10 @@ var searchController = ({
6977
7096
  }
6978
7097
  }
6979
7098
  };
6980
- useEffect15(() => {
7099
+ useEffect16(() => {
7100
+ clearSearch();
6981
7101
  fetchData();
6982
- }, [model, viewData]);
7102
+ }, [aid, model, viewData]);
6983
7103
  const onChangeSearchInput = (search_string) => {
6984
7104
  setSearchString(search_string);
6985
7105
  };
@@ -7016,27 +7136,27 @@ var searchController = ({
7016
7136
  };
7017
7137
  const formatDomain = () => {
7018
7138
  if (domainAction) {
7019
- const domain2 = [];
7139
+ const domain = [];
7020
7140
  if (domainAction?.length > 0) {
7021
- if (Object.keys(searchMap).some((key) => !key.includes(SearchType.GROUP))) {
7022
- domain2.push("&");
7141
+ if (Object.keys(searchMap).length > 0) {
7142
+ domain.push("&");
7023
7143
  }
7024
7144
  domainAction.forEach((domainItem) => {
7025
- domain2.push(domainItem);
7145
+ domain.push(domainItem);
7026
7146
  });
7027
7147
  }
7028
7148
  Object.keys(searchMap).forEach((key, keyIndex, keys) => {
7029
7149
  if (!key?.includes(SearchType.GROUP)) {
7030
7150
  if (keys.length > 1 && keyIndex < keys.length - 1) {
7031
- domain2.push("&");
7151
+ domain.push("&");
7032
7152
  }
7033
7153
  const valuesOfKey = searchMap[key];
7034
7154
  valuesOfKey.forEach((value, index) => {
7035
7155
  if (index < valuesOfKey.length - 1) {
7036
- domain2.push("|");
7156
+ domain.push("|");
7037
7157
  }
7038
7158
  if (value.domain) {
7039
- domain2.push(...value.domain);
7159
+ domain.push(...value.domain);
7040
7160
  return;
7041
7161
  }
7042
7162
  let valueDomainItem = value?.value;
@@ -7052,11 +7172,11 @@ var searchController = ({
7052
7172
  }
7053
7173
  }
7054
7174
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
7055
- domain2.push([value.name, operator, valueDomainItem]);
7175
+ domain.push([value.name, operator, valueDomainItem]);
7056
7176
  });
7057
7177
  }
7058
7178
  });
7059
- return [...domain2];
7179
+ return [...domain];
7060
7180
  }
7061
7181
  };
7062
7182
  const setTagSearch = useCallback3(
@@ -7087,16 +7207,16 @@ var searchController = ({
7087
7207
  const contexts = [];
7088
7208
  let groupValues = [];
7089
7209
  objValues?.forEach((objValue) => {
7090
- const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7210
+ const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7091
7211
  const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
7092
7212
  contexts.push(
7093
- ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
7213
+ ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({ group_by: item })) : [context]
7094
7214
  );
7095
7215
  groupValues[indexAppend] = {
7096
7216
  contexts: [
7097
- ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
7217
+ ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({
7098
7218
  group_by: item
7099
- })) : [context2]
7219
+ })) : [context]
7100
7220
  ],
7101
7221
  strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
7102
7222
  };
@@ -7122,39 +7242,40 @@ var searchController = ({
7122
7242
  },
7123
7243
  [searchMap]
7124
7244
  );
7125
- useEffect15(() => {
7245
+ useEffect16(() => {
7246
+ setSelectedTags(null);
7126
7247
  setTagSearch(searchMap);
7127
7248
  }, [searchMap]);
7128
7249
  const handleAddTagSearch = (tag) => {
7129
7250
  const {
7130
- domain: domain2,
7251
+ domain,
7131
7252
  groupIndex,
7132
7253
  value,
7133
7254
  type,
7134
7255
  title,
7135
- context: context2,
7256
+ context,
7136
7257
  active,
7137
7258
  dataIndex
7138
7259
  } = tag;
7139
- const domainFormat = new domainHelper2.Domain(domain2);
7260
+ const domainFormat = new domainHelper2.Domain(domain);
7140
7261
  if (type === SearchType.FILTER) {
7141
7262
  addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
7142
7263
  ...tag,
7143
- domain: domain2 ? domainFormat.toList(context2) : null
7264
+ domain: domain ? domainFormat.toList(context) : null
7144
7265
  });
7145
7266
  } else if (type === SearchType.SEARCH) {
7146
7267
  addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
7147
7268
  ...tag,
7148
- domain: domain2 ? domainFormat.toList({
7149
- ...context2,
7269
+ domain: domain ? domainFormat.toList({
7270
+ ...context,
7150
7271
  self: value
7151
7272
  }) : null
7152
7273
  });
7153
7274
  } else if (type === SearchType.GROUP) {
7154
7275
  addSearchItems(`${SearchType.GROUP}`, {
7155
7276
  ...tag,
7156
- domain: domain2 ? domainFormat.toList({
7157
- context: context2,
7277
+ domain: domain ? domainFormat.toList({
7278
+ context,
7158
7279
  self: value
7159
7280
  }) : null
7160
7281
  });
@@ -7174,8 +7295,7 @@ var searchController = ({
7174
7295
  removeSearchItems,
7175
7296
  onSearchString: onChangeSearchInput,
7176
7297
  handleAddTagSearch,
7177
- domain: formatDomain(),
7178
- context: contextSearch
7298
+ domain: formatDomain()
7179
7299
  };
7180
7300
  };
7181
7301
  export {
@@ -7193,6 +7313,7 @@ export {
7193
7313
  priorityFieldController,
7194
7314
  searchController,
7195
7315
  statusDropdownController,
7316
+ tableBodyController,
7196
7317
  tableController,
7197
7318
  tableGroupController,
7198
7319
  tableHeadController