@fctc/widget-logic 2.2.3 → 2.2.4

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