@fctc/widget-logic 2.0.3 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -4086,7 +4086,6 @@ __export(index_exports, {
4086
4086
  useGetRowIds: () => useGetRowIds,
4087
4087
  useListData: () => useListData,
4088
4088
  useMenu: () => useMenu,
4089
- useMenuItem: () => useMenuItem,
4090
4089
  useProfile: () => useProfile,
4091
4090
  useSelectionState: () => useSelectionState,
4092
4091
  useStorageState: () => useStorageState,
@@ -4107,7 +4106,6 @@ __export(hooks_exports, {
4107
4106
  useDetail: () => useDetail,
4108
4107
  useListData: () => useListData,
4109
4108
  useMenu: () => useMenu,
4110
- useMenuItem: () => useMenuItem,
4111
4109
  useProfile: () => useProfile,
4112
4110
  useUser: () => useUser,
4113
4111
  useViewV2: () => useViewV2
@@ -4890,68 +4888,6 @@ var useAppProvider = () => {
4890
4888
  return context;
4891
4889
  };
4892
4890
 
4893
- // src/hooks/core/use-menu-item.tsx
4894
- import { getEnv as getEnv5 } from "@fctc/interface-logic/environment";
4895
- import { useGetActionDetail } from "@fctc/interface-logic/hooks";
4896
- import { useState as useState5 } from "react";
4897
-
4898
- // src/utils.ts
4899
- var utils_exports = {};
4900
- __export(utils_exports, {
4901
- API_APP_URL: () => API_APP_URL,
4902
- API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
4903
- STORAGES: () => STORAGES,
4904
- combineContexts: () => combineContexts,
4905
- convertFieldsToArray: () => convertFieldsToArray,
4906
- countSum: () => countSum,
4907
- getDateRange: () => getDateRange,
4908
- languages: () => languages,
4909
- mergeButtons: () => mergeButtons,
4910
- setStorageItemAsync: () => setStorageItemAsync,
4911
- useGetRowIds: () => useGetRowIds,
4912
- useSelectionState: () => useSelectionState,
4913
- useStorageState: () => useStorageState
4914
- });
4915
- __reExport(utils_exports, utils_star);
4916
- import * as utils_star from "@fctc/interface-logic/utils";
4917
-
4918
- // src/hooks/core/use-menu-item.tsx
4919
- var useMenuItem = (props) => {
4920
- const { menu, activeMenuId } = props;
4921
- const model = menu?.action?.res_model;
4922
- const aid = menu?.action?.id?.id;
4923
- const id = menu?.id;
4924
- const context = getEnv5().context;
4925
- const queryActionDetail = useGetActionDetail({
4926
- aid,
4927
- id,
4928
- model,
4929
- context,
4930
- enabled: true,
4931
- queryKey: [`action-${aid}`]
4932
- }).data;
4933
- const [path, setPath] = useState5("");
4934
- const handleClick = () => {
4935
- if (location?.pathname === "/list/menu" && activeMenuId === menu?.id) {
4936
- return;
4937
- }
4938
- const hasListView = queryActionDetail.views.some(
4939
- ([id2, type]) => type === "list"
4940
- );
4941
- const viewType = hasListView ? "list" : "form";
4942
- const isAccountPayment = menu?.action?.res_model === "account.payment" && menu?.action?.id?.id === 1551;
4943
- const isConvertCurrencyMenu = menu?.action?.res_model === "currency.convert" && menu?.action?.id?.id === 1562;
4944
- const path2 = (0, utils_exports.formatUrlPath)({
4945
- viewType,
4946
- actionPath: isConvertCurrencyMenu ? "menu" : isAccountPayment ? "menu" : menu?.action?.path || "menu",
4947
- aid: menu?.action?.id?.id,
4948
- model: queryActionDetail.res_model
4949
- });
4950
- setPath(path2);
4951
- };
4952
- return { handleClick, path, queryActionDetail };
4953
- };
4954
-
4955
4891
  // src/hooks/utils/use-click-outside.ts
4956
4892
  import { useEffect as useEffect7, useRef as useRef2 } from "react";
4957
4893
  var DEFAULT_EVENTS = ["mousedown", "touchstart"];
@@ -4984,9 +4920,9 @@ var useClickOutside = ({
4984
4920
  };
4985
4921
 
4986
4922
  // src/hooks/utils/use-debounce.ts
4987
- import { useEffect as useEffect8, useState as useState6 } from "react";
4923
+ import { useEffect as useEffect8, useState as useState5 } from "react";
4988
4924
  function useDebounce(value, delay) {
4989
- const [debouncedValue, setDebouncedValue] = useState6(value);
4925
+ const [debouncedValue, setDebouncedValue] = useState5(value);
4990
4926
  useEffect8(() => {
4991
4927
  const handler = setTimeout(() => {
4992
4928
  setDebouncedValue(value);
@@ -5244,18 +5180,18 @@ var ChevronBottomIcon = ({
5244
5180
  };
5245
5181
 
5246
5182
  // src/widget/basic/status-dropdown-field/controller.ts
5247
- import { useEffect as useEffect9, useRef as useRef3, useState as useState7 } from "react";
5248
- import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
5183
+ import { useEffect as useEffect9, useRef as useRef3, useState as useState6 } from "react";
5184
+ import { getEnv as getEnv5 } from "@fctc/interface-logic/environment";
5249
5185
  import { useSave } from "@fctc/interface-logic/hooks";
5250
5186
  var statusDropdownController = (props) => {
5251
5187
  const { selection, isForm, id, model, name, state, onRefetch } = props;
5252
- const env = getEnv6();
5188
+ const env = getEnv5();
5253
5189
  const colors = {
5254
5190
  normal: "bg-[#e9ecef]",
5255
5191
  done: "bg-primary",
5256
5192
  blocked: "bg-red-500"
5257
5193
  };
5258
- const [isOpen, setIsOpen] = useState7(false);
5194
+ const [isOpen, setIsOpen] = useState6(false);
5259
5195
  const buttonRef = useRef3(null);
5260
5196
  useEffect9(() => {
5261
5197
  const handleClickOutside = (event) => {
@@ -5298,7 +5234,27 @@ var statusDropdownController = (props) => {
5298
5234
  };
5299
5235
 
5300
5236
  // src/widget/basic/many2one-field/controller.ts
5301
- import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState8 } from "react";
5237
+ import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState7 } from "react";
5238
+
5239
+ // src/utils.ts
5240
+ var utils_exports = {};
5241
+ __export(utils_exports, {
5242
+ API_APP_URL: () => API_APP_URL,
5243
+ API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
5244
+ STORAGES: () => STORAGES,
5245
+ combineContexts: () => combineContexts,
5246
+ convertFieldsToArray: () => convertFieldsToArray,
5247
+ countSum: () => countSum,
5248
+ getDateRange: () => getDateRange,
5249
+ languages: () => languages,
5250
+ mergeButtons: () => mergeButtons,
5251
+ setStorageItemAsync: () => setStorageItemAsync,
5252
+ useGetRowIds: () => useGetRowIds,
5253
+ useSelectionState: () => useSelectionState,
5254
+ useStorageState: () => useStorageState
5255
+ });
5256
+ __reExport(utils_exports, utils_star2);
5257
+ import * as utils_star2 from "@fctc/interface-logic/utils";
5302
5258
 
5303
5259
  // src/provider.ts
5304
5260
  var provider_exports = {};
@@ -5320,22 +5276,22 @@ var many2oneFieldController = (props) => {
5320
5276
  options: fieldOptions,
5321
5277
  showDetail
5322
5278
  } = props;
5323
- const [options, setOptions] = useState8([]);
5324
- const [inputValue, setInputValue] = useState8("");
5279
+ const { env } = (0, provider_exports.useEnv)();
5280
+ const [options, setOptions] = useState7([]);
5281
+ const [inputValue, setInputValue] = useState7("");
5325
5282
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
5326
- const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
5327
- const [tempSelectedOption, setTempSelectedOption] = useState8(null);
5328
- const [domainModal, setDomainModal] = useState8(null);
5329
- const [domainObject, setDomainObject] = useState8(null);
5283
+ const [isShowModalMany2Many, setIsShowModalMany2Many] = useState7(false);
5284
+ const [tempSelectedOption, setTempSelectedOption] = useState7(null);
5285
+ const [domainModal, setDomainModal] = useState7(null);
5286
+ const [domainObject, setDomainObject] = useState7(null);
5330
5287
  const actionData = sessionStorageUtils.getActionData();
5331
5288
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5332
- const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
5333
5289
  const initValue = methods?.getValues(name);
5334
5290
  const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
5335
5291
  const contextObject = {
5336
5292
  ...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
5337
5293
  ...fieldContext,
5338
- ...context
5294
+ ...env?.context
5339
5295
  };
5340
5296
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5341
5297
  const data = {
@@ -5479,13 +5435,13 @@ var many2oneFieldController = (props) => {
5479
5435
  };
5480
5436
 
5481
5437
  // src/widget/basic/many2one-button-field/controller.ts
5482
- import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5438
+ import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
5483
5439
  import { useGetSelection } from "@fctc/interface-logic/hooks";
5484
5440
  import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
5485
5441
  var many2oneButtonController = (props) => {
5486
5442
  const { domain, methods, relation } = props;
5487
5443
  const actionDataString = sessionStorage.getItem("actionData");
5488
- const env = getEnv7();
5444
+ const env = getEnv6();
5489
5445
  const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
5490
5446
  const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
5491
5447
  const { data: dataOfSelection } = useGetSelection({
@@ -5506,16 +5462,10 @@ var many2oneButtonController = (props) => {
5506
5462
  };
5507
5463
 
5508
5464
  // src/widget/basic/many2many-field/controller.ts
5509
- import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
5510
- import {
5511
- useAppDispatch as useAppDispatch5,
5512
- setFirstDomain,
5513
- setViewDataStore,
5514
- setPage,
5515
- setGroupByDomain
5516
- } from "@fctc/interface-logic/store";
5465
+ import { useEffect as useEffect11, useMemo as useMemo10, useState as useState8 } from "react";
5517
5466
  import {
5518
5467
  evalJSONContext as evalJSONContext4,
5468
+ evalJSONDomain as evalJSONDomain4,
5519
5469
  formatSortingString as formatSortingString2
5520
5470
  } from "@fctc/interface-logic/utils";
5521
5471
  var many2manyFieldController = (props) => {
@@ -5523,45 +5473,43 @@ var many2manyFieldController = (props) => {
5523
5473
  relation,
5524
5474
  domain,
5525
5475
  context,
5476
+ options,
5526
5477
  tab,
5527
- model,
5528
- aid,
5529
5478
  setSelectedRowKeys: setSelectedRowKeys4,
5530
- fields,
5531
- setFields,
5532
5479
  groupByDomain,
5533
- page,
5534
- options,
5535
- sessionStorageUtils
5480
+ enabled: enabledCallAPI,
5481
+ actionData
5536
5482
  } = props;
5537
- const appDispatch = useAppDispatch5();
5538
- const actionData = sessionStorageUtils.getActionData();
5539
- const [debouncedPage] = useDebounce(page, 500);
5540
- const [order, setOrder] = useState9();
5541
- const [isLoadedData, setIsLoadedData] = useState9(false);
5542
- const [domainMany2Many, setDomainMany2Many] = useState9(domain);
5543
5483
  const { env } = (0, provider_exports.useEnv)();
5544
5484
  const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5485
+ const [order, setOrder] = useState8();
5486
+ const [page, setPage] = useState8(0);
5487
+ const [domainMany2Many, setDomainMany2Many] = useState8(null);
5488
+ const [debouncedPage] = useDebounce(page, 500);
5489
+ const contextObject = {
5490
+ ...env.context,
5491
+ ...context || {}
5492
+ };
5545
5493
  const viewParams = {
5546
5494
  model: relation,
5547
5495
  views: [
5548
5496
  [false, "list"],
5549
5497
  [false, "search"]
5550
5498
  ],
5551
- context
5499
+ context: contextObject
5552
5500
  };
5553
- const { data: viewResponse } = useGetView2(viewParams, actionData);
5501
+ const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
5554
5502
  const baseModel = useMemo10(
5555
5503
  () => ({
5556
5504
  name: String(relation),
5557
5505
  view: viewResponse || {},
5558
- actContext: context,
5506
+ actContext: contextObject,
5559
5507
  fields: [
5560
5508
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5561
5509
  ...tab?.fields ? tab.fields : []
5562
5510
  ]
5563
5511
  }),
5564
- [model, viewResponse]
5512
+ [relation, viewResponse]
5565
5513
  );
5566
5514
  const initModel = (0, hooks_exports.useModel)();
5567
5515
  const modelInstance = useMemo10(() => {
@@ -5580,26 +5528,15 @@ var many2manyFieldController = (props) => {
5580
5528
  const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
5581
5529
  const fetchData = async () => {
5582
5530
  try {
5583
- setDomainMany2Many(domain);
5584
- appDispatch(setFirstDomain(domain));
5585
- appDispatch(setViewDataStore(viewResponse));
5586
- const modalData = viewResponse?.views?.list?.fields.map((field) => ({
5587
- ...viewResponse?.models?.[String(model)]?.[field?.name],
5588
- ...field
5589
- }));
5590
- if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
5591
- setFields({
5592
- ...fields,
5593
- [`${aid}_${relation}_popupmany2many`]: modalData
5594
- });
5595
- }
5596
- appDispatch(setPage(0));
5531
+ const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
5532
+ setDomainMany2Many(domainParse);
5533
+ setPage(0);
5597
5534
  } catch (err) {
5598
5535
  console.log(err);
5599
5536
  }
5600
5537
  };
5601
5538
  const queryKey = [
5602
- `view-${relation}-${aid}`,
5539
+ `view-${relation}`,
5603
5540
  specification,
5604
5541
  domainMany2Many,
5605
5542
  debouncedPage,
@@ -5612,16 +5549,16 @@ var many2manyFieldController = (props) => {
5612
5549
  domain: domainMany2Many,
5613
5550
  offset: debouncedPage * 10,
5614
5551
  limit: 10,
5615
- context,
5552
+ context: contextObject,
5616
5553
  fields: groupByDomain?.fields,
5617
5554
  groupby: [groupByDomain?.contexts[0]?.group_by],
5618
5555
  sort: order ? order : default_order ? formatSortingString2(default_order) : ""
5619
5556
  };
5620
- const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5557
+ const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5621
5558
  const {
5622
5559
  data: dataResponse,
5623
- isLoading: isDataLoading,
5624
- isFetched: isDataResponseFetched,
5560
+ isLoading,
5561
+ isFetched,
5625
5562
  isPlaceholderData
5626
5563
  } = useGetListData3(data, queryKey, enabled);
5627
5564
  useEffect11(() => {
@@ -5629,76 +5566,59 @@ var many2manyFieldController = (props) => {
5629
5566
  fetchData();
5630
5567
  }
5631
5568
  return () => {
5632
- appDispatch(setGroupByDomain(null));
5633
- setFields((prevFields) => ({
5634
- ...prevFields,
5635
- [`${aid}_${relation}_popupmany2many`]: null
5636
- }));
5637
- appDispatch(setPage(0));
5569
+ setPage(0);
5638
5570
  setSelectedRowKeys4([]);
5639
5571
  setDomainMany2Many(null);
5640
- setIsLoadedData(false);
5641
5572
  };
5642
5573
  }, [viewResponse]);
5643
- const { rows, columns, typeTable } = tableController({
5574
+ const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
5644
5575
  data: {
5645
- fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5576
+ fields: viewResponse?.views?.list?.fields,
5646
5577
  records: dataResponse?.records ?? dataResponse?.groups,
5647
5578
  dataModel: viewResponse?.models?.[String(relation)],
5648
- context: { ...env.context, ...context },
5579
+ context: contextObject,
5649
5580
  typeTable: dataResponse?.groups ? "group" : "list"
5650
5581
  }
5651
5582
  });
5652
- const dataFormView = {
5653
- id: null,
5654
- model: relation,
5655
- context
5656
- };
5657
- const {
5658
- refetch,
5659
- data: dataFormViewResponse,
5660
- isSuccess
5661
- } = useGetFormView({
5662
- data: dataFormView,
5663
- queryKey: [`form-view-action-${relation}`],
5664
- enabled: false
5583
+ const searchControllers = searchController({
5584
+ viewData: viewResponse,
5585
+ model: relation ?? "",
5586
+ context: contextObject,
5587
+ domain,
5588
+ fieldsList: [
5589
+ ...columns?.filter(
5590
+ (col) => col?.field?.type_co === "field" && col?.optional !== "hide"
5591
+ )?.map((col) => ({ ...col.field })) ?? []
5592
+ ]
5665
5593
  });
5666
- useEffect11(() => {
5667
- if (isSuccess && dataFormViewResponse) {
5668
- sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
5669
- window.location.href = `/form/menu?model=${relation}`;
5670
- }
5671
- }, [isSuccess]);
5672
- useEffect11(() => {
5673
- if (domainMany2Many && !isLoadedData) {
5674
- setIsLoadedData(true);
5675
- }
5676
- }, [domainMany2Many]);
5677
5594
  const handleCreateNewOnPage = async () => {
5678
- try {
5679
- refetch();
5680
- } catch (error) {
5681
- console.log(error);
5682
- }
5683
5595
  };
5684
5596
  return {
5685
5597
  handleCreateNewOnPage,
5686
5598
  optionsObject,
5599
+ totalRows: dataResponse?.length ?? 0,
5687
5600
  rows,
5688
5601
  columns,
5602
+ onToggleColumnOptional,
5689
5603
  typeTable,
5690
- isDataLoading,
5691
- isDataResponseFetched,
5692
- isPlaceholderData
5604
+ isLoading,
5605
+ isFetched,
5606
+ isPlaceholderData,
5607
+ setPage,
5608
+ page,
5609
+ viewData: viewResponse,
5610
+ domain: domainMany2Many,
5611
+ setDomain: setDomainMany2Many,
5612
+ searchController: searchControllers
5693
5613
  };
5694
5614
  };
5695
5615
 
5696
5616
  // src/widget/basic/many2many-tags-field/controller.ts
5697
5617
  import { useMemo as useMemo11 } from "react";
5698
5618
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5699
- import { getEnv as getEnv8 } from "@fctc/interface-logic/environment";
5619
+ import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5700
5620
  import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5701
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5621
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5702
5622
  var many2manyTagsController = (props) => {
5703
5623
  const {
5704
5624
  relation,
@@ -5709,10 +5629,10 @@ var many2manyTagsController = (props) => {
5709
5629
  placeholderNoOption
5710
5630
  } = props;
5711
5631
  const isUser = relation === "res.users" || relation === "res.partner";
5712
- const env = getEnv8();
5632
+ const env = getEnv7();
5713
5633
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5714
5634
  const domainObject = useMemo11(
5715
- () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
5635
+ () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5716
5636
  [domain, formValues]
5717
5637
  );
5718
5638
  const data = {
@@ -5754,8 +5674,8 @@ var many2manyTagsController = (props) => {
5754
5674
  };
5755
5675
 
5756
5676
  // src/widget/basic/status-bar-field/controller.ts
5757
- import { useState as useState10 } from "react";
5758
- import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5677
+ import { useState as useState9 } from "react";
5678
+ import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5759
5679
  var durationController = (props) => {
5760
5680
  const { relation, domain, formValues, name, id, model, onRefetch } = props;
5761
5681
  const specification = {
@@ -5765,13 +5685,13 @@ var durationController = (props) => {
5765
5685
  };
5766
5686
  const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
5767
5687
  const { env } = (0, provider_exports.useEnv)();
5768
- const [disabled, setDisabled] = useState10(false);
5769
- const [modelStatus, setModalStatus] = useState10(false);
5688
+ const [disabled, setDisabled] = useState9(false);
5689
+ const [modelStatus, setModalStatus] = useState9(false);
5770
5690
  const queryKey = [`data-status-duration`, specification];
5771
5691
  const listDataProps = {
5772
5692
  model: relation,
5773
5693
  specification,
5774
- domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
5694
+ domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5775
5695
  limit: 10,
5776
5696
  offset: 0,
5777
5697
  fields: "",
@@ -5872,10 +5792,10 @@ var priorityFieldController = (props) => {
5872
5792
  };
5873
5793
 
5874
5794
  // src/widget/basic/download-file-field/controller.ts
5875
- import { useId, useState as useState11 } from "react";
5795
+ import { useId, useState as useState10 } from "react";
5876
5796
  var downloadFileController = () => {
5877
5797
  const inputId = useId();
5878
- const [file, setFile] = useState11(null);
5798
+ const [file, setFile] = useState10(null);
5879
5799
  const handleFileChange = (e) => {
5880
5800
  setFile(e.target.files[0]);
5881
5801
  };
@@ -6807,11 +6727,11 @@ var dateFieldController = (props) => {
6807
6727
  };
6808
6728
 
6809
6729
  // src/widget/basic/copy-link-button/controller.ts
6810
- import { useState as useState12 } from "react";
6730
+ import { useState as useState11 } from "react";
6811
6731
  import { copyTextToClipboard } from "@fctc/interface-logic/utils";
6812
6732
  var copyLinkButtonController = (props) => {
6813
6733
  const { value, defaultValue } = props;
6814
- const [isCopied, setIsCopied] = useState12(false);
6734
+ const [isCopied, setIsCopied] = useState11(false);
6815
6735
  const handleCopyToClipboard = async (value2) => {
6816
6736
  await copyTextToClipboard(value2);
6817
6737
  setIsCopied(true);
@@ -6859,14 +6779,14 @@ var colorFieldController = (props) => {
6859
6779
  };
6860
6780
 
6861
6781
  // src/widget/basic/binary-field/controller.ts
6862
- import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
6782
+ import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
6863
6783
  import { isBase64Image } from "@fctc/interface-logic/utils";
6864
6784
  var binaryFieldController = (props) => {
6865
6785
  const { name, methods, readonly = false, value } = props;
6866
6786
  const inputId = useId2();
6867
- const [selectedImage, setSelectedImage] = useState13(null);
6868
- const [initialImage, setInitialImage] = useState13(value || null);
6869
- const [isInsideTable, setIsInsideTable] = useState13(false);
6787
+ const [selectedImage, setSelectedImage] = useState12(null);
6788
+ const [initialImage, setInitialImage] = useState12(value || null);
6789
+ const [isInsideTable, setIsInsideTable] = useState12(false);
6870
6790
  const { setValue } = methods;
6871
6791
  const binaryRef = useRef4(null);
6872
6792
  const convertUrlToBase64 = async (url) => {
@@ -6957,7 +6877,7 @@ var binaryFieldController = (props) => {
6957
6877
  };
6958
6878
 
6959
6879
  // src/widget/advance/table/table-body/controller.ts
6960
- import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
6880
+ import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
6961
6881
  import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
6962
6882
  var tableBodyController = (props) => {
6963
6883
  const {
@@ -6970,7 +6890,7 @@ var tableBodyController = (props) => {
6970
6890
  selectedRowKeysRef,
6971
6891
  onClickRow
6972
6892
  } = props;
6973
- const appDispatch = useAppDispatch6();
6893
+ const appDispatch = useAppDispatch5();
6974
6894
  const checked = useMemo12(() => {
6975
6895
  if (!row?.id) return false;
6976
6896
  if (selectedRowKeys?.includes(row.id)) {
@@ -7025,14 +6945,14 @@ var tableBodyController = (props) => {
7025
6945
 
7026
6946
  // src/widget/advance/table/table-head/controller.ts
7027
6947
  import {
7028
- useAppDispatch as useAppDispatch7,
6948
+ useAppDispatch as useAppDispatch6,
7029
6949
  useAppSelector as useAppSelector4,
7030
6950
  selectSearch as selectSearch3,
7031
6951
  setSelectedRowKeys as setSelectedRowKeys2
7032
6952
  } from "@fctc/interface-logic/store";
7033
6953
  var tableHeadController = (props) => {
7034
6954
  const { typeTable, rows, selectedRowKeysRef } = props;
7035
- const appDispatch = useAppDispatch7();
6955
+ const appDispatch = useAppDispatch6();
7036
6956
  const { groupByDomain } = useAppSelector4(selectSearch3);
7037
6957
  const handleCheckBoxAll = (event) => {
7038
6958
  if (event?.target?.checked && typeTable === "list") {
@@ -7066,7 +6986,7 @@ var tableHeadController = (props) => {
7066
6986
  };
7067
6987
 
7068
6988
  // src/widget/advance/table/table-view/controller.ts
7069
- import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState14 } from "react";
6989
+ import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState13 } from "react";
7070
6990
  import {
7071
6991
  useAppSelector as useAppSelector5,
7072
6992
  selectSearch as selectSearch4,
@@ -7074,8 +6994,8 @@ import {
7074
6994
  } from "@fctc/interface-logic/store";
7075
6995
  import { domainHelper } from "@fctc/interface-logic/utils";
7076
6996
  var tableController = ({ data }) => {
7077
- const [rows, setRows] = useState14(data.records || []);
7078
- const [columns, setColumns] = useState14([]);
6997
+ const [rows, setRows] = useState13(data.records || []);
6998
+ const [columns, setColumns] = useState13([]);
7079
6999
  const dataModelFields = data.fields?.map((field) => {
7080
7000
  return {
7081
7001
  ...data.dataModel?.[field?.name],
@@ -7149,7 +7069,7 @@ var tableController = ({ data }) => {
7149
7069
  };
7150
7070
 
7151
7071
  // src/widget/advance/table/table-group/controller.ts
7152
- import { useEffect as useEffect15, useMemo as useMemo14, useState as useState15 } from "react";
7072
+ import { useEffect as useEffect15, useMemo as useMemo14, useState as useState14 } from "react";
7153
7073
  import {
7154
7074
  useOdooDataTransform,
7155
7075
  useGetListData as useGetListData2
@@ -7158,7 +7078,7 @@ import {
7158
7078
  useAppSelector as useAppSelector6,
7159
7079
  selectSearch as selectSearch5,
7160
7080
  selectList as selectList4,
7161
- useAppDispatch as useAppDispatch8,
7081
+ useAppDispatch as useAppDispatch7,
7162
7082
  setSelectedRowKeys as setSelectedRowKeys3
7163
7083
  } from "@fctc/interface-logic/store";
7164
7084
 
@@ -7188,14 +7108,14 @@ var tableGroupController = (props) => {
7188
7108
  setIsAutoSelect,
7189
7109
  selectedRowKeysRef
7190
7110
  } = props;
7191
- const [pageGroup, setPageGroup] = useState15(0);
7111
+ const [pageGroup, setPageGroup] = useState14(0);
7192
7112
  const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
7193
7113
  const { selectedRowKeys } = useAppSelector6(selectList4);
7194
- const appDispatch = useAppDispatch8();
7114
+ const appDispatch = useAppDispatch7();
7195
7115
  const { toDataJS } = useOdooDataTransform();
7196
7116
  const initVal = toDataJS(row, viewData, model);
7197
- const [isShowGroup, setIsShowGroup] = useState15(false);
7198
- const [colEmptyGroup, setColEmptyGroup] = useState15({
7117
+ const [isShowGroup, setIsShowGroup] = useState14(false);
7118
+ const [colEmptyGroup, setColEmptyGroup] = useState14({
7199
7119
  fromStart: 1,
7200
7120
  fromEnd: 1
7201
7121
  });
@@ -7332,26 +7252,28 @@ var import_moment2 = __toESM(require_moment());
7332
7252
  import { SearchType } from "@fctc/interface-logic/constants";
7333
7253
  import {
7334
7254
  domainHelper as domainHelper2,
7335
- evalJSONDomain as evalJSONDomain6,
7255
+ evalJSONContext as evalJSONContext8,
7256
+ evalJSONDomain as evalJSONDomain7,
7336
7257
  validateAndParseDate
7337
7258
  } from "@fctc/interface-logic/utils";
7338
- import { useCallback as useCallback3, useEffect as useEffect16, useState as useState16 } from "react";
7259
+ import { useCallback as useCallback3, useEffect as useEffect16, useState as useState15 } from "react";
7339
7260
  var searchController = ({
7340
7261
  viewData,
7341
- actionData,
7342
- fieldsList,
7343
- contextSearch,
7344
- setSearchMap,
7345
- searchMap
7262
+ model,
7263
+ domain,
7264
+ context,
7265
+ fieldsList
7346
7266
  }) => {
7347
- const [filterBy, setFilterBy] = useState16(null);
7348
- const [searchBy, setSearchBy] = useState16(null);
7349
- const [groupBy, setGroupBy] = useState16(null);
7350
- const [selectedTags, setSelectedTags] = useState16(null);
7351
- const [searchString, setSearchString] = useState16("");
7352
- const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain6(actionData?.domain, contextSearch) : [];
7353
- const aid = actionData?.id;
7354
- const model = actionData?.res_model;
7267
+ const { env } = (0, provider_exports.useEnv)();
7268
+ const [filterBy, setFilterBy] = useState15(null);
7269
+ const [searchBy, setSearchBy] = useState15(null);
7270
+ const [groupBy, setGroupBy] = useState15(null);
7271
+ const [selectedTags, setSelectedTags] = useState15(null);
7272
+ const [searchString, setSearchString] = useState15("");
7273
+ const [searchMap, setSearchMap] = useState15({});
7274
+ const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
7275
+ const contextSearch = { ...env.context, ...actionContext };
7276
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
7355
7277
  const clearSearch = () => {
7356
7278
  setFilterBy([]);
7357
7279
  setGroupBy([]);
@@ -7396,9 +7318,8 @@ var searchController = ({
7396
7318
  }
7397
7319
  };
7398
7320
  useEffect16(() => {
7399
- clearSearch();
7400
7321
  fetchData();
7401
- }, [aid, model, viewData]);
7322
+ }, [model, viewData]);
7402
7323
  const onChangeSearchInput = (search_string) => {
7403
7324
  setSearchString(search_string);
7404
7325
  };
@@ -7435,27 +7356,28 @@ var searchController = ({
7435
7356
  };
7436
7357
  const formatDomain = () => {
7437
7358
  if (domainAction) {
7438
- const domain = [];
7359
+ console.log("domainAction", domainAction);
7360
+ const domain2 = [];
7439
7361
  if (domainAction?.length > 0) {
7440
7362
  if (Object.keys(searchMap).length > 0) {
7441
- domain.push("&");
7363
+ domain2.push("&");
7442
7364
  }
7443
7365
  domainAction.forEach((domainItem) => {
7444
- domain.push(domainItem);
7366
+ domain2.push(domainItem);
7445
7367
  });
7446
7368
  }
7447
7369
  Object.keys(searchMap).forEach((key, keyIndex, keys) => {
7448
7370
  if (!key?.includes(SearchType.GROUP)) {
7449
7371
  if (keys.length > 1 && keyIndex < keys.length - 1) {
7450
- domain.push("&");
7372
+ domain2.push("&");
7451
7373
  }
7452
7374
  const valuesOfKey = searchMap[key];
7453
7375
  valuesOfKey.forEach((value, index) => {
7454
7376
  if (index < valuesOfKey.length - 1) {
7455
- domain.push("|");
7377
+ domain2.push("|");
7456
7378
  }
7457
7379
  if (value.domain) {
7458
- domain.push(...value.domain);
7380
+ domain2.push(...value.domain);
7459
7381
  return;
7460
7382
  }
7461
7383
  let valueDomainItem = value?.value;
@@ -7471,11 +7393,11 @@ var searchController = ({
7471
7393
  }
7472
7394
  }
7473
7395
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
7474
- domain.push([value.name, operator, valueDomainItem]);
7396
+ domain2.push([value.name, operator, valueDomainItem]);
7475
7397
  });
7476
7398
  }
7477
7399
  });
7478
- return [...domain];
7400
+ return [...domain2];
7479
7401
  }
7480
7402
  };
7481
7403
  const setTagSearch = useCallback3(
@@ -7506,16 +7428,16 @@ var searchController = ({
7506
7428
  const contexts = [];
7507
7429
  let groupValues = [];
7508
7430
  objValues?.forEach((objValue) => {
7509
- const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7431
+ const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7510
7432
  const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
7511
7433
  contexts.push(
7512
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({ group_by: item })) : [context]
7434
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
7513
7435
  );
7514
7436
  groupValues[indexAppend] = {
7515
7437
  contexts: [
7516
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({
7438
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
7517
7439
  group_by: item
7518
- })) : [context]
7440
+ })) : [context2]
7519
7441
  ],
7520
7442
  strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
7521
7443
  };
@@ -7542,39 +7464,38 @@ var searchController = ({
7542
7464
  [searchMap]
7543
7465
  );
7544
7466
  useEffect16(() => {
7545
- setSelectedTags(null);
7546
7467
  setTagSearch(searchMap);
7547
7468
  }, [searchMap]);
7548
7469
  const handleAddTagSearch = (tag) => {
7549
7470
  const {
7550
- domain,
7471
+ domain: domain2,
7551
7472
  groupIndex,
7552
7473
  value,
7553
7474
  type,
7554
7475
  title,
7555
- context,
7476
+ context: context2,
7556
7477
  active,
7557
7478
  dataIndex
7558
7479
  } = tag;
7559
- const domainFormat = new domainHelper2.Domain(domain);
7480
+ const domainFormat = new domainHelper2.Domain(domain2);
7560
7481
  if (type === SearchType.FILTER) {
7561
7482
  addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
7562
7483
  ...tag,
7563
- domain: domain ? domainFormat.toList(context) : null
7484
+ domain: domain2 ? domainFormat.toList(context2) : null
7564
7485
  });
7565
7486
  } else if (type === SearchType.SEARCH) {
7566
7487
  addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
7567
7488
  ...tag,
7568
- domain: domain ? domainFormat.toList({
7569
- ...context,
7489
+ domain: domain2 ? domainFormat.toList({
7490
+ ...context2,
7570
7491
  self: value
7571
7492
  }) : null
7572
7493
  });
7573
7494
  } else if (type === SearchType.GROUP) {
7574
7495
  addSearchItems(`${SearchType.GROUP}`, {
7575
7496
  ...tag,
7576
- domain: domain ? domainFormat.toList({
7577
- context,
7497
+ domain: domain2 ? domainFormat.toList({
7498
+ context: context2,
7578
7499
  self: value
7579
7500
  }) : null
7580
7501
  });
@@ -7594,7 +7515,8 @@ var searchController = ({
7594
7515
  removeSearchItems,
7595
7516
  onSearchString: onChangeSearchInput,
7596
7517
  handleAddTagSearch,
7597
- domain: formatDomain()
7518
+ domain: formatDomain(),
7519
+ context: contextSearch
7598
7520
  };
7599
7521
  };
7600
7522
 
@@ -7675,7 +7597,6 @@ export {
7675
7597
  useGetRowIds,
7676
7598
  useListData,
7677
7599
  useMenu,
7678
- useMenuItem,
7679
7600
  useProfile,
7680
7601
  useSelectionState,
7681
7602
  useStorageState,