@fctc/widget-logic 2.4.3 → 2.4.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/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,
@@ -5191,16 +4706,16 @@ var many2manyFieldController = (props) => {
5191
4706
  context,
5192
4707
  options,
5193
4708
  tab,
5194
- setSelectedRowKeys: setSelectedRowKeys3,
4709
+ setSelectedRowKeys: setSelectedRowKeys2,
5195
4710
  groupByDomain,
5196
4711
  enabled: enabledCallAPI,
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,13 +4792,13 @@ 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
  }
5284
4799
  return () => {
5285
4800
  setPage(0);
5286
- setSelectedRowKeys3([]);
4801
+ setSelectedRowKeys2([]);
5287
4802
  setDomainMany2Many(null);
5288
4803
  };
5289
4804
  }, [viewResponse]);
@@ -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,16 @@ 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";
6579
6093
  import { useMemo as useMemo11, useRef as useRef5 } from "react";
6580
6094
  var tableHeadController = (props) => {
6581
- const { typeTable, rows, tableRef, groupByList, selectedRowKeys } = props;
6582
- const appDispatch = useAppDispatch5();
6095
+ const {
6096
+ typeTable,
6097
+ rows,
6098
+ tableRef,
6099
+ groupByList,
6100
+ selectedRowKeys,
6101
+ setSelectedRowKeys: setSelectedRowKeys2
6102
+ } = props;
6583
6103
  const { rowIds: recordIds } = useGetRowIds(tableRef);
6584
6104
  const selectedRowKeysRef = useRef5(recordIds);
6585
6105
  const isGroupTable = typeTable === "group";
@@ -6605,27 +6125,27 @@ var tableHeadController = (props) => {
6605
6125
  const handleCheckBoxAll = (event) => {
6606
6126
  if (event?.target?.checked && typeTable === "list") {
6607
6127
  const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
6608
- appDispatch(setSelectedRowKeys(allRowKeys));
6128
+ setSelectedRowKeys2(allRowKeys);
6609
6129
  } else if (event?.target?.checked && typeTable === "group") {
6610
6130
  const rowsIDs = document.querySelectorAll("tr[data-row-id]");
6611
6131
  const ids = Array.from(rowsIDs)?.map(
6612
6132
  (row) => Number(row?.getAttribute("data-row-id"))
6613
6133
  );
6614
6134
  if (ids?.length > 0) {
6615
- appDispatch(setSelectedRowKeys(ids));
6135
+ setSelectedRowKeys2(ids);
6616
6136
  } else {
6617
6137
  const sum = countSum(
6618
6138
  rows,
6619
6139
  typeof groupByList === "object" ? groupByList?.contexts?.[0]?.group_by : void 0
6620
6140
  );
6621
6141
  const keys = Array.from({ length: sum }, (_) => void 0);
6622
- appDispatch(setSelectedRowKeys(keys));
6142
+ setSelectedRowKeys2(keys);
6623
6143
  }
6624
6144
  if (selectedRowKeysRef) {
6625
6145
  selectedRowKeysRef.current = [];
6626
6146
  }
6627
6147
  } else {
6628
- appDispatch(setSelectedRowKeys([]));
6148
+ setSelectedRowKeys2([]);
6629
6149
  }
6630
6150
  };
6631
6151
  return {
@@ -6636,11 +6156,11 @@ var tableHeadController = (props) => {
6636
6156
  };
6637
6157
 
6638
6158
  // src/widget/advance/table/table-view/controller.ts
6639
- import { useEffect as useEffect14, useState as useState14 } from "react";
6159
+ import { useEffect as useEffect13, useState as useState13 } from "react";
6640
6160
  import { domainHelper } from "@fctc/interface-logic/utils";
6641
6161
  var tableController = ({ data }) => {
6642
- const [rows, setRows] = useState14(null);
6643
- const [columns, setColumns] = useState14(null);
6162
+ const [rows, setRows] = useState13(null);
6163
+ const [columns, setColumns] = useState13(null);
6644
6164
  const dataModelFields = data?.fields?.map((field) => {
6645
6165
  return {
6646
6166
  ...data.dataModel?.[field?.name],
@@ -6668,7 +6188,7 @@ var tableController = ({ data }) => {
6668
6188
  return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
6669
6189
  });
6670
6190
  };
6671
- useEffect14(() => {
6191
+ useEffect13(() => {
6672
6192
  setRows(transformData(data.records));
6673
6193
  }, [data.records]);
6674
6194
  const handleGetColumns = () => {
@@ -6689,7 +6209,7 @@ var tableController = ({ data }) => {
6689
6209
  }
6690
6210
  return cols;
6691
6211
  };
6692
- useEffect14(() => {
6212
+ useEffect13(() => {
6693
6213
  if (!columns) {
6694
6214
  setColumns(handleGetColumns());
6695
6215
  }
@@ -6706,12 +6226,14 @@ var tableController = ({ data }) => {
6706
6226
  });
6707
6227
  setColumns(tempColumn);
6708
6228
  };
6709
- useEffect14(() => {
6710
- setRows(null);
6711
- setColumns(null);
6712
- return () => {
6713
- setRows(null);
6229
+ useEffect13(() => {
6230
+ if (data?.fields != null) {
6714
6231
  setColumns(null);
6232
+ }
6233
+ return () => {
6234
+ if (data?.fields != null) {
6235
+ setColumns(null);
6236
+ }
6715
6237
  };
6716
6238
  }, [data?.fields]);
6717
6239
  return {
@@ -6723,10 +6245,10 @@ var tableController = ({ data }) => {
6723
6245
  };
6724
6246
 
6725
6247
  // src/widget/advance/table/table-group/controller.ts
6726
- import { useEffect as useEffect15, useMemo as useMemo12, useState as useState15 } from "react";
6248
+ import { useEffect as useEffect14, useMemo as useMemo12, useState as useState14 } from "react";
6727
6249
  import {
6728
- useAppSelector as useAppSelector3,
6729
- selectList as selectList2
6250
+ useAppSelector as useAppSelector2,
6251
+ selectList
6730
6252
  } from "@fctc/interface-logic/store";
6731
6253
  var tableGroupController = (props) => {
6732
6254
  const { env } = (0, provider_exports.useEnv)();
@@ -6741,12 +6263,12 @@ var tableGroupController = (props) => {
6741
6263
  context,
6742
6264
  checkedAll,
6743
6265
  groupByList,
6744
- setSelectedRowKeys: setSelectedRowKeys3
6266
+ setSelectedRowKeys: setSelectedRowKeys2
6745
6267
  } = props;
6746
- const [pageGroup, setPageGroup] = useState15(0);
6747
- const { selectedRowKeys } = useAppSelector3(selectList2);
6748
- const [isShowGroup, setIsShowGroup] = useState15(false);
6749
- const [colEmptyGroup, setColEmptyGroup] = useState15({
6268
+ const [pageGroup, setPageGroup] = useState14(0);
6269
+ const { selectedRowKeys } = useAppSelector2(selectList);
6270
+ const [isShowGroup, setIsShowGroup] = useState14(false);
6271
+ const [colEmptyGroup, setColEmptyGroup] = useState14({
6750
6272
  fromStart: 1,
6751
6273
  fromEnd: 1
6752
6274
  });
@@ -6823,25 +6345,25 @@ var tableGroupController = (props) => {
6823
6345
  const filteredIds = selectedRowKeys.filter(
6824
6346
  (id) => !ids.includes(id)
6825
6347
  );
6826
- setSelectedRowKeys3(filteredIds);
6348
+ setSelectedRowKeys2(filteredIds);
6827
6349
  } else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull) {
6828
6350
  const clonedKeys = [...selectedRowKeys];
6829
- setSelectedRowKeys3([...clonedKeys, -1]);
6830
- setTimeout(() => setSelectedRowKeys3(clonedKeys), 500);
6351
+ setSelectedRowKeys2([...clonedKeys, -1]);
6352
+ setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
6831
6353
  } else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
6832
6354
  console.log("abc");
6833
6355
  const filteredKeys = selectedRowKeys.filter((id) => id > -1);
6834
- setSelectedRowKeys3(filteredKeys);
6356
+ setSelectedRowKeys2(filteredKeys);
6835
6357
  }
6836
6358
  toggleShowGroup();
6837
6359
  };
6838
- useEffect15(() => {
6360
+ useEffect14(() => {
6839
6361
  if (!isDataGroupFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
6840
6362
  return;
6841
6363
  }
6842
6364
  const clonedKeys = [...selectedRowKeys];
6843
- setSelectedRowKeys3([...clonedKeys, -1]);
6844
- setTimeout(() => setSelectedRowKeys3(clonedKeys), 500);
6365
+ setSelectedRowKeys2([...clonedKeys, -1]);
6366
+ setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
6845
6367
  }, [isDataGroupFetched]);
6846
6368
  return {
6847
6369
  onExpandChildGroup,
@@ -6868,7 +6390,7 @@ import {
6868
6390
  evalJSONDomain as evalJSONDomain7,
6869
6391
  validateAndParseDate
6870
6392
  } from "@fctc/interface-logic/utils";
6871
- import { useCallback as useCallback4, useEffect as useEffect16, useState as useState16 } from "react";
6393
+ import { useCallback as useCallback5, useEffect as useEffect15, useState as useState15 } from "react";
6872
6394
  var searchController = ({
6873
6395
  viewData,
6874
6396
  model,
@@ -6877,12 +6399,12 @@ var searchController = ({
6877
6399
  fieldsList
6878
6400
  }) => {
6879
6401
  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({});
6402
+ const [filterBy, setFilterBy] = useState15(null);
6403
+ const [searchBy, setSearchBy] = useState15(null);
6404
+ const [groupBy, setGroupBy] = useState15(null);
6405
+ const [selectedTags, setSelectedTags] = useState15(null);
6406
+ const [searchString, setSearchString] = useState15("");
6407
+ const [searchMap, setSearchMap] = useState15({});
6886
6408
  const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
6887
6409
  const contextSearch = { ...env.context, ...actionContext };
6888
6410
  const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
@@ -6929,7 +6451,7 @@ var searchController = ({
6929
6451
  }
6930
6452
  }
6931
6453
  };
6932
- useEffect16(() => {
6454
+ useEffect15(() => {
6933
6455
  fetchData();
6934
6456
  }, [model, viewData]);
6935
6457
  const onChangeSearchInput = (search_string) => {
@@ -7011,7 +6533,7 @@ var searchController = ({
7011
6533
  return [...domain2];
7012
6534
  }
7013
6535
  };
7014
- const setTagSearch = useCallback4(
6536
+ const setTagSearch = useCallback5(
7015
6537
  (updatedMap) => {
7016
6538
  if (!updatedMap) return;
7017
6539
  const tagsSearch = Object.entries(updatedMap).map(
@@ -7074,20 +6596,11 @@ var searchController = ({
7074
6596
  },
7075
6597
  [searchMap]
7076
6598
  );
7077
- useEffect16(() => {
6599
+ useEffect15(() => {
7078
6600
  setTagSearch(searchMap);
7079
6601
  }, [searchMap]);
7080
6602
  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;
6603
+ const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
7091
6604
  const domainFormat = new domainHelper2.Domain(domain2);
7092
6605
  if (type === SearchType.FILTER) {
7093
6606
  addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {