@fctc/widget-logic 2.4.2 → 2.4.5

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
@@ -41,7 +41,7 @@ var require_moment = __commonJS({
41
41
  "use strict";
42
42
  (function(global, factory) {
43
43
  typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global.moment = factory();
44
- })(exports, function() {
44
+ })(exports, (function() {
45
45
  "use strict";
46
46
  var hookCallback;
47
47
  function hooks() {
@@ -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 isObjectEmpty(obj) {
62
+ function isObjectEmpty4(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) && isObjectEmpty(input) || isArray(input) && input.length === 0) {
2201
+ if (isObject(input) && isObjectEmpty4(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) && !isObjectEmpty(input), propertyTest = false, properties = [
2620
+ var objectTest = isObject(input) && !isObjectEmpty4(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) && !isObjectEmpty(input), propertyTest = false, properties = [
2662
+ var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
2663
2663
  "sameDay",
2664
2664
  "nextDay",
2665
2665
  "lastDay",
@@ -4032,7 +4032,7 @@ var require_moment = __commonJS({
4032
4032
  // <input type="month" />
4033
4033
  };
4034
4034
  return hooks;
4035
- });
4035
+ }));
4036
4036
  }
4037
4037
  });
4038
4038
 
@@ -4091,147 +4091,126 @@ var statusDropdownController = (props) => {
4091
4091
  };
4092
4092
 
4093
4093
  // src/widget/basic/many2one-field/controller.ts
4094
- import { useCallback as useCallback3, useEffect as useEffect11, useMemo as useMemo8, useState as useState8 } from "react";
4094
+ import { useCallback as useCallback4, useEffect as useEffect10, useMemo as useMemo8, useState as useState7 } from "react";
4095
4095
 
4096
4096
  // src/hooks.ts
4097
- var hooks_exports = {};
4098
- __export(hooks_exports, {
4099
- AppProvider: () => AppProvider,
4100
- useAppProvider: () => useAppProvider,
4101
- useAuth: () => useAuth,
4102
- useCallAction: () => useCallAction,
4103
- useClickOutside: () => useClickOutside,
4104
- useConfig: () => useConfig,
4105
- useDebounce: () => useDebounce,
4106
- useDetail: () => useDetail,
4107
- useGetRowIds: () => useGetRowIds,
4108
- useListData: () => useListData,
4109
- useMenu: () => useMenu,
4110
- useMenuItem: () => useMenuItem,
4111
- useProfile: () => useProfile,
4112
- useUser: () => useUser,
4113
- useViewV2: () => useViewV2
4114
- });
4097
+ import {
4098
+ useModel,
4099
+ useButton,
4100
+ useChangeStatus,
4101
+ useDelete,
4102
+ useDeleteComment,
4103
+ useDuplicateRecord,
4104
+ useExecuteImport,
4105
+ useExportExcel,
4106
+ useForgotPassword,
4107
+ useForgotPasswordSSO,
4108
+ useGet2FAMethods,
4109
+ useGetAccessByCode,
4110
+ useGetActionDetail,
4111
+ useGetAll,
4112
+ useGetCalendar,
4113
+ useGetComment,
4114
+ useGetCompanyInfo,
4115
+ useGetConversionRate,
4116
+ useGetCurrency,
4117
+ useGetCurrentCompany,
4118
+ useGetDetail,
4119
+ useGetFieldExport,
4120
+ useGetFieldOnChange,
4121
+ useGetFileExcel,
4122
+ useGetFormView,
4123
+ useGetGroups,
4124
+ useGetImage,
4125
+ useGetListCompany,
4126
+ useGetListData,
4127
+ useGetListMyBankAccount,
4128
+ useGetMenu,
4129
+ useGetPrintReport,
4130
+ useGetProGressBar,
4131
+ useGetProfile,
4132
+ useGetProvider,
4133
+ useGetResequence,
4134
+ useGetSelection,
4135
+ useGetUser,
4136
+ useGetView,
4137
+ useGrantAccess,
4138
+ useIsValidToken,
4139
+ useLoadAction,
4140
+ useLoadMessage,
4141
+ useLoginCredential,
4142
+ useLoginSocial,
4143
+ useLogout,
4144
+ useOdooDataTransform,
4145
+ useOnChangeForm,
4146
+ useParsePreview,
4147
+ usePrint,
4148
+ useRemoveRow,
4149
+ useRemoveTotpSetup,
4150
+ useRequestSetupTotp,
4151
+ useResetPassword,
4152
+ useResetPasswordSSO,
4153
+ useRunAction,
4154
+ useSave as useSave2,
4155
+ useSendComment,
4156
+ useSettingsWebRead2fa,
4157
+ useSignInSSO,
4158
+ useSwitchLocale,
4159
+ useUpdatePassword,
4160
+ useUploadFile,
4161
+ useUploadFileExcel,
4162
+ useUploadIdFile,
4163
+ useUploadImage,
4164
+ useValidateActionToken,
4165
+ useVerify2FA,
4166
+ useVerifyTotp
4167
+ } from "@fctc/interface-logic/hooks";
4168
+
4169
+ // src/hooks/core/use-app-provider.tsx
4170
+ import { createContext, useContext, useMemo as useMemo5 } from "react";
4171
+
4172
+ // src/hooks/core/use-menu.ts
4173
+ import { useMemo, useState as useState3 } from "react";
4115
4174
 
4116
4175
  // src/hooks/core/use-call-action.ts
4117
- import { useState as useState2 } from "react";
4118
- import { getEnv as getEnv2 } from "@fctc/interface-logic/environment";
4119
- import { useLoadAction, useRunAction } from "@fctc/interface-logic/hooks";
4120
- var useCallAction = () => {
4121
- const queryLoadAction = useLoadAction();
4122
- const queryRunAction = useRunAction();
4123
- const [data, setData] = useState2(void 0);
4124
- const callAction = async ({
4125
- aid,
4126
- actionType = "ir.actions.act_window"
4127
- }) => {
4128
- const context = getEnv2().context;
4129
- let res = void 0;
4130
- if (actionType === "ir.actions.act_window") {
4131
- res = await queryLoadAction.mutateAsync({
4132
- idAction: aid,
4133
- context
4134
- });
4135
- } else if (actionType === "ir.actions.server") {
4136
- res = await queryRunAction.mutateAsync({
4137
- idAction: aid,
4138
- context
4139
- });
4140
- }
4141
- setData(res);
4142
- return res;
4143
- };
4144
- return [data, callAction];
4145
- };
4176
+ import { useCallback, useState as useState2 } from "react";
4146
4177
 
4147
- // src/hooks/core/use-config.ts
4148
- import { useEffect as useEffect2, useMemo } from "react";
4149
- import { getEnv as getEnv3 } from "@fctc/interface-logic/environment";
4150
- import { useAppDispatch, setEnvFile } from "@fctc/interface-logic/store";
4151
- var useConfig = ({ localStorageUtils, sessionStorageUtils }) => {
4152
- const dispatch = useAppDispatch();
4153
- const envConfig = useMemo(() => {
4154
- return {
4155
- mode: "development",
4156
- baseUrl: "https://api.vitrust.app/c2/api/v2",
4157
- config: {
4158
- grantType: "password",
4159
- clientId: "C52foVQSMpnNOcAP2CBIIkupOSfxUarF8nlOPfXM",
4160
- clientSecret: "rColINr4a9QBFQPqQB8YU1XfBjqzwerDMJGBxsFK"
4161
- }
4162
- };
4163
- }, []);
4164
- const config = useMemo(() => {
4165
- return {
4166
- VITE_SIDEBAR_TYPE: "grid/sidebar",
4167
- VITE_APP_DOMAIN: "https://api.vitrust.app/c2/",
4168
- VITE_IS_EDU: true,
4169
- VITE_LOGO_WHITE_LOGIN: "https://static.vitrust.app/vitrust/3a/3a1301f614dea6ee19ebf99b68f57e3fd46011d2.png",
4170
- VITE_LOGO_BLACK_LOGIN: "https://static.vitrust.app/vitrust/32/3223918780da7a439f916faac9abf0bfe98dfa07.png",
4171
- VITE_BACKGROUND_SIDEBAR: "linear-gradient(178deg, rgb(1, 106, 13) -0.89%, rgb(4, 179, 66) 99.46%",
4172
- VITE_BANNER: "https://static.vitrust.app/vitrust/5d/5d20cab0627182b4ed5cba4ee42c58b98b663e5b.svg",
4173
- VITE_BG_BUTTON: "#008F3C",
4174
- VITE_BACKGROUND_PAGE: "#F9FAFB"
4175
- };
4176
- }, []);
4177
- useEffect2(() => {
4178
- try {
4179
- const env = getEnv3();
4180
- env.setupEnv({
4181
- baseUrl: envConfig.baseUrl,
4182
- port: 3e3,
4183
- config: {
4184
- grantType: envConfig.config.grantType,
4185
- clientId: envConfig.config.clientId,
4186
- clientSecret: envConfig.config.clientSecret
4187
- },
4188
- db: "preschool",
4189
- localStorageUtils: localStorageUtils(),
4190
- sessionStorageUtils: sessionStorageUtils()
4191
- });
4192
- dispatch(setEnvFile(config));
4193
- } catch (error) {
4194
- console.error("Error loading env or config:", error);
4195
- }
4196
- }, [dispatch, envConfig, config]);
4197
- return { envConfig, config };
4198
- };
4178
+ // src/provider.ts
4179
+ var provider_exports = {};
4180
+ __reExport(provider_exports, provider_star);
4181
+ import * as provider_star from "@fctc/interface-logic/provider";
4199
4182
 
4200
4183
  // src/hooks/core/use-detail.ts
4201
- import { setProfile, useAppDispatch as useAppDispatch2 } from "@fctc/interface-logic/store";
4202
4184
  import { useQuery } from "@tanstack/react-query";
4203
- import { useEffect as useEffect3 } from "react";
4204
- import { useGetDetail } from "@fctc/interface-logic/hooks";
4205
- var useDetail = (accessToken, sub) => {
4206
- const dispatch = useAppDispatch2();
4207
- const fetchGetDetail = useGetDetail();
4208
- const userDetailQuery = useQuery({
4209
- queryKey: ["userDetailQuery", sub && accessToken],
4210
- queryFn: () => {
4211
- return fetchGetDetail.mutateAsync({
4212
- model: "res.users",
4213
- ids: [sub],
4214
- specification: { image_256: {} }
4215
- });
4216
- },
4217
- enabled: !!sub && !!accessToken
4218
- });
4219
- useEffect3(() => {
4220
- if (userDetailQuery.data) {
4221
- const userPicture = userDetailQuery.data;
4222
- dispatch(
4223
- setProfile({ ...userPicture, image: userPicture?.[0]?.image_256 })
4224
- );
4225
- }
4226
- }, [userDetailQuery.data, dispatch]);
4227
- return userDetailQuery;
4228
- };
4185
+ import { useEffect as useEffect2 } from "react";
4229
4186
 
4230
- // src/hooks/core/use-list-data.ts
4231
- import { useMemo as useMemo2, useState as useState3 } from "react";
4187
+ // src/hooks/core/use-profile.ts
4188
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
4189
+ import { useEffect as useEffect4, useMemo as useMemo2 } from "react";
4190
+ import { useTranslation } from "react-i18next";
4191
+
4192
+ // src/utils.ts
4193
+ var utils_exports = {};
4194
+ __export(utils_exports, {
4195
+ STORAGES: () => STORAGES,
4196
+ combineContexts: () => combineContexts,
4197
+ convertFieldsToArray: () => convertFieldsToArray,
4198
+ countSum: () => countSum,
4199
+ getDateRange: () => getDateRange,
4200
+ languages: () => languages,
4201
+ mergeButtons: () => mergeButtons,
4202
+ setStorageItemAsync: () => setStorageItemAsync,
4203
+ useStorageState: () => useStorageState
4204
+ });
4205
+
4206
+ // src/utils/constants.ts
4207
+ var languages = [
4208
+ { id: "vi_VN", name: "VIE" },
4209
+ { id: "en_US", name: "ENG" }
4210
+ ];
4232
4211
 
4233
4212
  // src/utils/function.ts
4234
- import { useCallback, useEffect as useEffect4, useReducer } from "react";
4213
+ import { useCallback as useCallback2, useEffect as useEffect3, useReducer } from "react";
4235
4214
  var countSum = (data, field) => {
4236
4215
  if (!data || !field) return 0;
4237
4216
  return data.reduce(
@@ -4370,7 +4349,7 @@ async function setStorageItemAsync(key, value) {
4370
4349
  }
4371
4350
  function useStorageState(key) {
4372
4351
  const [state, setState] = useAsyncState();
4373
- useEffect4(() => {
4352
+ useEffect3(() => {
4374
4353
  try {
4375
4354
  const storedValue = localStorage.getItem(key);
4376
4355
  setState(storedValue);
@@ -4378,7 +4357,7 @@ function useStorageState(key) {
4378
4357
  console.error("Local storage is unavailable:", e);
4379
4358
  }
4380
4359
  }, [key]);
4381
- const setValue = useCallback(
4360
+ const setValue = useCallback2(
4382
4361
  (value) => {
4383
4362
  setState(value);
4384
4363
  setStorageItemAsync(key, value);
@@ -4388,471 +4367,62 @@ function useStorageState(key) {
4388
4367
  return [state, setValue];
4389
4368
  }
4390
4369
 
4391
- // src/hooks/core/use-list-data.ts
4392
- import { useModel, useGetListData } from "@fctc/interface-logic/hooks";
4393
- import {
4394
- useAppSelector,
4395
- selectSearch,
4396
- selectList
4397
- } from "@fctc/interface-logic/store";
4398
- import {
4399
- evalJSONDomain,
4400
- formatSortingString
4401
- } from "@fctc/interface-logic/utils";
4402
- var useListData = ({
4403
- action,
4404
- context,
4405
- viewResponse
4406
- }) => {
4407
- const { groupByDomain } = useAppSelector(selectSearch);
4408
- const initModel = useModel();
4409
- const [type, setType] = useState3("list");
4410
- const [mode, setMode] = useState3("month");
4411
- const [currentDate, setCurrentDate] = useState3(/* @__PURE__ */ new Date());
4412
- const { pageLimit, page, order } = useAppSelector(selectList);
4413
- const listDataProps = useMemo2(() => {
4414
- const actData = action?.result;
4415
- if (!viewResponse || !actData || !context) {
4416
- return null;
4417
- }
4418
- const specification = initModel.initModel({
4419
- name: String(actData.res_model),
4420
- view: viewResponse || {},
4421
- actContext: context,
4422
- fields: type === "kanban" ? viewResponse?.views?.kanban?.fields : type === "calendar" ? viewResponse?.views?.calendar?.fields : viewResponse?.views?.list?.fields
4423
- }).getSpecification();
4424
- const domain = type === "calendar" ? getDateRange(currentDate, mode) : actData?.domain ? Array.isArray(actData?.domain) ? [...actData?.domain] : evalJSONDomain(actData?.domain, context) : [];
4425
- const limit = type === "calendar" ? 2500 : pageLimit;
4426
- const offset = page * pageLimit;
4427
- const fields = type === "calendar" ? convertFieldsToArray(viewResponse?.views?.calendar?.fields) || [] : typeof groupByDomain === "object" ? groupByDomain?.fields : void 0;
4428
- const groupby = typeof groupByDomain === "object" ? [groupByDomain?.contexts?.[0]?.group_by] : [];
4429
- const sort = order ? order : viewResponse?.views?.list?.default_order ? formatSortingString(viewResponse?.views?.list?.default_order) : "";
4430
- return {
4431
- model: actData.res_model,
4432
- specification,
4433
- domain,
4434
- limit,
4435
- offset,
4436
- fields,
4437
- groupby,
4438
- context,
4439
- sort,
4440
- type
4441
- };
4442
- }, [
4443
- action?.result,
4444
- context,
4445
- currentDate,
4446
- groupByDomain,
4447
- initModel,
4448
- mode,
4449
- order,
4450
- page,
4451
- pageLimit,
4452
- type,
4453
- viewResponse
4454
- ]);
4455
- const list = useGetListData(
4456
- listDataProps,
4457
- [listDataProps],
4458
- !!listDataProps
4459
- );
4460
- return {
4461
- ...list,
4462
- state: {
4463
- type,
4464
- setType,
4465
- mode,
4466
- setMode,
4467
- currentDate,
4468
- setCurrentDate
4469
- }
4470
- };
4471
- };
4472
-
4473
- // src/hooks/core/use-menu.ts
4474
- import { useEffect as useEffect5, useMemo as useMemo3, useState as useState4 } from "react";
4475
-
4476
- // src/utils/constants.ts
4477
- var languages = [
4478
- { id: "vi_VN", name: "VIE" },
4479
- { id: "en_US", name: "ENG" }
4480
- ];
4481
- var API_PRESCHOOL_URL = {
4482
- baseURL: "https://preschool.vitrust.app"
4483
- };
4484
- var API_APP_URL = {
4485
- baseUrl: "https://api.vitrust.app",
4486
- c2: "https://api.vitrust.app/c2",
4487
- apiV2: "https://api.vitrust.app/c2/api/v2"
4488
- };
4489
-
4490
- // src/hooks/core/use-menu.ts
4491
- import { useGetMenu } from "@fctc/interface-logic/hooks";
4492
- var useMenu = ({ context }) => {
4493
- const menuData = useGetMenu(context, !!context);
4494
- const [menuid, setMenuId] = useState4(void 0);
4495
- const [action, setAction] = useCallAction();
4496
- const configedIconData = useMemo3(() => {
4497
- const data = menuData.data;
4498
- return data?.map((item) => {
4499
- return {
4500
- ...item,
4501
- child_id: item?.child_id?.map((child) => {
4502
- return {
4503
- ...child,
4504
- url_icon: API_APP_URL.c2 + "/" + child.url_icon
4505
- };
4506
- }) ?? [],
4507
- url_icon: API_APP_URL.c2 + "/" + item.url_icon
4508
- };
4509
- });
4510
- }, [menuData.data]);
4511
- const handleChangeMenu = async ({
4512
- menu,
4513
- subMenu
4514
- }) => {
4515
- const aid = subMenu?.action?.id?.id;
4516
- const actionType = subMenu?.action?.type;
4517
- await setAction({
4518
- aid: Number(aid),
4519
- actionType
4520
- });
4521
- if (menu) {
4522
- setMenuId(menu.id?.toString() ?? "");
4523
- }
4524
- };
4525
- useEffect5(() => {
4526
- const firstRecord = configedIconData?.[0];
4527
- const firstChild = firstRecord?.child_id?.[0];
4528
- if (firstChild && firstRecord) {
4529
- handleChangeMenu({ menu: firstRecord, subMenu: firstChild });
4530
- }
4531
- }, [configedIconData]);
4532
- return {
4533
- ...menuData,
4534
- data: configedIconData,
4535
- action: { handleChangeMenu },
4536
- state: { menuid, action },
4537
- context
4538
- };
4539
- };
4540
-
4541
- // src/hooks/core/use-profile.ts
4542
- import { useQuery as useQuery2 } from "@tanstack/react-query";
4543
- import { useEffect as useEffect6, useMemo as useMemo4 } from "react";
4544
- import { useTranslation } from "react-i18next";
4545
- import { getEnv as getEnv4 } from "@fctc/interface-logic/environment";
4546
- import { useGetProfile } from "@fctc/interface-logic/hooks";
4547
- import { useAppDispatch as useAppDispatch3, setDataUser } from "@fctc/interface-logic/store";
4548
- var useProfile = (accessToken) => {
4549
- const getProfile = useGetProfile();
4550
- const dispatch = useAppDispatch3();
4551
- const { i18n: i18n2 } = useTranslation();
4552
- const fetchUserProfile = async () => {
4553
- return await getProfile.mutateAsync();
4554
- };
4555
- const userInfoQuery = useQuery2({
4556
- queryKey: ["userInfo", accessToken],
4557
- queryFn: fetchUserProfile,
4558
- enabled: !!accessToken
4559
- });
4560
- useEffect6(() => {
4561
- if (userInfoQuery.data) {
4562
- const userInfo = userInfoQuery.data;
4563
- const env = getEnv4();
4564
- env.setUid(userInfo?.sub);
4565
- dispatch(setDataUser(userInfo));
4566
- const userLocale = languages.find((lang) => lang?.id === userInfo?.locale);
4567
- env.setLang(userLocale?.id);
4568
- i18n2.changeLanguage(userLocale?.id.split("_")[0]);
4569
- }
4570
- }, [dispatch, userInfoQuery.data]);
4571
- const context = useMemo4(() => {
4572
- if (userInfoQuery.data?.sub && userInfoQuery.data?.locale) {
4573
- return {
4574
- uid: Number(userInfoQuery.data.sub),
4575
- allowed_company_ids: [],
4576
- lang: String(userInfoQuery.data.locale),
4577
- tz: "Asia/Saigon"
4578
- };
4579
- }
4580
- return void 0;
4581
- }, [userInfoQuery.data]);
4582
- return { ...userInfoQuery, context };
4583
- };
4584
-
4585
- // src/hooks/core/use-user.ts
4586
- var useUser = (accessToken) => {
4587
- const userProfile = useProfile(accessToken);
4588
- const userDetail = useDetail(accessToken, userProfile.data?.sub);
4589
- return { userProfile, userDetail, context: userProfile.context };
4590
- };
4370
+ // src/utils.ts
4371
+ __reExport(utils_exports, utils_star);
4372
+ import * as utils_star from "@fctc/interface-logic/utils";
4591
4373
 
4592
4374
  // src/hooks/core/use-view-v2.ts
4593
- import { useMemo as useMemo5 } from "react";
4594
- import { useGetView } from "@fctc/interface-logic/hooks";
4595
- var useViewV2 = ({
4596
- action,
4597
- context
4598
- }) => {
4599
- const viewParams = useMemo5(() => {
4600
- if (!action?.result) {
4601
- return void 0;
4602
- }
4603
- const actionResult = action?.result;
4604
- return {
4605
- model: String(actionResult?.res_model),
4606
- views: [
4607
- ...Array.isArray(actionResult?.views) ? actionResult?.views.map(
4608
- (view2) => view2[1] === "list" ? [view2[0], "list"] : view2
4609
- ) : [],
4610
- [
4611
- Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
4612
- "search"
4613
- ]
4614
- ],
4615
- context
4616
- };
4617
- }, [action, context]);
4618
- const view = useGetView(
4619
- viewParams || {},
4620
- !!viewParams
4621
- );
4622
- return {
4623
- ...view,
4624
- context
4625
- };
4626
- };
4627
-
4628
- // src/hooks/core/use-auth.ts
4629
- import { useLoginCredential } from "@fctc/interface-logic/hooks";
4630
- import {
4631
- setDataUser as setDataUser2,
4632
- setMenuList,
4633
- setProfile as setProfile2,
4634
- useAppDispatch as useAppDispatch4
4635
- } from "@fctc/interface-logic/store";
4636
- var useAuth = () => {
4637
- const [[isLoading, accessToken], setAccessToken] = useStorageState("TOKEN");
4638
- const loginMutate = useLoginCredential();
4639
- const dispatch = useAppDispatch4();
4640
- const signIn = async (email, password) => {
4641
- try {
4642
- loginMutate.mutate(
4643
- {
4644
- email,
4645
- password,
4646
- path: "/authentication/oauth2/token"
4647
- },
4648
- {
4649
- onSuccess: (res) => {
4650
- },
4651
- onError: (err) => {
4652
- }
4653
- }
4654
- );
4655
- } catch (error) {
4656
- throw new Error("Login failed");
4657
- }
4658
- };
4659
- const signOut = async () => {
4660
- dispatch(setMenuList([]));
4661
- dispatch(setDataUser2({}));
4662
- dispatch(setProfile2({}));
4663
- setAccessToken(null);
4664
- };
4665
- return {
4666
- signIn,
4667
- signOut,
4668
- accessToken,
4669
- isLoading
4670
- };
4671
- };
4672
-
4673
- // src/hooks/core/use-app-provider.tsx
4674
- import { createContext, useContext, useMemo as useMemo7 } from "react";
4375
+ import { useMemo as useMemo3 } from "react";
4675
4376
 
4676
4377
  // src/hooks/core/use-company.ts
4677
4378
  import { useQuery as useQuery3 } from "@tanstack/react-query";
4678
- import { useEffect as useEffect7, useMemo as useMemo6 } from "react";
4679
- import { getEnv as getEnv5 } from "@fctc/interface-logic/environment";
4680
- import {
4681
- useGetCurrentCompany,
4682
- useGetCompanyInfo
4683
- } from "@fctc/interface-logic/hooks";
4684
- var useCompany = (accessToken) => {
4685
- const getCurrentCompany = useGetCurrentCompany();
4686
- const fetchCurrentCompany = async () => {
4687
- return await getCurrentCompany.mutateAsync();
4688
- };
4689
- const currentCompany = useQuery3({
4690
- queryKey: ["currentCompany", accessToken],
4691
- queryFn: fetchCurrentCompany,
4692
- enabled: !!accessToken
4693
- });
4694
- const current_company_id = useMemo6(() => {
4695
- return currentCompany.data?.current_company_id;
4696
- }, [currentCompany.data]);
4697
- useEffect7(() => {
4698
- if (current_company_id) {
4699
- const companyIDs = [current_company_id];
4700
- const env = getEnv5();
4701
- env.setAllowCompanies([...companyIDs]);
4702
- env.setCompanies(companyIDs);
4703
- }
4704
- }, [current_company_id]);
4705
- const getCompanyInfo = useGetCompanyInfo();
4706
- const companyInfo = useQuery3({
4707
- queryKey: ["companyInfoQuery", current_company_id, accessToken],
4708
- queryFn: () => getCompanyInfo.mutateAsync(Number(current_company_id)),
4709
- enabled: !!current_company_id && !!accessToken
4710
- });
4711
- useEffect7(() => {
4712
- if (companyInfo.data) {
4713
- const companyInfoData = companyInfo.data;
4714
- if (companyInfoData?.length) {
4715
- const env = getEnv5();
4716
- env.setDefaultCompany(companyInfoData[0]);
4717
- }
4718
- }
4719
- }, [companyInfo.data]);
4720
- return {
4721
- currentCompany,
4722
- companyInfo,
4723
- context: { allowed_company_ids: [current_company_id] }
4724
- };
4725
- };
4726
- var use_company_default = useCompany;
4379
+ import { useEffect as useEffect5, useMemo as useMemo4 } from "react";
4727
4380
 
4728
4381
  // src/hooks/core/use-app-provider.tsx
4729
- import { evalJSONContext } from "@fctc/interface-logic/utils";
4730
4382
  import { jsx } from "react/jsx-runtime";
4731
4383
  var AppProviderInitialValue = {
4732
- config: {},
4733
4384
  user: {},
4734
- auth: {},
4735
4385
  company: {},
4736
4386
  action: {},
4737
4387
  menu: {},
4738
- view: {},
4739
- list: {}
4388
+ view: {}
4740
4389
  };
4741
4390
  var ReactContext = createContext(AppProviderInitialValue);
4742
- var AppProvider = ({ children }) => {
4743
- const config = useConfig({});
4744
- const auth = useAuth();
4745
- const user = useUser(auth.accessToken);
4746
- const company = use_company_default(auth.accessToken);
4747
- const menuContext = useMemo7(() => {
4748
- return combineContexts([user.context, company.context]);
4749
- }, [user.context, company.context]);
4750
- const menu = useMenu({ context: menuContext });
4751
- const action = useMemo7(() => {
4752
- return menu.state.action;
4753
- }, [menu.state.action]);
4754
- const viewContext = useMemo7(() => {
4755
- return combineContexts([
4756
- menuContext,
4757
- { ...evalJSONContext(action?.result?.context) }
4758
- ]);
4759
- }, [menuContext, action?.result?.context]);
4760
- const view = useViewV2({
4761
- action,
4762
- context: viewContext
4763
- });
4764
- const list = useListData({
4765
- action,
4766
- viewResponse: view.data,
4767
- context: viewContext
4768
- });
4769
- return /* @__PURE__ */ jsx(
4770
- ReactContext.Provider,
4771
- {
4772
- value: {
4773
- config,
4774
- auth,
4775
- user,
4776
- company,
4777
- menu,
4778
- list,
4779
- action,
4780
- view
4781
- },
4782
- children
4783
- }
4784
- );
4785
- };
4786
- var useAppProvider = () => {
4787
- const context = useContext(ReactContext);
4788
- if (!context) {
4789
- return AppProviderInitialValue;
4790
- }
4791
- return context;
4792
- };
4793
4391
 
4794
- // src/hooks/core/use-menu-item.tsx
4795
- import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
4796
- import { useGetActionDetail } from "@fctc/interface-logic/hooks";
4797
- import { useState as useState5 } from "react";
4392
+ // src/hooks/core/use-config.ts
4393
+ import { useEffect as useEffect6 } from "react";
4798
4394
 
4799
- // src/utils.ts
4800
- var utils_exports = {};
4801
- __export(utils_exports, {
4802
- API_APP_URL: () => API_APP_URL,
4803
- API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
4804
- STORAGES: () => STORAGES,
4805
- combineContexts: () => combineContexts,
4806
- convertFieldsToArray: () => convertFieldsToArray,
4807
- countSum: () => countSum,
4808
- getDateRange: () => getDateRange,
4809
- languages: () => languages,
4810
- mergeButtons: () => mergeButtons,
4811
- setStorageItemAsync: () => setStorageItemAsync,
4812
- useStorageState: () => useStorageState
4813
- });
4814
- __reExport(utils_exports, utils_star);
4815
- import * as utils_star from "@fctc/interface-logic/utils";
4395
+ // src/hooks/core/use-get-specification.ts
4396
+ import { useMemo as useMemo6 } from "react";
4816
4397
 
4817
- // src/hooks/core/use-menu-item.tsx
4818
- var useMenuItem = (props) => {
4819
- const { menu, activeMenuId } = props;
4820
- const model = menu?.action?.res_model;
4821
- const aid = menu?.action?.id?.id;
4822
- const id = menu?.id;
4823
- const context = getEnv6().context;
4824
- const queryActionDetail = useGetActionDetail({
4825
- aid,
4826
- id,
4827
- model,
4828
- context,
4829
- enabled: true,
4830
- queryKey: [`action-${aid}`]
4831
- }).data;
4832
- const [path, setPath] = useState5("");
4833
- const handleClick = () => {
4834
- if (location?.pathname === "/list/menu" && activeMenuId === menu?.id) {
4835
- return;
4836
- }
4837
- const hasListView = queryActionDetail.views.some(
4838
- ([id2, type]) => type === "list"
4839
- );
4840
- const viewType = hasListView ? "list" : "form";
4841
- const isAccountPayment = menu?.action?.res_model === "account.payment" && menu?.action?.id?.id === 1551;
4842
- const isConvertCurrencyMenu = menu?.action?.res_model === "currency.convert" && menu?.action?.id?.id === 1562;
4843
- const path2 = (0, utils_exports.formatUrlPath)({
4844
- viewType,
4845
- actionPath: isConvertCurrencyMenu ? "menu" : isAccountPayment ? "menu" : menu?.action?.path || "menu",
4846
- aid: menu?.action?.id?.id,
4847
- model: queryActionDetail.res_model
4848
- });
4849
- setPath(path2);
4850
- };
4851
- return { handleClick, path, queryActionDetail };
4852
- };
4398
+ // src/hooks/core/use-list-data.ts
4399
+ import { useMemo as useMemo7, useState as useState6 } from "react";
4400
+ import {
4401
+ evalJSONDomain,
4402
+ formatSortingString,
4403
+ isObjectEmpty as isObjectEmpty3
4404
+ } from "@fctc/interface-logic/utils";
4405
+
4406
+ // src/hooks/utils/use-click-outside.ts
4407
+ import { useEffect as useEffect7, useRef as useRef2 } from "react";
4408
+
4409
+ // src/hooks/utils/use-debounce.ts
4410
+ import { useEffect as useEffect8, useState as useState4 } from "react";
4411
+ function useDebounce(value, delay) {
4412
+ const [debouncedValue, setDebouncedValue] = useState4(value);
4413
+ useEffect8(() => {
4414
+ const handler = setTimeout(() => {
4415
+ setDebouncedValue(value);
4416
+ }, delay);
4417
+ return () => {
4418
+ clearTimeout(handler);
4419
+ };
4420
+ }, [value, delay]);
4421
+ return [debouncedValue];
4422
+ }
4853
4423
 
4854
- // src/hooks/core/use-get-rowids.ts
4855
- import { useCallback as useCallback2, useEffect as useEffect8, useRef as useRef2, useState as useState6 } from "react";
4424
+ // src/hooks/utils/use-get-rowids.ts
4425
+ import { useCallback as useCallback3, useEffect as useEffect9, useRef as useRef3, useState as useState5 } from "react";
4856
4426
  var useGetRowIds = (tableRef) => {
4857
4427
  function isElementVisible(el) {
4858
4428
  const style = window.getComputedStyle(el);
@@ -4869,9 +4439,9 @@ var useGetRowIds = (tableRef) => {
4869
4439
  }
4870
4440
  return true;
4871
4441
  }
4872
- const [rowIds, setRowIds] = useState6([]);
4873
- const lastRowIdsRef = useRef2([]);
4874
- const updateVisibleRowIds = useCallback2(() => {
4442
+ const [rowIds, setRowIds] = useState5([]);
4443
+ const lastRowIdsRef = useRef3([]);
4444
+ const updateVisibleRowIds = useCallback3(() => {
4875
4445
  const table = tableRef.current;
4876
4446
  if (!table) return;
4877
4447
  const rows = table.querySelectorAll("tr[data-row-id]");
@@ -4889,7 +4459,7 @@ var useGetRowIds = (tableRef) => {
4889
4459
  setRowIds(uniqueIds);
4890
4460
  }
4891
4461
  }, [tableRef]);
4892
- useEffect8(() => {
4462
+ useEffect9(() => {
4893
4463
  const table = tableRef.current;
4894
4464
  if (!table) return;
4895
4465
  const mutationObserver = new MutationObserver(() => {
@@ -4917,66 +4487,11 @@ var useGetRowIds = (tableRef) => {
4917
4487
  return { rowIds, refresh: updateVisibleRowIds };
4918
4488
  };
4919
4489
 
4920
- // src/hooks/utils/use-click-outside.ts
4921
- import { useEffect as useEffect9, useRef as useRef3 } from "react";
4922
- var DEFAULT_EVENTS = ["mousedown", "touchstart"];
4923
- var useClickOutside = ({
4924
- handler,
4925
- events = DEFAULT_EVENTS,
4926
- nodes = [],
4927
- refs
4928
- }) => {
4929
- const ref = useRef3(null);
4930
- useEffect9(() => {
4931
- const listener = (event) => {
4932
- const { target } = event;
4933
- if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
4934
- return;
4935
- }
4936
- if (!(target instanceof HTMLElement)) return;
4937
- const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
4938
- const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
4939
- if (shouldTrigger && !shouldIgnore) {
4940
- handler(event);
4941
- }
4942
- };
4943
- events.forEach((event) => document.addEventListener(event, listener));
4944
- return () => {
4945
- events.forEach((event) => document.removeEventListener(event, listener));
4946
- };
4947
- }, [handler, nodes, events]);
4948
- return ref;
4949
- };
4950
-
4951
- // src/hooks/utils/use-debounce.ts
4952
- import { useEffect as useEffect10, useState as useState7 } from "react";
4953
- function useDebounce(value, delay) {
4954
- const [debouncedValue, setDebouncedValue] = useState7(value);
4955
- useEffect10(() => {
4956
- const handler = setTimeout(() => {
4957
- setDebouncedValue(value);
4958
- }, delay);
4959
- return () => {
4960
- clearTimeout(handler);
4961
- };
4962
- }, [value, delay]);
4963
- return [debouncedValue];
4964
- }
4965
-
4966
- // src/hooks.ts
4967
- __reExport(hooks_exports, hooks_star);
4968
- import * as hooks_star from "@fctc/interface-logic/hooks";
4969
-
4970
4490
  // src/store.ts
4971
4491
  var store_exports = {};
4972
4492
  __reExport(store_exports, store_star);
4973
4493
  import * as store_star from "@fctc/interface-logic/store";
4974
4494
 
4975
- // src/provider.ts
4976
- var provider_exports = {};
4977
- __reExport(provider_exports, provider_star);
4978
- import * as provider_star from "@fctc/interface-logic/provider";
4979
-
4980
4495
  // src/widget/basic/many2one-field/controller.ts
4981
4496
  var many2oneFieldController = (props) => {
4982
4497
  const {
@@ -4993,13 +4508,13 @@ var many2oneFieldController = (props) => {
4993
4508
  showDetail
4994
4509
  } = props;
4995
4510
  const { env } = (0, provider_exports.useEnv)();
4996
- const [options, setOptions] = useState8([]);
4997
- const [inputValue, setInputValue] = useState8("");
4511
+ const [options, setOptions] = useState7([]);
4512
+ const [inputValue, setInputValue] = useState7("");
4998
4513
  const [debouncedInputValue] = useDebounce(inputValue, 1e3);
4999
- const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
5000
- const [tempSelectedOption, setTempSelectedOption] = useState8(null);
5001
- const [domainModal, setDomainModal] = useState8(null);
5002
- const [domainObject, setDomainObject] = useState8(null);
4514
+ const [isShowModalMany2Many, setIsShowModalMany2Many] = useState7(false);
4515
+ const [tempSelectedOption, setTempSelectedOption] = useState7(null);
4516
+ const [domainModal, setDomainModal] = useState7(null);
4517
+ const [domainObject, setDomainObject] = useState7(null);
5003
4518
  const actionData = sessionStorageUtils.getActionData();
5004
4519
  const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
5005
4520
  const initValue = methods?.getValues(name);
@@ -5009,7 +4524,7 @@ var many2oneFieldController = (props) => {
5009
4524
  ...fieldContext,
5010
4525
  ...env?.context
5011
4526
  };
5012
- const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
4527
+ const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5013
4528
  const data = {
5014
4529
  model: relation,
5015
4530
  domain: domainObject,
@@ -5025,7 +4540,7 @@ var many2oneFieldController = (props) => {
5025
4540
  data: dataOfSelection,
5026
4541
  refetch,
5027
4542
  isFetching
5028
- } = useGetSelection2({
4543
+ } = useGetSelection3({
5029
4544
  data,
5030
4545
  queryKey,
5031
4546
  enabled: false
@@ -5036,12 +4551,12 @@ var many2oneFieldController = (props) => {
5036
4551
  label: val?.display_name || val?.name
5037
4552
  })) || [];
5038
4553
  }, [dataOfSelection]);
5039
- useEffect11(() => {
4554
+ useEffect10(() => {
5040
4555
  setOptions(selectOptions);
5041
4556
  setDomainModal(domainObject);
5042
4557
  if (relation === "student.subject") (0, store_exports.setListSubject)(selectOptions);
5043
4558
  }, [selectOptions]);
5044
- useEffect11(() => {
4559
+ useEffect10(() => {
5045
4560
  setDomainObject(
5046
4561
  (0, utils_exports.evalJSONDomain)(
5047
4562
  domain,
@@ -5049,7 +4564,7 @@ var many2oneFieldController = (props) => {
5049
4564
  )
5050
4565
  );
5051
4566
  }, [domain, formValues]);
5052
- useEffect11(() => {
4567
+ useEffect10(() => {
5053
4568
  if (!propValue && tempSelectedOption) {
5054
4569
  methods.setValue(name, null);
5055
4570
  setTempSelectedOption(null);
@@ -5060,10 +4575,10 @@ var many2oneFieldController = (props) => {
5060
4575
  });
5061
4576
  }
5062
4577
  }, [propValue]);
5063
- const fetchMoreOptions = useCallback3(() => {
4578
+ const fetchMoreOptions = useCallback4(() => {
5064
4579
  refetch();
5065
4580
  }, [refetch]);
5066
- useEffect11(() => {
4581
+ useEffect10(() => {
5067
4582
  if (debouncedInputValue) {
5068
4583
  const filteredDomain = [...domainObject ?? []]?.filter(
5069
4584
  (d) => !(Array.isArray(d) && d[0] === "name" && d[1] === "ilike")
@@ -5078,7 +4593,7 @@ var many2oneFieldController = (props) => {
5078
4593
  }, 50);
5079
4594
  }
5080
4595
  }, [debouncedInputValue]);
5081
- const handleChooseRecord = useCallback3(
4596
+ const handleChooseRecord = useCallback4(
5082
4597
  (idRecord) => {
5083
4598
  const newOption = options.find(
5084
4599
  (option) => option.value === idRecord
@@ -5103,8 +4618,8 @@ var many2oneFieldController = (props) => {
5103
4618
  },
5104
4619
  [options, methods, name, onChange]
5105
4620
  );
5106
- const handleClose = useCallback3(() => setIsShowModalMany2Many(false), []);
5107
- const handleSelectChange = useCallback3(
4621
+ const handleClose = useCallback4(() => setIsShowModalMany2Many(false), []);
4622
+ const handleSelectChange = useCallback4(
5108
4623
  (selectedOption) => {
5109
4624
  if (!selectedOption) {
5110
4625
  methods.setValue(name, null, { shouldDirty: true });
@@ -5151,16 +4666,16 @@ var many2oneFieldController = (props) => {
5151
4666
  };
5152
4667
 
5153
4668
  // src/widget/basic/many2one-button-field/controller.ts
5154
- import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
5155
- import { useGetSelection } from "@fctc/interface-logic/hooks";
4669
+ import { getEnv as getEnv2 } from "@fctc/interface-logic/environment";
4670
+ import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
5156
4671
  import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
5157
4672
  var many2oneButtonController = (props) => {
5158
4673
  const { domain, methods, relation } = props;
5159
4674
  const actionDataString = sessionStorage.getItem("actionData");
5160
- const env = getEnv7();
4675
+ const env = getEnv2();
5161
4676
  const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
5162
4677
  const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
5163
- const { data: dataOfSelection } = useGetSelection({
4678
+ const { data: dataOfSelection } = useGetSelection2({
5164
4679
  data: {
5165
4680
  model: relation ?? "",
5166
4681
  domain: domainObject,
@@ -5178,7 +4693,7 @@ var many2oneButtonController = (props) => {
5178
4693
  };
5179
4694
 
5180
4695
  // src/widget/basic/many2many-field/controller.ts
5181
- import { useEffect as useEffect12, useMemo as useMemo9, useState as useState9 } from "react";
4696
+ import { useEffect as useEffect11, useMemo as useMemo9, useState as useState8 } from "react";
5182
4697
  import {
5183
4698
  evalJSONContext as evalJSONContext4,
5184
4699
  evalJSONDomain as evalJSONDomain4,
@@ -5197,10 +4712,10 @@ var many2manyFieldController = (props) => {
5197
4712
  actionData
5198
4713
  } = props;
5199
4714
  const { env } = (0, provider_exports.useEnv)();
5200
- const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView } = (0, provider_exports.useService)();
5201
- const [order, setOrder] = useState9();
5202
- const [page, setPage] = useState9(0);
5203
- const [domainMany2Many, setDomainMany2Many] = useState9(null);
4715
+ const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView: useGetFormView2 } = (0, provider_exports.useService)();
4716
+ const [order, setOrder] = useState8();
4717
+ const [page, setPage] = useState8(0);
4718
+ const [domainMany2Many, setDomainMany2Many] = useState8(null);
5204
4719
  const [debouncedPage] = useDebounce(page, 500);
5205
4720
  const contextObject = {
5206
4721
  ...env.context,
@@ -5227,7 +4742,7 @@ var many2manyFieldController = (props) => {
5227
4742
  }),
5228
4743
  [relation, viewResponse]
5229
4744
  );
5230
- const initModel = (0, hooks_exports.useModel)();
4745
+ const initModel = useModel();
5231
4746
  const modelInstance = useMemo9(() => {
5232
4747
  if (viewResponse) {
5233
4748
  return initModel.initModel(baseModel);
@@ -5277,7 +4792,7 @@ var many2manyFieldController = (props) => {
5277
4792
  isFetched,
5278
4793
  isPlaceholderData
5279
4794
  } = useGetListData2(data, queryKey, enabled);
5280
- useEffect12(() => {
4795
+ useEffect11(() => {
5281
4796
  if (viewResponse) {
5282
4797
  fetchData();
5283
4798
  }
@@ -5344,7 +4859,7 @@ var many2manyTagsController = (props) => {
5344
4859
  } = props;
5345
4860
  const isUser = relation === "res.users" || relation === "res.partner";
5346
4861
  const { env } = (0, provider_exports.useEnv)();
5347
- const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
4862
+ const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
5348
4863
  const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
5349
4864
  const domainObject = useMemo10(
5350
4865
  () => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
@@ -5363,7 +4878,7 @@ var many2manyTagsController = (props) => {
5363
4878
  enabled: true,
5364
4879
  context: env.context
5365
4880
  };
5366
- const { data: dataOfSelection } = useGetSelection2({
4881
+ const { data: dataOfSelection } = useGetSelection3({
5367
4882
  data,
5368
4883
  queryKey: [`data_${relation}`, domainObject]
5369
4884
  });
@@ -5388,7 +4903,7 @@ var many2manyTagsController = (props) => {
5388
4903
  };
5389
4904
 
5390
4905
  // src/widget/basic/status-bar-field/controller.ts
5391
- import { useState as useState10 } from "react";
4906
+ import { useState as useState9 } from "react";
5392
4907
  import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
5393
4908
  var durationController = (props) => {
5394
4909
  const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
@@ -5397,10 +4912,10 @@ var durationController = (props) => {
5397
4912
  name: "",
5398
4913
  fold: ""
5399
4914
  };
5400
- const { useGetListData: useGetListData2, useChangeStatus } = (0, provider_exports.useService)();
4915
+ const { useGetListData: useGetListData2, useChangeStatus: useChangeStatus2 } = (0, provider_exports.useService)();
5401
4916
  const { env } = (0, provider_exports.useEnv)();
5402
- const [disabled, setDisabled] = useState10(false);
5403
- const [modelStatus, setModalStatus] = useState10(false);
4917
+ const [disabled, setDisabled] = useState9(false);
4918
+ const [modelStatus, setModalStatus] = useState9(false);
5404
4919
  const queryKey = [`data-status-duration`, specification];
5405
4920
  const listDataProps = {
5406
4921
  model: relation,
@@ -5420,7 +4935,7 @@ var durationController = (props) => {
5420
4935
  queryKey,
5421
4936
  enabled
5422
4937
  );
5423
- const { mutate: fetchChangeStatus } = useChangeStatus();
4938
+ const { mutate: fetchChangeStatus } = useChangeStatus2();
5424
4939
  const handleClick = async (stage_id) => {
5425
4940
  setDisabled(true);
5426
4941
  if (stage_id) {
@@ -5460,8 +4975,8 @@ var priorityFieldController = (props) => {
5460
4975
  const { name, model, index, actionData, context, onChange, specification } = props;
5461
4976
  const _context = { ...evalJSONContext6(actionData?.context) };
5462
4977
  const contextObject = { ...context, ..._context };
5463
- const { useSave: useSave2 } = (0, provider_exports.useService)();
5464
- const { mutateAsync: fetchSave } = useSave2();
4978
+ const { useSave: useSave3 } = (0, provider_exports.useService)();
4979
+ const { mutateAsync: fetchSave } = useSave3();
5465
4980
  const savePriorities = async ({
5466
4981
  value,
5467
4982
  resetPriority
@@ -5490,10 +5005,10 @@ var priorityFieldController = (props) => {
5490
5005
  };
5491
5006
 
5492
5007
  // src/widget/basic/download-file-field/controller.ts
5493
- import { useId, useState as useState11 } from "react";
5008
+ import { useId, useState as useState10 } from "react";
5494
5009
  var downloadFileController = () => {
5495
5010
  const inputId = useId();
5496
- const [file, setFile] = useState11(null);
5011
+ const [file, setFile] = useState10(null);
5497
5012
  const handleFileChange = (e) => {
5498
5013
  setFile(e.target.files[0]);
5499
5014
  };
@@ -6425,11 +5940,11 @@ var dateFieldController = (props) => {
6425
5940
  };
6426
5941
 
6427
5942
  // src/widget/basic/copy-link-button/controller.ts
6428
- import { useState as useState12 } from "react";
5943
+ import { useState as useState11 } from "react";
6429
5944
  import { copyTextToClipboard } from "@fctc/interface-logic/utils";
6430
5945
  var copyLinkButtonController = (props) => {
6431
5946
  const { value, defaultValue } = props;
6432
- const [isCopied, setIsCopied] = useState12(false);
5947
+ const [isCopied, setIsCopied] = useState11(false);
6433
5948
  const handleCopyToClipboard = async (value2) => {
6434
5949
  await copyTextToClipboard(value2);
6435
5950
  setIsCopied(true);
@@ -6448,11 +5963,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
6448
5963
  var colorFieldController = (props) => {
6449
5964
  const { value, isForm, name, formValues, idForm, model, actionData } = props;
6450
5965
  const { env } = (0, provider_exports.useEnv)();
6451
- const { useSave: useSave2 } = (0, provider_exports.useService)();
5966
+ const { useSave: useSave3 } = (0, provider_exports.useService)();
6452
5967
  const _context = { ...evalJSONContext7(actionData?.context) || {} };
6453
5968
  const contextObject = { ...env.context, ..._context };
6454
5969
  const idDefault = isForm ? idForm : formValues?.id;
6455
- const { mutate: onSave } = useSave2();
5970
+ const { mutate: onSave } = useSave3();
6456
5971
  const savePickColor = async (colorObject) => {
6457
5972
  const { id } = colorObject;
6458
5973
  if (value === id) return;
@@ -6477,14 +5992,14 @@ var colorFieldController = (props) => {
6477
5992
  };
6478
5993
 
6479
5994
  // src/widget/basic/binary-field/controller.ts
6480
- import { useEffect as useEffect13, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
5995
+ import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
6481
5996
  import { isBase64Image } from "@fctc/interface-logic/utils";
6482
5997
  var binaryFieldController = (props) => {
6483
5998
  const { name, methods, readonly = false, value } = props;
6484
5999
  const inputId = useId2();
6485
- const [selectedImage, setSelectedImage] = useState13(null);
6486
- const [initialImage, setInitialImage] = useState13(value || null);
6487
- const [isInsideTable, setIsInsideTable] = useState13(false);
6000
+ const [selectedImage, setSelectedImage] = useState12(null);
6001
+ const [initialImage, setInitialImage] = useState12(value || null);
6002
+ const [isInsideTable, setIsInsideTable] = useState12(false);
6488
6003
  const { setValue } = methods;
6489
6004
  const binaryRef = useRef4(null);
6490
6005
  const convertUrlToBase64 = async (url) => {
@@ -6548,14 +6063,14 @@ var binaryFieldController = (props) => {
6548
6063
  else if (base64.startsWith("UklGR")) mimeType = "image/webp";
6549
6064
  return mimeType ? `data:${mimeType};base64,${base64}` : null;
6550
6065
  };
6551
- useEffect13(() => {
6066
+ useEffect12(() => {
6552
6067
  return () => {
6553
6068
  if (selectedImage) {
6554
6069
  URL.revokeObjectURL(selectedImage);
6555
6070
  }
6556
6071
  };
6557
6072
  }, [selectedImage]);
6558
- useEffect13(() => {
6073
+ useEffect12(() => {
6559
6074
  if (binaryRef.current) {
6560
6075
  const isInsideTable2 = !!binaryRef.current.closest("table");
6561
6076
  setIsInsideTable(isInsideTable2);
@@ -6575,11 +6090,11 @@ var binaryFieldController = (props) => {
6575
6090
  };
6576
6091
 
6577
6092
  // src/widget/advance/table/table-head/controller.ts
6578
- import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
6093
+ import { useAppDispatch, setSelectedRowKeys } from "@fctc/interface-logic/store";
6579
6094
  import { useMemo as useMemo11, useRef as useRef5 } from "react";
6580
6095
  var tableHeadController = (props) => {
6581
6096
  const { typeTable, rows, tableRef, groupByList, selectedRowKeys } = props;
6582
- const appDispatch = useAppDispatch5();
6097
+ const appDispatch = useAppDispatch();
6583
6098
  const { rowIds: recordIds } = useGetRowIds(tableRef);
6584
6099
  const selectedRowKeysRef = useRef5(recordIds);
6585
6100
  const isGroupTable = typeTable === "group";
@@ -6636,11 +6151,11 @@ var tableHeadController = (props) => {
6636
6151
  };
6637
6152
 
6638
6153
  // src/widget/advance/table/table-view/controller.ts
6639
- import { useEffect as useEffect14, useState as useState14 } from "react";
6154
+ import { useEffect as useEffect13, useState as useState13 } from "react";
6640
6155
  import { domainHelper } from "@fctc/interface-logic/utils";
6641
6156
  var tableController = ({ data }) => {
6642
- const [rows, setRows] = useState14(null);
6643
- const [columns, setColumns] = useState14(null);
6157
+ const [rows, setRows] = useState13(null);
6158
+ const [columns, setColumns] = useState13(null);
6644
6159
  const dataModelFields = data?.fields?.map((field) => {
6645
6160
  return {
6646
6161
  ...data.dataModel?.[field?.name],
@@ -6668,7 +6183,7 @@ var tableController = ({ data }) => {
6668
6183
  return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
6669
6184
  });
6670
6185
  };
6671
- useEffect14(() => {
6186
+ useEffect13(() => {
6672
6187
  setRows(transformData(data.records));
6673
6188
  }, [data.records]);
6674
6189
  const handleGetColumns = () => {
@@ -6689,7 +6204,7 @@ var tableController = ({ data }) => {
6689
6204
  }
6690
6205
  return cols;
6691
6206
  };
6692
- useEffect14(() => {
6207
+ useEffect13(() => {
6693
6208
  if (!columns) {
6694
6209
  setColumns(handleGetColumns());
6695
6210
  }
@@ -6706,12 +6221,14 @@ var tableController = ({ data }) => {
6706
6221
  });
6707
6222
  setColumns(tempColumn);
6708
6223
  };
6709
- useEffect14(() => {
6710
- setRows(null);
6711
- setColumns(null);
6712
- return () => {
6713
- setRows(null);
6224
+ useEffect13(() => {
6225
+ if (data?.fields != null) {
6714
6226
  setColumns(null);
6227
+ }
6228
+ return () => {
6229
+ if (data?.fields != null) {
6230
+ setColumns(null);
6231
+ }
6715
6232
  };
6716
6233
  }, [data?.fields]);
6717
6234
  return {
@@ -6723,10 +6240,10 @@ var tableController = ({ data }) => {
6723
6240
  };
6724
6241
 
6725
6242
  // src/widget/advance/table/table-group/controller.ts
6726
- import { useEffect as useEffect15, useMemo as useMemo12, useState as useState15 } from "react";
6243
+ import { useEffect as useEffect14, useMemo as useMemo12, useState as useState14 } from "react";
6727
6244
  import {
6728
- useAppSelector as useAppSelector3,
6729
- selectList as selectList2
6245
+ useAppSelector as useAppSelector2,
6246
+ selectList
6730
6247
  } from "@fctc/interface-logic/store";
6731
6248
  var tableGroupController = (props) => {
6732
6249
  const { env } = (0, provider_exports.useEnv)();
@@ -6743,10 +6260,10 @@ var tableGroupController = (props) => {
6743
6260
  groupByList,
6744
6261
  setSelectedRowKeys: setSelectedRowKeys3
6745
6262
  } = props;
6746
- const [pageGroup, setPageGroup] = useState15(0);
6747
- const { selectedRowKeys } = useAppSelector3(selectList2);
6748
- const [isShowGroup, setIsShowGroup] = useState15(false);
6749
- const [colEmptyGroup, setColEmptyGroup] = useState15({
6263
+ const [pageGroup, setPageGroup] = useState14(0);
6264
+ const { selectedRowKeys } = useAppSelector2(selectList);
6265
+ const [isShowGroup, setIsShowGroup] = useState14(false);
6266
+ const [colEmptyGroup, setColEmptyGroup] = useState14({
6750
6267
  fromStart: 1,
6751
6268
  fromEnd: 1
6752
6269
  });
@@ -6835,7 +6352,7 @@ var tableGroupController = (props) => {
6835
6352
  }
6836
6353
  toggleShowGroup();
6837
6354
  };
6838
- useEffect15(() => {
6355
+ useEffect14(() => {
6839
6356
  if (!isDataGroupFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
6840
6357
  return;
6841
6358
  }
@@ -6868,7 +6385,7 @@ import {
6868
6385
  evalJSONDomain as evalJSONDomain7,
6869
6386
  validateAndParseDate
6870
6387
  } from "@fctc/interface-logic/utils";
6871
- import { useCallback as useCallback4, useEffect as useEffect16, useState as useState16 } from "react";
6388
+ import { useCallback as useCallback5, useEffect as useEffect15, useState as useState15 } from "react";
6872
6389
  var searchController = ({
6873
6390
  viewData,
6874
6391
  model,
@@ -6877,12 +6394,12 @@ var searchController = ({
6877
6394
  fieldsList
6878
6395
  }) => {
6879
6396
  const { env } = (0, provider_exports.useEnv)();
6880
- const [filterBy, setFilterBy] = useState16(null);
6881
- const [searchBy, setSearchBy] = useState16(null);
6882
- const [groupBy, setGroupBy] = useState16(null);
6883
- const [selectedTags, setSelectedTags] = useState16(null);
6884
- const [searchString, setSearchString] = useState16("");
6885
- const [searchMap, setSearchMap] = useState16({});
6397
+ const [filterBy, setFilterBy] = useState15(null);
6398
+ const [searchBy, setSearchBy] = useState15(null);
6399
+ const [groupBy, setGroupBy] = useState15(null);
6400
+ const [selectedTags, setSelectedTags] = useState15(null);
6401
+ const [searchString, setSearchString] = useState15("");
6402
+ const [searchMap, setSearchMap] = useState15({});
6886
6403
  const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
6887
6404
  const contextSearch = { ...env.context, ...actionContext };
6888
6405
  const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
@@ -6929,7 +6446,7 @@ var searchController = ({
6929
6446
  }
6930
6447
  }
6931
6448
  };
6932
- useEffect16(() => {
6449
+ useEffect15(() => {
6933
6450
  fetchData();
6934
6451
  }, [model, viewData]);
6935
6452
  const onChangeSearchInput = (search_string) => {
@@ -7011,7 +6528,7 @@ var searchController = ({
7011
6528
  return [...domain2];
7012
6529
  }
7013
6530
  };
7014
- const setTagSearch = useCallback4(
6531
+ const setTagSearch = useCallback5(
7015
6532
  (updatedMap) => {
7016
6533
  if (!updatedMap) return;
7017
6534
  const tagsSearch = Object.entries(updatedMap).map(
@@ -7074,20 +6591,11 @@ var searchController = ({
7074
6591
  },
7075
6592
  [searchMap]
7076
6593
  );
7077
- useEffect16(() => {
6594
+ useEffect15(() => {
7078
6595
  setTagSearch(searchMap);
7079
6596
  }, [searchMap]);
7080
6597
  const handleAddTagSearch = (tag) => {
7081
- const {
7082
- domain: domain2,
7083
- groupIndex,
7084
- value,
7085
- type,
7086
- title,
7087
- context: context2,
7088
- active,
7089
- dataIndex
7090
- } = tag;
6598
+ const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
7091
6599
  const domainFormat = new domainHelper2.Domain(domain2);
7092
6600
  if (type === SearchType.FILTER) {
7093
6601
  addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {