@fctc/widget-logic 2.0.9 → 2.1.0

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
@@ -4072,7 +4072,6 @@ __export(index_exports, {
4072
4072
  searchController: () => searchController,
4073
4073
  setStorageItemAsync: () => setStorageItemAsync,
4074
4074
  statusDropdownController: () => statusDropdownController,
4075
- tableBodyController: () => tableBodyController,
4076
4075
  tableController: () => tableController,
4077
4076
  tableGroupController: () => tableGroupController,
4078
4077
  tableHeadController: () => tableHeadController,
@@ -4086,6 +4085,7 @@ __export(index_exports, {
4086
4085
  useGetRowIds: () => useGetRowIds,
4087
4086
  useListData: () => useListData,
4088
4087
  useMenu: () => useMenu,
4088
+ useMenuItem: () => useMenuItem,
4089
4089
  useProfile: () => useProfile,
4090
4090
  useSelectionState: () => useSelectionState,
4091
4091
  useStorageState: () => useStorageState,
@@ -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 getEnv5 } from "@fctc/interface-logic/environment";
4894
+ import { useGetActionDetail } from "@fctc/interface-logic/hooks";
4895
+ import { useState as useState5 } 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 = getEnv5().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] = useState5("");
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 useEffect7, useRef as useRef2 } 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 useEffect8, useState as useState5 } from "react";
4986
+ import { useEffect as useEffect8, useState as useState6 } from "react";
4924
4987
  function useDebounce(value, delay) {
4925
- const [debouncedValue, setDebouncedValue] = useState5(value);
4988
+ const [debouncedValue, setDebouncedValue] = useState6(value);
4926
4989
  useEffect8(() => {
4927
4990
  const handler = setTimeout(() => {
4928
4991
  setDebouncedValue(value);
@@ -5180,18 +5243,18 @@ var ChevronBottomIcon = ({
5180
5243
  };
5181
5244
 
5182
5245
  // src/widget/basic/status-dropdown-field/controller.ts
5183
- import { useEffect as useEffect9, useRef as useRef3, useState as useState6 } from "react";
5184
- import { getEnv as getEnv5 } from "@fctc/interface-logic/environment";
5246
+ import { useEffect as useEffect9, useRef as useRef3, useState as useState7 } from "react";
5247
+ import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
5185
5248
  import { useSave } from "@fctc/interface-logic/hooks";
5186
5249
  var statusDropdownController = (props) => {
5187
5250
  const { selection, isForm, id, model, name, state, onRefetch } = props;
5188
- const env = getEnv5();
5251
+ const env = getEnv6();
5189
5252
  const colors = {
5190
5253
  normal: "bg-[#e9ecef]",
5191
5254
  done: "bg-primary",
5192
5255
  blocked: "bg-red-500"
5193
5256
  };
5194
- const [isOpen, setIsOpen] = useState6(false);
5257
+ const [isOpen, setIsOpen] = useState7(false);
5195
5258
  const buttonRef = useRef3(null);
5196
5259
  useEffect9(() => {
5197
5260
  const handleClickOutside = (event) => {
@@ -5234,27 +5297,7 @@ var statusDropdownController = (props) => {
5234
5297
  };
5235
5298
 
5236
5299
  // src/widget/basic/many2one-field/controller.ts
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";
5300
+ import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState8 } from "react";
5258
5301
 
5259
5302
  // src/provider.ts
5260
5303
  var provider_exports = {};
@@ -5277,13 +5320,13 @@ var many2oneFieldController = (props) => {
5277
5320
  showDetail
5278
5321
  } = props;
5279
5322
  const { env } = (0, provider_exports.useEnv)();
5280
- const [options, setOptions] = useState7([]);
5281
- const [inputValue, setInputValue] = useState7("");
5323
+ const [options, setOptions] = useState8([]);
5324
+ const [inputValue, setInputValue] = useState8("");
5282
5325
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
5283
- const [isShowModalMany2Many, setIsShowModalMany2Many] = useState7(false);
5284
- const [tempSelectedOption, setTempSelectedOption] = useState7(null);
5285
- const [domainModal, setDomainModal] = useState7(null);
5286
- const [domainObject, setDomainObject] = useState7(null);
5326
+ const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
5327
+ const [tempSelectedOption, setTempSelectedOption] = useState8(null);
5328
+ const [domainModal, setDomainModal] = useState8(null);
5329
+ const [domainObject, setDomainObject] = useState8(null);
5287
5330
  const actionData = sessionStorageUtils.getActionData();
5288
5331
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5289
5332
  const initValue = methods?.getValues(name);
@@ -5293,7 +5336,7 @@ var many2oneFieldController = (props) => {
5293
5336
  ...fieldContext,
5294
5337
  ...env?.context
5295
5338
  };
5296
- const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5339
+ const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5297
5340
  const data = {
5298
5341
  model: relation,
5299
5342
  domain: domainObject,
@@ -5309,7 +5352,7 @@ var many2oneFieldController = (props) => {
5309
5352
  data: dataOfSelection,
5310
5353
  refetch,
5311
5354
  isFetching
5312
- } = useGetSelection3({
5355
+ } = useGetSelection2({
5313
5356
  data,
5314
5357
  queryKey,
5315
5358
  enabled: false
@@ -5435,13 +5478,13 @@ var many2oneFieldController = (props) => {
5435
5478
  };
5436
5479
 
5437
5480
  // src/widget/basic/many2one-button-field/controller.ts
5438
- import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
5481
+ import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5439
5482
  import { useGetSelection } from "@fctc/interface-logic/hooks";
5440
5483
  import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
5441
5484
  var many2oneButtonController = (props) => {
5442
5485
  const { domain, methods, relation } = props;
5443
5486
  const actionDataString = sessionStorage.getItem("actionData");
5444
- const env = getEnv6();
5487
+ const env = getEnv7();
5445
5488
  const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
5446
5489
  const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
5447
5490
  const { data: dataOfSelection } = useGetSelection({
@@ -5462,7 +5505,7 @@ var many2oneButtonController = (props) => {
5462
5505
  };
5463
5506
 
5464
5507
  // src/widget/basic/many2many-field/controller.ts
5465
- import { useEffect as useEffect11, useMemo as useMemo10, useState as useState8 } from "react";
5508
+ import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
5466
5509
  import {
5467
5510
  evalJSONContext as evalJSONContext4,
5468
5511
  evalJSONDomain as evalJSONDomain4,
@@ -5475,16 +5518,16 @@ var many2manyFieldController = (props) => {
5475
5518
  context,
5476
5519
  options,
5477
5520
  tab,
5478
- setSelectedRowKeys: setSelectedRowKeys4,
5521
+ setSelectedRowKeys: setSelectedRowKeys3,
5479
5522
  groupByDomain,
5480
5523
  enabled: enabledCallAPI,
5481
5524
  actionData
5482
5525
  } = props;
5483
5526
  const { env } = (0, provider_exports.useEnv)();
5484
5527
  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);
5528
+ const [order, setOrder] = useState9();
5529
+ const [page, setPage] = useState9(0);
5530
+ const [domainMany2Many, setDomainMany2Many] = useState9(null);
5488
5531
  const [debouncedPage] = useDebounce(page, 500);
5489
5532
  const contextObject = {
5490
5533
  ...env.context,
@@ -5567,7 +5610,7 @@ var many2manyFieldController = (props) => {
5567
5610
  }
5568
5611
  return () => {
5569
5612
  setPage(0);
5570
- setSelectedRowKeys4([]);
5613
+ setSelectedRowKeys3([]);
5571
5614
  setDomainMany2Many(null);
5572
5615
  };
5573
5616
  }, [viewResponse]);
@@ -5616,8 +5659,6 @@ var many2manyFieldController = (props) => {
5616
5659
  // src/widget/basic/many2many-tags-field/controller.ts
5617
5660
  import { useMemo as useMemo11 } from "react";
5618
5661
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5619
- import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5620
- import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5621
5662
  import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5622
5663
  var many2manyTagsController = (props) => {
5623
5664
  const {
@@ -5629,7 +5670,8 @@ var many2manyTagsController = (props) => {
5629
5670
  placeholderNoOption
5630
5671
  } = props;
5631
5672
  const isUser = relation === "res.users" || relation === "res.partner";
5632
- const env = getEnv7();
5673
+ const { env } = (0, provider_exports.useEnv)();
5674
+ const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
5633
5675
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5634
5676
  const domainObject = useMemo11(
5635
5677
  () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
@@ -5668,16 +5710,15 @@ var many2manyTagsController = (props) => {
5668
5710
  options,
5669
5711
  customNoOptionsMessage,
5670
5712
  tranfer,
5671
- dataOfSelection,
5672
5713
  isUser
5673
5714
  };
5674
5715
  };
5675
5716
 
5676
5717
  // src/widget/basic/status-bar-field/controller.ts
5677
- import { useState as useState9 } from "react";
5718
+ import { useState as useState10 } from "react";
5678
5719
  import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5679
5720
  var durationController = (props) => {
5680
- const { relation, domain, formValues, name, id, model, onRefetch } = props;
5721
+ const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
5681
5722
  const specification = {
5682
5723
  id: 0,
5683
5724
  name: "",
@@ -5685,8 +5726,8 @@ var durationController = (props) => {
5685
5726
  };
5686
5727
  const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
5687
5728
  const { env } = (0, provider_exports.useEnv)();
5688
- const [disabled, setDisabled] = useState9(false);
5689
- const [modelStatus, setModalStatus] = useState9(false);
5729
+ const [disabled, setDisabled] = useState10(false);
5730
+ const [modelStatus, setModalStatus] = useState10(false);
5690
5731
  const queryKey = [`data-status-duration`, specification];
5691
5732
  const listDataProps = {
5692
5733
  model: relation,
@@ -5701,7 +5742,11 @@ var durationController = (props) => {
5701
5742
  },
5702
5743
  sort: ""
5703
5744
  };
5704
- const { data: dataResponse } = useGetListData3(listDataProps, queryKey);
5745
+ const { data: dataResponse } = useGetListData3(
5746
+ listDataProps,
5747
+ queryKey,
5748
+ enabled
5749
+ );
5705
5750
  const { mutate: fetchChangeStatus } = useChangeStatus();
5706
5751
  const handleClick = async (stage_id) => {
5707
5752
  setDisabled(true);
@@ -5737,41 +5782,28 @@ var durationController = (props) => {
5737
5782
  };
5738
5783
 
5739
5784
  // src/widget/basic/priority-field/controller.ts
5740
- import { useSave as useSave2 } from "@fctc/interface-logic/hooks";
5741
5785
  import { evalJSONContext as evalJSONContext6 } from "@fctc/interface-logic/utils";
5742
5786
  var priorityFieldController = (props) => {
5743
- const {
5744
- value,
5745
- isForm,
5746
- name,
5747
- methods,
5748
- onChange,
5749
- model,
5750
- selection,
5751
- id,
5752
- actionData,
5753
- viewData,
5754
- context
5755
- } = props;
5787
+ const { name, model, id, actionData, context, onChange, specification } = props;
5756
5788
  const _context = { ...evalJSONContext6(actionData?.context) };
5757
5789
  const contextObject = { ...context, ..._context };
5758
- const defaultPriority = parseInt(value) + 1;
5759
- const label = viewData?.models?.[model]?.[name ?? ""]?.string ?? name;
5790
+ const { useSave: useSave2 } = (0, provider_exports.useService)();
5760
5791
  const { mutateAsync: fetchSave } = useSave2();
5761
5792
  const savePriorities = async ({
5762
- value: value2,
5793
+ value,
5763
5794
  resetPriority
5764
5795
  }) => {
5765
- const priorityValue = value2 <= 0 ? 0 : value2 - 1;
5796
+ const priorityValue = value <= 0 ? 0 : value - 1;
5766
5797
  try {
5767
5798
  fetchSave({
5768
5799
  ids: id ? [id] : [],
5769
- data: { [name ?? ""]: String(priorityValue) },
5770
- model: model ?? "",
5771
- context: contextObject
5800
+ data: { [String(name)]: String(priorityValue) },
5801
+ model: String(model),
5802
+ context: contextObject,
5803
+ specification
5772
5804
  });
5773
5805
  if (typeof onChange === "function") {
5774
- onChange(name ?? "", String(priorityValue));
5806
+ onChange(String(name), String(priorityValue));
5775
5807
  }
5776
5808
  } catch (error) {
5777
5809
  if (resetPriority) {
@@ -5780,22 +5812,15 @@ var priorityFieldController = (props) => {
5780
5812
  }
5781
5813
  };
5782
5814
  return {
5783
- selection,
5784
- isForm,
5785
- methods,
5786
- defaultPriority,
5787
- savePriorities,
5788
- label,
5789
- id,
5790
- onChange
5815
+ savePriorities
5791
5816
  };
5792
5817
  };
5793
5818
 
5794
5819
  // src/widget/basic/download-file-field/controller.ts
5795
- import { useId, useState as useState10 } from "react";
5820
+ import { useId, useState as useState11 } from "react";
5796
5821
  var downloadFileController = () => {
5797
5822
  const inputId = useId();
5798
- const [file, setFile] = useState10(null);
5823
+ const [file, setFile] = useState11(null);
5799
5824
  const handleFileChange = (e) => {
5800
5825
  setFile(e.target.files[0]);
5801
5826
  };
@@ -6727,11 +6752,11 @@ var dateFieldController = (props) => {
6727
6752
  };
6728
6753
 
6729
6754
  // src/widget/basic/copy-link-button/controller.ts
6730
- import { useState as useState11 } from "react";
6755
+ import { useState as useState12 } from "react";
6731
6756
  import { copyTextToClipboard } from "@fctc/interface-logic/utils";
6732
6757
  var copyLinkButtonController = (props) => {
6733
6758
  const { value, defaultValue } = props;
6734
- const [isCopied, setIsCopied] = useState11(false);
6759
+ const [isCopied, setIsCopied] = useState12(false);
6735
6760
  const handleCopyToClipboard = async (value2) => {
6736
6761
  await copyTextToClipboard(value2);
6737
6762
  setIsCopied(true);
@@ -6750,11 +6775,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
6750
6775
  var colorFieldController = (props) => {
6751
6776
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
6752
6777
  const { env } = (0, provider_exports.useEnv)();
6753
- const { useSave: useSave3 } = (0, provider_exports.useService)();
6778
+ const { useSave: useSave2 } = (0, provider_exports.useService)();
6754
6779
  const _context = { ...evalJSONContext7(actionData?.context) || {} };
6755
6780
  const contextObject = { ...env.context, ..._context };
6756
6781
  const idDefault = isForm ? idForm : formValues?.id;
6757
- const { mutate: onSave } = useSave3();
6782
+ const { mutate: onSave } = useSave2();
6758
6783
  const savePickColor = async (colorObject) => {
6759
6784
  const { id } = colorObject;
6760
6785
  if (value === id) return;
@@ -6779,14 +6804,14 @@ var colorFieldController = (props) => {
6779
6804
  };
6780
6805
 
6781
6806
  // src/widget/basic/binary-field/controller.ts
6782
- import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
6807
+ import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
6783
6808
  import { isBase64Image } from "@fctc/interface-logic/utils";
6784
6809
  var binaryFieldController = (props) => {
6785
6810
  const { name, methods, readonly = false, value } = props;
6786
6811
  const inputId = useId2();
6787
- const [selectedImage, setSelectedImage] = useState12(null);
6788
- const [initialImage, setInitialImage] = useState12(value || null);
6789
- const [isInsideTable, setIsInsideTable] = useState12(false);
6812
+ const [selectedImage, setSelectedImage] = useState13(null);
6813
+ const [initialImage, setInitialImage] = useState13(value || null);
6814
+ const [isInsideTable, setIsInsideTable] = useState13(false);
6790
6815
  const { setValue } = methods;
6791
6816
  const binaryRef = useRef4(null);
6792
6817
  const convertUrlToBase64 = async (url) => {
@@ -6876,108 +6901,41 @@ var binaryFieldController = (props) => {
6876
6901
  };
6877
6902
  };
6878
6903
 
6879
- // src/widget/advance/table/table-body/controller.ts
6880
- import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
6881
- import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
6882
- var tableBodyController = (props) => {
6883
- const {
6884
- checkedAll,
6885
- checkboxRef,
6886
- setIsAutoSelect,
6887
- selectedRowKeys,
6888
- row,
6889
- isAutoSelect,
6890
- selectedRowKeysRef,
6891
- onClickRow
6892
- } = props;
6893
- const appDispatch = useAppDispatch5();
6894
- const checked = useMemo12(() => {
6895
- if (!row?.id) return false;
6896
- if (selectedRowKeys?.includes(row.id)) {
6897
- return true;
6898
- }
6899
- return checkedAll;
6900
- }, [row?.id, selectedRowKeys, checkedAll]);
6901
- const handleCheckBoxSingle = (event) => {
6902
- event.stopPropagation();
6903
- if (checkedAll) {
6904
- checkboxRef.current = "uncheck";
6905
- setIsAutoSelect(true);
6906
- return;
6907
- }
6908
- const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
6909
- console.log("newSelectedRowKeys", newSelectedRowKeys);
6910
- appDispatch(setSelectedRowKeys(newSelectedRowKeys));
6911
- };
6912
- const handleClickRow = (col, row2) => {
6913
- onClickRow(col, row2);
6914
- };
6915
- useEffect13(() => {
6916
- if (!row?.id) return;
6917
- if (isAutoSelect) {
6918
- if (checkboxRef?.current === "uncheck") {
6919
- const filtered = selectedRowKeysRef.current.filter(
6920
- (id) => id !== row.id
6921
- );
6922
- selectedRowKeysRef.current = filtered;
6923
- appDispatch(setSelectedRowKeys(filtered));
6924
- } else {
6925
- const unique = Array.from(
6926
- /* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
6927
- );
6928
- selectedRowKeysRef.current = unique;
6929
- appDispatch(setSelectedRowKeys(unique));
6930
- }
6931
- }
6932
- }, [isAutoSelect]);
6933
- useEffect13(() => {
6934
- if (!checkedAll) {
6935
- checkboxRef.current = "enabled";
6936
- false;
6937
- }
6938
- }, [checkedAll]);
6939
- return {
6940
- handleCheckBoxSingle,
6941
- checked,
6942
- handleClickRow
6943
- };
6944
- };
6945
-
6946
6904
  // src/widget/advance/table/table-head/controller.ts
6947
6905
  import {
6948
- useAppDispatch as useAppDispatch6,
6906
+ useAppDispatch as useAppDispatch5,
6949
6907
  useAppSelector as useAppSelector4,
6950
6908
  selectSearch as selectSearch3,
6951
- setSelectedRowKeys as setSelectedRowKeys2
6909
+ setSelectedRowKeys
6952
6910
  } from "@fctc/interface-logic/store";
6953
6911
  var tableHeadController = (props) => {
6954
6912
  const { typeTable, rows, selectedRowKeysRef } = props;
6955
- const appDispatch = useAppDispatch6();
6913
+ const appDispatch = useAppDispatch5();
6956
6914
  const { groupByDomain } = useAppSelector4(selectSearch3);
6957
6915
  const handleCheckBoxAll = (event) => {
6958
6916
  if (event?.target?.checked && typeTable === "list") {
6959
6917
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
6960
- appDispatch(setSelectedRowKeys2(allRowKeys));
6918
+ appDispatch(setSelectedRowKeys(allRowKeys));
6961
6919
  } else if (event?.target?.checked && typeTable === "group") {
6962
6920
  const rowsIDs = document.querySelectorAll("tr[data-row-id]");
6963
6921
  const ids = Array.from(rowsIDs)?.map(
6964
6922
  (row) => Number(row?.getAttribute("data-row-id"))
6965
6923
  );
6966
6924
  if (ids?.length > 0) {
6967
- appDispatch(setSelectedRowKeys2(ids));
6925
+ appDispatch(setSelectedRowKeys(ids));
6968
6926
  } else {
6969
6927
  const sum = countSum(
6970
6928
  rows,
6971
6929
  typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
6972
6930
  );
6973
6931
  const keys = Array.from({ length: sum }, (_) => void 0);
6974
- appDispatch(setSelectedRowKeys2(keys));
6932
+ appDispatch(setSelectedRowKeys(keys));
6975
6933
  }
6976
6934
  if (selectedRowKeysRef) {
6977
6935
  selectedRowKeysRef.current = [];
6978
6936
  }
6979
6937
  } else {
6980
- appDispatch(setSelectedRowKeys2([]));
6938
+ appDispatch(setSelectedRowKeys([]));
6981
6939
  }
6982
6940
  };
6983
6941
  return {
@@ -6986,7 +6944,7 @@ var tableHeadController = (props) => {
6986
6944
  };
6987
6945
 
6988
6946
  // src/widget/advance/table/table-view/controller.ts
6989
- import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState13 } from "react";
6947
+ import { useEffect as useEffect13, useMemo as useMemo12, useRef as useRef5, useState as useState14 } from "react";
6990
6948
  import {
6991
6949
  useAppSelector as useAppSelector5,
6992
6950
  selectSearch as selectSearch4,
@@ -6994,8 +6952,8 @@ import {
6994
6952
  } from "@fctc/interface-logic/store";
6995
6953
  import { domainHelper } from "@fctc/interface-logic/utils";
6996
6954
  var tableController = ({ data }) => {
6997
- const [rows, setRows] = useState13(data.records || []);
6998
- const [columns, setColumns] = useState13([]);
6955
+ const [rows, setRows] = useState14(data.records || []);
6956
+ const [columns, setColumns] = useState14([]);
6999
6957
  const dataModelFields = data.fields?.map((field) => {
7000
6958
  return {
7001
6959
  ...data.dataModel?.[field?.name],
@@ -7023,7 +6981,7 @@ var tableController = ({ data }) => {
7023
6981
  return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
7024
6982
  });
7025
6983
  };
7026
- useEffect14(() => {
6984
+ useEffect13(() => {
7027
6985
  setRows(transformData(data.records || null));
7028
6986
  }, [data.records]);
7029
6987
  const handleGetColumns = () => {
@@ -7044,7 +7002,7 @@ var tableController = ({ data }) => {
7044
7002
  }
7045
7003
  return cols;
7046
7004
  };
7047
- useEffect14(() => {
7005
+ useEffect13(() => {
7048
7006
  const columns2 = handleGetColumns();
7049
7007
  setColumns(columns2);
7050
7008
  }, [data.records]);
@@ -7069,7 +7027,7 @@ var tableController = ({ data }) => {
7069
7027
  };
7070
7028
 
7071
7029
  // src/widget/advance/table/table-group/controller.ts
7072
- import { useEffect as useEffect15, useMemo as useMemo14, useState as useState14 } from "react";
7030
+ import { useEffect as useEffect14, useMemo as useMemo13, useState as useState15 } from "react";
7073
7031
  import {
7074
7032
  useOdooDataTransform,
7075
7033
  useGetListData as useGetListData2
@@ -7078,8 +7036,8 @@ import {
7078
7036
  useAppSelector as useAppSelector6,
7079
7037
  selectSearch as selectSearch5,
7080
7038
  selectList as selectList4,
7081
- useAppDispatch as useAppDispatch7,
7082
- setSelectedRowKeys as setSelectedRowKeys3
7039
+ useAppDispatch as useAppDispatch6,
7040
+ setSelectedRowKeys as setSelectedRowKeys2
7083
7041
  } from "@fctc/interface-logic/store";
7084
7042
 
7085
7043
  // src/environment.ts
@@ -7108,18 +7066,18 @@ var tableGroupController = (props) => {
7108
7066
  setIsAutoSelect,
7109
7067
  selectedRowKeysRef
7110
7068
  } = props;
7111
- const [pageGroup, setPageGroup] = useState14(0);
7069
+ const [pageGroup, setPageGroup] = useState15(0);
7112
7070
  const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
7113
7071
  const { selectedRowKeys } = useAppSelector6(selectList4);
7114
- const appDispatch = useAppDispatch7();
7072
+ const appDispatch = useAppDispatch6();
7115
7073
  const { toDataJS } = useOdooDataTransform();
7116
7074
  const initVal = toDataJS(row, viewData, model);
7117
- const [isShowGroup, setIsShowGroup] = useState14(false);
7118
- const [colEmptyGroup, setColEmptyGroup] = useState14({
7075
+ const [isShowGroup, setIsShowGroup] = useState15(false);
7076
+ const [colEmptyGroup, setColEmptyGroup] = useState15({
7119
7077
  fromStart: 1,
7120
7078
  fromEnd: 1
7121
7079
  });
7122
- const processedData = useMemo14(() => {
7080
+ const processedData = useMemo13(() => {
7123
7081
  const calculateColSpanEmpty = () => {
7124
7082
  const startIndex = columns.findIndex(
7125
7083
  (col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
@@ -7134,7 +7092,7 @@ var tableGroupController = (props) => {
7134
7092
  };
7135
7093
  return calculateColSpanEmpty();
7136
7094
  }, [columns, row]);
7137
- const shouldFetchData = useMemo14(() => {
7095
+ const shouldFetchData = useMemo13(() => {
7138
7096
  return !!isShowGroup;
7139
7097
  }, [isShowGroup]);
7140
7098
  const enabled = shouldFetchData && !!processedData;
@@ -7174,7 +7132,7 @@ var tableGroupController = (props) => {
7174
7132
  }
7175
7133
  });
7176
7134
  const leftPadding = level > 1 ? level * 8 + "px" : "0px";
7177
- useEffect15(() => {
7135
+ useEffect14(() => {
7178
7136
  if (isShowGroup && selectedTags?.length > 0) {
7179
7137
  setIsShowGroup(false);
7180
7138
  }
@@ -7197,24 +7155,24 @@ var tableGroupController = (props) => {
7197
7155
  const filteredIds = selectedRowKeys.filter(
7198
7156
  (id) => !ids.includes(id)
7199
7157
  );
7200
- appDispatch(setSelectedRowKeys3(filteredIds));
7158
+ appDispatch(setSelectedRowKeys2(filteredIds));
7201
7159
  } else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
7202
7160
  const clonedKeys = [...selectedRowKeys];
7203
- appDispatch(setSelectedRowKeys3([...clonedKeys, -1]));
7204
- setTimeout(() => appDispatch(setSelectedRowKeys3(clonedKeys)), 500);
7161
+ appDispatch(setSelectedRowKeys2([...clonedKeys, -1]));
7162
+ setTimeout(() => appDispatch(setSelectedRowKeys2(clonedKeys)), 500);
7205
7163
  } else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
7206
7164
  const filteredKeys = selectedRowKeys.filter((id) => id > -1);
7207
- appDispatch(setSelectedRowKeys3(filteredKeys));
7165
+ appDispatch(setSelectedRowKeys2(filteredKeys));
7208
7166
  }
7209
7167
  toggleShowGroup();
7210
7168
  };
7211
- useEffect15(() => {
7169
+ useEffect14(() => {
7212
7170
  if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
7213
7171
  return;
7214
7172
  }
7215
7173
  const clonedKeys = [...selectedRowKeys];
7216
- setSelectedRowKeys3([...clonedKeys, -1]);
7217
- setTimeout(() => setSelectedRowKeys3(clonedKeys), 500);
7174
+ setSelectedRowKeys2([...clonedKeys, -1]);
7175
+ setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
7218
7176
  }, [isQueryFetched]);
7219
7177
  return {
7220
7178
  handleExpandChildGroup,
@@ -7256,7 +7214,7 @@ import {
7256
7214
  evalJSONDomain as evalJSONDomain7,
7257
7215
  validateAndParseDate
7258
7216
  } from "@fctc/interface-logic/utils";
7259
- import { useCallback as useCallback3, useEffect as useEffect16, useState as useState15 } from "react";
7217
+ import { useCallback as useCallback3, useEffect as useEffect15, useState as useState16 } from "react";
7260
7218
  var searchController = ({
7261
7219
  viewData,
7262
7220
  model,
@@ -7265,12 +7223,12 @@ var searchController = ({
7265
7223
  fieldsList
7266
7224
  }) => {
7267
7225
  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({});
7226
+ const [filterBy, setFilterBy] = useState16(null);
7227
+ const [searchBy, setSearchBy] = useState16(null);
7228
+ const [groupBy, setGroupBy] = useState16(null);
7229
+ const [selectedTags, setSelectedTags] = useState16(null);
7230
+ const [searchString, setSearchString] = useState16("");
7231
+ const [searchMap, setSearchMap] = useState16({});
7274
7232
  const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
7275
7233
  const contextSearch = { ...env.context, ...actionContext };
7276
7234
  const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
@@ -7317,7 +7275,7 @@ var searchController = ({
7317
7275
  }
7318
7276
  }
7319
7277
  };
7320
- useEffect16(() => {
7278
+ useEffect15(() => {
7321
7279
  fetchData();
7322
7280
  }, [model, viewData]);
7323
7281
  const onChangeSearchInput = (search_string) => {
@@ -7462,7 +7420,7 @@ var searchController = ({
7462
7420
  },
7463
7421
  [searchMap]
7464
7422
  );
7465
- useEffect16(() => {
7423
+ useEffect15(() => {
7466
7424
  setTagSearch(searchMap);
7467
7425
  }, [searchMap]);
7468
7426
  const handleAddTagSearch = (tag) => {
@@ -7582,7 +7540,6 @@ export {
7582
7540
  searchController,
7583
7541
  setStorageItemAsync,
7584
7542
  statusDropdownController,
7585
- tableBodyController,
7586
7543
  tableController,
7587
7544
  tableGroupController,
7588
7545
  tableHeadController,
@@ -7596,6 +7553,7 @@ export {
7596
7553
  useGetRowIds,
7597
7554
  useListData,
7598
7555
  useMenu,
7556
+ useMenuItem,
7599
7557
  useProfile,
7600
7558
  useSelectionState,
7601
7559
  useStorageState,