@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/hooks.d.mts +559 -346
- package/dist/hooks.d.ts +559 -346
- package/dist/hooks.js +604 -480
- package/dist/hooks.mjs +615 -498
- package/dist/index.d.mts +4 -5
- package/dist/index.d.ts +4 -5
- package/dist/index.js +706 -612
- package/dist/index.mjs +799 -647
- package/dist/utils.d.mts +1 -9
- package/dist/utils.d.ts +1 -9
- package/dist/utils.js +0 -12
- package/dist/utils.mjs +0 -10
- package/dist/widget.d.mts +6 -6
- package/dist/widget.d.ts +6 -6
- package/dist/widget.js +168 -713
- package/dist/widget.mjs +258 -745
- package/package.json +2 -2
package/dist/index.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
|
|
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) &&
|
|
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) && !
|
|
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) && !
|
|
2662
|
+
var objectTest = isObject(input) && !isObjectEmpty4(input), propertyTest = false, properties = [
|
|
2663
2663
|
"sameDay",
|
|
2664
2664
|
"nextDay",
|
|
2665
2665
|
"lastDay",
|
|
@@ -4032,15 +4032,13 @@ var require_moment = __commonJS({
|
|
|
4032
4032
|
// <input type="month" />
|
|
4033
4033
|
};
|
|
4034
4034
|
return hooks;
|
|
4035
|
-
});
|
|
4035
|
+
}));
|
|
4036
4036
|
}
|
|
4037
4037
|
});
|
|
4038
4038
|
|
|
4039
4039
|
// src/index.ts
|
|
4040
4040
|
var index_exports = {};
|
|
4041
4041
|
__export(index_exports, {
|
|
4042
|
-
API_APP_URL: () => API_APP_URL,
|
|
4043
|
-
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
4044
4042
|
AppProvider: () => AppProvider,
|
|
4045
4043
|
CheckIcon: () => CheckIcon,
|
|
4046
4044
|
ChevronBottomIcon: () => ChevronBottomIcon,
|
|
@@ -4076,136 +4074,277 @@ __export(index_exports, {
|
|
|
4076
4074
|
tableGroupController: () => tableGroupController,
|
|
4077
4075
|
tableHeadController: () => tableHeadController,
|
|
4078
4076
|
useAppProvider: () => useAppProvider,
|
|
4079
|
-
|
|
4077
|
+
useButton: () => useButton,
|
|
4080
4078
|
useCallAction: () => useCallAction,
|
|
4079
|
+
useChangeStatus: () => useChangeStatus,
|
|
4081
4080
|
useClickOutside: () => useClickOutside,
|
|
4081
|
+
useCompany: () => useCompany,
|
|
4082
4082
|
useConfig: () => useConfig,
|
|
4083
4083
|
useDebounce: () => useDebounce,
|
|
4084
|
+
useDelete: () => useDelete,
|
|
4085
|
+
useDeleteComment: () => useDeleteComment,
|
|
4084
4086
|
useDetail: () => useDetail,
|
|
4087
|
+
useDuplicateRecord: () => useDuplicateRecord,
|
|
4088
|
+
useExecuteImport: () => useExecuteImport,
|
|
4089
|
+
useExportExcel: () => useExportExcel,
|
|
4090
|
+
useForgotPassword: () => useForgotPassword,
|
|
4091
|
+
useForgotPasswordSSO: () => useForgotPasswordSSO,
|
|
4092
|
+
useGet2FAMethods: () => useGet2FAMethods,
|
|
4093
|
+
useGetAccessByCode: () => useGetAccessByCode,
|
|
4094
|
+
useGetAction: () => useGetAction,
|
|
4095
|
+
useGetActionDetail: () => useGetActionDetail,
|
|
4096
|
+
useGetAll: () => useGetAll,
|
|
4097
|
+
useGetCalendar: () => useGetCalendar,
|
|
4098
|
+
useGetComment: () => useGetComment,
|
|
4099
|
+
useGetCompanyInfo: () => useGetCompanyInfo,
|
|
4100
|
+
useGetConversionRate: () => useGetConversionRate,
|
|
4101
|
+
useGetCurrency: () => useGetCurrency,
|
|
4102
|
+
useGetCurrentCompany: () => useGetCurrentCompany,
|
|
4103
|
+
useGetDetail: () => useGetDetail,
|
|
4104
|
+
useGetFieldExport: () => useGetFieldExport,
|
|
4105
|
+
useGetFieldOnChange: () => useGetFieldOnChange,
|
|
4106
|
+
useGetFileExcel: () => useGetFileExcel,
|
|
4107
|
+
useGetFormView: () => useGetFormView,
|
|
4108
|
+
useGetGroups: () => useGetGroups,
|
|
4109
|
+
useGetImage: () => useGetImage,
|
|
4110
|
+
useGetListCompany: () => useGetListCompany,
|
|
4111
|
+
useGetListData: () => useGetListData,
|
|
4112
|
+
useGetListMyBankAccount: () => useGetListMyBankAccount,
|
|
4113
|
+
useGetMenu: () => useGetMenu,
|
|
4114
|
+
useGetPrintReport: () => useGetPrintReport,
|
|
4115
|
+
useGetProGressBar: () => useGetProGressBar,
|
|
4116
|
+
useGetProfile: () => useGetProfile,
|
|
4117
|
+
useGetProvider: () => useGetProvider,
|
|
4118
|
+
useGetResequence: () => useGetResequence,
|
|
4085
4119
|
useGetRowIds: () => useGetRowIds,
|
|
4120
|
+
useGetSelection: () => useGetSelection,
|
|
4121
|
+
useGetSpecification: () => useGetSpecification,
|
|
4122
|
+
useGetUser: () => useGetUser,
|
|
4123
|
+
useGetView: () => useGetView,
|
|
4124
|
+
useGrantAccess: () => useGrantAccess,
|
|
4125
|
+
useIsValidToken: () => useIsValidToken,
|
|
4086
4126
|
useListData: () => useListData,
|
|
4127
|
+
useLoadAction: () => useLoadAction,
|
|
4128
|
+
useLoadMessage: () => useLoadMessage,
|
|
4129
|
+
useLoginCredential: () => useLoginCredential,
|
|
4130
|
+
useLoginSocial: () => useLoginSocial,
|
|
4131
|
+
useLogout: () => useLogout,
|
|
4087
4132
|
useMenu: () => useMenu,
|
|
4088
|
-
|
|
4133
|
+
useModel: () => useModel,
|
|
4134
|
+
useOdooDataTransform: () => useOdooDataTransform,
|
|
4135
|
+
useOnChangeForm: () => useOnChangeForm,
|
|
4136
|
+
useParsePreview: () => useParsePreview,
|
|
4137
|
+
usePrint: () => usePrint,
|
|
4089
4138
|
useProfile: () => useProfile,
|
|
4139
|
+
useRemoveRow: () => useRemoveRow,
|
|
4140
|
+
useRemoveTotpSetup: () => useRemoveTotpSetup,
|
|
4141
|
+
useRequestSetupTotp: () => useRequestSetupTotp,
|
|
4142
|
+
useResetPassword: () => useResetPassword,
|
|
4143
|
+
useResetPasswordSSO: () => useResetPasswordSSO,
|
|
4144
|
+
useRunAction: () => useRunAction,
|
|
4145
|
+
useSave: () => useSave,
|
|
4146
|
+
useSendComment: () => useSendComment,
|
|
4147
|
+
useSettingsWebRead2fa: () => useSettingsWebRead2fa,
|
|
4148
|
+
useSignInSSO: () => useSignInSSO,
|
|
4090
4149
|
useStorageState: () => useStorageState,
|
|
4150
|
+
useSwitchLocale: () => useSwitchLocale,
|
|
4151
|
+
useUpdatePassword: () => useUpdatePassword,
|
|
4152
|
+
useUploadFile: () => useUploadFile,
|
|
4153
|
+
useUploadFileExcel: () => useUploadFileExcel,
|
|
4154
|
+
useUploadIdFile: () => useUploadIdFile,
|
|
4155
|
+
useUploadImage: () => useUploadImage,
|
|
4091
4156
|
useUser: () => useUser,
|
|
4157
|
+
useValidateActionToken: () => useValidateActionToken,
|
|
4158
|
+
useVerify2FA: () => useVerify2FA,
|
|
4159
|
+
useVerifyTotp: () => useVerifyTotp,
|
|
4092
4160
|
useViewV2: () => useViewV2
|
|
4093
4161
|
});
|
|
4094
4162
|
|
|
4095
4163
|
// src/hooks.ts
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
|
|
4164
|
+
import {
|
|
4165
|
+
useModel,
|
|
4166
|
+
useButton,
|
|
4167
|
+
useChangeStatus,
|
|
4168
|
+
useDelete,
|
|
4169
|
+
useDeleteComment,
|
|
4170
|
+
useDuplicateRecord,
|
|
4171
|
+
useExecuteImport,
|
|
4172
|
+
useExportExcel,
|
|
4173
|
+
useForgotPassword,
|
|
4174
|
+
useForgotPasswordSSO,
|
|
4175
|
+
useGet2FAMethods,
|
|
4176
|
+
useGetAccessByCode,
|
|
4177
|
+
useGetActionDetail,
|
|
4178
|
+
useGetAll,
|
|
4179
|
+
useGetCalendar,
|
|
4180
|
+
useGetComment,
|
|
4181
|
+
useGetCompanyInfo,
|
|
4182
|
+
useGetConversionRate,
|
|
4183
|
+
useGetCurrency,
|
|
4184
|
+
useGetCurrentCompany,
|
|
4185
|
+
useGetDetail,
|
|
4186
|
+
useGetFieldExport,
|
|
4187
|
+
useGetFieldOnChange,
|
|
4188
|
+
useGetFileExcel,
|
|
4189
|
+
useGetFormView,
|
|
4190
|
+
useGetGroups,
|
|
4191
|
+
useGetImage,
|
|
4192
|
+
useGetListCompany,
|
|
4193
|
+
useGetListData,
|
|
4194
|
+
useGetListMyBankAccount,
|
|
4195
|
+
useGetMenu,
|
|
4196
|
+
useGetPrintReport,
|
|
4197
|
+
useGetProGressBar,
|
|
4198
|
+
useGetProfile,
|
|
4199
|
+
useGetProvider,
|
|
4200
|
+
useGetResequence,
|
|
4201
|
+
useGetSelection,
|
|
4202
|
+
useGetUser,
|
|
4203
|
+
useGetView,
|
|
4204
|
+
useGrantAccess,
|
|
4205
|
+
useIsValidToken,
|
|
4206
|
+
useLoadAction,
|
|
4207
|
+
useLoadMessage,
|
|
4208
|
+
useLoginCredential,
|
|
4209
|
+
useLoginSocial,
|
|
4210
|
+
useLogout,
|
|
4211
|
+
useOdooDataTransform,
|
|
4212
|
+
useOnChangeForm,
|
|
4213
|
+
useParsePreview,
|
|
4214
|
+
usePrint,
|
|
4215
|
+
useRemoveRow,
|
|
4216
|
+
useRemoveTotpSetup,
|
|
4217
|
+
useRequestSetupTotp,
|
|
4218
|
+
useResetPassword,
|
|
4219
|
+
useResetPasswordSSO,
|
|
4220
|
+
useRunAction,
|
|
4221
|
+
useSave,
|
|
4222
|
+
useSendComment,
|
|
4223
|
+
useSettingsWebRead2fa,
|
|
4224
|
+
useSignInSSO,
|
|
4225
|
+
useSwitchLocale,
|
|
4226
|
+
useUpdatePassword,
|
|
4227
|
+
useUploadFile,
|
|
4228
|
+
useUploadFileExcel,
|
|
4229
|
+
useUploadIdFile,
|
|
4230
|
+
useUploadImage,
|
|
4231
|
+
useValidateActionToken,
|
|
4232
|
+
useVerify2FA,
|
|
4233
|
+
useVerifyTotp
|
|
4234
|
+
} from "@fctc/interface-logic/hooks";
|
|
4235
|
+
|
|
4236
|
+
// src/hooks/core/use-app-provider.tsx
|
|
4237
|
+
import { createContext, useContext, useMemo as useMemo5 } from "react";
|
|
4238
|
+
|
|
4239
|
+
// src/hooks/core/use-menu.ts
|
|
4240
|
+
import { useMemo, useState as useState2 } from "react";
|
|
4241
|
+
|
|
4242
|
+
// src/hooks/core/use-call-action.ts
|
|
4243
|
+
import { useCallback, useState } from "react";
|
|
4244
|
+
|
|
4245
|
+
// src/provider.ts
|
|
4246
|
+
var provider_exports = {};
|
|
4247
|
+
__reExport(provider_exports, provider_star);
|
|
4248
|
+
import * as provider_star from "@fctc/interface-logic/provider";
|
|
4114
4249
|
|
|
4115
4250
|
// src/hooks/core/use-call-action.ts
|
|
4116
|
-
import { useState } from "react";
|
|
4117
|
-
import { getEnv } from "@fctc/interface-logic/environment";
|
|
4118
|
-
import { useLoadAction, useRunAction } from "@fctc/interface-logic/hooks";
|
|
4119
4251
|
var useCallAction = () => {
|
|
4120
|
-
const
|
|
4121
|
-
const
|
|
4122
|
-
const
|
|
4123
|
-
const
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4252
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
4253
|
+
const { useLoadAction: useLoadAction2, useRunAction: useRunAction2 } = (0, provider_exports.useService)();
|
|
4254
|
+
const queryLoadAction = useLoadAction2();
|
|
4255
|
+
const queryRunAction = useRunAction2();
|
|
4256
|
+
const [actionData, setActionData] = useState(
|
|
4257
|
+
void 0
|
|
4258
|
+
);
|
|
4259
|
+
const callAction = useCallback(
|
|
4260
|
+
async ({
|
|
4261
|
+
aid
|
|
4262
|
+
}) => {
|
|
4263
|
+
try {
|
|
4264
|
+
const loadRes = await queryLoadAction.mutateAsync({
|
|
4265
|
+
idAction: aid,
|
|
4266
|
+
context: env.context
|
|
4267
|
+
});
|
|
4268
|
+
if (loadRes?.result?.type === "ir.actions.server") {
|
|
4269
|
+
const runRes = await queryRunAction.mutateAsync({
|
|
4270
|
+
idAction: aid,
|
|
4271
|
+
context: env.context
|
|
4272
|
+
});
|
|
4273
|
+
setActionData(runRes?.result);
|
|
4274
|
+
return runRes?.result;
|
|
4275
|
+
} else {
|
|
4276
|
+
setActionData(loadRes?.result);
|
|
4277
|
+
return loadRes?.result;
|
|
4278
|
+
}
|
|
4279
|
+
} catch (err) {
|
|
4280
|
+
console.error("callAction error:", err);
|
|
4281
|
+
return void 0;
|
|
4282
|
+
}
|
|
4283
|
+
},
|
|
4284
|
+
[env?.context?.lang]
|
|
4285
|
+
);
|
|
4286
|
+
return [actionData, callAction];
|
|
4144
4287
|
};
|
|
4145
4288
|
|
|
4146
|
-
// src/hooks/core/use-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
const
|
|
4152
|
-
const
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
|
|
4171
|
-
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
env.setupEnv({
|
|
4180
|
-
baseUrl: envConfig.baseUrl,
|
|
4181
|
-
port: 3e3,
|
|
4182
|
-
config: {
|
|
4183
|
-
grantType: envConfig.config.grantType,
|
|
4184
|
-
clientId: envConfig.config.clientId,
|
|
4185
|
-
clientSecret: envConfig.config.clientSecret
|
|
4186
|
-
},
|
|
4187
|
-
db: "preschool",
|
|
4188
|
-
localStorageUtils: localStorageUtils(),
|
|
4189
|
-
sessionStorageUtils: sessionStorageUtils()
|
|
4289
|
+
// src/hooks/core/use-menu.ts
|
|
4290
|
+
var useMenu = ({
|
|
4291
|
+
context,
|
|
4292
|
+
specification
|
|
4293
|
+
}) => {
|
|
4294
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
4295
|
+
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
4296
|
+
const [action, callAction] = useCallAction();
|
|
4297
|
+
const menuData = useGetMenu2(context, specification, !!context);
|
|
4298
|
+
const [menuId, setMenuId] = useState2(void 0);
|
|
4299
|
+
const configedIconData = useMemo(() => {
|
|
4300
|
+
const data = menuData.data;
|
|
4301
|
+
return data?.map((item) => {
|
|
4302
|
+
return {
|
|
4303
|
+
...item,
|
|
4304
|
+
child_id: item?.child_id?.map((child) => {
|
|
4305
|
+
return {
|
|
4306
|
+
...child,
|
|
4307
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
|
|
4308
|
+
};
|
|
4309
|
+
}) ?? [],
|
|
4310
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
|
|
4311
|
+
};
|
|
4312
|
+
});
|
|
4313
|
+
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
4314
|
+
const handleChangeMenu = async ({ menu }) => {
|
|
4315
|
+
const aidMenu = menu?.action?.id?.id;
|
|
4316
|
+
if (menu) {
|
|
4317
|
+
setMenuId(menu.id?.toString() ?? "");
|
|
4318
|
+
}
|
|
4319
|
+
if (aidMenu) {
|
|
4320
|
+
const actionResponse = await callAction({
|
|
4321
|
+
aid: Number(aidMenu)
|
|
4190
4322
|
});
|
|
4191
|
-
|
|
4192
|
-
} catch (error) {
|
|
4193
|
-
console.error("Error loading env or config:", error);
|
|
4323
|
+
return actionResponse;
|
|
4194
4324
|
}
|
|
4195
|
-
}
|
|
4196
|
-
return {
|
|
4325
|
+
};
|
|
4326
|
+
return {
|
|
4327
|
+
...menuData,
|
|
4328
|
+
data: configedIconData,
|
|
4329
|
+
action: { handleChangeMenu },
|
|
4330
|
+
state: { menuId, action },
|
|
4331
|
+
context,
|
|
4332
|
+
isLoading: menuData.isLoading,
|
|
4333
|
+
isError: menuData.isError,
|
|
4334
|
+
error: menuData.error,
|
|
4335
|
+
refetch: menuData.refetch
|
|
4336
|
+
};
|
|
4197
4337
|
};
|
|
4198
4338
|
|
|
4199
4339
|
// src/hooks/core/use-detail.ts
|
|
4200
|
-
import { setProfile, useAppDispatch as useAppDispatch2 } from "@fctc/interface-logic/store";
|
|
4201
4340
|
import { useQuery } from "@tanstack/react-query";
|
|
4202
|
-
import { useEffect
|
|
4203
|
-
|
|
4204
|
-
|
|
4205
|
-
const
|
|
4206
|
-
const fetchGetDetail =
|
|
4341
|
+
import { useEffect } from "react";
|
|
4342
|
+
var useDetail = (sub) => {
|
|
4343
|
+
const { setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4344
|
+
const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
|
|
4345
|
+
const fetchGetDetail = useGetDetail2();
|
|
4207
4346
|
const userDetailQuery = useQuery({
|
|
4208
|
-
queryKey: ["userDetailQuery", sub
|
|
4347
|
+
queryKey: ["userDetailQuery", sub],
|
|
4209
4348
|
queryFn: () => {
|
|
4210
4349
|
return fetchGetDetail.mutateAsync({
|
|
4211
4350
|
model: "res.users",
|
|
@@ -4213,24 +4352,44 @@ var useDetail = (accessToken, sub) => {
|
|
|
4213
4352
|
specification: { image_256: {} }
|
|
4214
4353
|
});
|
|
4215
4354
|
},
|
|
4216
|
-
enabled: !!sub
|
|
4355
|
+
enabled: !!sub
|
|
4217
4356
|
});
|
|
4218
|
-
|
|
4357
|
+
useEffect(() => {
|
|
4219
4358
|
if (userDetailQuery.data) {
|
|
4220
4359
|
const userPicture = userDetailQuery.data;
|
|
4221
|
-
|
|
4222
|
-
setProfile({ ...userPicture, image: userPicture?.[0]?.image_256 })
|
|
4223
|
-
);
|
|
4360
|
+
setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
|
|
4224
4361
|
}
|
|
4225
|
-
}, [userDetailQuery.
|
|
4226
|
-
return userDetailQuery;
|
|
4362
|
+
}, [userDetailQuery.isFetched]);
|
|
4363
|
+
return { ...userDetailQuery };
|
|
4227
4364
|
};
|
|
4228
4365
|
|
|
4229
|
-
// src/hooks/core/use-
|
|
4230
|
-
import {
|
|
4366
|
+
// src/hooks/core/use-profile.ts
|
|
4367
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
4368
|
+
import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
|
|
4369
|
+
import { useTranslation } from "react-i18next";
|
|
4370
|
+
|
|
4371
|
+
// src/utils.ts
|
|
4372
|
+
var utils_exports = {};
|
|
4373
|
+
__export(utils_exports, {
|
|
4374
|
+
STORAGES: () => STORAGES,
|
|
4375
|
+
combineContexts: () => combineContexts,
|
|
4376
|
+
convertFieldsToArray: () => convertFieldsToArray,
|
|
4377
|
+
countSum: () => countSum,
|
|
4378
|
+
getDateRange: () => getDateRange,
|
|
4379
|
+
languages: () => languages,
|
|
4380
|
+
mergeButtons: () => mergeButtons,
|
|
4381
|
+
setStorageItemAsync: () => setStorageItemAsync,
|
|
4382
|
+
useStorageState: () => useStorageState
|
|
4383
|
+
});
|
|
4384
|
+
|
|
4385
|
+
// src/utils/constants.ts
|
|
4386
|
+
var languages = [
|
|
4387
|
+
{ id: "vi_VN", name: "VIE" },
|
|
4388
|
+
{ id: "en_US", name: "ENG" }
|
|
4389
|
+
];
|
|
4231
4390
|
|
|
4232
4391
|
// src/utils/function.ts
|
|
4233
|
-
import { useCallback, useEffect as
|
|
4392
|
+
import { useCallback as useCallback2, useEffect as useEffect2, useReducer } from "react";
|
|
4234
4393
|
var countSum = (data, field) => {
|
|
4235
4394
|
if (!data || !field) return 0;
|
|
4236
4395
|
return data.reduce(
|
|
@@ -4369,7 +4528,7 @@ async function setStorageItemAsync(key, value) {
|
|
|
4369
4528
|
}
|
|
4370
4529
|
function useStorageState(key) {
|
|
4371
4530
|
const [state, setState] = useAsyncState();
|
|
4372
|
-
|
|
4531
|
+
useEffect2(() => {
|
|
4373
4532
|
try {
|
|
4374
4533
|
const storedValue = localStorage.getItem(key);
|
|
4375
4534
|
setState(storedValue);
|
|
@@ -4377,7 +4536,7 @@ function useStorageState(key) {
|
|
|
4377
4536
|
console.error("Local storage is unavailable:", e);
|
|
4378
4537
|
}
|
|
4379
4538
|
}, [key]);
|
|
4380
|
-
const setValue =
|
|
4539
|
+
const setValue = useCallback2(
|
|
4381
4540
|
(value) => {
|
|
4382
4541
|
setState(value);
|
|
4383
4542
|
setStorageItemAsync(key, value);
|
|
@@ -4387,187 +4546,32 @@ function useStorageState(key) {
|
|
|
4387
4546
|
return [state, setValue];
|
|
4388
4547
|
}
|
|
4389
4548
|
|
|
4390
|
-
// src/
|
|
4391
|
-
|
|
4392
|
-
import
|
|
4393
|
-
useAppSelector,
|
|
4394
|
-
selectSearch,
|
|
4395
|
-
selectList
|
|
4396
|
-
} from "@fctc/interface-logic/store";
|
|
4397
|
-
import {
|
|
4398
|
-
evalJSONDomain,
|
|
4399
|
-
formatSortingString
|
|
4400
|
-
} from "@fctc/interface-logic/utils";
|
|
4401
|
-
var useListData = ({
|
|
4402
|
-
action,
|
|
4403
|
-
context,
|
|
4404
|
-
viewResponse
|
|
4405
|
-
}) => {
|
|
4406
|
-
const { groupByDomain } = useAppSelector(selectSearch);
|
|
4407
|
-
const initModel = useModel();
|
|
4408
|
-
const [type, setType] = useState2("list");
|
|
4409
|
-
const [mode, setMode] = useState2("month");
|
|
4410
|
-
const [currentDate, setCurrentDate] = useState2(/* @__PURE__ */ new Date());
|
|
4411
|
-
const { pageLimit, page, order } = useAppSelector(selectList);
|
|
4412
|
-
const listDataProps = useMemo2(() => {
|
|
4413
|
-
const actData = action?.result;
|
|
4414
|
-
if (!viewResponse || !actData || !context) {
|
|
4415
|
-
return null;
|
|
4416
|
-
}
|
|
4417
|
-
const specification = initModel.initModel({
|
|
4418
|
-
name: String(actData.res_model),
|
|
4419
|
-
view: viewResponse || {},
|
|
4420
|
-
actContext: context,
|
|
4421
|
-
fields: type === "kanban" ? viewResponse?.views?.kanban?.fields : type === "calendar" ? viewResponse?.views?.calendar?.fields : viewResponse?.views?.list?.fields
|
|
4422
|
-
}).getSpecification();
|
|
4423
|
-
const domain = type === "calendar" ? getDateRange(currentDate, mode) : actData?.domain ? Array.isArray(actData?.domain) ? [...actData?.domain] : evalJSONDomain(actData?.domain, context) : [];
|
|
4424
|
-
const limit = type === "calendar" ? 2500 : pageLimit;
|
|
4425
|
-
const offset = page * pageLimit;
|
|
4426
|
-
const fields = type === "calendar" ? convertFieldsToArray(viewResponse?.views?.calendar?.fields) || [] : typeof groupByDomain === "object" ? groupByDomain?.fields : void 0;
|
|
4427
|
-
const groupby = typeof groupByDomain === "object" ? [groupByDomain?.contexts?.[0]?.group_by] : [];
|
|
4428
|
-
const sort = order ? order : viewResponse?.views?.list?.default_order ? formatSortingString(viewResponse?.views?.list?.default_order) : "";
|
|
4429
|
-
return {
|
|
4430
|
-
model: actData.res_model,
|
|
4431
|
-
specification,
|
|
4432
|
-
domain,
|
|
4433
|
-
limit,
|
|
4434
|
-
offset,
|
|
4435
|
-
fields,
|
|
4436
|
-
groupby,
|
|
4437
|
-
context,
|
|
4438
|
-
sort,
|
|
4439
|
-
type
|
|
4440
|
-
};
|
|
4441
|
-
}, [
|
|
4442
|
-
action?.result,
|
|
4443
|
-
context,
|
|
4444
|
-
currentDate,
|
|
4445
|
-
groupByDomain,
|
|
4446
|
-
initModel,
|
|
4447
|
-
mode,
|
|
4448
|
-
order,
|
|
4449
|
-
page,
|
|
4450
|
-
pageLimit,
|
|
4451
|
-
type,
|
|
4452
|
-
viewResponse
|
|
4453
|
-
]);
|
|
4454
|
-
const list = useGetListData(
|
|
4455
|
-
listDataProps,
|
|
4456
|
-
[listDataProps],
|
|
4457
|
-
!!listDataProps
|
|
4458
|
-
);
|
|
4459
|
-
return {
|
|
4460
|
-
...list,
|
|
4461
|
-
state: {
|
|
4462
|
-
type,
|
|
4463
|
-
setType,
|
|
4464
|
-
mode,
|
|
4465
|
-
setMode,
|
|
4466
|
-
currentDate,
|
|
4467
|
-
setCurrentDate
|
|
4468
|
-
}
|
|
4469
|
-
};
|
|
4470
|
-
};
|
|
4471
|
-
|
|
4472
|
-
// src/hooks/core/use-menu.ts
|
|
4473
|
-
import { useEffect as useEffect4, useMemo as useMemo3, useState as useState3 } from "react";
|
|
4474
|
-
|
|
4475
|
-
// src/utils/constants.ts
|
|
4476
|
-
var languages = [
|
|
4477
|
-
{ id: "vi_VN", name: "VIE" },
|
|
4478
|
-
{ id: "en_US", name: "ENG" }
|
|
4479
|
-
];
|
|
4480
|
-
var API_PRESCHOOL_URL = {
|
|
4481
|
-
baseURL: "https://preschool.vitrust.app"
|
|
4482
|
-
};
|
|
4483
|
-
var API_APP_URL = {
|
|
4484
|
-
baseUrl: "https://api.vitrust.app",
|
|
4485
|
-
c2: "https://api.vitrust.app/c2",
|
|
4486
|
-
apiV2: "https://api.vitrust.app/c2/api/v2"
|
|
4487
|
-
};
|
|
4488
|
-
|
|
4489
|
-
// src/hooks/core/use-menu.ts
|
|
4490
|
-
import { useGetMenu } from "@fctc/interface-logic/hooks";
|
|
4491
|
-
var useMenu = ({ context }) => {
|
|
4492
|
-
const menuData = useGetMenu(context, !!context);
|
|
4493
|
-
const [menuid, setMenuId] = useState3(void 0);
|
|
4494
|
-
const [action, setAction] = useCallAction();
|
|
4495
|
-
const configedIconData = useMemo3(() => {
|
|
4496
|
-
const data = menuData.data;
|
|
4497
|
-
return data?.map((item) => {
|
|
4498
|
-
return {
|
|
4499
|
-
...item,
|
|
4500
|
-
child_id: item?.child_id?.map((child) => {
|
|
4501
|
-
return {
|
|
4502
|
-
...child,
|
|
4503
|
-
url_icon: API_APP_URL.c2 + "/" + child.url_icon
|
|
4504
|
-
};
|
|
4505
|
-
}) ?? [],
|
|
4506
|
-
url_icon: API_APP_URL.c2 + "/" + item.url_icon
|
|
4507
|
-
};
|
|
4508
|
-
});
|
|
4509
|
-
}, [menuData.data]);
|
|
4510
|
-
const handleChangeMenu = async ({
|
|
4511
|
-
menu,
|
|
4512
|
-
subMenu
|
|
4513
|
-
}) => {
|
|
4514
|
-
const aid = subMenu?.action?.id?.id;
|
|
4515
|
-
const actionType = subMenu?.action?.type;
|
|
4516
|
-
await setAction({
|
|
4517
|
-
aid: Number(aid),
|
|
4518
|
-
actionType
|
|
4519
|
-
});
|
|
4520
|
-
if (menu) {
|
|
4521
|
-
setMenuId(menu.id?.toString() ?? "");
|
|
4522
|
-
}
|
|
4523
|
-
};
|
|
4524
|
-
useEffect4(() => {
|
|
4525
|
-
const firstRecord = configedIconData?.[0];
|
|
4526
|
-
const firstChild = firstRecord?.child_id?.[0];
|
|
4527
|
-
if (firstChild && firstRecord) {
|
|
4528
|
-
handleChangeMenu({ menu: firstRecord, subMenu: firstChild });
|
|
4529
|
-
}
|
|
4530
|
-
}, [configedIconData]);
|
|
4531
|
-
return {
|
|
4532
|
-
...menuData,
|
|
4533
|
-
data: configedIconData,
|
|
4534
|
-
action: { handleChangeMenu },
|
|
4535
|
-
state: { menuid, action },
|
|
4536
|
-
context
|
|
4537
|
-
};
|
|
4538
|
-
};
|
|
4549
|
+
// src/utils.ts
|
|
4550
|
+
__reExport(utils_exports, utils_star);
|
|
4551
|
+
import * as utils_star from "@fctc/interface-logic/utils";
|
|
4539
4552
|
|
|
4540
4553
|
// src/hooks/core/use-profile.ts
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
import { useGetProfile } from "@fctc/interface-logic/hooks";
|
|
4546
|
-
import { useAppDispatch as useAppDispatch3, setDataUser } from "@fctc/interface-logic/store";
|
|
4547
|
-
var useProfile = (accessToken) => {
|
|
4548
|
-
const getProfile = useGetProfile();
|
|
4549
|
-
const dispatch = useAppDispatch3();
|
|
4554
|
+
var useProfile = () => {
|
|
4555
|
+
const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
4556
|
+
const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
|
|
4557
|
+
const getProfile = useGetProfile2();
|
|
4550
4558
|
const { i18n: i18n2 } = useTranslation();
|
|
4551
|
-
const fetchUserProfile = async () => {
|
|
4552
|
-
return await getProfile.mutateAsync();
|
|
4553
|
-
};
|
|
4554
4559
|
const userInfoQuery = useQuery2({
|
|
4555
|
-
queryKey: ["userInfo"
|
|
4556
|
-
queryFn:
|
|
4557
|
-
enabled:
|
|
4560
|
+
queryKey: ["userInfo"],
|
|
4561
|
+
queryFn: () => getProfile.mutateAsync(),
|
|
4562
|
+
enabled: (0, utils_exports.isObjectEmpty)(env?.user)
|
|
4558
4563
|
});
|
|
4559
|
-
|
|
4564
|
+
useEffect3(() => {
|
|
4560
4565
|
if (userInfoQuery.data) {
|
|
4561
4566
|
const userInfo = userInfoQuery.data;
|
|
4562
|
-
|
|
4563
|
-
|
|
4564
|
-
dispatch(setDataUser(userInfo));
|
|
4567
|
+
setUid(userInfo?.sub);
|
|
4568
|
+
setUserInfo(userInfo);
|
|
4565
4569
|
const userLocale = languages.find((lang) => lang?.id === userInfo?.locale);
|
|
4566
|
-
|
|
4570
|
+
setLang(userLocale?.id);
|
|
4567
4571
|
i18n2.changeLanguage(userLocale?.id.split("_")[0]);
|
|
4568
4572
|
}
|
|
4569
|
-
}, [
|
|
4570
|
-
const context =
|
|
4573
|
+
}, [userInfoQuery.isFetched]);
|
|
4574
|
+
const context = useMemo2(() => {
|
|
4571
4575
|
if (userInfoQuery.data?.sub && userInfoQuery.data?.locale) {
|
|
4572
4576
|
return {
|
|
4573
4577
|
uid: Number(userInfoQuery.data.sub),
|
|
@@ -4577,44 +4581,42 @@ var useProfile = (accessToken) => {
|
|
|
4577
4581
|
};
|
|
4578
4582
|
}
|
|
4579
4583
|
return void 0;
|
|
4580
|
-
}, [userInfoQuery.
|
|
4584
|
+
}, [userInfoQuery.isFetched]);
|
|
4585
|
+
if (userInfoQuery.isLoading || !userInfoQuery.data) {
|
|
4586
|
+
return null;
|
|
4587
|
+
}
|
|
4581
4588
|
return { ...userInfoQuery, context };
|
|
4582
4589
|
};
|
|
4583
4590
|
|
|
4584
4591
|
// src/hooks/core/use-user.ts
|
|
4585
|
-
var useUser = (
|
|
4586
|
-
const userProfile = useProfile(
|
|
4587
|
-
const userDetail = useDetail(
|
|
4588
|
-
return { userProfile, userDetail, context: userProfile
|
|
4592
|
+
var useUser = () => {
|
|
4593
|
+
const userProfile = useProfile();
|
|
4594
|
+
const userDetail = useDetail(userProfile?.data?.sub);
|
|
4595
|
+
return { userProfile, userDetail, context: userProfile?.context };
|
|
4589
4596
|
};
|
|
4590
4597
|
|
|
4591
4598
|
// src/hooks/core/use-view-v2.ts
|
|
4592
|
-
import { useMemo as
|
|
4593
|
-
import { useGetView } from "@fctc/interface-logic/hooks";
|
|
4599
|
+
import { useMemo as useMemo3 } from "react";
|
|
4594
4600
|
var useViewV2 = ({
|
|
4595
4601
|
action,
|
|
4596
|
-
context
|
|
4602
|
+
context,
|
|
4603
|
+
aid,
|
|
4604
|
+
views,
|
|
4605
|
+
model
|
|
4597
4606
|
}) => {
|
|
4598
|
-
const
|
|
4599
|
-
|
|
4607
|
+
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
4608
|
+
const viewParams = useMemo3(() => {
|
|
4609
|
+
if (!action) {
|
|
4600
4610
|
return void 0;
|
|
4601
4611
|
}
|
|
4602
|
-
const actionResult = action?.result;
|
|
4603
4612
|
return {
|
|
4604
|
-
model
|
|
4605
|
-
views
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
) : [],
|
|
4609
|
-
[
|
|
4610
|
-
Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
|
|
4611
|
-
"search"
|
|
4612
|
-
]
|
|
4613
|
-
],
|
|
4614
|
-
context
|
|
4613
|
+
model,
|
|
4614
|
+
views,
|
|
4615
|
+
context,
|
|
4616
|
+
id: isNaN(Number(aid)) ? action?.id : aid
|
|
4615
4617
|
};
|
|
4616
|
-
}, [action, context]);
|
|
4617
|
-
const view =
|
|
4618
|
+
}, [action, context, aid]);
|
|
4619
|
+
const view = useGetView2(
|
|
4618
4620
|
viewParams || {},
|
|
4619
4621
|
!!viewParams
|
|
4620
4622
|
);
|
|
@@ -4624,157 +4626,117 @@ var useViewV2 = ({
|
|
|
4624
4626
|
};
|
|
4625
4627
|
};
|
|
4626
4628
|
|
|
4627
|
-
// src/hooks/core/use-auth.ts
|
|
4628
|
-
import { useLoginCredential } from "@fctc/interface-logic/hooks";
|
|
4629
|
-
import {
|
|
4630
|
-
setDataUser as setDataUser2,
|
|
4631
|
-
setMenuList,
|
|
4632
|
-
setProfile as setProfile2,
|
|
4633
|
-
useAppDispatch as useAppDispatch4
|
|
4634
|
-
} from "@fctc/interface-logic/store";
|
|
4635
|
-
var useAuth = () => {
|
|
4636
|
-
const [[isLoading, accessToken], setAccessToken] = useStorageState("TOKEN");
|
|
4637
|
-
const loginMutate = useLoginCredential();
|
|
4638
|
-
const dispatch = useAppDispatch4();
|
|
4639
|
-
const signIn = async (email, password) => {
|
|
4640
|
-
try {
|
|
4641
|
-
loginMutate.mutate(
|
|
4642
|
-
{
|
|
4643
|
-
email,
|
|
4644
|
-
password,
|
|
4645
|
-
path: "/authentication/oauth2/token"
|
|
4646
|
-
},
|
|
4647
|
-
{
|
|
4648
|
-
onSuccess: (res) => {
|
|
4649
|
-
},
|
|
4650
|
-
onError: (err) => {
|
|
4651
|
-
}
|
|
4652
|
-
}
|
|
4653
|
-
);
|
|
4654
|
-
} catch (error) {
|
|
4655
|
-
throw new Error("Login failed");
|
|
4656
|
-
}
|
|
4657
|
-
};
|
|
4658
|
-
const signOut = async () => {
|
|
4659
|
-
dispatch(setMenuList([]));
|
|
4660
|
-
dispatch(setDataUser2({}));
|
|
4661
|
-
dispatch(setProfile2({}));
|
|
4662
|
-
setAccessToken(null);
|
|
4663
|
-
};
|
|
4664
|
-
return {
|
|
4665
|
-
signIn,
|
|
4666
|
-
signOut,
|
|
4667
|
-
accessToken,
|
|
4668
|
-
isLoading
|
|
4669
|
-
};
|
|
4670
|
-
};
|
|
4671
|
-
|
|
4672
|
-
// src/hooks/core/use-app-provider.tsx
|
|
4673
|
-
import { createContext, useContext, useMemo as useMemo7 } from "react";
|
|
4674
|
-
|
|
4675
4629
|
// src/hooks/core/use-company.ts
|
|
4676
4630
|
import { useQuery as useQuery3 } from "@tanstack/react-query";
|
|
4677
|
-
import { useEffect as
|
|
4678
|
-
|
|
4679
|
-
|
|
4680
|
-
useGetCurrentCompany,
|
|
4681
|
-
|
|
4682
|
-
} from "@fctc/interface-logic/hooks";
|
|
4683
|
-
var useCompany = (accessToken) => {
|
|
4684
|
-
const getCurrentCompany = useGetCurrentCompany();
|
|
4631
|
+
import { useEffect as useEffect4, useMemo as useMemo4 } from "react";
|
|
4632
|
+
var useCompany = () => {
|
|
4633
|
+
const { setAllowCompanies, setCompanies, setDefaultCompany, env } = (0, provider_exports.useEnv)();
|
|
4634
|
+
const { useGetCurrentCompany: useGetCurrentCompany2, useGetCompanyInfo: useGetCompanyInfo2 } = (0, provider_exports.useService)();
|
|
4635
|
+
const getCurrentCompany = useGetCurrentCompany2();
|
|
4685
4636
|
const fetchCurrentCompany = async () => {
|
|
4686
4637
|
return await getCurrentCompany.mutateAsync();
|
|
4687
4638
|
};
|
|
4688
4639
|
const currentCompany = useQuery3({
|
|
4689
|
-
queryKey: ["currentCompany"
|
|
4640
|
+
queryKey: ["currentCompany"],
|
|
4690
4641
|
queryFn: fetchCurrentCompany,
|
|
4691
|
-
enabled: !!
|
|
4642
|
+
enabled: !!env?.defaultCompany
|
|
4692
4643
|
});
|
|
4693
|
-
const current_company_id =
|
|
4644
|
+
const current_company_id = useMemo4(() => {
|
|
4694
4645
|
return currentCompany.data?.current_company_id;
|
|
4695
4646
|
}, [currentCompany.data]);
|
|
4696
|
-
|
|
4647
|
+
useEffect4(() => {
|
|
4697
4648
|
if (current_company_id) {
|
|
4698
4649
|
const companyIDs = [current_company_id];
|
|
4699
|
-
|
|
4700
|
-
|
|
4701
|
-
env.setCompanies(companyIDs);
|
|
4650
|
+
setAllowCompanies([...companyIDs]);
|
|
4651
|
+
setCompanies(companyIDs);
|
|
4702
4652
|
}
|
|
4703
4653
|
}, [current_company_id]);
|
|
4704
|
-
const getCompanyInfo =
|
|
4654
|
+
const getCompanyInfo = useGetCompanyInfo2();
|
|
4705
4655
|
const companyInfo = useQuery3({
|
|
4706
|
-
queryKey: ["companyInfoQuery", current_company_id
|
|
4656
|
+
queryKey: ["companyInfoQuery", current_company_id],
|
|
4707
4657
|
queryFn: () => getCompanyInfo.mutateAsync(Number(current_company_id)),
|
|
4708
|
-
enabled: !!current_company_id
|
|
4658
|
+
enabled: !!current_company_id
|
|
4709
4659
|
});
|
|
4710
|
-
|
|
4660
|
+
useEffect4(() => {
|
|
4711
4661
|
if (companyInfo.data) {
|
|
4712
4662
|
const companyInfoData = companyInfo.data;
|
|
4713
4663
|
if (companyInfoData?.length) {
|
|
4714
|
-
|
|
4715
|
-
env.setDefaultCompany(companyInfoData[0]);
|
|
4664
|
+
setDefaultCompany(companyInfoData[0]);
|
|
4716
4665
|
}
|
|
4717
4666
|
}
|
|
4718
4667
|
}, [companyInfo.data]);
|
|
4668
|
+
if (!companyInfo?.data || !currentCompany?.data) return;
|
|
4719
4669
|
return {
|
|
4720
|
-
currentCompany,
|
|
4721
|
-
companyInfo,
|
|
4670
|
+
currentCompany: { ...currentCompany },
|
|
4671
|
+
companyInfo: { ...companyInfo },
|
|
4722
4672
|
context: { allowed_company_ids: [current_company_id] }
|
|
4723
4673
|
};
|
|
4724
4674
|
};
|
|
4725
|
-
var use_company_default = useCompany;
|
|
4726
4675
|
|
|
4727
4676
|
// src/hooks/core/use-app-provider.tsx
|
|
4728
|
-
import { evalJSONContext } from "@fctc/interface-logic/utils";
|
|
4729
4677
|
import { jsx } from "react/jsx-runtime";
|
|
4730
4678
|
var AppProviderInitialValue = {
|
|
4731
|
-
config: {},
|
|
4732
4679
|
user: {},
|
|
4733
|
-
auth: {},
|
|
4734
4680
|
company: {},
|
|
4735
4681
|
action: {},
|
|
4736
4682
|
menu: {},
|
|
4737
|
-
view: {}
|
|
4738
|
-
list: {}
|
|
4683
|
+
view: {}
|
|
4739
4684
|
};
|
|
4740
4685
|
var ReactContext = createContext(AppProviderInitialValue);
|
|
4741
|
-
var AppProvider = ({
|
|
4742
|
-
|
|
4743
|
-
|
|
4744
|
-
|
|
4745
|
-
|
|
4746
|
-
const
|
|
4747
|
-
|
|
4748
|
-
|
|
4749
|
-
const
|
|
4750
|
-
|
|
4751
|
-
|
|
4752
|
-
|
|
4753
|
-
|
|
4686
|
+
var AppProvider = ({
|
|
4687
|
+
children,
|
|
4688
|
+
menuSpecification,
|
|
4689
|
+
aid
|
|
4690
|
+
}) => {
|
|
4691
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
4692
|
+
const user = useUser();
|
|
4693
|
+
const company = useCompany();
|
|
4694
|
+
const menuContext = useMemo5(() => {
|
|
4695
|
+
return combineContexts([
|
|
4696
|
+
{
|
|
4697
|
+
...user?.context,
|
|
4698
|
+
...!(0, utils_exports.isObjectEmpty)(env?.user) && company?.context?.allowed_company_ids ? { lang: env?.context?.lang } : {}
|
|
4699
|
+
},
|
|
4700
|
+
company?.context
|
|
4701
|
+
]);
|
|
4702
|
+
}, [user?.context, company?.context]);
|
|
4703
|
+
const menu = useMenu({
|
|
4704
|
+
context: {
|
|
4705
|
+
...menuContext
|
|
4706
|
+
},
|
|
4707
|
+
specification: menuSpecification
|
|
4708
|
+
});
|
|
4709
|
+
const action = useMemo5(() => {
|
|
4710
|
+
return menu?.state?.action;
|
|
4711
|
+
}, [menu?.state?.action, env?.context?.lang]);
|
|
4712
|
+
const viewContext = useMemo5(() => {
|
|
4754
4713
|
return combineContexts([
|
|
4755
4714
|
menuContext,
|
|
4756
|
-
{ ...evalJSONContext(action?.
|
|
4715
|
+
{ ...(0, utils_exports.evalJSONContext)(action?.context) }
|
|
4757
4716
|
]);
|
|
4758
|
-
}, [menuContext, action?.
|
|
4717
|
+
}, [menuContext, action?.context, env?.context?.lang]);
|
|
4759
4718
|
const view = useViewV2({
|
|
4760
4719
|
action,
|
|
4761
|
-
context: viewContext
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4720
|
+
context: viewContext,
|
|
4721
|
+
aid,
|
|
4722
|
+
views: [
|
|
4723
|
+
...Array.isArray(action?.views) ? action?.views.map(
|
|
4724
|
+
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
4725
|
+
) : [],
|
|
4726
|
+
[
|
|
4727
|
+
Array.isArray(action?.search_view_id) ? action?.search_view_id[0] : action?.search_view_id,
|
|
4728
|
+
"search"
|
|
4729
|
+
]
|
|
4730
|
+
],
|
|
4731
|
+
model: String(action?.res_model)
|
|
4767
4732
|
});
|
|
4768
4733
|
return /* @__PURE__ */ jsx(
|
|
4769
4734
|
ReactContext.Provider,
|
|
4770
4735
|
{
|
|
4771
4736
|
value: {
|
|
4772
|
-
config,
|
|
4773
|
-
auth,
|
|
4774
4737
|
user,
|
|
4775
4738
|
company,
|
|
4776
4739
|
menu,
|
|
4777
|
-
list,
|
|
4778
4740
|
action,
|
|
4779
4741
|
view
|
|
4780
4742
|
},
|
|
@@ -4790,68 +4752,161 @@ var useAppProvider = () => {
|
|
|
4790
4752
|
return context;
|
|
4791
4753
|
};
|
|
4792
4754
|
|
|
4793
|
-
// src/hooks/core/use-
|
|
4794
|
-
import {
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
|
|
4804
|
-
|
|
4805
|
-
|
|
4806
|
-
|
|
4807
|
-
|
|
4808
|
-
|
|
4809
|
-
|
|
4810
|
-
|
|
4811
|
-
|
|
4812
|
-
})
|
|
4813
|
-
|
|
4814
|
-
|
|
4755
|
+
// src/hooks/core/use-config.ts
|
|
4756
|
+
import { useEffect as useEffect5 } from "react";
|
|
4757
|
+
var useConfig = ({
|
|
4758
|
+
envConfig,
|
|
4759
|
+
config,
|
|
4760
|
+
localStorageUtils,
|
|
4761
|
+
sessionStorageUtils
|
|
4762
|
+
}) => {
|
|
4763
|
+
const { setupEnv, setEnvFile } = (0, provider_exports.useEnv)();
|
|
4764
|
+
useEffect5(() => {
|
|
4765
|
+
try {
|
|
4766
|
+
setupEnv({
|
|
4767
|
+
baseUrl: envConfig.baseUrl,
|
|
4768
|
+
config: envConfig.config,
|
|
4769
|
+
default_service: "",
|
|
4770
|
+
localStorageUtils: localStorageUtils && localStorageUtils(),
|
|
4771
|
+
sessionStorageUtils: localStorageUtils && sessionStorageUtils()
|
|
4772
|
+
});
|
|
4773
|
+
setEnvFile(config);
|
|
4774
|
+
} catch (error) {
|
|
4775
|
+
console.error("Error loading env or config:", error);
|
|
4776
|
+
}
|
|
4777
|
+
}, [envConfig, config]);
|
|
4778
|
+
return { envConfig, config };
|
|
4779
|
+
};
|
|
4815
4780
|
|
|
4816
|
-
// src/hooks/core/use-
|
|
4817
|
-
var
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
const
|
|
4822
|
-
const
|
|
4823
|
-
const
|
|
4824
|
-
|
|
4825
|
-
|
|
4826
|
-
model,
|
|
4827
|
-
context,
|
|
4828
|
-
enabled: true,
|
|
4829
|
-
queryKey: [`action-${aid}`]
|
|
4830
|
-
}).data;
|
|
4831
|
-
const [path, setPath] = useState4("");
|
|
4832
|
-
const handleClick = () => {
|
|
4833
|
-
if (location?.pathname === "/list/menu" && activeMenuId === menu?.id) {
|
|
4834
|
-
return;
|
|
4781
|
+
// src/hooks/core/use-get-action.ts
|
|
4782
|
+
var useGetAction = ({
|
|
4783
|
+
aid,
|
|
4784
|
+
context
|
|
4785
|
+
}) => {
|
|
4786
|
+
const { useLoadAction: useLoadAction2, useRunAction: useRunAction2 } = (0, provider_exports.useService)();
|
|
4787
|
+
const queryLoadAction = useLoadAction2();
|
|
4788
|
+
const queryRunAction = useRunAction2();
|
|
4789
|
+
const handleActionResult = (data) => {
|
|
4790
|
+
if (data && data.result && data.result.views && Array.isArray(data.result.views) && data.result.views.length > 0) {
|
|
4835
4791
|
}
|
|
4836
|
-
|
|
4837
|
-
|
|
4792
|
+
};
|
|
4793
|
+
const onLoadAction = () => {
|
|
4794
|
+
queryLoadAction.mutate(
|
|
4795
|
+
{
|
|
4796
|
+
idAction: aid,
|
|
4797
|
+
context
|
|
4798
|
+
},
|
|
4799
|
+
{
|
|
4800
|
+
onSuccess: (data) => {
|
|
4801
|
+
if (data?.result?.type === "ir.actions.act_window") {
|
|
4802
|
+
handleActionResult(data);
|
|
4803
|
+
} else if (data?.result?.type === "ir.actions.server") {
|
|
4804
|
+
queryRunAction.mutate(
|
|
4805
|
+
{
|
|
4806
|
+
idAction: aid,
|
|
4807
|
+
context
|
|
4808
|
+
},
|
|
4809
|
+
{
|
|
4810
|
+
onSuccess: handleActionResult
|
|
4811
|
+
}
|
|
4812
|
+
);
|
|
4813
|
+
}
|
|
4814
|
+
}
|
|
4815
|
+
}
|
|
4838
4816
|
);
|
|
4839
|
-
const viewType = hasListView ? "list" : "form";
|
|
4840
|
-
const isAccountPayment = menu?.action?.res_model === "account.payment" && menu?.action?.id?.id === 1551;
|
|
4841
|
-
const isConvertCurrencyMenu = menu?.action?.res_model === "currency.convert" && menu?.action?.id?.id === 1562;
|
|
4842
|
-
const path2 = (0, utils_exports.formatUrlPath)({
|
|
4843
|
-
viewType,
|
|
4844
|
-
actionPath: isConvertCurrencyMenu ? "menu" : isAccountPayment ? "menu" : menu?.action?.path || "menu",
|
|
4845
|
-
aid: menu?.action?.id?.id,
|
|
4846
|
-
model: queryActionDetail.res_model
|
|
4847
|
-
});
|
|
4848
|
-
setPath(path2);
|
|
4849
4817
|
};
|
|
4850
|
-
return {
|
|
4818
|
+
return {
|
|
4819
|
+
onLoadAction
|
|
4820
|
+
};
|
|
4821
|
+
};
|
|
4822
|
+
|
|
4823
|
+
// src/hooks/core/use-get-specification.ts
|
|
4824
|
+
import { useMemo as useMemo6 } from "react";
|
|
4825
|
+
var useGetSpecification = ({
|
|
4826
|
+
model,
|
|
4827
|
+
viewData,
|
|
4828
|
+
fields
|
|
4829
|
+
}) => {
|
|
4830
|
+
const baseModel = useMemo6(
|
|
4831
|
+
() => ({
|
|
4832
|
+
name: String(model),
|
|
4833
|
+
view: viewData || {},
|
|
4834
|
+
fields
|
|
4835
|
+
}),
|
|
4836
|
+
[model, viewData]
|
|
4837
|
+
);
|
|
4838
|
+
const initModel = useModel();
|
|
4839
|
+
const modelInstance = useMemo6(() => {
|
|
4840
|
+
if (viewData) {
|
|
4841
|
+
return initModel.initModel(baseModel);
|
|
4842
|
+
}
|
|
4843
|
+
return null;
|
|
4844
|
+
}, [baseModel, viewData]);
|
|
4845
|
+
const specification = useMemo6(() => {
|
|
4846
|
+
if (modelInstance) {
|
|
4847
|
+
return modelInstance.getSpecification();
|
|
4848
|
+
}
|
|
4849
|
+
return null;
|
|
4850
|
+
}, [modelInstance]);
|
|
4851
|
+
return { specification };
|
|
4852
|
+
};
|
|
4853
|
+
|
|
4854
|
+
// src/hooks/core/use-list-data.ts
|
|
4855
|
+
import { useMemo as useMemo7, useState as useState5 } from "react";
|
|
4856
|
+
import {
|
|
4857
|
+
evalJSONDomain,
|
|
4858
|
+
formatSortingString,
|
|
4859
|
+
isObjectEmpty as isObjectEmpty3
|
|
4860
|
+
} from "@fctc/interface-logic/utils";
|
|
4861
|
+
|
|
4862
|
+
// src/hooks/utils/use-click-outside.ts
|
|
4863
|
+
import { useEffect as useEffect6, useRef } from "react";
|
|
4864
|
+
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
4865
|
+
var useClickOutside = ({
|
|
4866
|
+
handler,
|
|
4867
|
+
events = DEFAULT_EVENTS,
|
|
4868
|
+
nodes = [],
|
|
4869
|
+
refs
|
|
4870
|
+
}) => {
|
|
4871
|
+
const ref = useRef(null);
|
|
4872
|
+
useEffect6(() => {
|
|
4873
|
+
const listener = (event) => {
|
|
4874
|
+
const { target } = event;
|
|
4875
|
+
if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
|
|
4876
|
+
return;
|
|
4877
|
+
}
|
|
4878
|
+
if (!(target instanceof HTMLElement)) return;
|
|
4879
|
+
const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
|
|
4880
|
+
const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
|
|
4881
|
+
if (shouldTrigger && !shouldIgnore) {
|
|
4882
|
+
handler(event);
|
|
4883
|
+
}
|
|
4884
|
+
};
|
|
4885
|
+
events.forEach((event) => document.addEventListener(event, listener));
|
|
4886
|
+
return () => {
|
|
4887
|
+
events.forEach((event) => document.removeEventListener(event, listener));
|
|
4888
|
+
};
|
|
4889
|
+
}, [handler, nodes, events]);
|
|
4890
|
+
return ref;
|
|
4851
4891
|
};
|
|
4852
4892
|
|
|
4853
|
-
// src/hooks/
|
|
4854
|
-
import {
|
|
4893
|
+
// src/hooks/utils/use-debounce.ts
|
|
4894
|
+
import { useEffect as useEffect7, useState as useState3 } from "react";
|
|
4895
|
+
function useDebounce(value, delay) {
|
|
4896
|
+
const [debouncedValue, setDebouncedValue] = useState3(value);
|
|
4897
|
+
useEffect7(() => {
|
|
4898
|
+
const handler = setTimeout(() => {
|
|
4899
|
+
setDebouncedValue(value);
|
|
4900
|
+
}, delay);
|
|
4901
|
+
return () => {
|
|
4902
|
+
clearTimeout(handler);
|
|
4903
|
+
};
|
|
4904
|
+
}, [value, delay]);
|
|
4905
|
+
return [debouncedValue];
|
|
4906
|
+
}
|
|
4907
|
+
|
|
4908
|
+
// src/hooks/utils/use-get-rowids.ts
|
|
4909
|
+
import { useCallback as useCallback3, useEffect as useEffect8, useRef as useRef2, useState as useState4 } from "react";
|
|
4855
4910
|
var useGetRowIds = (tableRef) => {
|
|
4856
4911
|
function isElementVisible(el) {
|
|
4857
4912
|
const style = window.getComputedStyle(el);
|
|
@@ -4868,9 +4923,9 @@ var useGetRowIds = (tableRef) => {
|
|
|
4868
4923
|
}
|
|
4869
4924
|
return true;
|
|
4870
4925
|
}
|
|
4871
|
-
const [rowIds, setRowIds] =
|
|
4872
|
-
const lastRowIdsRef =
|
|
4873
|
-
const updateVisibleRowIds =
|
|
4926
|
+
const [rowIds, setRowIds] = useState4([]);
|
|
4927
|
+
const lastRowIdsRef = useRef2([]);
|
|
4928
|
+
const updateVisibleRowIds = useCallback3(() => {
|
|
4874
4929
|
const table = tableRef.current;
|
|
4875
4930
|
if (!table) return;
|
|
4876
4931
|
const rows = table.querySelectorAll("tr[data-row-id]");
|
|
@@ -4888,7 +4943,7 @@ var useGetRowIds = (tableRef) => {
|
|
|
4888
4943
|
setRowIds(uniqueIds);
|
|
4889
4944
|
}
|
|
4890
4945
|
}, [tableRef]);
|
|
4891
|
-
|
|
4946
|
+
useEffect8(() => {
|
|
4892
4947
|
const table = tableRef.current;
|
|
4893
4948
|
if (!table) return;
|
|
4894
4949
|
const mutationObserver = new MutationObserver(() => {
|
|
@@ -4916,59 +4971,95 @@ var useGetRowIds = (tableRef) => {
|
|
|
4916
4971
|
return { rowIds, refresh: updateVisibleRowIds };
|
|
4917
4972
|
};
|
|
4918
4973
|
|
|
4919
|
-
// src/hooks/
|
|
4920
|
-
|
|
4921
|
-
|
|
4922
|
-
|
|
4923
|
-
|
|
4924
|
-
|
|
4925
|
-
nodes = [],
|
|
4926
|
-
refs
|
|
4974
|
+
// src/hooks/core/use-list-data.ts
|
|
4975
|
+
var useListData = ({
|
|
4976
|
+
action,
|
|
4977
|
+
context,
|
|
4978
|
+
viewData,
|
|
4979
|
+
model
|
|
4927
4980
|
}) => {
|
|
4928
|
-
const
|
|
4929
|
-
|
|
4930
|
-
|
|
4931
|
-
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
|
|
4937
|
-
|
|
4938
|
-
|
|
4939
|
-
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
|
|
4943
|
-
|
|
4944
|
-
|
|
4981
|
+
const { useGetListData: useGetListData2 } = (0, provider_exports.useService)();
|
|
4982
|
+
const [page, setPage] = useState5(0);
|
|
4983
|
+
const [pageLimit, setPageLimit] = useState5(10);
|
|
4984
|
+
const [groupByList, setGroupByList] = useState5(null);
|
|
4985
|
+
const [domain, setDomain] = useState5(null);
|
|
4986
|
+
const [order, setOrder] = useState5("");
|
|
4987
|
+
const [mode, setMode] = useState5("month");
|
|
4988
|
+
const [type, setType] = useState5("list");
|
|
4989
|
+
const [currentDate, setCurrentDate] = useState5(/* @__PURE__ */ new Date());
|
|
4990
|
+
const [selectedRowKeys, setSelectedRowKeys2] = useState5([]);
|
|
4991
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
4992
|
+
const [debouncedDomain] = useDebounce(domain, 500);
|
|
4993
|
+
const { specification } = useGetSpecification({
|
|
4994
|
+
model,
|
|
4995
|
+
viewData,
|
|
4996
|
+
fields: viewData?.views?.list?.fields
|
|
4997
|
+
});
|
|
4998
|
+
const listDataProps = useMemo7(() => {
|
|
4999
|
+
if (!viewData || !action || !context) {
|
|
5000
|
+
return null;
|
|
5001
|
+
}
|
|
5002
|
+
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : evalJSONDomain(action?.domain, context) : [];
|
|
5003
|
+
const limit = type === "calendar" ? 2500 : pageLimit;
|
|
5004
|
+
const offset = debouncedPage * pageLimit;
|
|
5005
|
+
const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
|
|
5006
|
+
const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
|
|
5007
|
+
const sort = order ? order : viewData?.views?.list?.default_order ? formatSortingString(viewData?.views?.list?.default_order) : "";
|
|
5008
|
+
return {
|
|
5009
|
+
model: action.res_model,
|
|
5010
|
+
specification,
|
|
5011
|
+
domain: domainParse,
|
|
5012
|
+
limit,
|
|
5013
|
+
offset,
|
|
5014
|
+
fields,
|
|
5015
|
+
groupby,
|
|
5016
|
+
context,
|
|
5017
|
+
sort,
|
|
5018
|
+
type
|
|
4945
5019
|
};
|
|
4946
|
-
}, [
|
|
4947
|
-
|
|
5020
|
+
}, [
|
|
5021
|
+
action,
|
|
5022
|
+
context,
|
|
5023
|
+
currentDate,
|
|
5024
|
+
groupByList,
|
|
5025
|
+
mode,
|
|
5026
|
+
order,
|
|
5027
|
+
debouncedPage,
|
|
5028
|
+
pageLimit,
|
|
5029
|
+
type,
|
|
5030
|
+
debouncedDomain
|
|
5031
|
+
]);
|
|
5032
|
+
const list = useGetListData2(
|
|
5033
|
+
listDataProps,
|
|
5034
|
+
[listDataProps],
|
|
5035
|
+
!!listDataProps && !!specification && !isObjectEmpty3(specification)
|
|
5036
|
+
);
|
|
5037
|
+
return {
|
|
5038
|
+
...list,
|
|
5039
|
+
state: {
|
|
5040
|
+
specification,
|
|
5041
|
+
type,
|
|
5042
|
+
page,
|
|
5043
|
+
mode,
|
|
5044
|
+
order,
|
|
5045
|
+
domain: listDataProps?.domain,
|
|
5046
|
+
pageLimit,
|
|
5047
|
+
groupByList,
|
|
5048
|
+
currentDate,
|
|
5049
|
+
selectedRowKeys,
|
|
5050
|
+
setType,
|
|
5051
|
+
setMode,
|
|
5052
|
+
setPage,
|
|
5053
|
+
setOrder,
|
|
5054
|
+
setDomain,
|
|
5055
|
+
setPageLimit,
|
|
5056
|
+
setGroupByList,
|
|
5057
|
+
setCurrentDate,
|
|
5058
|
+
setSelectedRowKeys: setSelectedRowKeys2
|
|
5059
|
+
}
|
|
5060
|
+
};
|
|
4948
5061
|
};
|
|
4949
5062
|
|
|
4950
|
-
// src/hooks/utils/use-debounce.ts
|
|
4951
|
-
import { useEffect as useEffect9, useState as useState6 } from "react";
|
|
4952
|
-
function useDebounce(value, delay) {
|
|
4953
|
-
const [debouncedValue, setDebouncedValue] = useState6(value);
|
|
4954
|
-
useEffect9(() => {
|
|
4955
|
-
const handler = setTimeout(() => {
|
|
4956
|
-
setDebouncedValue(value);
|
|
4957
|
-
}, delay);
|
|
4958
|
-
return () => {
|
|
4959
|
-
clearTimeout(handler);
|
|
4960
|
-
};
|
|
4961
|
-
}, [value, delay]);
|
|
4962
|
-
return [debouncedValue];
|
|
4963
|
-
}
|
|
4964
|
-
|
|
4965
|
-
// src/hooks.ts
|
|
4966
|
-
__reExport(hooks_exports, hooks_star);
|
|
4967
|
-
import * as hooks_star from "@fctc/interface-logic/hooks";
|
|
4968
|
-
|
|
4969
|
-
// src/index.ts
|
|
4970
|
-
__reExport(index_exports, hooks_exports);
|
|
4971
|
-
|
|
4972
5063
|
// src/config.ts
|
|
4973
5064
|
var config_exports = {};
|
|
4974
5065
|
__reExport(config_exports, configs_star);
|
|
@@ -5208,20 +5299,20 @@ var ChevronBottomIcon = ({
|
|
|
5208
5299
|
};
|
|
5209
5300
|
|
|
5210
5301
|
// src/widget/basic/status-dropdown-field/controller.ts
|
|
5211
|
-
import { useEffect as
|
|
5212
|
-
import { getEnv
|
|
5213
|
-
import { useSave } from "@fctc/interface-logic/hooks";
|
|
5302
|
+
import { useEffect as useEffect9, useRef as useRef3, useState as useState6 } from "react";
|
|
5303
|
+
import { getEnv } from "@fctc/interface-logic/environment";
|
|
5304
|
+
import { useSave as useSave2 } from "@fctc/interface-logic/hooks";
|
|
5214
5305
|
var statusDropdownController = (props) => {
|
|
5215
5306
|
const { selection, isForm, id, model, name, state, onRefetch } = props;
|
|
5216
|
-
const env =
|
|
5307
|
+
const env = getEnv();
|
|
5217
5308
|
const colors = {
|
|
5218
5309
|
normal: "bg-[#e9ecef]",
|
|
5219
5310
|
done: "bg-primary",
|
|
5220
5311
|
blocked: "bg-red-500"
|
|
5221
5312
|
};
|
|
5222
|
-
const [isOpen, setIsOpen] =
|
|
5313
|
+
const [isOpen, setIsOpen] = useState6(false);
|
|
5223
5314
|
const buttonRef = useRef3(null);
|
|
5224
|
-
|
|
5315
|
+
useEffect9(() => {
|
|
5225
5316
|
const handleClickOutside = (event) => {
|
|
5226
5317
|
if (buttonRef.current && !buttonRef.current.contains(event.target)) {
|
|
5227
5318
|
setIsOpen(false);
|
|
@@ -5232,7 +5323,7 @@ var statusDropdownController = (props) => {
|
|
|
5232
5323
|
document.removeEventListener("mousedown", handleClickOutside);
|
|
5233
5324
|
};
|
|
5234
5325
|
}, []);
|
|
5235
|
-
const { mutate: onSave } =
|
|
5326
|
+
const { mutate: onSave } = useSave2();
|
|
5236
5327
|
const handleClick = async (status) => {
|
|
5237
5328
|
setIsOpen(!isOpen);
|
|
5238
5329
|
onSave(
|
|
@@ -5262,18 +5353,13 @@ var statusDropdownController = (props) => {
|
|
|
5262
5353
|
};
|
|
5263
5354
|
|
|
5264
5355
|
// src/widget/basic/many2one-field/controller.ts
|
|
5265
|
-
import { useCallback as
|
|
5356
|
+
import { useCallback as useCallback4, useEffect as useEffect10, useMemo as useMemo8, useState as useState7 } from "react";
|
|
5266
5357
|
|
|
5267
5358
|
// src/store.ts
|
|
5268
5359
|
var store_exports = {};
|
|
5269
5360
|
__reExport(store_exports, store_star);
|
|
5270
5361
|
import * as store_star from "@fctc/interface-logic/store";
|
|
5271
5362
|
|
|
5272
|
-
// src/provider.ts
|
|
5273
|
-
var provider_exports = {};
|
|
5274
|
-
__reExport(provider_exports, provider_star);
|
|
5275
|
-
import * as provider_star from "@fctc/interface-logic/provider";
|
|
5276
|
-
|
|
5277
5363
|
// src/widget/basic/many2one-field/controller.ts
|
|
5278
5364
|
var many2oneFieldController = (props) => {
|
|
5279
5365
|
const {
|
|
@@ -5290,13 +5376,13 @@ var many2oneFieldController = (props) => {
|
|
|
5290
5376
|
showDetail
|
|
5291
5377
|
} = props;
|
|
5292
5378
|
const { env } = (0, provider_exports.useEnv)();
|
|
5293
|
-
const [options, setOptions] =
|
|
5294
|
-
const [inputValue, setInputValue] =
|
|
5379
|
+
const [options, setOptions] = useState7([]);
|
|
5380
|
+
const [inputValue, setInputValue] = useState7("");
|
|
5295
5381
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
5296
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
5297
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
5298
|
-
const [domainModal, setDomainModal] =
|
|
5299
|
-
const [domainObject, setDomainObject] =
|
|
5382
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState7(false);
|
|
5383
|
+
const [tempSelectedOption, setTempSelectedOption] = useState7(null);
|
|
5384
|
+
const [domainModal, setDomainModal] = useState7(null);
|
|
5385
|
+
const [domainObject, setDomainObject] = useState7(null);
|
|
5300
5386
|
const actionData = sessionStorageUtils.getActionData();
|
|
5301
5387
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5302
5388
|
const initValue = methods?.getValues(name);
|
|
@@ -5306,7 +5392,7 @@ var many2oneFieldController = (props) => {
|
|
|
5306
5392
|
...fieldContext,
|
|
5307
5393
|
...env?.context
|
|
5308
5394
|
};
|
|
5309
|
-
const { useGetSelection:
|
|
5395
|
+
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5310
5396
|
const data = {
|
|
5311
5397
|
model: relation,
|
|
5312
5398
|
domain: domainObject,
|
|
@@ -5322,7 +5408,7 @@ var many2oneFieldController = (props) => {
|
|
|
5322
5408
|
data: dataOfSelection,
|
|
5323
5409
|
refetch,
|
|
5324
5410
|
isFetching
|
|
5325
|
-
} =
|
|
5411
|
+
} = useGetSelection3({
|
|
5326
5412
|
data,
|
|
5327
5413
|
queryKey,
|
|
5328
5414
|
enabled: false
|
|
@@ -5333,12 +5419,12 @@ var many2oneFieldController = (props) => {
|
|
|
5333
5419
|
label: val?.display_name || val?.name
|
|
5334
5420
|
})) || [];
|
|
5335
5421
|
}, [dataOfSelection]);
|
|
5336
|
-
|
|
5422
|
+
useEffect10(() => {
|
|
5337
5423
|
setOptions(selectOptions);
|
|
5338
5424
|
setDomainModal(domainObject);
|
|
5339
5425
|
if (relation === "student.subject") (0, store_exports.setListSubject)(selectOptions);
|
|
5340
5426
|
}, [selectOptions]);
|
|
5341
|
-
|
|
5427
|
+
useEffect10(() => {
|
|
5342
5428
|
setDomainObject(
|
|
5343
5429
|
(0, utils_exports.evalJSONDomain)(
|
|
5344
5430
|
domain,
|
|
@@ -5346,7 +5432,7 @@ var many2oneFieldController = (props) => {
|
|
|
5346
5432
|
)
|
|
5347
5433
|
);
|
|
5348
5434
|
}, [domain, formValues]);
|
|
5349
|
-
|
|
5435
|
+
useEffect10(() => {
|
|
5350
5436
|
if (!propValue && tempSelectedOption) {
|
|
5351
5437
|
methods.setValue(name, null);
|
|
5352
5438
|
setTempSelectedOption(null);
|
|
@@ -5357,10 +5443,10 @@ var many2oneFieldController = (props) => {
|
|
|
5357
5443
|
});
|
|
5358
5444
|
}
|
|
5359
5445
|
}, [propValue]);
|
|
5360
|
-
const fetchMoreOptions =
|
|
5446
|
+
const fetchMoreOptions = useCallback4(() => {
|
|
5361
5447
|
refetch();
|
|
5362
5448
|
}, [refetch]);
|
|
5363
|
-
|
|
5449
|
+
useEffect10(() => {
|
|
5364
5450
|
if (debouncedInputValue) {
|
|
5365
5451
|
const filteredDomain = [...domainObject ?? []]?.filter(
|
|
5366
5452
|
(d) => !(Array.isArray(d) && d[0] === "name" && d[1] === "ilike")
|
|
@@ -5375,7 +5461,7 @@ var many2oneFieldController = (props) => {
|
|
|
5375
5461
|
}, 50);
|
|
5376
5462
|
}
|
|
5377
5463
|
}, [debouncedInputValue]);
|
|
5378
|
-
const handleChooseRecord =
|
|
5464
|
+
const handleChooseRecord = useCallback4(
|
|
5379
5465
|
(idRecord) => {
|
|
5380
5466
|
const newOption = options.find(
|
|
5381
5467
|
(option) => option.value === idRecord
|
|
@@ -5400,8 +5486,8 @@ var many2oneFieldController = (props) => {
|
|
|
5400
5486
|
},
|
|
5401
5487
|
[options, methods, name, onChange]
|
|
5402
5488
|
);
|
|
5403
|
-
const handleClose =
|
|
5404
|
-
const handleSelectChange =
|
|
5489
|
+
const handleClose = useCallback4(() => setIsShowModalMany2Many(false), []);
|
|
5490
|
+
const handleSelectChange = useCallback4(
|
|
5405
5491
|
(selectedOption) => {
|
|
5406
5492
|
if (!selectedOption) {
|
|
5407
5493
|
methods.setValue(name, null, { shouldDirty: true });
|
|
@@ -5448,16 +5534,16 @@ var many2oneFieldController = (props) => {
|
|
|
5448
5534
|
};
|
|
5449
5535
|
|
|
5450
5536
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5451
|
-
import { getEnv as
|
|
5452
|
-
import { useGetSelection } from "@fctc/interface-logic/hooks";
|
|
5537
|
+
import { getEnv as getEnv2 } from "@fctc/interface-logic/environment";
|
|
5538
|
+
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5453
5539
|
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
|
|
5454
5540
|
var many2oneButtonController = (props) => {
|
|
5455
5541
|
const { domain, methods, relation } = props;
|
|
5456
5542
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5457
|
-
const env =
|
|
5543
|
+
const env = getEnv2();
|
|
5458
5544
|
const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
|
|
5459
5545
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5460
|
-
const { data: dataOfSelection } =
|
|
5546
|
+
const { data: dataOfSelection } = useGetSelection2({
|
|
5461
5547
|
data: {
|
|
5462
5548
|
model: relation ?? "",
|
|
5463
5549
|
domain: domainObject,
|
|
@@ -5475,7 +5561,7 @@ var many2oneButtonController = (props) => {
|
|
|
5475
5561
|
};
|
|
5476
5562
|
|
|
5477
5563
|
// src/widget/basic/many2many-field/controller.ts
|
|
5478
|
-
import { useEffect as
|
|
5564
|
+
import { useEffect as useEffect11, useMemo as useMemo9, useState as useState8 } from "react";
|
|
5479
5565
|
import {
|
|
5480
5566
|
evalJSONContext as evalJSONContext4,
|
|
5481
5567
|
evalJSONDomain as evalJSONDomain4,
|
|
@@ -5488,16 +5574,16 @@ var many2manyFieldController = (props) => {
|
|
|
5488
5574
|
context,
|
|
5489
5575
|
options,
|
|
5490
5576
|
tab,
|
|
5491
|
-
setSelectedRowKeys:
|
|
5577
|
+
setSelectedRowKeys: setSelectedRowKeys2,
|
|
5492
5578
|
groupByDomain,
|
|
5493
5579
|
enabled: enabledCallAPI,
|
|
5494
5580
|
actionData
|
|
5495
5581
|
} = props;
|
|
5496
5582
|
const { env } = (0, provider_exports.useEnv)();
|
|
5497
|
-
const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView } = (0, provider_exports.useService)();
|
|
5498
|
-
const [order, setOrder] =
|
|
5499
|
-
const [page, setPage] =
|
|
5500
|
-
const [domainMany2Many, setDomainMany2Many] =
|
|
5583
|
+
const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView: useGetFormView2 } = (0, provider_exports.useService)();
|
|
5584
|
+
const [order, setOrder] = useState8();
|
|
5585
|
+
const [page, setPage] = useState8(0);
|
|
5586
|
+
const [domainMany2Many, setDomainMany2Many] = useState8(null);
|
|
5501
5587
|
const [debouncedPage] = useDebounce(page, 500);
|
|
5502
5588
|
const contextObject = {
|
|
5503
5589
|
...env.context,
|
|
@@ -5524,7 +5610,7 @@ var many2manyFieldController = (props) => {
|
|
|
5524
5610
|
}),
|
|
5525
5611
|
[relation, viewResponse]
|
|
5526
5612
|
);
|
|
5527
|
-
const initModel =
|
|
5613
|
+
const initModel = useModel();
|
|
5528
5614
|
const modelInstance = useMemo9(() => {
|
|
5529
5615
|
if (viewResponse) {
|
|
5530
5616
|
return initModel.initModel(baseModel);
|
|
@@ -5574,13 +5660,13 @@ var many2manyFieldController = (props) => {
|
|
|
5574
5660
|
isFetched,
|
|
5575
5661
|
isPlaceholderData
|
|
5576
5662
|
} = useGetListData2(data, queryKey, enabled);
|
|
5577
|
-
|
|
5663
|
+
useEffect11(() => {
|
|
5578
5664
|
if (viewResponse) {
|
|
5579
5665
|
fetchData();
|
|
5580
5666
|
}
|
|
5581
5667
|
return () => {
|
|
5582
5668
|
setPage(0);
|
|
5583
|
-
|
|
5669
|
+
setSelectedRowKeys2([]);
|
|
5584
5670
|
setDomainMany2Many(null);
|
|
5585
5671
|
};
|
|
5586
5672
|
}, [viewResponse]);
|
|
@@ -5641,7 +5727,7 @@ var many2manyTagsController = (props) => {
|
|
|
5641
5727
|
} = props;
|
|
5642
5728
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5643
5729
|
const { env } = (0, provider_exports.useEnv)();
|
|
5644
|
-
const { useGetSelection:
|
|
5730
|
+
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5645
5731
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5646
5732
|
const domainObject = useMemo10(
|
|
5647
5733
|
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
@@ -5660,7 +5746,7 @@ var many2manyTagsController = (props) => {
|
|
|
5660
5746
|
enabled: true,
|
|
5661
5747
|
context: env.context
|
|
5662
5748
|
};
|
|
5663
|
-
const { data: dataOfSelection } =
|
|
5749
|
+
const { data: dataOfSelection } = useGetSelection3({
|
|
5664
5750
|
data,
|
|
5665
5751
|
queryKey: [`data_${relation}`, domainObject]
|
|
5666
5752
|
});
|
|
@@ -5685,7 +5771,7 @@ var many2manyTagsController = (props) => {
|
|
|
5685
5771
|
};
|
|
5686
5772
|
|
|
5687
5773
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5688
|
-
import { useState as
|
|
5774
|
+
import { useState as useState9 } from "react";
|
|
5689
5775
|
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5690
5776
|
var durationController = (props) => {
|
|
5691
5777
|
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
@@ -5694,10 +5780,10 @@ var durationController = (props) => {
|
|
|
5694
5780
|
name: "",
|
|
5695
5781
|
fold: ""
|
|
5696
5782
|
};
|
|
5697
|
-
const { useGetListData: useGetListData2, useChangeStatus } = (0, provider_exports.useService)();
|
|
5783
|
+
const { useGetListData: useGetListData2, useChangeStatus: useChangeStatus2 } = (0, provider_exports.useService)();
|
|
5698
5784
|
const { env } = (0, provider_exports.useEnv)();
|
|
5699
|
-
const [disabled, setDisabled] =
|
|
5700
|
-
const [modelStatus, setModalStatus] =
|
|
5785
|
+
const [disabled, setDisabled] = useState9(false);
|
|
5786
|
+
const [modelStatus, setModalStatus] = useState9(false);
|
|
5701
5787
|
const queryKey = [`data-status-duration`, specification];
|
|
5702
5788
|
const listDataProps = {
|
|
5703
5789
|
model: relation,
|
|
@@ -5717,7 +5803,7 @@ var durationController = (props) => {
|
|
|
5717
5803
|
queryKey,
|
|
5718
5804
|
enabled
|
|
5719
5805
|
);
|
|
5720
|
-
const { mutate: fetchChangeStatus } =
|
|
5806
|
+
const { mutate: fetchChangeStatus } = useChangeStatus2();
|
|
5721
5807
|
const handleClick = async (stage_id) => {
|
|
5722
5808
|
setDisabled(true);
|
|
5723
5809
|
if (stage_id) {
|
|
@@ -5757,8 +5843,8 @@ var priorityFieldController = (props) => {
|
|
|
5757
5843
|
const { name, model, index, actionData, context, onChange, specification } = props;
|
|
5758
5844
|
const _context = { ...evalJSONContext6(actionData?.context) };
|
|
5759
5845
|
const contextObject = { ...context, ..._context };
|
|
5760
|
-
const { useSave:
|
|
5761
|
-
const { mutateAsync: fetchSave } =
|
|
5846
|
+
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
5847
|
+
const { mutateAsync: fetchSave } = useSave3();
|
|
5762
5848
|
const savePriorities = async ({
|
|
5763
5849
|
value,
|
|
5764
5850
|
resetPriority
|
|
@@ -5787,10 +5873,10 @@ var priorityFieldController = (props) => {
|
|
|
5787
5873
|
};
|
|
5788
5874
|
|
|
5789
5875
|
// src/widget/basic/download-file-field/controller.ts
|
|
5790
|
-
import { useId, useState as
|
|
5876
|
+
import { useId, useState as useState10 } from "react";
|
|
5791
5877
|
var downloadFileController = () => {
|
|
5792
5878
|
const inputId = useId();
|
|
5793
|
-
const [file, setFile] =
|
|
5879
|
+
const [file, setFile] = useState10(null);
|
|
5794
5880
|
const handleFileChange = (e) => {
|
|
5795
5881
|
setFile(e.target.files[0]);
|
|
5796
5882
|
};
|
|
@@ -6722,11 +6808,11 @@ var dateFieldController = (props) => {
|
|
|
6722
6808
|
};
|
|
6723
6809
|
|
|
6724
6810
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6725
|
-
import { useState as
|
|
6811
|
+
import { useState as useState11 } from "react";
|
|
6726
6812
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6727
6813
|
var copyLinkButtonController = (props) => {
|
|
6728
6814
|
const { value, defaultValue } = props;
|
|
6729
|
-
const [isCopied, setIsCopied] =
|
|
6815
|
+
const [isCopied, setIsCopied] = useState11(false);
|
|
6730
6816
|
const handleCopyToClipboard = async (value2) => {
|
|
6731
6817
|
await copyTextToClipboard(value2);
|
|
6732
6818
|
setIsCopied(true);
|
|
@@ -6745,11 +6831,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
|
|
|
6745
6831
|
var colorFieldController = (props) => {
|
|
6746
6832
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6747
6833
|
const { env } = (0, provider_exports.useEnv)();
|
|
6748
|
-
const { useSave:
|
|
6834
|
+
const { useSave: useSave3 } = (0, provider_exports.useService)();
|
|
6749
6835
|
const _context = { ...evalJSONContext7(actionData?.context) || {} };
|
|
6750
6836
|
const contextObject = { ...env.context, ..._context };
|
|
6751
6837
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6752
|
-
const { mutate: onSave } =
|
|
6838
|
+
const { mutate: onSave } = useSave3();
|
|
6753
6839
|
const savePickColor = async (colorObject) => {
|
|
6754
6840
|
const { id } = colorObject;
|
|
6755
6841
|
if (value === id) return;
|
|
@@ -6774,14 +6860,14 @@ var colorFieldController = (props) => {
|
|
|
6774
6860
|
};
|
|
6775
6861
|
|
|
6776
6862
|
// src/widget/basic/binary-field/controller.ts
|
|
6777
|
-
import { useEffect as
|
|
6863
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
|
|
6778
6864
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6779
6865
|
var binaryFieldController = (props) => {
|
|
6780
6866
|
const { name, methods, readonly = false, value } = props;
|
|
6781
6867
|
const inputId = useId2();
|
|
6782
|
-
const [selectedImage, setSelectedImage] =
|
|
6783
|
-
const [initialImage, setInitialImage] =
|
|
6784
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6868
|
+
const [selectedImage, setSelectedImage] = useState12(null);
|
|
6869
|
+
const [initialImage, setInitialImage] = useState12(value || null);
|
|
6870
|
+
const [isInsideTable, setIsInsideTable] = useState12(false);
|
|
6785
6871
|
const { setValue } = methods;
|
|
6786
6872
|
const binaryRef = useRef4(null);
|
|
6787
6873
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6845,14 +6931,14 @@ var binaryFieldController = (props) => {
|
|
|
6845
6931
|
else if (base64.startsWith("UklGR")) mimeType = "image/webp";
|
|
6846
6932
|
return mimeType ? `data:${mimeType};base64,${base64}` : null;
|
|
6847
6933
|
};
|
|
6848
|
-
|
|
6934
|
+
useEffect12(() => {
|
|
6849
6935
|
return () => {
|
|
6850
6936
|
if (selectedImage) {
|
|
6851
6937
|
URL.revokeObjectURL(selectedImage);
|
|
6852
6938
|
}
|
|
6853
6939
|
};
|
|
6854
6940
|
}, [selectedImage]);
|
|
6855
|
-
|
|
6941
|
+
useEffect12(() => {
|
|
6856
6942
|
if (binaryRef.current) {
|
|
6857
6943
|
const isInsideTable2 = !!binaryRef.current.closest("table");
|
|
6858
6944
|
setIsInsideTable(isInsideTable2);
|
|
@@ -6872,11 +6958,16 @@ var binaryFieldController = (props) => {
|
|
|
6872
6958
|
};
|
|
6873
6959
|
|
|
6874
6960
|
// src/widget/advance/table/table-head/controller.ts
|
|
6875
|
-
import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6876
6961
|
import { useMemo as useMemo11, useRef as useRef5 } from "react";
|
|
6877
6962
|
var tableHeadController = (props) => {
|
|
6878
|
-
const {
|
|
6879
|
-
|
|
6963
|
+
const {
|
|
6964
|
+
typeTable,
|
|
6965
|
+
rows,
|
|
6966
|
+
tableRef,
|
|
6967
|
+
groupByList,
|
|
6968
|
+
selectedRowKeys,
|
|
6969
|
+
setSelectedRowKeys: setSelectedRowKeys2
|
|
6970
|
+
} = props;
|
|
6880
6971
|
const { rowIds: recordIds } = useGetRowIds(tableRef);
|
|
6881
6972
|
const selectedRowKeysRef = useRef5(recordIds);
|
|
6882
6973
|
const isGroupTable = typeTable === "group";
|
|
@@ -6902,27 +6993,27 @@ var tableHeadController = (props) => {
|
|
|
6902
6993
|
const handleCheckBoxAll = (event) => {
|
|
6903
6994
|
if (event?.target?.checked && typeTable === "list") {
|
|
6904
6995
|
const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
|
|
6905
|
-
|
|
6996
|
+
setSelectedRowKeys2(allRowKeys);
|
|
6906
6997
|
} else if (event?.target?.checked && typeTable === "group") {
|
|
6907
6998
|
const rowsIDs = document.querySelectorAll("tr[data-row-id]");
|
|
6908
6999
|
const ids = Array.from(rowsIDs)?.map(
|
|
6909
7000
|
(row) => Number(row?.getAttribute("data-row-id"))
|
|
6910
7001
|
);
|
|
6911
7002
|
if (ids?.length > 0) {
|
|
6912
|
-
|
|
7003
|
+
setSelectedRowKeys2(ids);
|
|
6913
7004
|
} else {
|
|
6914
7005
|
const sum = countSum(
|
|
6915
7006
|
rows,
|
|
6916
7007
|
typeof groupByList === "object" ? groupByList?.contexts?.[0]?.group_by : void 0
|
|
6917
7008
|
);
|
|
6918
7009
|
const keys = Array.from({ length: sum }, (_) => void 0);
|
|
6919
|
-
|
|
7010
|
+
setSelectedRowKeys2(keys);
|
|
6920
7011
|
}
|
|
6921
7012
|
if (selectedRowKeysRef) {
|
|
6922
7013
|
selectedRowKeysRef.current = [];
|
|
6923
7014
|
}
|
|
6924
7015
|
} else {
|
|
6925
|
-
|
|
7016
|
+
setSelectedRowKeys2([]);
|
|
6926
7017
|
}
|
|
6927
7018
|
};
|
|
6928
7019
|
return {
|
|
@@ -6933,11 +7024,11 @@ var tableHeadController = (props) => {
|
|
|
6933
7024
|
};
|
|
6934
7025
|
|
|
6935
7026
|
// src/widget/advance/table/table-view/controller.ts
|
|
6936
|
-
import { useEffect as
|
|
7027
|
+
import { useEffect as useEffect13, useState as useState13 } from "react";
|
|
6937
7028
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6938
7029
|
var tableController = ({ data }) => {
|
|
6939
|
-
const [rows, setRows] =
|
|
6940
|
-
const [columns, setColumns] =
|
|
7030
|
+
const [rows, setRows] = useState13(null);
|
|
7031
|
+
const [columns, setColumns] = useState13(null);
|
|
6941
7032
|
const dataModelFields = data?.fields?.map((field) => {
|
|
6942
7033
|
return {
|
|
6943
7034
|
...data.dataModel?.[field?.name],
|
|
@@ -6965,7 +7056,7 @@ var tableController = ({ data }) => {
|
|
|
6965
7056
|
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6966
7057
|
});
|
|
6967
7058
|
};
|
|
6968
|
-
|
|
7059
|
+
useEffect13(() => {
|
|
6969
7060
|
setRows(transformData(data.records));
|
|
6970
7061
|
}, [data.records]);
|
|
6971
7062
|
const handleGetColumns = () => {
|
|
@@ -6986,7 +7077,7 @@ var tableController = ({ data }) => {
|
|
|
6986
7077
|
}
|
|
6987
7078
|
return cols;
|
|
6988
7079
|
};
|
|
6989
|
-
|
|
7080
|
+
useEffect13(() => {
|
|
6990
7081
|
if (!columns) {
|
|
6991
7082
|
setColumns(handleGetColumns());
|
|
6992
7083
|
}
|
|
@@ -7003,12 +7094,14 @@ var tableController = ({ data }) => {
|
|
|
7003
7094
|
});
|
|
7004
7095
|
setColumns(tempColumn);
|
|
7005
7096
|
};
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
setColumns(null);
|
|
7009
|
-
return () => {
|
|
7010
|
-
setRows(null);
|
|
7097
|
+
useEffect13(() => {
|
|
7098
|
+
if (data?.fields != null) {
|
|
7011
7099
|
setColumns(null);
|
|
7100
|
+
}
|
|
7101
|
+
return () => {
|
|
7102
|
+
if (data?.fields != null) {
|
|
7103
|
+
setColumns(null);
|
|
7104
|
+
}
|
|
7012
7105
|
};
|
|
7013
7106
|
}, [data?.fields]);
|
|
7014
7107
|
return {
|
|
@@ -7020,10 +7113,10 @@ var tableController = ({ data }) => {
|
|
|
7020
7113
|
};
|
|
7021
7114
|
|
|
7022
7115
|
// src/widget/advance/table/table-group/controller.ts
|
|
7023
|
-
import { useEffect as
|
|
7116
|
+
import { useEffect as useEffect14, useMemo as useMemo12, useState as useState14 } from "react";
|
|
7024
7117
|
import {
|
|
7025
|
-
useAppSelector as
|
|
7026
|
-
selectList
|
|
7118
|
+
useAppSelector as useAppSelector2,
|
|
7119
|
+
selectList
|
|
7027
7120
|
} from "@fctc/interface-logic/store";
|
|
7028
7121
|
var tableGroupController = (props) => {
|
|
7029
7122
|
const { env } = (0, provider_exports.useEnv)();
|
|
@@ -7038,12 +7131,12 @@ var tableGroupController = (props) => {
|
|
|
7038
7131
|
context,
|
|
7039
7132
|
checkedAll,
|
|
7040
7133
|
groupByList,
|
|
7041
|
-
setSelectedRowKeys:
|
|
7134
|
+
setSelectedRowKeys: setSelectedRowKeys2
|
|
7042
7135
|
} = props;
|
|
7043
|
-
const [pageGroup, setPageGroup] =
|
|
7044
|
-
const { selectedRowKeys } =
|
|
7045
|
-
const [isShowGroup, setIsShowGroup] =
|
|
7046
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
7136
|
+
const [pageGroup, setPageGroup] = useState14(0);
|
|
7137
|
+
const { selectedRowKeys } = useAppSelector2(selectList);
|
|
7138
|
+
const [isShowGroup, setIsShowGroup] = useState14(false);
|
|
7139
|
+
const [colEmptyGroup, setColEmptyGroup] = useState14({
|
|
7047
7140
|
fromStart: 1,
|
|
7048
7141
|
fromEnd: 1
|
|
7049
7142
|
});
|
|
@@ -7120,25 +7213,25 @@ var tableGroupController = (props) => {
|
|
|
7120
7213
|
const filteredIds = selectedRowKeys.filter(
|
|
7121
7214
|
(id) => !ids.includes(id)
|
|
7122
7215
|
);
|
|
7123
|
-
|
|
7216
|
+
setSelectedRowKeys2(filteredIds);
|
|
7124
7217
|
} else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull) {
|
|
7125
7218
|
const clonedKeys = [...selectedRowKeys];
|
|
7126
|
-
|
|
7127
|
-
setTimeout(() =>
|
|
7219
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
7220
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
7128
7221
|
} else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
|
|
7129
7222
|
console.log("abc");
|
|
7130
7223
|
const filteredKeys = selectedRowKeys.filter((id) => id > -1);
|
|
7131
|
-
|
|
7224
|
+
setSelectedRowKeys2(filteredKeys);
|
|
7132
7225
|
}
|
|
7133
7226
|
toggleShowGroup();
|
|
7134
7227
|
};
|
|
7135
|
-
|
|
7228
|
+
useEffect14(() => {
|
|
7136
7229
|
if (!isDataGroupFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
|
|
7137
7230
|
return;
|
|
7138
7231
|
}
|
|
7139
7232
|
const clonedKeys = [...selectedRowKeys];
|
|
7140
|
-
|
|
7141
|
-
setTimeout(() =>
|
|
7233
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
7234
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
7142
7235
|
}, [isDataGroupFetched]);
|
|
7143
7236
|
return {
|
|
7144
7237
|
onExpandChildGroup,
|
|
@@ -7165,7 +7258,7 @@ import {
|
|
|
7165
7258
|
evalJSONDomain as evalJSONDomain7,
|
|
7166
7259
|
validateAndParseDate
|
|
7167
7260
|
} from "@fctc/interface-logic/utils";
|
|
7168
|
-
import { useCallback as
|
|
7261
|
+
import { useCallback as useCallback5, useEffect as useEffect15, useState as useState15 } from "react";
|
|
7169
7262
|
var searchController = ({
|
|
7170
7263
|
viewData,
|
|
7171
7264
|
model,
|
|
@@ -7174,12 +7267,12 @@ var searchController = ({
|
|
|
7174
7267
|
fieldsList
|
|
7175
7268
|
}) => {
|
|
7176
7269
|
const { env } = (0, provider_exports.useEnv)();
|
|
7177
|
-
const [filterBy, setFilterBy] =
|
|
7178
|
-
const [searchBy, setSearchBy] =
|
|
7179
|
-
const [groupBy, setGroupBy] =
|
|
7180
|
-
const [selectedTags, setSelectedTags] =
|
|
7181
|
-
const [searchString, setSearchString] =
|
|
7182
|
-
const [searchMap, setSearchMap] =
|
|
7270
|
+
const [filterBy, setFilterBy] = useState15(null);
|
|
7271
|
+
const [searchBy, setSearchBy] = useState15(null);
|
|
7272
|
+
const [groupBy, setGroupBy] = useState15(null);
|
|
7273
|
+
const [selectedTags, setSelectedTags] = useState15(null);
|
|
7274
|
+
const [searchString, setSearchString] = useState15("");
|
|
7275
|
+
const [searchMap, setSearchMap] = useState15({});
|
|
7183
7276
|
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
7184
7277
|
const contextSearch = { ...env.context, ...actionContext };
|
|
7185
7278
|
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
@@ -7226,7 +7319,7 @@ var searchController = ({
|
|
|
7226
7319
|
}
|
|
7227
7320
|
}
|
|
7228
7321
|
};
|
|
7229
|
-
|
|
7322
|
+
useEffect15(() => {
|
|
7230
7323
|
fetchData();
|
|
7231
7324
|
}, [model, viewData]);
|
|
7232
7325
|
const onChangeSearchInput = (search_string) => {
|
|
@@ -7308,7 +7401,7 @@ var searchController = ({
|
|
|
7308
7401
|
return [...domain2];
|
|
7309
7402
|
}
|
|
7310
7403
|
};
|
|
7311
|
-
const setTagSearch =
|
|
7404
|
+
const setTagSearch = useCallback5(
|
|
7312
7405
|
(updatedMap) => {
|
|
7313
7406
|
if (!updatedMap) return;
|
|
7314
7407
|
const tagsSearch = Object.entries(updatedMap).map(
|
|
@@ -7371,20 +7464,11 @@ var searchController = ({
|
|
|
7371
7464
|
},
|
|
7372
7465
|
[searchMap]
|
|
7373
7466
|
);
|
|
7374
|
-
|
|
7467
|
+
useEffect15(() => {
|
|
7375
7468
|
setTagSearch(searchMap);
|
|
7376
7469
|
}, [searchMap]);
|
|
7377
7470
|
const handleAddTagSearch = (tag) => {
|
|
7378
|
-
const {
|
|
7379
|
-
domain: domain2,
|
|
7380
|
-
groupIndex,
|
|
7381
|
-
value,
|
|
7382
|
-
type,
|
|
7383
|
-
title,
|
|
7384
|
-
context: context2,
|
|
7385
|
-
active,
|
|
7386
|
-
dataIndex
|
|
7387
|
-
} = tag;
|
|
7471
|
+
const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
|
|
7388
7472
|
const domainFormat = new domainHelper2.Domain(domain2);
|
|
7389
7473
|
if (type === SearchType.FILTER) {
|
|
7390
7474
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|
|
@@ -7465,8 +7549,6 @@ import * as types_star from "@fctc/interface-logic/types";
|
|
|
7465
7549
|
// src/index.ts
|
|
7466
7550
|
__reExport(index_exports, types_exports);
|
|
7467
7551
|
export {
|
|
7468
|
-
API_APP_URL,
|
|
7469
|
-
API_PRESCHOOL_URL,
|
|
7470
7552
|
AppProvider,
|
|
7471
7553
|
CheckIcon,
|
|
7472
7554
|
ChevronBottomIcon,
|
|
@@ -7502,19 +7584,89 @@ export {
|
|
|
7502
7584
|
tableGroupController,
|
|
7503
7585
|
tableHeadController,
|
|
7504
7586
|
useAppProvider,
|
|
7505
|
-
|
|
7587
|
+
useButton,
|
|
7506
7588
|
useCallAction,
|
|
7589
|
+
useChangeStatus,
|
|
7507
7590
|
useClickOutside,
|
|
7591
|
+
useCompany,
|
|
7508
7592
|
useConfig,
|
|
7509
7593
|
useDebounce,
|
|
7594
|
+
useDelete,
|
|
7595
|
+
useDeleteComment,
|
|
7510
7596
|
useDetail,
|
|
7597
|
+
useDuplicateRecord,
|
|
7598
|
+
useExecuteImport,
|
|
7599
|
+
useExportExcel,
|
|
7600
|
+
useForgotPassword,
|
|
7601
|
+
useForgotPasswordSSO,
|
|
7602
|
+
useGet2FAMethods,
|
|
7603
|
+
useGetAccessByCode,
|
|
7604
|
+
useGetAction,
|
|
7605
|
+
useGetActionDetail,
|
|
7606
|
+
useGetAll,
|
|
7607
|
+
useGetCalendar,
|
|
7608
|
+
useGetComment,
|
|
7609
|
+
useGetCompanyInfo,
|
|
7610
|
+
useGetConversionRate,
|
|
7611
|
+
useGetCurrency,
|
|
7612
|
+
useGetCurrentCompany,
|
|
7613
|
+
useGetDetail,
|
|
7614
|
+
useGetFieldExport,
|
|
7615
|
+
useGetFieldOnChange,
|
|
7616
|
+
useGetFileExcel,
|
|
7617
|
+
useGetFormView,
|
|
7618
|
+
useGetGroups,
|
|
7619
|
+
useGetImage,
|
|
7620
|
+
useGetListCompany,
|
|
7621
|
+
useGetListData,
|
|
7622
|
+
useGetListMyBankAccount,
|
|
7623
|
+
useGetMenu,
|
|
7624
|
+
useGetPrintReport,
|
|
7625
|
+
useGetProGressBar,
|
|
7626
|
+
useGetProfile,
|
|
7627
|
+
useGetProvider,
|
|
7628
|
+
useGetResequence,
|
|
7511
7629
|
useGetRowIds,
|
|
7630
|
+
useGetSelection,
|
|
7631
|
+
useGetSpecification,
|
|
7632
|
+
useGetUser,
|
|
7633
|
+
useGetView,
|
|
7634
|
+
useGrantAccess,
|
|
7635
|
+
useIsValidToken,
|
|
7512
7636
|
useListData,
|
|
7637
|
+
useLoadAction,
|
|
7638
|
+
useLoadMessage,
|
|
7639
|
+
useLoginCredential,
|
|
7640
|
+
useLoginSocial,
|
|
7641
|
+
useLogout,
|
|
7513
7642
|
useMenu,
|
|
7514
|
-
|
|
7643
|
+
useModel,
|
|
7644
|
+
useOdooDataTransform,
|
|
7645
|
+
useOnChangeForm,
|
|
7646
|
+
useParsePreview,
|
|
7647
|
+
usePrint,
|
|
7515
7648
|
useProfile,
|
|
7649
|
+
useRemoveRow,
|
|
7650
|
+
useRemoveTotpSetup,
|
|
7651
|
+
useRequestSetupTotp,
|
|
7652
|
+
useResetPassword,
|
|
7653
|
+
useResetPasswordSSO,
|
|
7654
|
+
useRunAction,
|
|
7655
|
+
useSave,
|
|
7656
|
+
useSendComment,
|
|
7657
|
+
useSettingsWebRead2fa,
|
|
7658
|
+
useSignInSSO,
|
|
7516
7659
|
useStorageState,
|
|
7660
|
+
useSwitchLocale,
|
|
7661
|
+
useUpdatePassword,
|
|
7662
|
+
useUploadFile,
|
|
7663
|
+
useUploadFileExcel,
|
|
7664
|
+
useUploadIdFile,
|
|
7665
|
+
useUploadImage,
|
|
7517
7666
|
useUser,
|
|
7667
|
+
useValidateActionToken,
|
|
7668
|
+
useVerify2FA,
|
|
7669
|
+
useVerifyTotp,
|
|
7518
7670
|
useViewV2
|
|
7519
7671
|
};
|
|
7520
7672
|
/*! Bundled license information:
|