@fctc/widget-logic 4.6.4 → 4.6.6

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/hooks.js CHANGED
@@ -155,8 +155,12 @@ var useCallAction = () => {
155
155
  context
156
156
  }) => {
157
157
  try {
158
+ const stableEnvContext = (0, import_react.useMemo)(
159
+ () => env?.context,
160
+ [env?.context?.lang]
161
+ );
158
162
  const menuContext = {
159
- ...env?.context,
163
+ ...stableEnvContext,
160
164
  ...context
161
165
  };
162
166
  const loadRes = await queryLoadAction.mutateAsync({
package/dist/hooks.mjs CHANGED
@@ -105,13 +105,13 @@ import {
105
105
  } from "@fctc/interface-logic/hooks";
106
106
 
107
107
  // src/hooks/core/use-app-provider.tsx
108
- import { createContext, useContext, useMemo as useMemo5 } from "react";
108
+ import { createContext, useContext, useMemo as useMemo6 } from "react";
109
109
 
110
110
  // src/hooks/core/use-menu.ts
111
- import { useMemo, useState as useState2 } from "react";
111
+ import { useMemo as useMemo2, useState as useState2 } from "react";
112
112
 
113
113
  // src/hooks/core/use-call-action.ts
114
- import { useCallback, useState } from "react";
114
+ import { useCallback, useMemo, useState } from "react";
115
115
 
116
116
  // src/provider.ts
117
117
  var provider_exports = {};
@@ -135,8 +135,12 @@ var useCallAction = () => {
135
135
  context
136
136
  }) => {
137
137
  try {
138
+ const stableEnvContext = useMemo(
139
+ () => env?.context,
140
+ [env?.context?.lang]
141
+ );
138
142
  const menuContext = {
139
- ...env?.context,
143
+ ...stableEnvContext,
140
144
  ...context
141
145
  };
142
146
  const loadRes = await queryLoadAction.mutateAsync({
@@ -370,7 +374,7 @@ var useMenu = ({
370
374
  defaultService
371
375
  );
372
376
  const [menuId, setMenuId] = useState2(void 0);
373
- const configedIconData = useMemo(() => {
377
+ const configedIconData = useMemo2(() => {
374
378
  const data = menuData.data;
375
379
  return data?.map((item) => {
376
380
  return {
@@ -452,7 +456,7 @@ var useDetail = (sub) => {
452
456
 
453
457
  // src/hooks/core/use-profile.ts
454
458
  import { useQuery as useQuery2 } from "@tanstack/react-query";
455
- import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
459
+ import { useEffect as useEffect3, useMemo as useMemo3 } from "react";
456
460
  import { useTranslation } from "react-i18next";
457
461
  var useProfile = ({ service }) => {
458
462
  const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
@@ -475,7 +479,7 @@ var useProfile = ({ service }) => {
475
479
  i18n.changeLanguage(userLocale?.id.split("_")[0]);
476
480
  }
477
481
  }, [userInfoQuery.isFetched]);
478
- const context = useMemo2(() => {
482
+ const context = useMemo3(() => {
479
483
  if (userInfoQuery.data?.sub && userInfoQuery.data?.locale) {
480
484
  return {
481
485
  uid: Number(userInfoQuery.data.sub),
@@ -499,7 +503,7 @@ var useUser = ({ service }) => {
499
503
  };
500
504
 
501
505
  // src/hooks/core/use-view-v2.ts
502
- import { useMemo as useMemo3 } from "react";
506
+ import { useMemo as useMemo4 } from "react";
503
507
  var useViewV2 = ({
504
508
  action,
505
509
  context,
@@ -508,7 +512,7 @@ var useViewV2 = ({
508
512
  xNode
509
513
  }) => {
510
514
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
511
- const viewParams = useMemo3(() => {
515
+ const viewParams = useMemo4(() => {
512
516
  if (!action || !action?.res_model) {
513
517
  return void 0;
514
518
  }
@@ -542,7 +546,7 @@ var useViewV2 = ({
542
546
 
543
547
  // src/hooks/core/use-company.ts
544
548
  import { useQuery as useQuery3 } from "@tanstack/react-query";
545
- import { useEffect as useEffect4, useMemo as useMemo4 } from "react";
549
+ import { useEffect as useEffect4, useMemo as useMemo5 } from "react";
546
550
  var useCompany = ({ service }) => {
547
551
  const { setAllowCompanies, setCompanies, setDefaultCompany, env } = (0, provider_exports.useEnv)();
548
552
  const { useGetCurrentCompany: useGetCurrentCompany2, useGetCompanyInfo: useGetCompanyInfo2 } = (0, provider_exports.useService)();
@@ -557,7 +561,7 @@ var useCompany = ({ service }) => {
557
561
  queryFn: fetchCurrentCompany,
558
562
  enabled: !!env?.defaultCompany
559
563
  });
560
- const current_company_id = useMemo4(() => {
564
+ const current_company_id = useMemo5(() => {
561
565
  return currentCompany.data?.current_company_id;
562
566
  }, [currentCompany.data]);
563
567
  useEffect4(() => {
@@ -608,7 +612,7 @@ var AppProvider = ({
608
612
  const { env } = (0, provider_exports.useEnv)();
609
613
  const user = useUser({ service: env.default_service });
610
614
  const company = useCompany({ service: env.default_service });
611
- const menuContext = useMemo5(() => {
615
+ const menuContext = useMemo6(() => {
612
616
  return combineContexts([
613
617
  {
614
618
  ...user?.context,
@@ -625,10 +629,10 @@ var AppProvider = ({
625
629
  domain: menuParams?.domain,
626
630
  defaultService: env.default_service
627
631
  });
628
- const action = useMemo5(() => {
632
+ const action = useMemo6(() => {
629
633
  return menu?.state?.action;
630
634
  }, [menu?.state?.action, env?.context?.lang]);
631
- const viewContext = useMemo5(() => {
635
+ const viewContext = useMemo6(() => {
632
636
  return combineContexts([
633
637
  menuContext,
634
638
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
@@ -732,7 +736,7 @@ var useGetAction = ({
732
736
  };
733
737
 
734
738
  // src/hooks/core/use-get-specification.ts
735
- import { useMemo as useMemo6 } from "react";
739
+ import { useMemo as useMemo7 } from "react";
736
740
  var useGetSpecification = ({
737
741
  model,
738
742
  viewData,
@@ -744,13 +748,13 @@ var useGetSpecification = ({
744
748
  fields
745
749
  };
746
750
  const initModel = useModel();
747
- const modelInstance = useMemo6(() => {
751
+ const modelInstance = useMemo7(() => {
748
752
  if (viewData) {
749
753
  return initModel.initModel(baseModel);
750
754
  }
751
755
  return null;
752
756
  }, [baseModel, viewData, model]);
753
- const specification = useMemo6(() => {
757
+ const specification = useMemo7(() => {
754
758
  if (modelInstance) {
755
759
  return modelInstance.getSpecification();
756
760
  }
@@ -760,7 +764,7 @@ var useGetSpecification = ({
760
764
  };
761
765
 
762
766
  // src/hooks/core/use-list-data.ts
763
- import { useMemo as useMemo7, useState as useState5 } from "react";
767
+ import { useMemo as useMemo8, useState as useState5 } from "react";
764
768
  import {
765
769
  evalJSONDomain,
766
770
  formatSortingString,
@@ -904,7 +908,7 @@ var useListData = ({
904
908
  viewData,
905
909
  fields: mode === "kanban" ? viewData?.views?.kanban?.fields : viewData?.views?.list?.fields
906
910
  });
907
- const listDataProps = useMemo7(() => {
911
+ const listDataProps = useMemo8(() => {
908
912
  if (!viewData || !action || !context) {
909
913
  return null;
910
914
  }
package/dist/index.js CHANGED
@@ -4205,8 +4205,12 @@ var useCallAction = () => {
4205
4205
  context
4206
4206
  }) => {
4207
4207
  try {
4208
+ const stableEnvContext = (0, import_react.useMemo)(
4209
+ () => env?.context,
4210
+ [env?.context?.lang]
4211
+ );
4208
4212
  const menuContext = {
4209
- ...env?.context,
4213
+ ...stableEnvContext,
4210
4214
  ...context
4211
4215
  };
4212
4216
  const loadRes = await queryLoadAction.mutateAsync({
package/dist/index.mjs CHANGED
@@ -4264,13 +4264,13 @@ import {
4264
4264
  } from "@fctc/interface-logic/hooks";
4265
4265
 
4266
4266
  // src/hooks/core/use-app-provider.tsx
4267
- import { createContext, useContext, useMemo as useMemo5 } from "react";
4267
+ import { createContext, useContext, useMemo as useMemo6 } from "react";
4268
4268
 
4269
4269
  // src/hooks/core/use-menu.ts
4270
- import { useMemo, useState as useState2 } from "react";
4270
+ import { useMemo as useMemo2, useState as useState2 } from "react";
4271
4271
 
4272
4272
  // src/hooks/core/use-call-action.ts
4273
- import { useCallback, useState } from "react";
4273
+ import { useCallback, useMemo, useState } from "react";
4274
4274
 
4275
4275
  // src/provider.ts
4276
4276
  var provider_exports = {};
@@ -4294,8 +4294,12 @@ var useCallAction = () => {
4294
4294
  context
4295
4295
  }) => {
4296
4296
  try {
4297
+ const stableEnvContext = useMemo(
4298
+ () => env?.context,
4299
+ [env?.context?.lang]
4300
+ );
4297
4301
  const menuContext = {
4298
- ...env?.context,
4302
+ ...stableEnvContext,
4299
4303
  ...context
4300
4304
  };
4301
4305
  const loadRes = await queryLoadAction.mutateAsync({
@@ -4529,7 +4533,7 @@ var useMenu = ({
4529
4533
  defaultService
4530
4534
  );
4531
4535
  const [menuId, setMenuId] = useState2(void 0);
4532
- const configedIconData = useMemo(() => {
4536
+ const configedIconData = useMemo2(() => {
4533
4537
  const data = menuData.data;
4534
4538
  return data?.map((item) => {
4535
4539
  return {
@@ -4611,7 +4615,7 @@ var useDetail = (sub) => {
4611
4615
 
4612
4616
  // src/hooks/core/use-profile.ts
4613
4617
  import { useQuery as useQuery2 } from "@tanstack/react-query";
4614
- import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
4618
+ import { useEffect as useEffect3, useMemo as useMemo3 } from "react";
4615
4619
  import { useTranslation } from "react-i18next";
4616
4620
  var useProfile = ({ service }) => {
4617
4621
  const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
@@ -4634,7 +4638,7 @@ var useProfile = ({ service }) => {
4634
4638
  i18n2.changeLanguage(userLocale?.id.split("_")[0]);
4635
4639
  }
4636
4640
  }, [userInfoQuery.isFetched]);
4637
- const context = useMemo2(() => {
4641
+ const context = useMemo3(() => {
4638
4642
  if (userInfoQuery.data?.sub && userInfoQuery.data?.locale) {
4639
4643
  return {
4640
4644
  uid: Number(userInfoQuery.data.sub),
@@ -4658,7 +4662,7 @@ var useUser = ({ service }) => {
4658
4662
  };
4659
4663
 
4660
4664
  // src/hooks/core/use-view-v2.ts
4661
- import { useMemo as useMemo3 } from "react";
4665
+ import { useMemo as useMemo4 } from "react";
4662
4666
  var useViewV2 = ({
4663
4667
  action,
4664
4668
  context,
@@ -4667,7 +4671,7 @@ var useViewV2 = ({
4667
4671
  xNode
4668
4672
  }) => {
4669
4673
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
4670
- const viewParams = useMemo3(() => {
4674
+ const viewParams = useMemo4(() => {
4671
4675
  if (!action || !action?.res_model) {
4672
4676
  return void 0;
4673
4677
  }
@@ -4701,7 +4705,7 @@ var useViewV2 = ({
4701
4705
 
4702
4706
  // src/hooks/core/use-company.ts
4703
4707
  import { useQuery as useQuery3 } from "@tanstack/react-query";
4704
- import { useEffect as useEffect4, useMemo as useMemo4 } from "react";
4708
+ import { useEffect as useEffect4, useMemo as useMemo5 } from "react";
4705
4709
  var useCompany = ({ service }) => {
4706
4710
  const { setAllowCompanies, setCompanies, setDefaultCompany, env } = (0, provider_exports.useEnv)();
4707
4711
  const { useGetCurrentCompany: useGetCurrentCompany2, useGetCompanyInfo: useGetCompanyInfo2 } = (0, provider_exports.useService)();
@@ -4716,7 +4720,7 @@ var useCompany = ({ service }) => {
4716
4720
  queryFn: fetchCurrentCompany,
4717
4721
  enabled: !!env?.defaultCompany
4718
4722
  });
4719
- const current_company_id = useMemo4(() => {
4723
+ const current_company_id = useMemo5(() => {
4720
4724
  return currentCompany.data?.current_company_id;
4721
4725
  }, [currentCompany.data]);
4722
4726
  useEffect4(() => {
@@ -4767,7 +4771,7 @@ var AppProvider = ({
4767
4771
  const { env } = (0, provider_exports.useEnv)();
4768
4772
  const user = useUser({ service: env.default_service });
4769
4773
  const company = useCompany({ service: env.default_service });
4770
- const menuContext = useMemo5(() => {
4774
+ const menuContext = useMemo6(() => {
4771
4775
  return combineContexts([
4772
4776
  {
4773
4777
  ...user?.context,
@@ -4784,10 +4788,10 @@ var AppProvider = ({
4784
4788
  domain: menuParams?.domain,
4785
4789
  defaultService: env.default_service
4786
4790
  });
4787
- const action = useMemo5(() => {
4791
+ const action = useMemo6(() => {
4788
4792
  return menu?.state?.action;
4789
4793
  }, [menu?.state?.action, env?.context?.lang]);
4790
- const viewContext = useMemo5(() => {
4794
+ const viewContext = useMemo6(() => {
4791
4795
  return combineContexts([
4792
4796
  menuContext,
4793
4797
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
@@ -4891,7 +4895,7 @@ var useGetAction = ({
4891
4895
  };
4892
4896
 
4893
4897
  // src/hooks/core/use-get-specification.ts
4894
- import { useMemo as useMemo6 } from "react";
4898
+ import { useMemo as useMemo7 } from "react";
4895
4899
  var useGetSpecification = ({
4896
4900
  model,
4897
4901
  viewData,
@@ -4903,13 +4907,13 @@ var useGetSpecification = ({
4903
4907
  fields
4904
4908
  };
4905
4909
  const initModel = useModel();
4906
- const modelInstance = useMemo6(() => {
4910
+ const modelInstance = useMemo7(() => {
4907
4911
  if (viewData) {
4908
4912
  return initModel.initModel(baseModel);
4909
4913
  }
4910
4914
  return null;
4911
4915
  }, [baseModel, viewData, model]);
4912
- const specification = useMemo6(() => {
4916
+ const specification = useMemo7(() => {
4913
4917
  if (modelInstance) {
4914
4918
  return modelInstance.getSpecification();
4915
4919
  }
@@ -4919,7 +4923,7 @@ var useGetSpecification = ({
4919
4923
  };
4920
4924
 
4921
4925
  // src/hooks/core/use-list-data.ts
4922
- import { useMemo as useMemo7, useState as useState5 } from "react";
4926
+ import { useMemo as useMemo8, useState as useState5 } from "react";
4923
4927
  import {
4924
4928
  evalJSONDomain,
4925
4929
  formatSortingString,
@@ -5063,7 +5067,7 @@ var useListData = ({
5063
5067
  viewData,
5064
5068
  fields: mode === "kanban" ? viewData?.views?.kanban?.fields : viewData?.views?.list?.fields
5065
5069
  });
5066
- const listDataProps = useMemo7(() => {
5070
+ const listDataProps = useMemo8(() => {
5067
5071
  if (!viewData || !action || !context) {
5068
5072
  return null;
5069
5073
  }
@@ -5426,7 +5430,7 @@ var statusDropdownController = (props) => {
5426
5430
  };
5427
5431
 
5428
5432
  // src/widget/basic/many2one-field/controller.ts
5429
- import { useCallback as useCallback4, useEffect as useEffect10, useMemo as useMemo8, useState as useState7 } from "react";
5433
+ import { useCallback as useCallback4, useEffect as useEffect10, useMemo as useMemo9, useState as useState7 } from "react";
5430
5434
  var MANY2ONE_EXTERNAL = "many2one_external";
5431
5435
  var many2oneFieldController = (props) => {
5432
5436
  const {
@@ -5493,7 +5497,7 @@ var many2oneFieldController = (props) => {
5493
5497
  service: widget === MANY2ONE_EXTERNAL ? optionsObject?.service : service,
5494
5498
  xNode
5495
5499
  });
5496
- const selectOptions = useMemo8(() => {
5500
+ const selectOptions = useMemo9(() => {
5497
5501
  return dataOfSelection?.records?.map((val) => ({
5498
5502
  value: val?.id,
5499
5503
  label: val?.display_name || val?.name,
@@ -5504,7 +5508,7 @@ var many2oneFieldController = (props) => {
5504
5508
  setListOptions(selectOptions);
5505
5509
  setDomainModal(domainObject);
5506
5510
  }, [selectOptions]);
5507
- const parsedFormValues = useMemo8(
5511
+ const parsedFormValues = useMemo9(
5508
5512
  () => JSON.parse(
5509
5513
  JSON.stringify({
5510
5514
  ...formValues,
@@ -5861,7 +5865,7 @@ var many2manyFieldController = (props) => {
5861
5865
  };
5862
5866
 
5863
5867
  // src/widget/basic/many2many-tags-field/controller.ts
5864
- import { useCallback as useCallback5, useEffect as useEffect12, useMemo as useMemo9, useState as useState8 } from "react";
5868
+ import { useCallback as useCallback5, useEffect as useEffect12, useMemo as useMemo10, useState as useState8 } from "react";
5865
5869
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5866
5870
  import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5867
5871
  var many2manyTagsController = (props) => {
@@ -5893,7 +5897,7 @@ var many2manyTagsController = (props) => {
5893
5897
  ...fieldContext ?? {},
5894
5898
  ...env?.context
5895
5899
  };
5896
- const parsedFormValues = useMemo9(
5900
+ const parsedFormValues = useMemo10(
5897
5901
  () => JSON.parse(
5898
5902
  JSON.stringify({
5899
5903
  ...formValues,
@@ -5934,7 +5938,7 @@ var many2manyTagsController = (props) => {
5934
5938
  xNode,
5935
5939
  enabled: false
5936
5940
  });
5937
- const selectOptions = useMemo9(() => {
5941
+ const selectOptions = useMemo10(() => {
5938
5942
  return dataOfSelection?.records?.map((val) => ({
5939
5943
  value: val.id,
5940
5944
  label: val.name ?? val.display_name,
@@ -6441,7 +6445,7 @@ var binaryFieldController = (props) => {
6441
6445
  };
6442
6446
 
6443
6447
  // src/widget/advance/table/table-head/controller.ts
6444
- import { useMemo as useMemo10, useRef as useRef5 } from "react";
6448
+ import { useMemo as useMemo11, useRef as useRef5 } from "react";
6445
6449
  var tableHeadController = (props) => {
6446
6450
  const {
6447
6451
  typeTable,
@@ -6454,19 +6458,19 @@ var tableHeadController = (props) => {
6454
6458
  const { rowIds: recordIds } = useGetRowIds(tableRef);
6455
6459
  const selectedRowKeysRef = useRef5(recordIds);
6456
6460
  const isGroupTable = typeTable === "group";
6457
- const recordsCheckedGroup = useMemo10(() => {
6461
+ const recordsCheckedGroup = useMemo11(() => {
6458
6462
  if (!rows || !groupByList) return 0;
6459
6463
  const groupBy = typeof groupByList === "object" ? groupByList?.contexts?.[0]?.group_by : void 0;
6460
6464
  return countSum(rows, groupBy);
6461
6465
  }, [rows, groupByList]);
6462
- const isAllGroupChecked = useMemo10(() => {
6466
+ const isAllGroupChecked = useMemo11(() => {
6463
6467
  if (!isGroupTable || !selectedRowKeys?.length) return false;
6464
6468
  const selectedLength = selectedRowKeys.filter((id) => id !== -1).length;
6465
6469
  const allRecordsSelected = recordIds.length === selectedRowKeys.length ? recordIds.length === selectedLength : false;
6466
6470
  const allGroupsSelected = recordsCheckedGroup === selectedRowKeys.length;
6467
6471
  return allGroupsSelected || allRecordsSelected;
6468
6472
  }, [isGroupTable, selectedRowKeys, recordIds, recordsCheckedGroup]);
6469
- const isAllNormalChecked = useMemo10(() => {
6473
+ const isAllNormalChecked = useMemo11(() => {
6470
6474
  if (isGroupTable || !selectedRowKeys?.length || !rows?.length) return false;
6471
6475
  return selectedRowKeys.length === rows.length && selectedRowKeys.every(
6472
6476
  (id) => rows.some((record) => record.id === id)
@@ -6507,19 +6511,19 @@ var tableHeadController = (props) => {
6507
6511
  };
6508
6512
 
6509
6513
  // src/widget/advance/table/table-view/controller.ts
6510
- import { useCallback as useCallback6, useEffect as useEffect14, useMemo as useMemo11, useState as useState13 } from "react";
6514
+ import { useCallback as useCallback6, useEffect as useEffect14, useMemo as useMemo12, useState as useState13 } from "react";
6511
6515
  import { domainHelper } from "@fctc/interface-logic/utils";
6512
6516
  var tableController = ({ data }) => {
6513
6517
  const [rows, setRows] = useState13([]);
6514
6518
  const [columnVisibility, setColumnVisibility] = useState13({});
6515
- const dataModelFields = useMemo11(() => {
6519
+ const dataModelFields = useMemo12(() => {
6516
6520
  return data?.fields?.map((field) => ({
6517
6521
  ...data.dataModel?.[field?.name],
6518
6522
  ...field,
6519
6523
  string: field?.string || data.dataModel?.[field?.name]?.string
6520
6524
  })) ?? [];
6521
6525
  }, [data?.fields, data?.dataModel]);
6522
- const mergeFields = useMemo11(
6526
+ const mergeFields = useMemo12(
6523
6527
  () => mergeButtons(dataModelFields),
6524
6528
  [dataModelFields]
6525
6529
  );
@@ -6548,7 +6552,7 @@ var tableController = ({ data }) => {
6548
6552
  useEffect14(() => {
6549
6553
  setRows(transformData(data?.records));
6550
6554
  }, [data?.records, transformData]);
6551
- const columns = useMemo11(() => {
6555
+ const columns = useMemo12(() => {
6552
6556
  try {
6553
6557
  return mergeFields?.filter((item) => {
6554
6558
  return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(
@@ -6584,7 +6588,7 @@ var tableController = ({ data }) => {
6584
6588
  };
6585
6589
 
6586
6590
  // src/widget/advance/table/table-group/controller.ts
6587
- import { useEffect as useEffect15, useMemo as useMemo12, useState as useState14 } from "react";
6591
+ import { useEffect as useEffect15, useMemo as useMemo13, useState as useState14 } from "react";
6588
6592
  import { useAppSelector, selectList } from "@fctc/interface-logic/store";
6589
6593
  var tableGroupController = (props) => {
6590
6594
  const { env } = (0, provider_exports.useEnv)();
@@ -6609,7 +6613,7 @@ var tableGroupController = (props) => {
6609
6613
  fromEnd: 1
6610
6614
  });
6611
6615
  const domain = row?.__domain;
6612
- const processedData = useMemo12(() => {
6616
+ const processedData = useMemo13(() => {
6613
6617
  const calculateColSpanEmpty = () => {
6614
6618
  const startIndex = columns.findIndex(
6615
6619
  (col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
@@ -6624,7 +6628,7 @@ var tableGroupController = (props) => {
6624
6628
  };
6625
6629
  return calculateColSpanEmpty();
6626
6630
  }, [columns, row]);
6627
- const shouldFetchData = useMemo12(() => {
6631
+ const shouldFetchData = useMemo13(() => {
6628
6632
  return !!isShowGroup;
6629
6633
  }, [isShowGroup]);
6630
6634
  const enabled = shouldFetchData && !!processedData;
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 useCallback4, useEffect as useEffect10, useMemo as useMemo8, useState as useState7 } from "react";
4094
+ import { useCallback as useCallback4, useEffect as useEffect10, useMemo as useMemo9, useState as useState7 } from "react";
4095
4095
 
4096
4096
  // src/hooks.ts
4097
4097
  import {
@@ -4182,13 +4182,13 @@ import {
4182
4182
  } from "@fctc/interface-logic/hooks";
4183
4183
 
4184
4184
  // src/hooks/core/use-app-provider.tsx
4185
- import { createContext, useContext, useMemo as useMemo5 } from "react";
4185
+ import { createContext, useContext, useMemo as useMemo6 } from "react";
4186
4186
 
4187
4187
  // src/hooks/core/use-menu.ts
4188
- import { useMemo, useState as useState3 } from "react";
4188
+ import { useMemo as useMemo2, useState as useState3 } from "react";
4189
4189
 
4190
4190
  // src/hooks/core/use-call-action.ts
4191
- import { useCallback, useState as useState2 } from "react";
4191
+ import { useCallback, useMemo, useState as useState2 } from "react";
4192
4192
 
4193
4193
  // src/provider.ts
4194
4194
  var provider_exports = {};
@@ -4383,15 +4383,15 @@ import { useEffect as useEffect3 } from "react";
4383
4383
 
4384
4384
  // src/hooks/core/use-profile.ts
4385
4385
  import { useQuery as useQuery2 } from "@tanstack/react-query";
4386
- import { useEffect as useEffect4, useMemo as useMemo2 } from "react";
4386
+ import { useEffect as useEffect4, useMemo as useMemo3 } from "react";
4387
4387
  import { useTranslation } from "react-i18next";
4388
4388
 
4389
4389
  // src/hooks/core/use-view-v2.ts
4390
- import { useMemo as useMemo3 } from "react";
4390
+ import { useMemo as useMemo4 } from "react";
4391
4391
 
4392
4392
  // src/hooks/core/use-company.ts
4393
4393
  import { useQuery as useQuery3 } from "@tanstack/react-query";
4394
- import { useEffect as useEffect5, useMemo as useMemo4 } from "react";
4394
+ import { useEffect as useEffect5, useMemo as useMemo5 } from "react";
4395
4395
 
4396
4396
  // src/hooks/core/use-app-provider.tsx
4397
4397
  import { jsx } from "react/jsx-runtime";
@@ -4415,7 +4415,7 @@ var useAppProvider = () => {
4415
4415
  import { useEffect as useEffect6 } from "react";
4416
4416
 
4417
4417
  // src/hooks/core/use-get-specification.ts
4418
- import { useMemo as useMemo6 } from "react";
4418
+ import { useMemo as useMemo7 } from "react";
4419
4419
  var useGetSpecification = ({
4420
4420
  model,
4421
4421
  viewData,
@@ -4427,13 +4427,13 @@ var useGetSpecification = ({
4427
4427
  fields
4428
4428
  };
4429
4429
  const initModel = useModel();
4430
- const modelInstance = useMemo6(() => {
4430
+ const modelInstance = useMemo7(() => {
4431
4431
  if (viewData) {
4432
4432
  return initModel.initModel(baseModel);
4433
4433
  }
4434
4434
  return null;
4435
4435
  }, [baseModel, viewData, model]);
4436
- const specification = useMemo6(() => {
4436
+ const specification = useMemo7(() => {
4437
4437
  if (modelInstance) {
4438
4438
  return modelInstance.getSpecification();
4439
4439
  }
@@ -4443,7 +4443,7 @@ var useGetSpecification = ({
4443
4443
  };
4444
4444
 
4445
4445
  // src/hooks/core/use-list-data.ts
4446
- import { useMemo as useMemo7, useState as useState6 } from "react";
4446
+ import { useMemo as useMemo8, useState as useState6 } from "react";
4447
4447
  import {
4448
4448
  evalJSONDomain,
4449
4449
  formatSortingString,
@@ -4559,7 +4559,7 @@ var useListData = ({
4559
4559
  viewData,
4560
4560
  fields: mode === "kanban" ? viewData?.views?.kanban?.fields : viewData?.views?.list?.fields
4561
4561
  });
4562
- const listDataProps = useMemo7(() => {
4562
+ const listDataProps = useMemo8(() => {
4563
4563
  if (!viewData || !action || !context) {
4564
4564
  return null;
4565
4565
  }
@@ -4696,7 +4696,7 @@ var many2oneFieldController = (props) => {
4696
4696
  service: widget === MANY2ONE_EXTERNAL ? optionsObject?.service : service,
4697
4697
  xNode
4698
4698
  });
4699
- const selectOptions = useMemo8(() => {
4699
+ const selectOptions = useMemo9(() => {
4700
4700
  return dataOfSelection?.records?.map((val) => ({
4701
4701
  value: val?.id,
4702
4702
  label: val?.display_name || val?.name,
@@ -4707,7 +4707,7 @@ var many2oneFieldController = (props) => {
4707
4707
  setListOptions(selectOptions);
4708
4708
  setDomainModal(domainObject);
4709
4709
  }, [selectOptions]);
4710
- const parsedFormValues = useMemo8(
4710
+ const parsedFormValues = useMemo9(
4711
4711
  () => JSON.parse(
4712
4712
  JSON.stringify({
4713
4713
  ...formValues,
@@ -5064,7 +5064,7 @@ var many2manyFieldController = (props) => {
5064
5064
  };
5065
5065
 
5066
5066
  // src/widget/basic/many2many-tags-field/controller.ts
5067
- import { useCallback as useCallback5, useEffect as useEffect12, useMemo as useMemo9, useState as useState8 } from "react";
5067
+ import { useCallback as useCallback5, useEffect as useEffect12, useMemo as useMemo10, useState as useState8 } from "react";
5068
5068
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5069
5069
  import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
5070
5070
  var many2manyTagsController = (props) => {
@@ -5096,7 +5096,7 @@ var many2manyTagsController = (props) => {
5096
5096
  ...fieldContext ?? {},
5097
5097
  ...env?.context
5098
5098
  };
5099
- const parsedFormValues = useMemo9(
5099
+ const parsedFormValues = useMemo10(
5100
5100
  () => JSON.parse(
5101
5101
  JSON.stringify({
5102
5102
  ...formValues,
@@ -5137,7 +5137,7 @@ var many2manyTagsController = (props) => {
5137
5137
  xNode,
5138
5138
  enabled: false
5139
5139
  });
5140
- const selectOptions = useMemo9(() => {
5140
+ const selectOptions = useMemo10(() => {
5141
5141
  return dataOfSelection?.records?.map((val) => ({
5142
5142
  value: val.id,
5143
5143
  label: val.name ?? val.display_name,
@@ -5644,7 +5644,7 @@ var binaryFieldController = (props) => {
5644
5644
  };
5645
5645
 
5646
5646
  // src/widget/advance/table/table-head/controller.ts
5647
- import { useMemo as useMemo10, useRef as useRef5 } from "react";
5647
+ import { useMemo as useMemo11, useRef as useRef5 } from "react";
5648
5648
  var tableHeadController = (props) => {
5649
5649
  const {
5650
5650
  typeTable,
@@ -5657,19 +5657,19 @@ var tableHeadController = (props) => {
5657
5657
  const { rowIds: recordIds } = useGetRowIds(tableRef);
5658
5658
  const selectedRowKeysRef = useRef5(recordIds);
5659
5659
  const isGroupTable = typeTable === "group";
5660
- const recordsCheckedGroup = useMemo10(() => {
5660
+ const recordsCheckedGroup = useMemo11(() => {
5661
5661
  if (!rows || !groupByList) return 0;
5662
5662
  const groupBy = typeof groupByList === "object" ? groupByList?.contexts?.[0]?.group_by : void 0;
5663
5663
  return countSum(rows, groupBy);
5664
5664
  }, [rows, groupByList]);
5665
- const isAllGroupChecked = useMemo10(() => {
5665
+ const isAllGroupChecked = useMemo11(() => {
5666
5666
  if (!isGroupTable || !selectedRowKeys?.length) return false;
5667
5667
  const selectedLength = selectedRowKeys.filter((id) => id !== -1).length;
5668
5668
  const allRecordsSelected = recordIds.length === selectedRowKeys.length ? recordIds.length === selectedLength : false;
5669
5669
  const allGroupsSelected = recordsCheckedGroup === selectedRowKeys.length;
5670
5670
  return allGroupsSelected || allRecordsSelected;
5671
5671
  }, [isGroupTable, selectedRowKeys, recordIds, recordsCheckedGroup]);
5672
- const isAllNormalChecked = useMemo10(() => {
5672
+ const isAllNormalChecked = useMemo11(() => {
5673
5673
  if (isGroupTable || !selectedRowKeys?.length || !rows?.length) return false;
5674
5674
  return selectedRowKeys.length === rows.length && selectedRowKeys.every(
5675
5675
  (id) => rows.some((record) => record.id === id)
@@ -5710,19 +5710,19 @@ var tableHeadController = (props) => {
5710
5710
  };
5711
5711
 
5712
5712
  // src/widget/advance/table/table-view/controller.ts
5713
- import { useCallback as useCallback6, useEffect as useEffect14, useMemo as useMemo11, useState as useState13 } from "react";
5713
+ import { useCallback as useCallback6, useEffect as useEffect14, useMemo as useMemo12, useState as useState13 } from "react";
5714
5714
  import { domainHelper } from "@fctc/interface-logic/utils";
5715
5715
  var tableController = ({ data }) => {
5716
5716
  const [rows, setRows] = useState13([]);
5717
5717
  const [columnVisibility, setColumnVisibility] = useState13({});
5718
- const dataModelFields = useMemo11(() => {
5718
+ const dataModelFields = useMemo12(() => {
5719
5719
  return data?.fields?.map((field) => ({
5720
5720
  ...data.dataModel?.[field?.name],
5721
5721
  ...field,
5722
5722
  string: field?.string || data.dataModel?.[field?.name]?.string
5723
5723
  })) ?? [];
5724
5724
  }, [data?.fields, data?.dataModel]);
5725
- const mergeFields = useMemo11(
5725
+ const mergeFields = useMemo12(
5726
5726
  () => mergeButtons(dataModelFields),
5727
5727
  [dataModelFields]
5728
5728
  );
@@ -5751,7 +5751,7 @@ var tableController = ({ data }) => {
5751
5751
  useEffect14(() => {
5752
5752
  setRows(transformData(data?.records));
5753
5753
  }, [data?.records, transformData]);
5754
- const columns = useMemo11(() => {
5754
+ const columns = useMemo12(() => {
5755
5755
  try {
5756
5756
  return mergeFields?.filter((item) => {
5757
5757
  return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(
@@ -5787,7 +5787,7 @@ var tableController = ({ data }) => {
5787
5787
  };
5788
5788
 
5789
5789
  // src/widget/advance/table/table-group/controller.ts
5790
- import { useEffect as useEffect15, useMemo as useMemo12, useState as useState14 } from "react";
5790
+ import { useEffect as useEffect15, useMemo as useMemo13, useState as useState14 } from "react";
5791
5791
  import { useAppSelector, selectList } from "@fctc/interface-logic/store";
5792
5792
  var tableGroupController = (props) => {
5793
5793
  const { env } = (0, provider_exports.useEnv)();
@@ -5812,7 +5812,7 @@ var tableGroupController = (props) => {
5812
5812
  fromEnd: 1
5813
5813
  });
5814
5814
  const domain = row?.__domain;
5815
- const processedData = useMemo12(() => {
5815
+ const processedData = useMemo13(() => {
5816
5816
  const calculateColSpanEmpty = () => {
5817
5817
  const startIndex = columns.findIndex(
5818
5818
  (col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
@@ -5827,7 +5827,7 @@ var tableGroupController = (props) => {
5827
5827
  };
5828
5828
  return calculateColSpanEmpty();
5829
5829
  }, [columns, row]);
5830
- const shouldFetchData = useMemo12(() => {
5830
+ const shouldFetchData = useMemo13(() => {
5831
5831
  return !!isShowGroup;
5832
5832
  }, [isShowGroup]);
5833
5833
  const enabled = shouldFetchData && !!processedData;
package/package.json CHANGED
@@ -1,94 +1,94 @@
1
- {
2
- "name": "@fctc/widget-logic",
3
- "version": "4.6.4",
4
- "types": "dist/index.d.ts",
5
- "main": "dist/index.cjs",
6
- "module": "dist/index.mjs",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "import": "./dist/index.mjs",
11
- "require": "./dist/index.cjs"
12
- },
13
- "./hooks": {
14
- "types": "./dist/hooks.d.ts",
15
- "import": "./dist/hooks.mjs",
16
- "require": "./dist/hooks.cjs"
17
- },
18
- "./widget": {
19
- "types": "./dist/widget.d.ts",
20
- "import": "./dist/widget.mjs",
21
- "require": "./dist/widget.cjs"
22
- },
23
- "./icons": {
24
- "types": "./dist/icons.d.ts",
25
- "import": "./dist/icons.mjs",
26
- "require": "./dist/icons.cjs"
27
- },
28
- "./utils": {
29
- "types": "./dist/utils.d.ts",
30
- "import": "./dist/utils.mjs",
31
- "require": "./dist/utils.cjs"
32
- },
33
- "./store": {
34
- "types": "./dist/store.d.ts",
35
- "import": "./dist/store.mjs",
36
- "require": "./dist/store.cjs"
37
- },
38
- "./config": {
39
- "types": "./dist/config.d.ts",
40
- "import": "./dist/config.mjs",
41
- "require": "./dist/config.cjs"
42
- },
43
- "./constants": {
44
- "types": "./dist/constants.d.ts",
45
- "import": "./dist/constants.mjs",
46
- "require": "./dist/constants.cjs"
47
- },
48
- "./environment": {
49
- "types": "./dist/environment.d.ts",
50
- "import": "./dist/environment.mjs",
51
- "require": "./dist/environment.cjs"
52
- },
53
- "./provider": {
54
- "types": "./dist/provider.d.ts",
55
- "import": "./dist/provider.mjs",
56
- "require": "./dist/provider.cjs"
57
- },
58
- "./services": {
59
- "types": "./dist/services.d.ts",
60
- "import": "./dist/services.mjs",
61
- "require": "./dist/services.cjs"
62
- },
63
- "./types": {
64
- "types": "./dist/types.d.ts",
65
- "import": "./dist/types.mjs",
66
- "require": "./dist/types.cjs"
67
- }
68
- },
69
- "files": [
70
- "dist"
71
- ],
72
- "scripts": {
73
- "build": "tsup",
74
- "test": "jest"
75
- },
76
- "dependencies": {
77
- "@fctc/interface-logic": "^4.0.3",
78
- "@headlessui/react": "^2.2.6",
79
- "@tanstack/react-query": "^5.84.0",
80
- "i18next": "^25.3.2",
81
- "i18next-browser-languagedetector": "^8.2.0",
82
- "react-i18next": "^15.6.1",
83
- "react-tooltip": "^5.29.1"
84
- },
85
- "devDependencies": {
86
- "@types/react": "^18.3.1",
87
- "jest": "^29.7.0",
88
- "react": "18.0.0",
89
- "tsup": "^8.0.0",
90
- "typescript": "^5.8.2"
91
- },
92
- "packageManager": "yarn@1.22.0",
93
- "peerDependencies": {}
94
- }
1
+ {
2
+ "name": "@fctc/widget-logic",
3
+ "version": "4.6.6",
4
+ "types": "dist/index.d.ts",
5
+ "main": "dist/index.cjs",
6
+ "module": "dist/index.mjs",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.cjs"
12
+ },
13
+ "./hooks": {
14
+ "types": "./dist/hooks.d.ts",
15
+ "import": "./dist/hooks.mjs",
16
+ "require": "./dist/hooks.cjs"
17
+ },
18
+ "./widget": {
19
+ "types": "./dist/widget.d.ts",
20
+ "import": "./dist/widget.mjs",
21
+ "require": "./dist/widget.cjs"
22
+ },
23
+ "./icons": {
24
+ "types": "./dist/icons.d.ts",
25
+ "import": "./dist/icons.mjs",
26
+ "require": "./dist/icons.cjs"
27
+ },
28
+ "./utils": {
29
+ "types": "./dist/utils.d.ts",
30
+ "import": "./dist/utils.mjs",
31
+ "require": "./dist/utils.cjs"
32
+ },
33
+ "./store": {
34
+ "types": "./dist/store.d.ts",
35
+ "import": "./dist/store.mjs",
36
+ "require": "./dist/store.cjs"
37
+ },
38
+ "./config": {
39
+ "types": "./dist/config.d.ts",
40
+ "import": "./dist/config.mjs",
41
+ "require": "./dist/config.cjs"
42
+ },
43
+ "./constants": {
44
+ "types": "./dist/constants.d.ts",
45
+ "import": "./dist/constants.mjs",
46
+ "require": "./dist/constants.cjs"
47
+ },
48
+ "./environment": {
49
+ "types": "./dist/environment.d.ts",
50
+ "import": "./dist/environment.mjs",
51
+ "require": "./dist/environment.cjs"
52
+ },
53
+ "./provider": {
54
+ "types": "./dist/provider.d.ts",
55
+ "import": "./dist/provider.mjs",
56
+ "require": "./dist/provider.cjs"
57
+ },
58
+ "./services": {
59
+ "types": "./dist/services.d.ts",
60
+ "import": "./dist/services.mjs",
61
+ "require": "./dist/services.cjs"
62
+ },
63
+ "./types": {
64
+ "types": "./dist/types.d.ts",
65
+ "import": "./dist/types.mjs",
66
+ "require": "./dist/types.cjs"
67
+ }
68
+ },
69
+ "files": [
70
+ "dist"
71
+ ],
72
+ "scripts": {
73
+ "build": "tsup",
74
+ "test": "jest"
75
+ },
76
+ "dependencies": {
77
+ "@fctc/interface-logic": "^4.0.3",
78
+ "@headlessui/react": "^2.2.6",
79
+ "@tanstack/react-query": "^5.84.0",
80
+ "i18next": "^25.3.2",
81
+ "i18next-browser-languagedetector": "^8.2.0",
82
+ "react-i18next": "^15.6.1",
83
+ "react-tooltip": "^5.29.1"
84
+ },
85
+ "devDependencies": {
86
+ "@types/react": "^18.3.1",
87
+ "jest": "^29.7.0",
88
+ "react": "18.0.0",
89
+ "tsup": "^8.0.0",
90
+ "typescript": "^5.8.2"
91
+ },
92
+ "packageManager": "yarn@1.22.0",
93
+ "peerDependencies": {}
94
+ }