@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/widget.mjs CHANGED
@@ -4091,7 +4091,7 @@ var statusDropdownController = (props) => {
4091
4091
  };
4092
4092
 
4093
4093
  // src/widget/basic/many2one-field/controller.ts
4094
- import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState8 } from "react";
4094
+ import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState7 } from "react";
4095
4095
 
4096
4096
  // src/hooks.ts
4097
4097
  var hooks_exports = {};
@@ -4106,7 +4106,6 @@ __export(hooks_exports, {
4106
4106
  useDetail: () => useDetail,
4107
4107
  useListData: () => useListData,
4108
4108
  useMenu: () => useMenu,
4109
- useMenuItem: () => useMenuItem,
4110
4109
  useProfile: () => useProfile,
4111
4110
  useUser: () => useUser,
4112
4111
  useViewV2: () => useViewV2
@@ -4889,68 +4888,6 @@ var useAppProvider = () => {
4889
4888
  return context;
4890
4889
  };
4891
4890
 
4892
- // src/hooks/core/use-menu-item.tsx
4893
- import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
4894
- import { useGetActionDetail } from "@fctc/interface-logic/hooks";
4895
- import { useState as useState6 } from "react";
4896
-
4897
- // src/utils.ts
4898
- var utils_exports = {};
4899
- __export(utils_exports, {
4900
- API_APP_URL: () => API_APP_URL,
4901
- API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
4902
- STORAGES: () => STORAGES,
4903
- combineContexts: () => combineContexts,
4904
- convertFieldsToArray: () => convertFieldsToArray,
4905
- countSum: () => countSum,
4906
- getDateRange: () => getDateRange,
4907
- languages: () => languages,
4908
- mergeButtons: () => mergeButtons,
4909
- setStorageItemAsync: () => setStorageItemAsync,
4910
- useGetRowIds: () => useGetRowIds,
4911
- useSelectionState: () => useSelectionState,
4912
- useStorageState: () => useStorageState
4913
- });
4914
- __reExport(utils_exports, utils_star);
4915
- import * as utils_star from "@fctc/interface-logic/utils";
4916
-
4917
- // src/hooks/core/use-menu-item.tsx
4918
- var useMenuItem = (props) => {
4919
- const { menu, activeMenuId } = props;
4920
- const model = menu?.action?.res_model;
4921
- const aid = menu?.action?.id?.id;
4922
- const id = menu?.id;
4923
- const context = getEnv6().context;
4924
- const queryActionDetail = useGetActionDetail({
4925
- aid,
4926
- id,
4927
- model,
4928
- context,
4929
- enabled: true,
4930
- queryKey: [`action-${aid}`]
4931
- }).data;
4932
- const [path, setPath] = useState6("");
4933
- const handleClick = () => {
4934
- if (location?.pathname === "/list/menu" && activeMenuId === menu?.id) {
4935
- return;
4936
- }
4937
- const hasListView = queryActionDetail.views.some(
4938
- ([id2, type]) => type === "list"
4939
- );
4940
- const viewType = hasListView ? "list" : "form";
4941
- const isAccountPayment = menu?.action?.res_model === "account.payment" && menu?.action?.id?.id === 1551;
4942
- const isConvertCurrencyMenu = menu?.action?.res_model === "currency.convert" && menu?.action?.id?.id === 1562;
4943
- const path2 = (0, utils_exports.formatUrlPath)({
4944
- viewType,
4945
- actionPath: isConvertCurrencyMenu ? "menu" : isAccountPayment ? "menu" : menu?.action?.path || "menu",
4946
- aid: menu?.action?.id?.id,
4947
- model: queryActionDetail.res_model
4948
- });
4949
- setPath(path2);
4950
- };
4951
- return { handleClick, path, queryActionDetail };
4952
- };
4953
-
4954
4891
  // src/hooks/utils/use-click-outside.ts
4955
4892
  import { useEffect as useEffect8, useRef as useRef3 } from "react";
4956
4893
  var DEFAULT_EVENTS = ["mousedown", "touchstart"];
@@ -4983,9 +4920,9 @@ var useClickOutside = ({
4983
4920
  };
4984
4921
 
4985
4922
  // src/hooks/utils/use-debounce.ts
4986
- import { useEffect as useEffect9, useState as useState7 } from "react";
4923
+ import { useEffect as useEffect9, useState as useState6 } from "react";
4987
4924
  function useDebounce(value, delay) {
4988
- const [debouncedValue, setDebouncedValue] = useState7(value);
4925
+ const [debouncedValue, setDebouncedValue] = useState6(value);
4989
4926
  useEffect9(() => {
4990
4927
  const handler = setTimeout(() => {
4991
4928
  setDebouncedValue(value);
@@ -5001,6 +4938,26 @@ function useDebounce(value, delay) {
5001
4938
  __reExport(hooks_exports, hooks_star);
5002
4939
  import * as hooks_star from "@fctc/interface-logic/hooks";
5003
4940
 
4941
+ // src/utils.ts
4942
+ var utils_exports = {};
4943
+ __export(utils_exports, {
4944
+ API_APP_URL: () => API_APP_URL,
4945
+ API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
4946
+ STORAGES: () => STORAGES,
4947
+ combineContexts: () => combineContexts,
4948
+ convertFieldsToArray: () => convertFieldsToArray,
4949
+ countSum: () => countSum,
4950
+ getDateRange: () => getDateRange,
4951
+ languages: () => languages,
4952
+ mergeButtons: () => mergeButtons,
4953
+ setStorageItemAsync: () => setStorageItemAsync,
4954
+ useGetRowIds: () => useGetRowIds,
4955
+ useSelectionState: () => useSelectionState,
4956
+ useStorageState: () => useStorageState
4957
+ });
4958
+ __reExport(utils_exports, utils_star2);
4959
+ import * as utils_star2 from "@fctc/interface-logic/utils";
4960
+
5004
4961
  // src/provider.ts
5005
4962
  var provider_exports = {};
5006
4963
  __reExport(provider_exports, provider_star);
@@ -5021,22 +4978,22 @@ var many2oneFieldController = (props) => {
5021
4978
  options: fieldOptions,
5022
4979
  showDetail
5023
4980
  } = props;
5024
- const [options, setOptions] = useState8([]);
5025
- const [inputValue, setInputValue] = useState8("");
4981
+ const { env } = (0, provider_exports.useEnv)();
4982
+ const [options, setOptions] = useState7([]);
4983
+ const [inputValue, setInputValue] = useState7("");
5026
4984
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
5027
- const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
5028
- const [tempSelectedOption, setTempSelectedOption] = useState8(null);
5029
- const [domainModal, setDomainModal] = useState8(null);
5030
- const [domainObject, setDomainObject] = useState8(null);
4985
+ const [isShowModalMany2Many, setIsShowModalMany2Many] = useState7(false);
4986
+ const [tempSelectedOption, setTempSelectedOption] = useState7(null);
4987
+ const [domainModal, setDomainModal] = useState7(null);
4988
+ const [domainObject, setDomainObject] = useState7(null);
5031
4989
  const actionData = sessionStorageUtils.getActionData();
5032
4990
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5033
- const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
5034
4991
  const initValue = methods?.getValues(name);
5035
4992
  const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
5036
4993
  const contextObject = {
5037
4994
  ...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
5038
4995
  ...fieldContext,
5039
- ...context
4996
+ ...env?.context
5040
4997
  };
5041
4998
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5042
4999
  const data = {
@@ -5180,13 +5137,13 @@ var many2oneFieldController = (props) => {
5180
5137
  };
5181
5138
 
5182
5139
  // src/widget/basic/many2one-button-field/controller.ts
5183
- import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5140
+ import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
5184
5141
  import { useGetSelection } from "@fctc/interface-logic/hooks";
5185
5142
  import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
5186
5143
  var many2oneButtonController = (props) => {
5187
5144
  const { domain, methods, relation } = props;
5188
5145
  const actionDataString = sessionStorage.getItem("actionData");
5189
- const env = getEnv7();
5146
+ const env = getEnv6();
5190
5147
  const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
5191
5148
  const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
5192
5149
  const { data: dataOfSelection } = useGetSelection({
@@ -5207,16 +5164,10 @@ var many2oneButtonController = (props) => {
5207
5164
  };
5208
5165
 
5209
5166
  // src/widget/basic/many2many-field/controller.ts
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";
5167
+ import { useEffect as useEffect11, useMemo as useMemo10, useState as useState8 } from "react";
5218
5168
  import {
5219
5169
  evalJSONContext as evalJSONContext4,
5170
+ evalJSONDomain as evalJSONDomain4,
5220
5171
  formatSortingString as formatSortingString2
5221
5172
  } from "@fctc/interface-logic/utils";
5222
5173
  var many2manyFieldController = (props) => {
@@ -5224,45 +5175,43 @@ var many2manyFieldController = (props) => {
5224
5175
  relation,
5225
5176
  domain,
5226
5177
  context,
5178
+ options,
5227
5179
  tab,
5228
- model,
5229
- aid,
5230
5180
  setSelectedRowKeys: setSelectedRowKeys4,
5231
- fields,
5232
- setFields,
5233
5181
  groupByDomain,
5234
- page,
5235
- options,
5236
- sessionStorageUtils
5182
+ enabled: enabledCallAPI,
5183
+ actionData
5237
5184
  } = 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
5185
  const { env } = (0, provider_exports.useEnv)();
5245
5186
  const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5187
+ const [order, setOrder] = useState8();
5188
+ const [page, setPage] = useState8(0);
5189
+ const [domainMany2Many, setDomainMany2Many] = useState8(null);
5190
+ const [debouncedPage] = useDebounce(page, 500);
5191
+ const contextObject = {
5192
+ ...env.context,
5193
+ ...context || {}
5194
+ };
5246
5195
  const viewParams = {
5247
5196
  model: relation,
5248
5197
  views: [
5249
5198
  [false, "list"],
5250
5199
  [false, "search"]
5251
5200
  ],
5252
- context
5201
+ context: contextObject
5253
5202
  };
5254
- const { data: viewResponse } = useGetView2(viewParams, actionData);
5203
+ const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
5255
5204
  const baseModel = useMemo10(
5256
5205
  () => ({
5257
5206
  name: String(relation),
5258
5207
  view: viewResponse || {},
5259
- actContext: context,
5208
+ actContext: contextObject,
5260
5209
  fields: [
5261
5210
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5262
5211
  ...tab?.fields ? tab.fields : []
5263
5212
  ]
5264
5213
  }),
5265
- [model, viewResponse]
5214
+ [relation, viewResponse]
5266
5215
  );
5267
5216
  const initModel = (0, hooks_exports.useModel)();
5268
5217
  const modelInstance = useMemo10(() => {
@@ -5281,26 +5230,15 @@ var many2manyFieldController = (props) => {
5281
5230
  const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
5282
5231
  const fetchData = async () => {
5283
5232
  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));
5233
+ const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
5234
+ setDomainMany2Many(domainParse);
5235
+ setPage(0);
5298
5236
  } catch (err) {
5299
5237
  console.log(err);
5300
5238
  }
5301
5239
  };
5302
5240
  const queryKey = [
5303
- `view-${relation}-${aid}`,
5241
+ `view-${relation}`,
5304
5242
  specification,
5305
5243
  domainMany2Many,
5306
5244
  debouncedPage,
@@ -5313,16 +5251,16 @@ var many2manyFieldController = (props) => {
5313
5251
  domain: domainMany2Many,
5314
5252
  offset: debouncedPage * 10,
5315
5253
  limit: 10,
5316
- context,
5254
+ context: contextObject,
5317
5255
  fields: groupByDomain?.fields,
5318
5256
  groupby: [groupByDomain?.contexts[0]?.group_by],
5319
5257
  sort: order ? order : default_order ? formatSortingString2(default_order) : ""
5320
5258
  };
5321
- const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5259
+ const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5322
5260
  const {
5323
5261
  data: dataResponse,
5324
- isLoading: isDataLoading,
5325
- isFetched: isDataResponseFetched,
5262
+ isLoading,
5263
+ isFetched,
5326
5264
  isPlaceholderData
5327
5265
  } = useGetListData3(data, queryKey, enabled);
5328
5266
  useEffect11(() => {
@@ -5330,76 +5268,59 @@ var many2manyFieldController = (props) => {
5330
5268
  fetchData();
5331
5269
  }
5332
5270
  return () => {
5333
- appDispatch(setGroupByDomain(null));
5334
- setFields((prevFields) => ({
5335
- ...prevFields,
5336
- [`${aid}_${relation}_popupmany2many`]: null
5337
- }));
5338
- appDispatch(setPage(0));
5271
+ setPage(0);
5339
5272
  setSelectedRowKeys4([]);
5340
5273
  setDomainMany2Many(null);
5341
- setIsLoadedData(false);
5342
5274
  };
5343
5275
  }, [viewResponse]);
5344
- const { rows, columns, typeTable } = tableController({
5276
+ const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
5345
5277
  data: {
5346
- fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5278
+ fields: viewResponse?.views?.list?.fields,
5347
5279
  records: dataResponse?.records ?? dataResponse?.groups,
5348
5280
  dataModel: viewResponse?.models?.[String(relation)],
5349
- context: { ...env.context, ...context },
5281
+ context: contextObject,
5350
5282
  typeTable: dataResponse?.groups ? "group" : "list"
5351
5283
  }
5352
5284
  });
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
5285
+ const searchControllers = searchController({
5286
+ viewData: viewResponse,
5287
+ model: relation ?? "",
5288
+ context: contextObject,
5289
+ domain,
5290
+ fieldsList: [
5291
+ ...columns?.filter(
5292
+ (col) => col?.field?.type_co === "field" && col?.optional !== "hide"
5293
+ )?.map((col) => ({ ...col.field })) ?? []
5294
+ ]
5366
5295
  });
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
5296
  const handleCreateNewOnPage = async () => {
5379
- try {
5380
- refetch();
5381
- } catch (error) {
5382
- console.log(error);
5383
- }
5384
5297
  };
5385
5298
  return {
5386
5299
  handleCreateNewOnPage,
5387
5300
  optionsObject,
5301
+ totalRows: dataResponse?.length ?? 0,
5388
5302
  rows,
5389
5303
  columns,
5304
+ onToggleColumnOptional,
5390
5305
  typeTable,
5391
- isDataLoading,
5392
- isDataResponseFetched,
5393
- isPlaceholderData
5306
+ isLoading,
5307
+ isFetched,
5308
+ isPlaceholderData,
5309
+ setPage,
5310
+ page,
5311
+ viewData: viewResponse,
5312
+ domain: domainMany2Many,
5313
+ setDomain: setDomainMany2Many,
5314
+ searchController: searchControllers
5394
5315
  };
5395
5316
  };
5396
5317
 
5397
5318
  // src/widget/basic/many2many-tags-field/controller.ts
5398
5319
  import { useMemo as useMemo11 } from "react";
5399
5320
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5400
- import { getEnv as getEnv8 } from "@fctc/interface-logic/environment";
5321
+ import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5401
5322
  import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5402
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5323
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5403
5324
  var many2manyTagsController = (props) => {
5404
5325
  const {
5405
5326
  relation,
@@ -5410,10 +5331,10 @@ var many2manyTagsController = (props) => {
5410
5331
  placeholderNoOption
5411
5332
  } = props;
5412
5333
  const isUser = relation === "res.users" || relation === "res.partner";
5413
- const env = getEnv8();
5334
+ const env = getEnv7();
5414
5335
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5415
5336
  const domainObject = useMemo11(
5416
- () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
5337
+ () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5417
5338
  [domain, formValues]
5418
5339
  );
5419
5340
  const data = {
@@ -5455,8 +5376,8 @@ var many2manyTagsController = (props) => {
5455
5376
  };
5456
5377
 
5457
5378
  // src/widget/basic/status-bar-field/controller.ts
5458
- import { useState as useState10 } from "react";
5459
- import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5379
+ import { useState as useState9 } from "react";
5380
+ import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5460
5381
  var durationController = (props) => {
5461
5382
  const { relation, domain, formValues, name, id, model, onRefetch } = props;
5462
5383
  const specification = {
@@ -5466,13 +5387,13 @@ var durationController = (props) => {
5466
5387
  };
5467
5388
  const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
5468
5389
  const { env } = (0, provider_exports.useEnv)();
5469
- const [disabled, setDisabled] = useState10(false);
5470
- const [modelStatus, setModalStatus] = useState10(false);
5390
+ const [disabled, setDisabled] = useState9(false);
5391
+ const [modelStatus, setModalStatus] = useState9(false);
5471
5392
  const queryKey = [`data-status-duration`, specification];
5472
5393
  const listDataProps = {
5473
5394
  model: relation,
5474
5395
  specification,
5475
- domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
5396
+ domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5476
5397
  limit: 10,
5477
5398
  offset: 0,
5478
5399
  fields: "",
@@ -5573,10 +5494,10 @@ var priorityFieldController = (props) => {
5573
5494
  };
5574
5495
 
5575
5496
  // src/widget/basic/download-file-field/controller.ts
5576
- import { useId, useState as useState11 } from "react";
5497
+ import { useId, useState as useState10 } from "react";
5577
5498
  var downloadFileController = () => {
5578
5499
  const inputId = useId();
5579
- const [file, setFile] = useState11(null);
5500
+ const [file, setFile] = useState10(null);
5580
5501
  const handleFileChange = (e) => {
5581
5502
  setFile(e.target.files[0]);
5582
5503
  };
@@ -6508,11 +6429,11 @@ var dateFieldController = (props) => {
6508
6429
  };
6509
6430
 
6510
6431
  // src/widget/basic/copy-link-button/controller.ts
6511
- import { useState as useState12 } from "react";
6432
+ import { useState as useState11 } from "react";
6512
6433
  import { copyTextToClipboard } from "@fctc/interface-logic/utils";
6513
6434
  var copyLinkButtonController = (props) => {
6514
6435
  const { value, defaultValue } = props;
6515
- const [isCopied, setIsCopied] = useState12(false);
6436
+ const [isCopied, setIsCopied] = useState11(false);
6516
6437
  const handleCopyToClipboard = async (value2) => {
6517
6438
  await copyTextToClipboard(value2);
6518
6439
  setIsCopied(true);
@@ -6560,14 +6481,14 @@ var colorFieldController = (props) => {
6560
6481
  };
6561
6482
 
6562
6483
  // src/widget/basic/binary-field/controller.ts
6563
- import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
6484
+ import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
6564
6485
  import { isBase64Image } from "@fctc/interface-logic/utils";
6565
6486
  var binaryFieldController = (props) => {
6566
6487
  const { name, methods, readonly = false, value } = props;
6567
6488
  const inputId = useId2();
6568
- const [selectedImage, setSelectedImage] = useState13(null);
6569
- const [initialImage, setInitialImage] = useState13(value || null);
6570
- const [isInsideTable, setIsInsideTable] = useState13(false);
6489
+ const [selectedImage, setSelectedImage] = useState12(null);
6490
+ const [initialImage, setInitialImage] = useState12(value || null);
6491
+ const [isInsideTable, setIsInsideTable] = useState12(false);
6571
6492
  const { setValue } = methods;
6572
6493
  const binaryRef = useRef4(null);
6573
6494
  const convertUrlToBase64 = async (url) => {
@@ -6658,7 +6579,7 @@ var binaryFieldController = (props) => {
6658
6579
  };
6659
6580
 
6660
6581
  // src/widget/advance/table/table-body/controller.ts
6661
- import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
6582
+ import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
6662
6583
  import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
6663
6584
  var tableBodyController = (props) => {
6664
6585
  const {
@@ -6671,7 +6592,7 @@ var tableBodyController = (props) => {
6671
6592
  selectedRowKeysRef,
6672
6593
  onClickRow
6673
6594
  } = props;
6674
- const appDispatch = useAppDispatch6();
6595
+ const appDispatch = useAppDispatch5();
6675
6596
  const checked = useMemo12(() => {
6676
6597
  if (!row?.id) return false;
6677
6598
  if (selectedRowKeys?.includes(row.id)) {
@@ -6726,14 +6647,14 @@ var tableBodyController = (props) => {
6726
6647
 
6727
6648
  // src/widget/advance/table/table-head/controller.ts
6728
6649
  import {
6729
- useAppDispatch as useAppDispatch7,
6650
+ useAppDispatch as useAppDispatch6,
6730
6651
  useAppSelector as useAppSelector4,
6731
6652
  selectSearch as selectSearch3,
6732
6653
  setSelectedRowKeys as setSelectedRowKeys2
6733
6654
  } from "@fctc/interface-logic/store";
6734
6655
  var tableHeadController = (props) => {
6735
6656
  const { typeTable, rows, selectedRowKeysRef } = props;
6736
- const appDispatch = useAppDispatch7();
6657
+ const appDispatch = useAppDispatch6();
6737
6658
  const { groupByDomain } = useAppSelector4(selectSearch3);
6738
6659
  const handleCheckBoxAll = (event) => {
6739
6660
  if (event?.target?.checked && typeTable === "list") {
@@ -6767,7 +6688,7 @@ var tableHeadController = (props) => {
6767
6688
  };
6768
6689
 
6769
6690
  // src/widget/advance/table/table-view/controller.ts
6770
- import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState14 } from "react";
6691
+ import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState13 } from "react";
6771
6692
  import {
6772
6693
  useAppSelector as useAppSelector5,
6773
6694
  selectSearch as selectSearch4,
@@ -6775,8 +6696,8 @@ import {
6775
6696
  } from "@fctc/interface-logic/store";
6776
6697
  import { domainHelper } from "@fctc/interface-logic/utils";
6777
6698
  var tableController = ({ data }) => {
6778
- const [rows, setRows] = useState14(data.records || []);
6779
- const [columns, setColumns] = useState14([]);
6699
+ const [rows, setRows] = useState13(data.records || []);
6700
+ const [columns, setColumns] = useState13([]);
6780
6701
  const dataModelFields = data.fields?.map((field) => {
6781
6702
  return {
6782
6703
  ...data.dataModel?.[field?.name],
@@ -6850,7 +6771,7 @@ var tableController = ({ data }) => {
6850
6771
  };
6851
6772
 
6852
6773
  // src/widget/advance/table/table-group/controller.ts
6853
- import { useEffect as useEffect15, useMemo as useMemo14, useState as useState15 } from "react";
6774
+ import { useEffect as useEffect15, useMemo as useMemo14, useState as useState14 } from "react";
6854
6775
  import {
6855
6776
  useOdooDataTransform,
6856
6777
  useGetListData as useGetListData2
@@ -6859,7 +6780,7 @@ import {
6859
6780
  useAppSelector as useAppSelector6,
6860
6781
  selectSearch as selectSearch5,
6861
6782
  selectList as selectList4,
6862
- useAppDispatch as useAppDispatch8,
6783
+ useAppDispatch as useAppDispatch7,
6863
6784
  setSelectedRowKeys as setSelectedRowKeys3
6864
6785
  } from "@fctc/interface-logic/store";
6865
6786
 
@@ -6889,14 +6810,14 @@ var tableGroupController = (props) => {
6889
6810
  setIsAutoSelect,
6890
6811
  selectedRowKeysRef
6891
6812
  } = props;
6892
- const [pageGroup, setPageGroup] = useState15(0);
6813
+ const [pageGroup, setPageGroup] = useState14(0);
6893
6814
  const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
6894
6815
  const { selectedRowKeys } = useAppSelector6(selectList4);
6895
- const appDispatch = useAppDispatch8();
6816
+ const appDispatch = useAppDispatch7();
6896
6817
  const { toDataJS } = useOdooDataTransform();
6897
6818
  const initVal = toDataJS(row, viewData, model);
6898
- const [isShowGroup, setIsShowGroup] = useState15(false);
6899
- const [colEmptyGroup, setColEmptyGroup] = useState15({
6819
+ const [isShowGroup, setIsShowGroup] = useState14(false);
6820
+ const [colEmptyGroup, setColEmptyGroup] = useState14({
6900
6821
  fromStart: 1,
6901
6822
  fromEnd: 1
6902
6823
  });
@@ -7033,26 +6954,28 @@ var import_moment2 = __toESM(require_moment());
7033
6954
  import { SearchType } from "@fctc/interface-logic/constants";
7034
6955
  import {
7035
6956
  domainHelper as domainHelper2,
7036
- evalJSONDomain as evalJSONDomain6,
6957
+ evalJSONContext as evalJSONContext8,
6958
+ evalJSONDomain as evalJSONDomain7,
7037
6959
  validateAndParseDate
7038
6960
  } from "@fctc/interface-logic/utils";
7039
- import { useCallback as useCallback3, useEffect as useEffect16, useState as useState16 } from "react";
6961
+ import { useCallback as useCallback3, useEffect as useEffect16, useState as useState15 } from "react";
7040
6962
  var searchController = ({
7041
6963
  viewData,
7042
- actionData,
7043
- fieldsList,
7044
- contextSearch,
7045
- setSearchMap,
7046
- searchMap
6964
+ model,
6965
+ domain,
6966
+ context,
6967
+ fieldsList
7047
6968
  }) => {
7048
- const [filterBy, setFilterBy] = useState16(null);
7049
- const [searchBy, setSearchBy] = useState16(null);
7050
- const [groupBy, setGroupBy] = useState16(null);
7051
- const [selectedTags, setSelectedTags] = useState16(null);
7052
- 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;
6969
+ const { env } = (0, provider_exports.useEnv)();
6970
+ const [filterBy, setFilterBy] = useState15(null);
6971
+ const [searchBy, setSearchBy] = useState15(null);
6972
+ const [groupBy, setGroupBy] = useState15(null);
6973
+ const [selectedTags, setSelectedTags] = useState15(null);
6974
+ const [searchString, setSearchString] = useState15("");
6975
+ const [searchMap, setSearchMap] = useState15({});
6976
+ const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
6977
+ const contextSearch = { ...env.context, ...actionContext };
6978
+ const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
7056
6979
  const clearSearch = () => {
7057
6980
  setFilterBy([]);
7058
6981
  setGroupBy([]);
@@ -7097,9 +7020,8 @@ var searchController = ({
7097
7020
  }
7098
7021
  };
7099
7022
  useEffect16(() => {
7100
- clearSearch();
7101
7023
  fetchData();
7102
- }, [aid, model, viewData]);
7024
+ }, [model, viewData]);
7103
7025
  const onChangeSearchInput = (search_string) => {
7104
7026
  setSearchString(search_string);
7105
7027
  };
@@ -7136,27 +7058,28 @@ var searchController = ({
7136
7058
  };
7137
7059
  const formatDomain = () => {
7138
7060
  if (domainAction) {
7139
- const domain = [];
7061
+ console.log("domainAction", domainAction);
7062
+ const domain2 = [];
7140
7063
  if (domainAction?.length > 0) {
7141
7064
  if (Object.keys(searchMap).length > 0) {
7142
- domain.push("&");
7065
+ domain2.push("&");
7143
7066
  }
7144
7067
  domainAction.forEach((domainItem) => {
7145
- domain.push(domainItem);
7068
+ domain2.push(domainItem);
7146
7069
  });
7147
7070
  }
7148
7071
  Object.keys(searchMap).forEach((key, keyIndex, keys) => {
7149
7072
  if (!key?.includes(SearchType.GROUP)) {
7150
7073
  if (keys.length > 1 && keyIndex < keys.length - 1) {
7151
- domain.push("&");
7074
+ domain2.push("&");
7152
7075
  }
7153
7076
  const valuesOfKey = searchMap[key];
7154
7077
  valuesOfKey.forEach((value, index) => {
7155
7078
  if (index < valuesOfKey.length - 1) {
7156
- domain.push("|");
7079
+ domain2.push("|");
7157
7080
  }
7158
7081
  if (value.domain) {
7159
- domain.push(...value.domain);
7082
+ domain2.push(...value.domain);
7160
7083
  return;
7161
7084
  }
7162
7085
  let valueDomainItem = value?.value;
@@ -7172,11 +7095,11 @@ var searchController = ({
7172
7095
  }
7173
7096
  }
7174
7097
  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]);
7098
+ domain2.push([value.name, operator, valueDomainItem]);
7176
7099
  });
7177
7100
  }
7178
7101
  });
7179
- return [...domain];
7102
+ return [...domain2];
7180
7103
  }
7181
7104
  };
7182
7105
  const setTagSearch = useCallback3(
@@ -7207,16 +7130,16 @@ var searchController = ({
7207
7130
  const contexts = [];
7208
7131
  let groupValues = [];
7209
7132
  objValues?.forEach((objValue) => {
7210
- const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7133
+ const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7211
7134
  const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
7212
7135
  contexts.push(
7213
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({ group_by: item })) : [context]
7136
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
7214
7137
  );
7215
7138
  groupValues[indexAppend] = {
7216
7139
  contexts: [
7217
- ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({
7140
+ ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
7218
7141
  group_by: item
7219
- })) : [context]
7142
+ })) : [context2]
7220
7143
  ],
7221
7144
  strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
7222
7145
  };
@@ -7243,39 +7166,38 @@ var searchController = ({
7243
7166
  [searchMap]
7244
7167
  );
7245
7168
  useEffect16(() => {
7246
- setSelectedTags(null);
7247
7169
  setTagSearch(searchMap);
7248
7170
  }, [searchMap]);
7249
7171
  const handleAddTagSearch = (tag) => {
7250
7172
  const {
7251
- domain,
7173
+ domain: domain2,
7252
7174
  groupIndex,
7253
7175
  value,
7254
7176
  type,
7255
7177
  title,
7256
- context,
7178
+ context: context2,
7257
7179
  active,
7258
7180
  dataIndex
7259
7181
  } = tag;
7260
- const domainFormat = new domainHelper2.Domain(domain);
7182
+ const domainFormat = new domainHelper2.Domain(domain2);
7261
7183
  if (type === SearchType.FILTER) {
7262
7184
  addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
7263
7185
  ...tag,
7264
- domain: domain ? domainFormat.toList(context) : null
7186
+ domain: domain2 ? domainFormat.toList(context2) : null
7265
7187
  });
7266
7188
  } else if (type === SearchType.SEARCH) {
7267
7189
  addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
7268
7190
  ...tag,
7269
- domain: domain ? domainFormat.toList({
7270
- ...context,
7191
+ domain: domain2 ? domainFormat.toList({
7192
+ ...context2,
7271
7193
  self: value
7272
7194
  }) : null
7273
7195
  });
7274
7196
  } else if (type === SearchType.GROUP) {
7275
7197
  addSearchItems(`${SearchType.GROUP}`, {
7276
7198
  ...tag,
7277
- domain: domain ? domainFormat.toList({
7278
- context,
7199
+ domain: domain2 ? domainFormat.toList({
7200
+ context: context2,
7279
7201
  self: value
7280
7202
  }) : null
7281
7203
  });
@@ -7295,7 +7217,8 @@ var searchController = ({
7295
7217
  removeSearchItems,
7296
7218
  onSearchString: onChangeSearchInput,
7297
7219
  handleAddTagSearch,
7298
- domain: formatDomain()
7220
+ domain: formatDomain(),
7221
+ context: contextSearch
7299
7222
  };
7300
7223
  };
7301
7224
  export {