@fctc/widget-logic 2.7.1 → 2.7.3

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
@@ -59,7 +59,7 @@ var require_moment = __commonJS({
59
59
  function hasOwnProp(a, b) {
60
60
  return Object.prototype.hasOwnProperty.call(a, b);
61
61
  }
62
- function isObjectEmpty4(obj) {
62
+ function isObjectEmpty5(obj) {
63
63
  if (Object.getOwnPropertyNames) {
64
64
  return Object.getOwnPropertyNames(obj).length === 0;
65
65
  } else {
@@ -2198,7 +2198,7 @@ var require_moment = __commonJS({
2198
2198
  strict = locale2;
2199
2199
  locale2 = void 0;
2200
2200
  }
2201
- if (isObject(input) && isObjectEmpty4(input) || isArray(input) && input.length === 0) {
2201
+ if (isObject(input) && isObjectEmpty5(input) || isArray(input) && input.length === 0) {
2202
2202
  input = void 0;
2203
2203
  }
2204
2204
  c._isAMomentObject = true;
@@ -2617,7 +2617,7 @@ var require_moment = __commonJS({
2617
2617
  return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0;
2618
2618
  }
2619
2619
  function isMomentInputObject(input) {
2620
- var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2620
+ var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
2621
2621
  "years",
2622
2622
  "year",
2623
2623
  "y",
@@ -2659,7 +2659,7 @@ var require_moment = __commonJS({
2659
2659
  return arrayTest && dataTypeTest;
2660
2660
  }
2661
2661
  function isCalendarSpec(input) {
2662
- var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2662
+ var objectTest = isObject(input) && !isObjectEmpty5(input), propertyTest = false, properties = [
2663
2663
  "sameDay",
2664
2664
  "nextDay",
2665
2665
  "lastDay",
@@ -4286,92 +4286,6 @@ var useCallAction = () => {
4286
4286
  return [actionData, callAction];
4287
4287
  };
4288
4288
 
4289
- // src/hooks/core/use-menu.ts
4290
- var useMenu = ({
4291
- context,
4292
- specification
4293
- }) => {
4294
- const { env } = (0, provider_exports.useEnv)();
4295
- const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
4296
- const [action, callAction] = useCallAction();
4297
- const menuData = useGetMenu2(
4298
- context,
4299
- specification,
4300
- !!context && Object.keys(context).length > 0
4301
- );
4302
- const [menuId, setMenuId] = useState2(void 0);
4303
- const configedIconData = useMemo(() => {
4304
- const data = menuData.data;
4305
- return data?.map((item) => {
4306
- return {
4307
- ...item,
4308
- child_id: item?.child_id?.map((child) => {
4309
- return {
4310
- ...child,
4311
- url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
4312
- };
4313
- }) ?? [],
4314
- url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
4315
- };
4316
- });
4317
- }, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
4318
- const handleChangeMenu = async ({ menu }) => {
4319
- const aidMenu = menu?.action?.id?.id;
4320
- if (menu) {
4321
- setMenuId(menu.id?.toString() ?? "");
4322
- }
4323
- if (aidMenu) {
4324
- const actionResponse = await callAction({
4325
- aid: Number(aidMenu)
4326
- });
4327
- return actionResponse;
4328
- }
4329
- };
4330
- return {
4331
- ...menuData,
4332
- data: configedIconData,
4333
- action: { handleChangeMenu },
4334
- state: { menuId, action },
4335
- context,
4336
- isLoading: menuData.isLoading,
4337
- isError: menuData.isError,
4338
- error: menuData.error,
4339
- refetch: menuData.refetch
4340
- };
4341
- };
4342
-
4343
- // src/hooks/core/use-detail.ts
4344
- import { useQuery } from "@tanstack/react-query";
4345
- import { useEffect } from "react";
4346
- var useDetail = (sub) => {
4347
- const { setUserInfo, env } = (0, provider_exports.useEnv)();
4348
- const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
4349
- const fetchGetDetail = useGetDetail2();
4350
- const userDetailQuery = useQuery({
4351
- queryKey: ["userDetailQuery", sub],
4352
- queryFn: () => {
4353
- return fetchGetDetail.mutateAsync({
4354
- model: "res.users",
4355
- ids: [sub],
4356
- specification: { image_256: {} }
4357
- });
4358
- },
4359
- enabled: !!sub
4360
- });
4361
- useEffect(() => {
4362
- if (userDetailQuery.data) {
4363
- const userPicture = userDetailQuery.data;
4364
- setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
4365
- }
4366
- }, [userDetailQuery.isFetched]);
4367
- return { ...userDetailQuery };
4368
- };
4369
-
4370
- // src/hooks/core/use-profile.ts
4371
- import { useQuery as useQuery2 } from "@tanstack/react-query";
4372
- import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
4373
- import { useTranslation } from "react-i18next";
4374
-
4375
4289
  // src/utils.ts
4376
4290
  var utils_exports = {};
4377
4291
  __export(utils_exports, {
@@ -4393,7 +4307,7 @@ var languages = [
4393
4307
  ];
4394
4308
 
4395
4309
  // src/utils/function.ts
4396
- import { useCallback as useCallback2, useEffect as useEffect2, useReducer } from "react";
4310
+ import { useCallback as useCallback2, useEffect, useReducer } from "react";
4397
4311
  var countSum = (data, field) => {
4398
4312
  if (!data || !field) return 0;
4399
4313
  return data.reduce(
@@ -4532,7 +4446,7 @@ async function setStorageItemAsync(key, value) {
4532
4446
  }
4533
4447
  function useStorageState(key) {
4534
4448
  const [state, setState] = useAsyncState();
4535
- useEffect2(() => {
4449
+ useEffect(() => {
4536
4450
  try {
4537
4451
  const storedValue = localStorage.getItem(key);
4538
4452
  setState(storedValue);
@@ -4554,7 +4468,91 @@ function useStorageState(key) {
4554
4468
  __reExport(utils_exports, utils_star);
4555
4469
  import * as utils_star from "@fctc/interface-logic/utils";
4556
4470
 
4471
+ // src/hooks/core/use-menu.ts
4472
+ var useMenu = ({
4473
+ context,
4474
+ specification
4475
+ }) => {
4476
+ const { env } = (0, provider_exports.useEnv)();
4477
+ const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
4478
+ const [action, callAction] = useCallAction();
4479
+ const menuData = useGetMenu2(
4480
+ context,
4481
+ specification,
4482
+ !!context && !(0, utils_exports.isObjectEmpty)(context)
4483
+ );
4484
+ const [menuId, setMenuId] = useState2(void 0);
4485
+ const configedIconData = useMemo(() => {
4486
+ const data = menuData.data;
4487
+ return data?.map((item) => {
4488
+ return {
4489
+ ...item,
4490
+ child_id: item?.child_id?.map((child) => {
4491
+ return {
4492
+ ...child,
4493
+ url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
4494
+ };
4495
+ }) ?? [],
4496
+ url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
4497
+ };
4498
+ });
4499
+ }, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
4500
+ const handleChangeMenu = async ({ menu }) => {
4501
+ const aidMenu = menu?.action?.id?.id;
4502
+ if (menu) {
4503
+ setMenuId(menu.id?.toString() ?? "");
4504
+ }
4505
+ if (aidMenu) {
4506
+ const actionResponse = await callAction({
4507
+ aid: Number(aidMenu)
4508
+ });
4509
+ return actionResponse;
4510
+ }
4511
+ };
4512
+ return {
4513
+ ...menuData,
4514
+ data: configedIconData,
4515
+ action: { handleChangeMenu },
4516
+ state: { menuId, action },
4517
+ context,
4518
+ isLoading: menuData.isLoading,
4519
+ isError: menuData.isError,
4520
+ error: menuData.error,
4521
+ refetch: menuData.refetch
4522
+ };
4523
+ };
4524
+
4525
+ // src/hooks/core/use-detail.ts
4526
+ import { useQuery } from "@tanstack/react-query";
4527
+ import { useEffect as useEffect2 } from "react";
4528
+ var useDetail = (sub) => {
4529
+ const { setUserInfo, env } = (0, provider_exports.useEnv)();
4530
+ const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
4531
+ const fetchGetDetail = useGetDetail2();
4532
+ const userDetailQuery = useQuery({
4533
+ queryKey: ["userDetailQuery", sub],
4534
+ queryFn: () => {
4535
+ return fetchGetDetail.mutateAsync({
4536
+ model: "res.users",
4537
+ ids: [sub],
4538
+ specification: { image_256: {} }
4539
+ });
4540
+ },
4541
+ enabled: !!sub
4542
+ });
4543
+ useEffect2(() => {
4544
+ if (userDetailQuery.data) {
4545
+ const userPicture = userDetailQuery.data;
4546
+ setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
4547
+ }
4548
+ }, [userDetailQuery.isFetched]);
4549
+ return { ...userDetailQuery };
4550
+ };
4551
+
4557
4552
  // src/hooks/core/use-profile.ts
4553
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
4554
+ import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
4555
+ import { useTranslation } from "react-i18next";
4558
4556
  var useProfile = () => {
4559
4557
  const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
4560
4558
  const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
@@ -4602,21 +4600,31 @@ var useUser = () => {
4602
4600
  // src/hooks/core/use-view-v2.ts
4603
4601
  import { useMemo as useMemo3 } from "react";
4604
4602
  var useViewV2 = ({
4605
- id,
4603
+ action,
4606
4604
  context,
4607
- views,
4608
- model
4605
+ aid
4609
4606
  }) => {
4610
4607
  const { useGetView: useGetView2 } = (0, provider_exports.useService)();
4611
4608
  const viewParams = useMemo3(() => {
4612
- if (views || views.length === 0) return void 0;
4609
+ if (!action || !action?.res_model) {
4610
+ return void 0;
4611
+ }
4612
+ const actionResult = action;
4613
4613
  return {
4614
- model,
4615
- views,
4614
+ model: String(actionResult?.res_model),
4615
+ views: [
4616
+ ...Array.isArray(actionResult?.views) ? actionResult?.views.map(
4617
+ (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4618
+ ) : [],
4619
+ [
4620
+ Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
4621
+ "search"
4622
+ ]
4623
+ ],
4616
4624
  context,
4617
- id
4625
+ id: isNaN(Number(aid)) ? action?.id : aid
4618
4626
  };
4619
- }, [views]);
4627
+ }, [action, context, aid]);
4620
4628
  const view = useGetView2({
4621
4629
  viewParams: viewParams || {},
4622
4630
  enabled: !!viewParams
@@ -4716,22 +4724,10 @@ var AppProvider = ({
4716
4724
  { ...(0, utils_exports.evalJSONContext)(action?.context) }
4717
4725
  ]);
4718
4726
  }, [menuContext, action?.context, env?.context?.lang]);
4719
- const memoViews = useMemo5(() => {
4720
- if (!action) return [];
4721
- return [
4722
- ...Array.isArray(action?.views) ? action.views.map(
4723
- (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4724
- ) : [],
4725
- [
4726
- Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
4727
- "search"
4728
- ]
4729
- ];
4730
- }, [action]);
4731
4727
  const view = useViewV2({
4728
+ action,
4732
4729
  context: viewContext,
4733
- views: memoViews,
4734
- model: action?.res_model ? String(action.res_model) : void 0
4730
+ aid
4735
4731
  });
4736
4732
  return /* @__PURE__ */ jsx(
4737
4733
  ReactContext.Provider,
@@ -4859,7 +4855,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
4859
4855
  import {
4860
4856
  evalJSONDomain,
4861
4857
  formatSortingString,
4862
- isObjectEmpty as isObjectEmpty3
4858
+ isObjectEmpty as isObjectEmpty4
4863
4859
  } from "@fctc/interface-logic/utils";
4864
4860
 
4865
4861
  // src/hooks/utils/use-click-outside.ts
@@ -5035,7 +5031,7 @@ var useListData = ({
5035
5031
  const list = useGetListData2(
5036
5032
  listDataProps,
5037
5033
  [listDataProps],
5038
- !!listDataProps && !!specification && !isObjectEmpty3(specification)
5034
+ !!listDataProps && !!specification && !isObjectEmpty4(specification)
5039
5035
  );
5040
5036
  return {
5041
5037
  ...list,
@@ -5571,7 +5567,7 @@ var many2oneButtonController = (props) => {
5571
5567
  };
5572
5568
 
5573
5569
  // src/widget/basic/many2many-field/controller.ts
5574
- import { useEffect as useEffect11, useMemo as useMemo9, useState as useState8 } from "react";
5570
+ import { useEffect as useEffect11, useState as useState8 } from "react";
5575
5571
  import {
5576
5572
  evalJSONContext as evalJSONContext4,
5577
5573
  evalJSONDomain as evalJSONDomain4,
@@ -5586,8 +5582,7 @@ var many2manyFieldController = (props) => {
5586
5582
  tab,
5587
5583
  setSelectedRowKeys: setSelectedRowKeys2,
5588
5584
  groupByDomain,
5589
- enabled: enabledCallAPI,
5590
- actionData
5585
+ enabled: enabledCallAPI
5591
5586
  } = props;
5592
5587
  const { env } = (0, provider_exports.useEnv)();
5593
5588
  const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView: useGetFormView2 } = (0, provider_exports.useService)();
@@ -5611,31 +5606,14 @@ var many2manyFieldController = (props) => {
5611
5606
  viewParams,
5612
5607
  enabled: enabledCallAPI
5613
5608
  });
5614
- const baseModel = useMemo9(
5615
- () => ({
5616
- name: String(relation),
5617
- view: viewResponse || {},
5618
- actContext: contextObject,
5619
- fields: [
5620
- ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5621
- ...tab?.fields ? tab.fields : []
5622
- ]
5623
- }),
5624
- [relation, viewResponse]
5625
- );
5626
- const initModel = useModel();
5627
- const modelInstance = useMemo9(() => {
5628
- if (viewResponse) {
5629
- return initModel.initModel(baseModel);
5630
- }
5631
- return null;
5632
- }, [baseModel, viewResponse]);
5633
- const specification = useMemo9(() => {
5634
- if (modelInstance) {
5635
- return modelInstance.getSpecification();
5636
- }
5637
- return null;
5638
- }, [modelInstance]);
5609
+ const { specification } = useGetSpecification({
5610
+ model: String(relation),
5611
+ viewData: viewResponse || {},
5612
+ fields: [
5613
+ ...Object.values(viewResponse?.views?.list?.fields ?? {}),
5614
+ ...tab?.fields ? tab.fields : []
5615
+ ]
5616
+ });
5639
5617
  const default_order = viewResponse && viewResponse?.views?.list?.default_order;
5640
5618
  const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
5641
5619
  const fetchData = async () => {
@@ -5726,7 +5704,7 @@ var many2manyFieldController = (props) => {
5726
5704
  };
5727
5705
 
5728
5706
  // src/widget/basic/many2many-tags-field/controller.ts
5729
- import { useMemo as useMemo10 } from "react";
5707
+ import { useMemo as useMemo9 } from "react";
5730
5708
  import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
5731
5709
  import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
5732
5710
  var many2manyTagsController = (props) => {
@@ -5744,7 +5722,7 @@ var many2manyTagsController = (props) => {
5744
5722
  const { env } = (0, provider_exports.useEnv)();
5745
5723
  const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5746
5724
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5747
- const domainObject = useMemo10(
5725
+ const domainObject = useMemo9(
5748
5726
  () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
5749
5727
  [domain, formValues]
5750
5728
  );
@@ -6976,7 +6954,7 @@ var binaryFieldController = (props) => {
6976
6954
  };
6977
6955
 
6978
6956
  // src/widget/advance/table/table-head/controller.ts
6979
- import { useMemo as useMemo11, useRef as useRef5 } from "react";
6957
+ import { useMemo as useMemo10, useRef as useRef5 } from "react";
6980
6958
  var tableHeadController = (props) => {
6981
6959
  const {
6982
6960
  typeTable,
@@ -6989,19 +6967,19 @@ var tableHeadController = (props) => {
6989
6967
  const { rowIds: recordIds } = useGetRowIds(tableRef);
6990
6968
  const selectedRowKeysRef = useRef5(recordIds);
6991
6969
  const isGroupTable = typeTable === "group";
6992
- const recordsCheckedGroup = useMemo11(() => {
6970
+ const recordsCheckedGroup = useMemo10(() => {
6993
6971
  if (!rows || !groupByList) return 0;
6994
6972
  const groupBy = typeof groupByList === "object" ? groupByList?.contexts?.[0]?.group_by : void 0;
6995
6973
  return countSum(rows, groupBy);
6996
6974
  }, [rows, groupByList]);
6997
- const isAllGroupChecked = useMemo11(() => {
6975
+ const isAllGroupChecked = useMemo10(() => {
6998
6976
  if (!isGroupTable || !selectedRowKeys?.length) return false;
6999
6977
  const selectedLength = selectedRowKeys.filter((id) => id !== -1).length;
7000
6978
  const allRecordsSelected = recordIds.length === selectedRowKeys.length ? recordIds.length === selectedLength : false;
7001
6979
  const allGroupsSelected = recordsCheckedGroup === selectedRowKeys.length;
7002
6980
  return allGroupsSelected || allRecordsSelected;
7003
6981
  }, [isGroupTable, selectedRowKeys, recordIds, recordsCheckedGroup]);
7004
- const isAllNormalChecked = useMemo11(() => {
6982
+ const isAllNormalChecked = useMemo10(() => {
7005
6983
  if (isGroupTable || !selectedRowKeys?.length || !rows?.length) return false;
7006
6984
  return selectedRowKeys.length === rows.length && selectedRowKeys.every(
7007
6985
  (id) => rows.some((record) => record.id === id)
@@ -7131,7 +7109,7 @@ var tableController = ({ data }) => {
7131
7109
  };
7132
7110
 
7133
7111
  // src/widget/advance/table/table-group/controller.ts
7134
- import { useEffect as useEffect14, useMemo as useMemo12, useState as useState14 } from "react";
7112
+ import { useEffect as useEffect14, useMemo as useMemo11, useState as useState14 } from "react";
7135
7113
  import {
7136
7114
  useAppSelector as useAppSelector2,
7137
7115
  selectList
@@ -7159,7 +7137,7 @@ var tableGroupController = (props) => {
7159
7137
  fromEnd: 1
7160
7138
  });
7161
7139
  const domain = row?.__domain;
7162
- const processedData = useMemo12(() => {
7140
+ const processedData = useMemo11(() => {
7163
7141
  const calculateColSpanEmpty = () => {
7164
7142
  const startIndex = columns.findIndex(
7165
7143
  (col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
@@ -7174,7 +7152,7 @@ var tableGroupController = (props) => {
7174
7152
  };
7175
7153
  return calculateColSpanEmpty();
7176
7154
  }, [columns, row]);
7177
- const shouldFetchData = useMemo12(() => {
7155
+ const shouldFetchData = useMemo11(() => {
7178
7156
  return !!isShowGroup;
7179
7157
  }, [isShowGroup]);
7180
7158
  const enabled = shouldFetchData && !!processedData;
package/dist/widget.d.mts CHANGED
@@ -66,7 +66,6 @@ interface IMany2ManyControllerProps extends IInputFieldProps {
66
66
  groupByDomain: any;
67
67
  options: any;
68
68
  enabled: boolean;
69
- actionData: any;
70
69
  viewData: any;
71
70
  }
72
71
 
package/dist/widget.d.ts CHANGED
@@ -66,7 +66,6 @@ interface IMany2ManyControllerProps extends IInputFieldProps {
66
66
  groupByDomain: any;
67
67
  options: any;
68
68
  enabled: boolean;
69
- actionData: any;
70
69
  viewData: any;
71
70
  }
72
71