@fctc/widget-logic 2.4.2 → 2.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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 +691 -602
- package/dist/index.mjs +781 -634
- 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.js +153 -703
- package/dist/widget.mjs +239 -731
- package/package.json +2 -2
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
|
|
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,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
|
|
4094
|
+
import { useCallback as useCallback4, useEffect as useEffect10, useMemo as useMemo8, useState as useState7 } from "react";
|
|
4095
4095
|
|
|
4096
4096
|
// src/hooks.ts
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
|
|
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/
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
import
|
|
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
|
|
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-
|
|
4231
|
-
import {
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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/
|
|
4392
|
-
|
|
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
|
|
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
|
|
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-
|
|
4795
|
-
import {
|
|
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/
|
|
4800
|
-
|
|
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-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
|
|
4824
|
-
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
|
|
4828
|
-
|
|
4829
|
-
|
|
4830
|
-
|
|
4831
|
-
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
|
|
4836
|
-
|
|
4837
|
-
|
|
4838
|
-
|
|
4839
|
-
|
|
4840
|
-
|
|
4841
|
-
|
|
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/
|
|
4855
|
-
import { useCallback as
|
|
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] =
|
|
4873
|
-
const lastRowIdsRef =
|
|
4874
|
-
const updateVisibleRowIds =
|
|
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
|
-
|
|
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] =
|
|
4997
|
-
const [inputValue, setInputValue] =
|
|
4511
|
+
const [options, setOptions] = useState7([]);
|
|
4512
|
+
const [inputValue, setInputValue] = useState7("");
|
|
4998
4513
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
4999
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
5000
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
5001
|
-
const [domainModal, setDomainModal] =
|
|
5002
|
-
const [domainObject, setDomainObject] =
|
|
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:
|
|
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
|
-
} =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
4578
|
+
const fetchMoreOptions = useCallback4(() => {
|
|
5064
4579
|
refetch();
|
|
5065
4580
|
}, [refetch]);
|
|
5066
|
-
|
|
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 =
|
|
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 =
|
|
5107
|
-
const handleSelectChange =
|
|
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
|
|
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 =
|
|
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 } =
|
|
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
|
|
4696
|
+
import { useEffect as useEffect11, useMemo as useMemo9, useState as useState8 } from "react";
|
|
5182
4697
|
import {
|
|
5183
4698
|
evalJSONContext as evalJSONContext4,
|
|
5184
4699
|
evalJSONDomain as evalJSONDomain4,
|
|
@@ -5197,10 +4712,10 @@ var many2manyFieldController = (props) => {
|
|
|
5197
4712
|
actionData
|
|
5198
4713
|
} = props;
|
|
5199
4714
|
const { env } = (0, provider_exports.useEnv)();
|
|
5200
|
-
const { useGetView: useGetView2, useGetListData: useGetListData2, useGetFormView } = (0, provider_exports.useService)();
|
|
5201
|
-
const [order, setOrder] =
|
|
5202
|
-
const [page, setPage] =
|
|
5203
|
-
const [domainMany2Many, setDomainMany2Many] =
|
|
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 =
|
|
4745
|
+
const initModel = useModel();
|
|
5231
4746
|
const modelInstance = useMemo9(() => {
|
|
5232
4747
|
if (viewResponse) {
|
|
5233
4748
|
return initModel.initModel(baseModel);
|
|
@@ -5277,7 +4792,7 @@ var many2manyFieldController = (props) => {
|
|
|
5277
4792
|
isFetched,
|
|
5278
4793
|
isPlaceholderData
|
|
5279
4794
|
} = useGetListData2(data, queryKey, enabled);
|
|
5280
|
-
|
|
4795
|
+
useEffect11(() => {
|
|
5281
4796
|
if (viewResponse) {
|
|
5282
4797
|
fetchData();
|
|
5283
4798
|
}
|
|
@@ -5344,7 +4859,7 @@ var many2manyTagsController = (props) => {
|
|
|
5344
4859
|
} = props;
|
|
5345
4860
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5346
4861
|
const { env } = (0, provider_exports.useEnv)();
|
|
5347
|
-
const { useGetSelection:
|
|
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 } =
|
|
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
|
|
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] =
|
|
5403
|
-
const [modelStatus, setModalStatus] =
|
|
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 } =
|
|
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:
|
|
5464
|
-
const { mutateAsync: fetchSave } =
|
|
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
|
|
5008
|
+
import { useId, useState as useState10 } from "react";
|
|
5494
5009
|
var downloadFileController = () => {
|
|
5495
5010
|
const inputId = useId();
|
|
5496
|
-
const [file, setFile] =
|
|
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
|
|
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] =
|
|
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:
|
|
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 } =
|
|
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
|
|
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] =
|
|
6486
|
-
const [initialImage, setInitialImage] =
|
|
6487
|
-
const [isInsideTable, setIsInsideTable] =
|
|
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
|
-
|
|
6066
|
+
useEffect12(() => {
|
|
6552
6067
|
return () => {
|
|
6553
6068
|
if (selectedImage) {
|
|
6554
6069
|
URL.revokeObjectURL(selectedImage);
|
|
6555
6070
|
}
|
|
6556
6071
|
};
|
|
6557
6072
|
}, [selectedImage]);
|
|
6558
|
-
|
|
6073
|
+
useEffect12(() => {
|
|
6559
6074
|
if (binaryRef.current) {
|
|
6560
6075
|
const isInsideTable2 = !!binaryRef.current.closest("table");
|
|
6561
6076
|
setIsInsideTable(isInsideTable2);
|
|
@@ -6575,11 +6090,11 @@ var binaryFieldController = (props) => {
|
|
|
6575
6090
|
};
|
|
6576
6091
|
|
|
6577
6092
|
// src/widget/advance/table/table-head/controller.ts
|
|
6578
|
-
import { useAppDispatch
|
|
6093
|
+
import { useAppDispatch, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6579
6094
|
import { useMemo as useMemo11, useRef as useRef5 } from "react";
|
|
6580
6095
|
var tableHeadController = (props) => {
|
|
6581
6096
|
const { typeTable, rows, tableRef, groupByList, selectedRowKeys } = props;
|
|
6582
|
-
const appDispatch =
|
|
6097
|
+
const appDispatch = useAppDispatch();
|
|
6583
6098
|
const { rowIds: recordIds } = useGetRowIds(tableRef);
|
|
6584
6099
|
const selectedRowKeysRef = useRef5(recordIds);
|
|
6585
6100
|
const isGroupTable = typeTable === "group";
|
|
@@ -6636,11 +6151,11 @@ var tableHeadController = (props) => {
|
|
|
6636
6151
|
};
|
|
6637
6152
|
|
|
6638
6153
|
// src/widget/advance/table/table-view/controller.ts
|
|
6639
|
-
import { useEffect as
|
|
6154
|
+
import { useEffect as useEffect13, useState as useState13 } from "react";
|
|
6640
6155
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6641
6156
|
var tableController = ({ data }) => {
|
|
6642
|
-
const [rows, setRows] =
|
|
6643
|
-
const [columns, setColumns] =
|
|
6157
|
+
const [rows, setRows] = useState13(null);
|
|
6158
|
+
const [columns, setColumns] = useState13(null);
|
|
6644
6159
|
const dataModelFields = data?.fields?.map((field) => {
|
|
6645
6160
|
return {
|
|
6646
6161
|
...data.dataModel?.[field?.name],
|
|
@@ -6668,7 +6183,7 @@ var tableController = ({ data }) => {
|
|
|
6668
6183
|
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6669
6184
|
});
|
|
6670
6185
|
};
|
|
6671
|
-
|
|
6186
|
+
useEffect13(() => {
|
|
6672
6187
|
setRows(transformData(data.records));
|
|
6673
6188
|
}, [data.records]);
|
|
6674
6189
|
const handleGetColumns = () => {
|
|
@@ -6689,7 +6204,7 @@ var tableController = ({ data }) => {
|
|
|
6689
6204
|
}
|
|
6690
6205
|
return cols;
|
|
6691
6206
|
};
|
|
6692
|
-
|
|
6207
|
+
useEffect13(() => {
|
|
6693
6208
|
if (!columns) {
|
|
6694
6209
|
setColumns(handleGetColumns());
|
|
6695
6210
|
}
|
|
@@ -6706,12 +6221,14 @@ var tableController = ({ data }) => {
|
|
|
6706
6221
|
});
|
|
6707
6222
|
setColumns(tempColumn);
|
|
6708
6223
|
};
|
|
6709
|
-
|
|
6710
|
-
|
|
6711
|
-
setColumns(null);
|
|
6712
|
-
return () => {
|
|
6713
|
-
setRows(null);
|
|
6224
|
+
useEffect13(() => {
|
|
6225
|
+
if (data?.fields != null) {
|
|
6714
6226
|
setColumns(null);
|
|
6227
|
+
}
|
|
6228
|
+
return () => {
|
|
6229
|
+
if (data?.fields != null) {
|
|
6230
|
+
setColumns(null);
|
|
6231
|
+
}
|
|
6715
6232
|
};
|
|
6716
6233
|
}, [data?.fields]);
|
|
6717
6234
|
return {
|
|
@@ -6723,10 +6240,10 @@ var tableController = ({ data }) => {
|
|
|
6723
6240
|
};
|
|
6724
6241
|
|
|
6725
6242
|
// src/widget/advance/table/table-group/controller.ts
|
|
6726
|
-
import { useEffect as
|
|
6243
|
+
import { useEffect as useEffect14, useMemo as useMemo12, useState as useState14 } from "react";
|
|
6727
6244
|
import {
|
|
6728
|
-
useAppSelector as
|
|
6729
|
-
selectList
|
|
6245
|
+
useAppSelector as useAppSelector2,
|
|
6246
|
+
selectList
|
|
6730
6247
|
} from "@fctc/interface-logic/store";
|
|
6731
6248
|
var tableGroupController = (props) => {
|
|
6732
6249
|
const { env } = (0, provider_exports.useEnv)();
|
|
@@ -6743,10 +6260,10 @@ var tableGroupController = (props) => {
|
|
|
6743
6260
|
groupByList,
|
|
6744
6261
|
setSelectedRowKeys: setSelectedRowKeys3
|
|
6745
6262
|
} = props;
|
|
6746
|
-
const [pageGroup, setPageGroup] =
|
|
6747
|
-
const { selectedRowKeys } =
|
|
6748
|
-
const [isShowGroup, setIsShowGroup] =
|
|
6749
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
6263
|
+
const [pageGroup, setPageGroup] = useState14(0);
|
|
6264
|
+
const { selectedRowKeys } = useAppSelector2(selectList);
|
|
6265
|
+
const [isShowGroup, setIsShowGroup] = useState14(false);
|
|
6266
|
+
const [colEmptyGroup, setColEmptyGroup] = useState14({
|
|
6750
6267
|
fromStart: 1,
|
|
6751
6268
|
fromEnd: 1
|
|
6752
6269
|
});
|
|
@@ -6835,7 +6352,7 @@ var tableGroupController = (props) => {
|
|
|
6835
6352
|
}
|
|
6836
6353
|
toggleShowGroup();
|
|
6837
6354
|
};
|
|
6838
|
-
|
|
6355
|
+
useEffect14(() => {
|
|
6839
6356
|
if (!isDataGroupFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
|
|
6840
6357
|
return;
|
|
6841
6358
|
}
|
|
@@ -6868,7 +6385,7 @@ import {
|
|
|
6868
6385
|
evalJSONDomain as evalJSONDomain7,
|
|
6869
6386
|
validateAndParseDate
|
|
6870
6387
|
} from "@fctc/interface-logic/utils";
|
|
6871
|
-
import { useCallback as
|
|
6388
|
+
import { useCallback as useCallback5, useEffect as useEffect15, useState as useState15 } from "react";
|
|
6872
6389
|
var searchController = ({
|
|
6873
6390
|
viewData,
|
|
6874
6391
|
model,
|
|
@@ -6877,12 +6394,12 @@ var searchController = ({
|
|
|
6877
6394
|
fieldsList
|
|
6878
6395
|
}) => {
|
|
6879
6396
|
const { env } = (0, provider_exports.useEnv)();
|
|
6880
|
-
const [filterBy, setFilterBy] =
|
|
6881
|
-
const [searchBy, setSearchBy] =
|
|
6882
|
-
const [groupBy, setGroupBy] =
|
|
6883
|
-
const [selectedTags, setSelectedTags] =
|
|
6884
|
-
const [searchString, setSearchString] =
|
|
6885
|
-
const [searchMap, setSearchMap] =
|
|
6397
|
+
const [filterBy, setFilterBy] = useState15(null);
|
|
6398
|
+
const [searchBy, setSearchBy] = useState15(null);
|
|
6399
|
+
const [groupBy, setGroupBy] = useState15(null);
|
|
6400
|
+
const [selectedTags, setSelectedTags] = useState15(null);
|
|
6401
|
+
const [searchString, setSearchString] = useState15("");
|
|
6402
|
+
const [searchMap, setSearchMap] = useState15({});
|
|
6886
6403
|
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
6887
6404
|
const contextSearch = { ...env.context, ...actionContext };
|
|
6888
6405
|
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
@@ -6929,7 +6446,7 @@ var searchController = ({
|
|
|
6929
6446
|
}
|
|
6930
6447
|
}
|
|
6931
6448
|
};
|
|
6932
|
-
|
|
6449
|
+
useEffect15(() => {
|
|
6933
6450
|
fetchData();
|
|
6934
6451
|
}, [model, viewData]);
|
|
6935
6452
|
const onChangeSearchInput = (search_string) => {
|
|
@@ -7011,7 +6528,7 @@ var searchController = ({
|
|
|
7011
6528
|
return [...domain2];
|
|
7012
6529
|
}
|
|
7013
6530
|
};
|
|
7014
|
-
const setTagSearch =
|
|
6531
|
+
const setTagSearch = useCallback5(
|
|
7015
6532
|
(updatedMap) => {
|
|
7016
6533
|
if (!updatedMap) return;
|
|
7017
6534
|
const tagsSearch = Object.entries(updatedMap).map(
|
|
@@ -7074,20 +6591,11 @@ var searchController = ({
|
|
|
7074
6591
|
},
|
|
7075
6592
|
[searchMap]
|
|
7076
6593
|
);
|
|
7077
|
-
|
|
6594
|
+
useEffect15(() => {
|
|
7078
6595
|
setTagSearch(searchMap);
|
|
7079
6596
|
}, [searchMap]);
|
|
7080
6597
|
const handleAddTagSearch = (tag) => {
|
|
7081
|
-
const {
|
|
7082
|
-
domain: domain2,
|
|
7083
|
-
groupIndex,
|
|
7084
|
-
value,
|
|
7085
|
-
type,
|
|
7086
|
-
title,
|
|
7087
|
-
context: context2,
|
|
7088
|
-
active,
|
|
7089
|
-
dataIndex
|
|
7090
|
-
} = tag;
|
|
6598
|
+
const { domain: domain2, groupIndex, value, type, context: context2, dataIndex } = tag;
|
|
7091
6599
|
const domainFormat = new domainHelper2.Domain(domain2);
|
|
7092
6600
|
if (type === SearchType.FILTER) {
|
|
7093
6601
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|