@fctc/widget-logic 1.10.6 → 2.0.2

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 useState7 } from "react";
4094
+ import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState8 } from "react";
4095
4095
 
4096
4096
  // src/hooks.ts
4097
4097
  var hooks_exports = {};
@@ -4106,6 +4106,7 @@ __export(hooks_exports, {
4106
4106
  useDetail: () => useDetail,
4107
4107
  useListData: () => useListData,
4108
4108
  useMenu: () => useMenu,
4109
+ useMenuItem: () => useMenuItem,
4109
4110
  useProfile: () => useProfile,
4110
4111
  useUser: () => useUser,
4111
4112
  useViewV2: () => useViewV2
@@ -4888,6 +4889,68 @@ var useAppProvider = () => {
4888
4889
  return context;
4889
4890
  };
4890
4891
 
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
+
4891
4954
  // src/hooks/utils/use-click-outside.ts
4892
4955
  import { useEffect as useEffect8, useRef as useRef3 } from "react";
4893
4956
  var DEFAULT_EVENTS = ["mousedown", "touchstart"];
@@ -4920,9 +4983,9 @@ var useClickOutside = ({
4920
4983
  };
4921
4984
 
4922
4985
  // src/hooks/utils/use-debounce.ts
4923
- import { useEffect as useEffect9, useState as useState6 } from "react";
4986
+ import { useEffect as useEffect9, useState as useState7 } from "react";
4924
4987
  function useDebounce(value, delay) {
4925
- const [debouncedValue, setDebouncedValue] = useState6(value);
4988
+ const [debouncedValue, setDebouncedValue] = useState7(value);
4926
4989
  useEffect9(() => {
4927
4990
  const handler = setTimeout(() => {
4928
4991
  setDebouncedValue(value);
@@ -4938,26 +5001,6 @@ function useDebounce(value, delay) {
4938
5001
  __reExport(hooks_exports, hooks_star);
4939
5002
  import * as hooks_star from "@fctc/interface-logic/hooks";
4940
5003
 
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
-
4961
5004
  // src/provider.ts
4962
5005
  var provider_exports = {};
4963
5006
  __reExport(provider_exports, provider_star);
@@ -4978,22 +5021,22 @@ var many2oneFieldController = (props) => {
4978
5021
  options: fieldOptions,
4979
5022
  showDetail
4980
5023
  } = props;
4981
- const { env } = (0, provider_exports.useEnv)();
4982
- const [options, setOptions] = useState7([]);
4983
- const [inputValue, setInputValue] = useState7("");
5024
+ const [options, setOptions] = useState8([]);
5025
+ const [inputValue, setInputValue] = useState8("");
4984
5026
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
4985
- const [isShowModalMany2Many, setIsShowModalMany2Many] = useState7(false);
4986
- const [tempSelectedOption, setTempSelectedOption] = useState7(null);
4987
- const [domainModal, setDomainModal] = useState7(null);
4988
- const [domainObject, setDomainObject] = useState7(null);
5027
+ const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
5028
+ const [tempSelectedOption, setTempSelectedOption] = useState8(null);
5029
+ const [domainModal, setDomainModal] = useState8(null);
5030
+ const [domainObject, setDomainObject] = useState8(null);
4989
5031
  const actionData = sessionStorageUtils.getActionData();
4990
5032
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5033
+ const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
4991
5034
  const initValue = methods?.getValues(name);
4992
5035
  const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
4993
5036
  const contextObject = {
4994
5037
  ...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
4995
5038
  ...fieldContext,
4996
- ...env?.context
5039
+ ...context
4997
5040
  };
4998
5041
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
4999
5042
  const data = {
@@ -5137,13 +5180,13 @@ var many2oneFieldController = (props) => {
5137
5180
  };
5138
5181
 
5139
5182
  // src/widget/basic/many2one-button-field/controller.ts
5140
- import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
5183
+ import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5141
5184
  import { useGetSelection } from "@fctc/interface-logic/hooks";
5142
5185
  import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
5143
5186
  var many2oneButtonController = (props) => {
5144
5187
  const { domain, methods, relation } = props;
5145
5188
  const actionDataString = sessionStorage.getItem("actionData");
5146
- const env = getEnv6();
5189
+ const env = getEnv7();
5147
5190
  const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
5148
5191
  const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
5149
5192
  const { data: dataOfSelection } = useGetSelection({
@@ -5164,10 +5207,16 @@ var many2oneButtonController = (props) => {
5164
5207
  };
5165
5208
 
5166
5209
  // src/widget/basic/many2many-field/controller.ts
5167
- import { useEffect as useEffect11, useMemo as useMemo10, useState as useState8 } from "react";
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";
5168
5218
  import {
5169
5219
  evalJSONContext as evalJSONContext4,
5170
- evalJSONDomain as evalJSONDomain4,
5171
5220
  formatSortingString as formatSortingString2
5172
5221
  } from "@fctc/interface-logic/utils";
5173
5222
  var many2manyFieldController = (props) => {
@@ -5175,44 +5224,45 @@ var many2manyFieldController = (props) => {
5175
5224
  relation,
5176
5225
  domain,
5177
5226
  context,
5178
- options,
5179
5227
  tab,
5228
+ model,
5229
+ aid,
5180
5230
  setSelectedRowKeys: setSelectedRowKeys4,
5231
+ fields,
5232
+ setFields,
5181
5233
  groupByDomain,
5182
- enabled: enabledCallAPI,
5183
- actionData
5234
+ page,
5235
+ options,
5236
+ sessionStorageUtils
5184
5237
  } = props;
5238
+ const appDispatch = useAppDispatch5();
5239
+ const actionData = sessionStorageUtils.getActionData();
5240
+ const [debouncedPage] = useDebounce(page, 500);
5241
+ const [order, setOrder] = useState9();
5242
+ const [isLoadedData, setIsLoadedData] = useState9(false);
5243
+ const [domainMany2Many, setDomainMany2Many] = useState9(domain);
5185
5244
  const { env } = (0, provider_exports.useEnv)();
5186
5245
  const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
5187
- const [order, setOrder] = useState8();
5188
- const [isLoadedData, setIsLoadedData] = useState8(false);
5189
- const [page, setPage] = useState8(0);
5190
- const [domainMany2Many, setDomainMany2Many] = useState8(null);
5191
- const [debouncedPage] = useDebounce(page, 500);
5192
- const contextObject = {
5193
- ...env.context,
5194
- ...context || {}
5195
- };
5196
5246
  const viewParams = {
5197
5247
  model: relation,
5198
5248
  views: [
5199
5249
  [false, "list"],
5200
5250
  [false, "search"]
5201
5251
  ],
5202
- context: contextObject
5252
+ context
5203
5253
  };
5204
- const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
5254
+ const { data: viewResponse } = useGetView2(viewParams, actionData);
5205
5255
  const baseModel = useMemo10(
5206
5256
  () => ({
5207
5257
  name: String(relation),
5208
5258
  view: viewResponse || {},
5209
- actContext: contextObject,
5259
+ actContext: context,
5210
5260
  fields: [
5211
5261
  ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5212
5262
  ...tab?.fields ? tab.fields : []
5213
5263
  ]
5214
5264
  }),
5215
- [relation, viewResponse]
5265
+ [model, viewResponse]
5216
5266
  );
5217
5267
  const initModel = (0, hooks_exports.useModel)();
5218
5268
  const modelInstance = useMemo10(() => {
@@ -5231,15 +5281,26 @@ var many2manyFieldController = (props) => {
5231
5281
  const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
5232
5282
  const fetchData = async () => {
5233
5283
  try {
5234
- const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
5235
- setDomainMany2Many(domainParse);
5236
- setPage(0);
5284
+ setDomainMany2Many(domain);
5285
+ appDispatch(setFirstDomain(domain));
5286
+ appDispatch(setViewDataStore(viewResponse));
5287
+ const modalData = viewResponse?.views?.list?.fields.map((field) => ({
5288
+ ...viewResponse?.models?.[String(model)]?.[field?.name],
5289
+ ...field
5290
+ }));
5291
+ if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
5292
+ setFields({
5293
+ ...fields,
5294
+ [`${aid}_${relation}_popupmany2many`]: modalData
5295
+ });
5296
+ }
5297
+ appDispatch(setPage(0));
5237
5298
  } catch (err) {
5238
5299
  console.log(err);
5239
5300
  }
5240
5301
  };
5241
5302
  const queryKey = [
5242
- `view-${relation}`,
5303
+ `view-${relation}-${aid}`,
5243
5304
  specification,
5244
5305
  domainMany2Many,
5245
5306
  debouncedPage,
@@ -5252,16 +5313,16 @@ var many2manyFieldController = (props) => {
5252
5313
  domain: domainMany2Many,
5253
5314
  offset: debouncedPage * 10,
5254
5315
  limit: 10,
5255
- context: contextObject,
5316
+ context,
5256
5317
  fields: groupByDomain?.fields,
5257
5318
  groupby: [groupByDomain?.contexts[0]?.group_by],
5258
5319
  sort: order ? order : default_order ? formatSortingString2(default_order) : ""
5259
5320
  };
5260
- const enabled = enabledCallAPI && isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5321
+ const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
5261
5322
  const {
5262
5323
  data: dataResponse,
5263
- isLoading,
5264
- isFetched,
5324
+ isLoading: isDataLoading,
5325
+ isFetched: isDataResponseFetched,
5265
5326
  isPlaceholderData
5266
5327
  } = useGetListData3(data, queryKey, enabled);
5267
5328
  useEffect11(() => {
@@ -5269,65 +5330,76 @@ var many2manyFieldController = (props) => {
5269
5330
  fetchData();
5270
5331
  }
5271
5332
  return () => {
5272
- setPage(0);
5333
+ appDispatch(setGroupByDomain(null));
5334
+ setFields((prevFields) => ({
5335
+ ...prevFields,
5336
+ [`${aid}_${relation}_popupmany2many`]: null
5337
+ }));
5338
+ appDispatch(setPage(0));
5273
5339
  setSelectedRowKeys4([]);
5274
5340
  setDomainMany2Many(null);
5275
5341
  setIsLoadedData(false);
5276
5342
  };
5277
5343
  }, [viewResponse]);
5278
- const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
5344
+ const { rows, columns, typeTable } = tableController({
5279
5345
  data: {
5280
- fields: viewResponse?.views?.list?.fields,
5346
+ fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
5281
5347
  records: dataResponse?.records ?? dataResponse?.groups,
5282
5348
  dataModel: viewResponse?.models?.[String(relation)],
5283
- context: contextObject,
5349
+ context: { ...env.context, ...context },
5284
5350
  typeTable: dataResponse?.groups ? "group" : "list"
5285
5351
  }
5286
5352
  });
5287
- const searchControllers = searchController({
5288
- viewData: viewResponse,
5289
- model: relation ?? "",
5290
- context: contextObject,
5291
- domain: domainMany2Many,
5292
- fieldsList: [
5293
- ...columns?.filter(
5294
- (col) => col?.field?.type_co === "field" && col?.optional !== "hide"
5295
- )?.map((col) => ({ ...col.field })) ?? []
5296
- ]
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
5297
5366
  });
5367
+ useEffect11(() => {
5368
+ if (isSuccess && dataFormViewResponse) {
5369
+ sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
5370
+ window.location.href = `/form/menu?model=${relation}`;
5371
+ }
5372
+ }, [isSuccess]);
5298
5373
  useEffect11(() => {
5299
5374
  if (domainMany2Many && !isLoadedData) {
5300
5375
  setIsLoadedData(true);
5301
5376
  }
5302
5377
  }, [domainMany2Many]);
5303
5378
  const handleCreateNewOnPage = async () => {
5379
+ try {
5380
+ refetch();
5381
+ } catch (error) {
5382
+ console.log(error);
5383
+ }
5304
5384
  };
5305
5385
  return {
5306
5386
  handleCreateNewOnPage,
5307
5387
  optionsObject,
5308
- totalRows: dataResponse?.length ?? 0,
5309
5388
  rows,
5310
5389
  columns,
5311
- onToggleColumnOptional,
5312
5390
  typeTable,
5313
- isLoading,
5314
- isFetched,
5315
- isPlaceholderData,
5316
- setPage,
5317
- page,
5318
- viewData: viewResponse,
5319
- domain: domainMany2Many,
5320
- setDomain: setDomainMany2Many,
5321
- searchController: searchControllers
5391
+ isDataLoading,
5392
+ isDataResponseFetched,
5393
+ isPlaceholderData
5322
5394
  };
5323
5395
  };
5324
5396
 
5325
5397
  // src/widget/basic/many2many-tags-field/controller.ts
5326
5398
  import { useMemo as useMemo11 } from "react";
5327
5399
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5328
- import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5400
+ import { getEnv as getEnv8 } from "@fctc/interface-logic/environment";
5329
5401
  import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5330
- import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5402
+ import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5331
5403
  var many2manyTagsController = (props) => {
5332
5404
  const {
5333
5405
  relation,
@@ -5338,10 +5410,10 @@ var many2manyTagsController = (props) => {
5338
5410
  placeholderNoOption
5339
5411
  } = props;
5340
5412
  const isUser = relation === "res.users" || relation === "res.partner";
5341
- const env = getEnv7();
5413
+ const env = getEnv8();
5342
5414
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5343
5415
  const domainObject = useMemo11(
5344
- () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5416
+ () => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
5345
5417
  [domain, formValues]
5346
5418
  );
5347
5419
  const data = {
@@ -5383,8 +5455,8 @@ var many2manyTagsController = (props) => {
5383
5455
  };
5384
5456
 
5385
5457
  // src/widget/basic/status-bar-field/controller.ts
5386
- import { useState as useState9 } from "react";
5387
- import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5458
+ import { useState as useState10 } from "react";
5459
+ import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5388
5460
  var durationController = (props) => {
5389
5461
  const { relation, domain, formValues, name, id, model, onRefetch } = props;
5390
5462
  const specification = {
@@ -5394,13 +5466,13 @@ var durationController = (props) => {
5394
5466
  };
5395
5467
  const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
5396
5468
  const { env } = (0, provider_exports.useEnv)();
5397
- const [disabled, setDisabled] = useState9(false);
5398
- const [modelStatus, setModalStatus] = useState9(false);
5469
+ const [disabled, setDisabled] = useState10(false);
5470
+ const [modelStatus, setModalStatus] = useState10(false);
5399
5471
  const queryKey = [`data-status-duration`, specification];
5400
5472
  const listDataProps = {
5401
5473
  model: relation,
5402
5474
  specification,
5403
- domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
5475
+ domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
5404
5476
  limit: 10,
5405
5477
  offset: 0,
5406
5478
  fields: "",
@@ -5501,10 +5573,10 @@ var priorityFieldController = (props) => {
5501
5573
  };
5502
5574
 
5503
5575
  // src/widget/basic/download-file-field/controller.ts
5504
- import { useId, useState as useState10 } from "react";
5576
+ import { useId, useState as useState11 } from "react";
5505
5577
  var downloadFileController = () => {
5506
5578
  const inputId = useId();
5507
- const [file, setFile] = useState10(null);
5579
+ const [file, setFile] = useState11(null);
5508
5580
  const handleFileChange = (e) => {
5509
5581
  setFile(e.target.files[0]);
5510
5582
  };
@@ -6436,11 +6508,11 @@ var dateFieldController = (props) => {
6436
6508
  };
6437
6509
 
6438
6510
  // src/widget/basic/copy-link-button/controller.ts
6439
- import { useState as useState11 } from "react";
6511
+ import { useState as useState12 } from "react";
6440
6512
  import { copyTextToClipboard } from "@fctc/interface-logic/utils";
6441
6513
  var copyLinkButtonController = (props) => {
6442
6514
  const { value, defaultValue } = props;
6443
- const [isCopied, setIsCopied] = useState11(false);
6515
+ const [isCopied, setIsCopied] = useState12(false);
6444
6516
  const handleCopyToClipboard = async (value2) => {
6445
6517
  await copyTextToClipboard(value2);
6446
6518
  setIsCopied(true);
@@ -6488,14 +6560,14 @@ var colorFieldController = (props) => {
6488
6560
  };
6489
6561
 
6490
6562
  // src/widget/basic/binary-field/controller.ts
6491
- import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
6563
+ import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
6492
6564
  import { isBase64Image } from "@fctc/interface-logic/utils";
6493
6565
  var binaryFieldController = (props) => {
6494
6566
  const { name, methods, readonly = false, value } = props;
6495
6567
  const inputId = useId2();
6496
- const [selectedImage, setSelectedImage] = useState12(null);
6497
- const [initialImage, setInitialImage] = useState12(value || null);
6498
- const [isInsideTable, setIsInsideTable] = useState12(false);
6568
+ const [selectedImage, setSelectedImage] = useState13(null);
6569
+ const [initialImage, setInitialImage] = useState13(value || null);
6570
+ const [isInsideTable, setIsInsideTable] = useState13(false);
6499
6571
  const { setValue } = methods;
6500
6572
  const binaryRef = useRef4(null);
6501
6573
  const convertUrlToBase64 = async (url) => {
@@ -6586,7 +6658,7 @@ var binaryFieldController = (props) => {
6586
6658
  };
6587
6659
 
6588
6660
  // src/widget/advance/table/table-body/controller.ts
6589
- import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
6661
+ import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
6590
6662
  import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
6591
6663
  var tableBodyController = (props) => {
6592
6664
  const {
@@ -6599,7 +6671,7 @@ var tableBodyController = (props) => {
6599
6671
  selectedRowKeysRef,
6600
6672
  onClickRow
6601
6673
  } = props;
6602
- const appDispatch = useAppDispatch5();
6674
+ const appDispatch = useAppDispatch6();
6603
6675
  const checked = useMemo12(() => {
6604
6676
  if (!row?.id) return false;
6605
6677
  if (selectedRowKeys?.includes(row.id)) {
@@ -6654,14 +6726,14 @@ var tableBodyController = (props) => {
6654
6726
 
6655
6727
  // src/widget/advance/table/table-head/controller.ts
6656
6728
  import {
6657
- useAppDispatch as useAppDispatch6,
6729
+ useAppDispatch as useAppDispatch7,
6658
6730
  useAppSelector as useAppSelector4,
6659
6731
  selectSearch as selectSearch3,
6660
6732
  setSelectedRowKeys as setSelectedRowKeys2
6661
6733
  } from "@fctc/interface-logic/store";
6662
6734
  var tableHeadController = (props) => {
6663
6735
  const { typeTable, rows, selectedRowKeysRef } = props;
6664
- const appDispatch = useAppDispatch6();
6736
+ const appDispatch = useAppDispatch7();
6665
6737
  const { groupByDomain } = useAppSelector4(selectSearch3);
6666
6738
  const handleCheckBoxAll = (event) => {
6667
6739
  if (event?.target?.checked && typeTable === "list") {
@@ -6695,7 +6767,7 @@ var tableHeadController = (props) => {
6695
6767
  };
6696
6768
 
6697
6769
  // src/widget/advance/table/table-view/controller.ts
6698
- import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState13 } from "react";
6770
+ import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState14 } from "react";
6699
6771
  import {
6700
6772
  useAppSelector as useAppSelector5,
6701
6773
  selectSearch as selectSearch4,
@@ -6703,8 +6775,8 @@ import {
6703
6775
  } from "@fctc/interface-logic/store";
6704
6776
  import { domainHelper } from "@fctc/interface-logic/utils";
6705
6777
  var tableController = ({ data }) => {
6706
- const [rows, setRows] = useState13(data.records || []);
6707
- const [columns, setColumns] = useState13([]);
6778
+ const [rows, setRows] = useState14(data.records || []);
6779
+ const [columns, setColumns] = useState14([]);
6708
6780
  const dataModelFields = data.fields?.map((field) => {
6709
6781
  return {
6710
6782
  ...data.dataModel?.[field?.name],
@@ -6778,7 +6850,7 @@ var tableController = ({ data }) => {
6778
6850
  };
6779
6851
 
6780
6852
  // src/widget/advance/table/table-group/controller.ts
6781
- import { useEffect as useEffect15, useMemo as useMemo14, useState as useState14 } from "react";
6853
+ import { useEffect as useEffect15, useMemo as useMemo14, useState as useState15 } from "react";
6782
6854
  import {
6783
6855
  useOdooDataTransform,
6784
6856
  useGetListData as useGetListData2
@@ -6787,7 +6859,7 @@ import {
6787
6859
  useAppSelector as useAppSelector6,
6788
6860
  selectSearch as selectSearch5,
6789
6861
  selectList as selectList4,
6790
- useAppDispatch as useAppDispatch7,
6862
+ useAppDispatch as useAppDispatch8,
6791
6863
  setSelectedRowKeys as setSelectedRowKeys3
6792
6864
  } from "@fctc/interface-logic/store";
6793
6865
 
@@ -6817,14 +6889,14 @@ var tableGroupController = (props) => {
6817
6889
  setIsAutoSelect,
6818
6890
  selectedRowKeysRef
6819
6891
  } = props;
6820
- const [pageGroup, setPageGroup] = useState14(0);
6892
+ const [pageGroup, setPageGroup] = useState15(0);
6821
6893
  const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
6822
6894
  const { selectedRowKeys } = useAppSelector6(selectList4);
6823
- const appDispatch = useAppDispatch7();
6895
+ const appDispatch = useAppDispatch8();
6824
6896
  const { toDataJS } = useOdooDataTransform();
6825
6897
  const initVal = toDataJS(row, viewData, model);
6826
- const [isShowGroup, setIsShowGroup] = useState14(false);
6827
- const [colEmptyGroup, setColEmptyGroup] = useState14({
6898
+ const [isShowGroup, setIsShowGroup] = useState15(false);
6899
+ const [colEmptyGroup, setColEmptyGroup] = useState15({
6828
6900
  fromStart: 1,
6829
6901
  fromEnd: 1
6830
6902
  });
@@ -6961,28 +7033,26 @@ var import_moment2 = __toESM(require_moment());
6961
7033
  import { SearchType } from "@fctc/interface-logic/constants";
6962
7034
  import {
6963
7035
  domainHelper as domainHelper2,
6964
- evalJSONContext as evalJSONContext8,
6965
- evalJSONDomain as evalJSONDomain7,
7036
+ evalJSONDomain as evalJSONDomain6,
6966
7037
  validateAndParseDate
6967
7038
  } from "@fctc/interface-logic/utils";
6968
- import { useCallback as useCallback3, useEffect as useEffect16, useState as useState15 } from "react";
7039
+ import { useCallback as useCallback3, useEffect as useEffect16, useState as useState16 } from "react";
6969
7040
  var searchController = ({
6970
7041
  viewData,
6971
- model,
6972
- domain,
6973
- context,
6974
- fieldsList
7042
+ actionData,
7043
+ fieldsList,
7044
+ contextSearch,
7045
+ setSearchMap,
7046
+ searchMap
6975
7047
  }) => {
6976
- const { env } = (0, provider_exports.useEnv)();
6977
- const [filterBy, setFilterBy] = useState15(null);
6978
- const [searchBy, setSearchBy] = useState15(null);
6979
- const [groupBy, setGroupBy] = useState15(null);
6980
- const [selectedTags, setSelectedTags] = useState15(null);
6981
- const [searchString, setSearchString] = useState15("");
6982
- const [searchMap, setSearchMap] = useState15({});
6983
- const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
6984
- const contextSearch = { ...env.context, ...actionContext };
6985
- const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
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;
6986
7056
  const clearSearch = () => {
6987
7057
  setFilterBy([]);
6988
7058
  setGroupBy([]);
@@ -7027,8 +7097,9 @@ var searchController = ({
7027
7097
  }
7028
7098
  };
7029
7099
  useEffect16(() => {
7100
+ clearSearch();
7030
7101
  fetchData();
7031
- }, [model, viewData]);
7102
+ }, [aid, model, viewData]);
7032
7103
  const onChangeSearchInput = (search_string) => {
7033
7104
  setSearchString(search_string);
7034
7105
  };
@@ -7065,27 +7136,27 @@ var searchController = ({
7065
7136
  };
7066
7137
  const formatDomain = () => {
7067
7138
  if (domainAction) {
7068
- const domain2 = [];
7139
+ const domain = [];
7069
7140
  if (domainAction?.length > 0) {
7070
7141
  if (Object.keys(searchMap).length > 0) {
7071
- domain2.push("&");
7142
+ domain.push("&");
7072
7143
  }
7073
7144
  domainAction.forEach((domainItem) => {
7074
- domain2.push(domainItem);
7145
+ domain.push(domainItem);
7075
7146
  });
7076
7147
  }
7077
7148
  Object.keys(searchMap).forEach((key, keyIndex, keys) => {
7078
7149
  if (!key?.includes(SearchType.GROUP)) {
7079
7150
  if (keys.length > 1 && keyIndex < keys.length - 1) {
7080
- domain2.push("&");
7151
+ domain.push("&");
7081
7152
  }
7082
7153
  const valuesOfKey = searchMap[key];
7083
7154
  valuesOfKey.forEach((value, index) => {
7084
7155
  if (index < valuesOfKey.length - 1) {
7085
- domain2.push("|");
7156
+ domain.push("|");
7086
7157
  }
7087
7158
  if (value.domain) {
7088
- domain2.push(...value.domain);
7159
+ domain.push(...value.domain);
7089
7160
  return;
7090
7161
  }
7091
7162
  let valueDomainItem = value?.value;
@@ -7101,11 +7172,11 @@ var searchController = ({
7101
7172
  }
7102
7173
  }
7103
7174
  const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
7104
- domain2.push([value.name, operator, valueDomainItem]);
7175
+ domain.push([value.name, operator, valueDomainItem]);
7105
7176
  });
7106
7177
  }
7107
7178
  });
7108
- return [...domain2];
7179
+ return [...domain];
7109
7180
  }
7110
7181
  };
7111
7182
  const setTagSearch = useCallback3(
@@ -7136,16 +7207,16 @@ var searchController = ({
7136
7207
  const contexts = [];
7137
7208
  let groupValues = [];
7138
7209
  objValues?.forEach((objValue) => {
7139
- const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7210
+ const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
7140
7211
  const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
7141
7212
  contexts.push(
7142
- ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
7213
+ ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({ group_by: item })) : [context]
7143
7214
  );
7144
7215
  groupValues[indexAppend] = {
7145
7216
  contexts: [
7146
- ...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
7217
+ ...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({
7147
7218
  group_by: item
7148
- })) : [context2]
7219
+ })) : [context]
7149
7220
  ],
7150
7221
  strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
7151
7222
  };
@@ -7177,34 +7248,34 @@ var searchController = ({
7177
7248
  }, [searchMap]);
7178
7249
  const handleAddTagSearch = (tag) => {
7179
7250
  const {
7180
- domain: domain2,
7251
+ domain,
7181
7252
  groupIndex,
7182
7253
  value,
7183
7254
  type,
7184
7255
  title,
7185
- context: context2,
7256
+ context,
7186
7257
  active,
7187
7258
  dataIndex
7188
7259
  } = tag;
7189
- const domainFormat = new domainHelper2.Domain(domain2);
7260
+ const domainFormat = new domainHelper2.Domain(domain);
7190
7261
  if (type === SearchType.FILTER) {
7191
7262
  addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
7192
7263
  ...tag,
7193
- domain: domain2 ? domainFormat.toList(context2) : null
7264
+ domain: domain ? domainFormat.toList(context) : null
7194
7265
  });
7195
7266
  } else if (type === SearchType.SEARCH) {
7196
7267
  addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
7197
7268
  ...tag,
7198
- domain: domain2 ? domainFormat.toList({
7199
- ...context2,
7269
+ domain: domain ? domainFormat.toList({
7270
+ ...context,
7200
7271
  self: value
7201
7272
  }) : null
7202
7273
  });
7203
7274
  } else if (type === SearchType.GROUP) {
7204
7275
  addSearchItems(`${SearchType.GROUP}`, {
7205
7276
  ...tag,
7206
- domain: domain2 ? domainFormat.toList({
7207
- context: context2,
7277
+ domain: domain ? domainFormat.toList({
7278
+ context,
7208
7279
  self: value
7209
7280
  }) : null
7210
7281
  });
@@ -7224,8 +7295,7 @@ var searchController = ({
7224
7295
  removeSearchItems,
7225
7296
  onSearchString: onChangeSearchInput,
7226
7297
  handleAddTagSearch,
7227
- domain: formatDomain(),
7228
- context: contextSearch
7298
+ domain: formatDomain()
7229
7299
  };
7230
7300
  };
7231
7301
  export {