@fctc/widget-logic 2.7.1 → 2.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks.d.mts +3 -4
- package/dist/hooks.d.ts +3 -4
- package/dist/hooks.js +113 -117
- package/dist/hooks.mjs +108 -112
- package/dist/index.js +159 -181
- package/dist/index.mjs +131 -153
- package/dist/widget.d.mts +0 -1
- package/dist/widget.d.ts +0 -1
- package/dist/widget.js +89 -79
- package/dist/widget.mjs +63 -53
- package/package.json +1 -1
package/dist/hooks.d.mts
CHANGED
|
@@ -89,11 +89,10 @@ interface UseMenuReturn {
|
|
|
89
89
|
declare const useUser: () => any;
|
|
90
90
|
type useUserType = ReturnType<typeof useUser>;
|
|
91
91
|
|
|
92
|
-
declare const useViewV2: ({
|
|
93
|
-
|
|
92
|
+
declare const useViewV2: ({ action, context, aid, }: {
|
|
93
|
+
action: ActionResultType;
|
|
94
94
|
context: any;
|
|
95
|
-
|
|
96
|
-
model?: string;
|
|
95
|
+
aid?: any;
|
|
97
96
|
}) => {
|
|
98
97
|
context: any;
|
|
99
98
|
data: ViewResponse;
|
package/dist/hooks.d.ts
CHANGED
|
@@ -89,11 +89,10 @@ interface UseMenuReturn {
|
|
|
89
89
|
declare const useUser: () => any;
|
|
90
90
|
type useUserType = ReturnType<typeof useUser>;
|
|
91
91
|
|
|
92
|
-
declare const useViewV2: ({
|
|
93
|
-
|
|
92
|
+
declare const useViewV2: ({ action, context, aid, }: {
|
|
93
|
+
action: ActionResultType;
|
|
94
94
|
context: any;
|
|
95
|
-
|
|
96
|
-
model?: string;
|
|
95
|
+
aid?: any;
|
|
97
96
|
}) => {
|
|
98
97
|
context: any;
|
|
99
98
|
data: ViewResponse;
|
package/dist/hooks.js
CHANGED
|
@@ -114,7 +114,7 @@ var import_hooks2 = require("@fctc/interface-logic/hooks");
|
|
|
114
114
|
var import_react8 = require("react");
|
|
115
115
|
|
|
116
116
|
// src/hooks/core/use-menu.ts
|
|
117
|
-
var
|
|
117
|
+
var import_react3 = require("react");
|
|
118
118
|
|
|
119
119
|
// src/hooks/core/use-call-action.ts
|
|
120
120
|
var import_react = require("react");
|
|
@@ -162,92 +162,6 @@ var useCallAction = () => {
|
|
|
162
162
|
return [actionData, callAction];
|
|
163
163
|
};
|
|
164
164
|
|
|
165
|
-
// src/hooks/core/use-menu.ts
|
|
166
|
-
var useMenu = ({
|
|
167
|
-
context,
|
|
168
|
-
specification
|
|
169
|
-
}) => {
|
|
170
|
-
const { env } = (0, provider_exports.useEnv)();
|
|
171
|
-
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
172
|
-
const [action, callAction] = useCallAction();
|
|
173
|
-
const menuData = useGetMenu2(
|
|
174
|
-
context,
|
|
175
|
-
specification,
|
|
176
|
-
!!context && Object.keys(context).length > 0
|
|
177
|
-
);
|
|
178
|
-
const [menuId, setMenuId] = (0, import_react2.useState)(void 0);
|
|
179
|
-
const configedIconData = (0, import_react2.useMemo)(() => {
|
|
180
|
-
const data = menuData.data;
|
|
181
|
-
return data?.map((item) => {
|
|
182
|
-
return {
|
|
183
|
-
...item,
|
|
184
|
-
child_id: item?.child_id?.map((child) => {
|
|
185
|
-
return {
|
|
186
|
-
...child,
|
|
187
|
-
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
|
|
188
|
-
};
|
|
189
|
-
}) ?? [],
|
|
190
|
-
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
|
|
191
|
-
};
|
|
192
|
-
});
|
|
193
|
-
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
194
|
-
const handleChangeMenu = async ({ menu }) => {
|
|
195
|
-
const aidMenu = menu?.action?.id?.id;
|
|
196
|
-
if (menu) {
|
|
197
|
-
setMenuId(menu.id?.toString() ?? "");
|
|
198
|
-
}
|
|
199
|
-
if (aidMenu) {
|
|
200
|
-
const actionResponse = await callAction({
|
|
201
|
-
aid: Number(aidMenu)
|
|
202
|
-
});
|
|
203
|
-
return actionResponse;
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
return {
|
|
207
|
-
...menuData,
|
|
208
|
-
data: configedIconData,
|
|
209
|
-
action: { handleChangeMenu },
|
|
210
|
-
state: { menuId, action },
|
|
211
|
-
context,
|
|
212
|
-
isLoading: menuData.isLoading,
|
|
213
|
-
isError: menuData.isError,
|
|
214
|
-
error: menuData.error,
|
|
215
|
-
refetch: menuData.refetch
|
|
216
|
-
};
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
// src/hooks/core/use-detail.ts
|
|
220
|
-
var import_react_query = require("@tanstack/react-query");
|
|
221
|
-
var import_react3 = require("react");
|
|
222
|
-
var useDetail = (sub) => {
|
|
223
|
-
const { setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
224
|
-
const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
|
|
225
|
-
const fetchGetDetail = useGetDetail2();
|
|
226
|
-
const userDetailQuery = (0, import_react_query.useQuery)({
|
|
227
|
-
queryKey: ["userDetailQuery", sub],
|
|
228
|
-
queryFn: () => {
|
|
229
|
-
return fetchGetDetail.mutateAsync({
|
|
230
|
-
model: "res.users",
|
|
231
|
-
ids: [sub],
|
|
232
|
-
specification: { image_256: {} }
|
|
233
|
-
});
|
|
234
|
-
},
|
|
235
|
-
enabled: !!sub
|
|
236
|
-
});
|
|
237
|
-
(0, import_react3.useEffect)(() => {
|
|
238
|
-
if (userDetailQuery.data) {
|
|
239
|
-
const userPicture = userDetailQuery.data;
|
|
240
|
-
setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
|
|
241
|
-
}
|
|
242
|
-
}, [userDetailQuery.isFetched]);
|
|
243
|
-
return { ...userDetailQuery };
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
// src/hooks/core/use-profile.ts
|
|
247
|
-
var import_react_query2 = require("@tanstack/react-query");
|
|
248
|
-
var import_react5 = require("react");
|
|
249
|
-
var import_react_i18next = require("react-i18next");
|
|
250
|
-
|
|
251
165
|
// src/utils.ts
|
|
252
166
|
var utils_exports = {};
|
|
253
167
|
__export(utils_exports, {
|
|
@@ -269,7 +183,7 @@ var languages = [
|
|
|
269
183
|
];
|
|
270
184
|
|
|
271
185
|
// src/utils/function.ts
|
|
272
|
-
var
|
|
186
|
+
var import_react2 = require("react");
|
|
273
187
|
var countSum = (data, field) => {
|
|
274
188
|
if (!data || !field) return 0;
|
|
275
189
|
return data.reduce(
|
|
@@ -390,7 +304,7 @@ var STORAGES = {
|
|
|
390
304
|
USER_INFO: "USER_INFO"
|
|
391
305
|
};
|
|
392
306
|
function useAsyncState(initialValue = [true, null]) {
|
|
393
|
-
return (0,
|
|
307
|
+
return (0, import_react2.useReducer)(
|
|
394
308
|
(_state, action = null) => [false, action],
|
|
395
309
|
initialValue
|
|
396
310
|
);
|
|
@@ -408,7 +322,7 @@ async function setStorageItemAsync(key, value) {
|
|
|
408
322
|
}
|
|
409
323
|
function useStorageState(key) {
|
|
410
324
|
const [state, setState] = useAsyncState();
|
|
411
|
-
(0,
|
|
325
|
+
(0, import_react2.useEffect)(() => {
|
|
412
326
|
try {
|
|
413
327
|
const storedValue = localStorage.getItem(key);
|
|
414
328
|
setState(storedValue);
|
|
@@ -416,7 +330,7 @@ function useStorageState(key) {
|
|
|
416
330
|
console.error("Local storage is unavailable:", e);
|
|
417
331
|
}
|
|
418
332
|
}, [key]);
|
|
419
|
-
const setValue = (0,
|
|
333
|
+
const setValue = (0, import_react2.useCallback)(
|
|
420
334
|
(value) => {
|
|
421
335
|
setState(value);
|
|
422
336
|
setStorageItemAsync(key, value);
|
|
@@ -429,7 +343,91 @@ function useStorageState(key) {
|
|
|
429
343
|
// src/utils.ts
|
|
430
344
|
__reExport(utils_exports, require("@fctc/interface-logic/utils"));
|
|
431
345
|
|
|
346
|
+
// src/hooks/core/use-menu.ts
|
|
347
|
+
var useMenu = ({
|
|
348
|
+
context,
|
|
349
|
+
specification
|
|
350
|
+
}) => {
|
|
351
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
352
|
+
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
353
|
+
const [action, callAction] = useCallAction();
|
|
354
|
+
const menuData = useGetMenu2(
|
|
355
|
+
context,
|
|
356
|
+
specification,
|
|
357
|
+
!!context && !(0, utils_exports.isObjectEmpty)(context)
|
|
358
|
+
);
|
|
359
|
+
const [menuId, setMenuId] = (0, import_react3.useState)(void 0);
|
|
360
|
+
const configedIconData = (0, import_react3.useMemo)(() => {
|
|
361
|
+
const data = menuData.data;
|
|
362
|
+
return data?.map((item) => {
|
|
363
|
+
return {
|
|
364
|
+
...item,
|
|
365
|
+
child_id: item?.child_id?.map((child) => {
|
|
366
|
+
return {
|
|
367
|
+
...child,
|
|
368
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
|
|
369
|
+
};
|
|
370
|
+
}) ?? [],
|
|
371
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
|
|
372
|
+
};
|
|
373
|
+
});
|
|
374
|
+
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
375
|
+
const handleChangeMenu = async ({ menu }) => {
|
|
376
|
+
const aidMenu = menu?.action?.id?.id;
|
|
377
|
+
if (menu) {
|
|
378
|
+
setMenuId(menu.id?.toString() ?? "");
|
|
379
|
+
}
|
|
380
|
+
if (aidMenu) {
|
|
381
|
+
const actionResponse = await callAction({
|
|
382
|
+
aid: Number(aidMenu)
|
|
383
|
+
});
|
|
384
|
+
return actionResponse;
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
return {
|
|
388
|
+
...menuData,
|
|
389
|
+
data: configedIconData,
|
|
390
|
+
action: { handleChangeMenu },
|
|
391
|
+
state: { menuId, action },
|
|
392
|
+
context,
|
|
393
|
+
isLoading: menuData.isLoading,
|
|
394
|
+
isError: menuData.isError,
|
|
395
|
+
error: menuData.error,
|
|
396
|
+
refetch: menuData.refetch
|
|
397
|
+
};
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
// src/hooks/core/use-detail.ts
|
|
401
|
+
var import_react_query = require("@tanstack/react-query");
|
|
402
|
+
var import_react4 = require("react");
|
|
403
|
+
var useDetail = (sub) => {
|
|
404
|
+
const { setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
405
|
+
const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
|
|
406
|
+
const fetchGetDetail = useGetDetail2();
|
|
407
|
+
const userDetailQuery = (0, import_react_query.useQuery)({
|
|
408
|
+
queryKey: ["userDetailQuery", sub],
|
|
409
|
+
queryFn: () => {
|
|
410
|
+
return fetchGetDetail.mutateAsync({
|
|
411
|
+
model: "res.users",
|
|
412
|
+
ids: [sub],
|
|
413
|
+
specification: { image_256: {} }
|
|
414
|
+
});
|
|
415
|
+
},
|
|
416
|
+
enabled: !!sub
|
|
417
|
+
});
|
|
418
|
+
(0, import_react4.useEffect)(() => {
|
|
419
|
+
if (userDetailQuery.data) {
|
|
420
|
+
const userPicture = userDetailQuery.data;
|
|
421
|
+
setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
|
|
422
|
+
}
|
|
423
|
+
}, [userDetailQuery.isFetched]);
|
|
424
|
+
return { ...userDetailQuery };
|
|
425
|
+
};
|
|
426
|
+
|
|
432
427
|
// src/hooks/core/use-profile.ts
|
|
428
|
+
var import_react_query2 = require("@tanstack/react-query");
|
|
429
|
+
var import_react5 = require("react");
|
|
430
|
+
var import_react_i18next = require("react-i18next");
|
|
433
431
|
var useProfile = () => {
|
|
434
432
|
const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
435
433
|
const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
|
|
@@ -477,21 +475,31 @@ var useUser = () => {
|
|
|
477
475
|
// src/hooks/core/use-view-v2.ts
|
|
478
476
|
var import_react6 = require("react");
|
|
479
477
|
var useViewV2 = ({
|
|
480
|
-
|
|
478
|
+
action,
|
|
481
479
|
context,
|
|
482
|
-
|
|
483
|
-
model
|
|
480
|
+
aid
|
|
484
481
|
}) => {
|
|
485
482
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
486
483
|
const viewParams = (0, import_react6.useMemo)(() => {
|
|
487
|
-
if (
|
|
484
|
+
if (!action || !action?.res_model) {
|
|
485
|
+
return void 0;
|
|
486
|
+
}
|
|
487
|
+
const actionResult = action;
|
|
488
488
|
return {
|
|
489
|
-
model,
|
|
490
|
-
views
|
|
489
|
+
model: String(actionResult?.res_model),
|
|
490
|
+
views: [
|
|
491
|
+
...Array.isArray(actionResult?.views) ? actionResult?.views.map(
|
|
492
|
+
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
493
|
+
) : [],
|
|
494
|
+
[
|
|
495
|
+
Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
|
|
496
|
+
"search"
|
|
497
|
+
]
|
|
498
|
+
],
|
|
491
499
|
context,
|
|
492
|
-
id
|
|
500
|
+
id: isNaN(Number(aid)) ? action?.id : aid
|
|
493
501
|
};
|
|
494
|
-
}, [
|
|
502
|
+
}, [action, context, aid]);
|
|
495
503
|
const view = useGetView2({
|
|
496
504
|
viewParams: viewParams || {},
|
|
497
505
|
enabled: !!viewParams
|
|
@@ -591,22 +599,10 @@ var AppProvider = ({
|
|
|
591
599
|
{ ...(0, utils_exports.evalJSONContext)(action?.context) }
|
|
592
600
|
]);
|
|
593
601
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
594
|
-
const memoViews = (0, import_react8.useMemo)(() => {
|
|
595
|
-
if (!action) return [];
|
|
596
|
-
return [
|
|
597
|
-
...Array.isArray(action?.views) ? action.views.map(
|
|
598
|
-
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
599
|
-
) : [],
|
|
600
|
-
[
|
|
601
|
-
Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
|
|
602
|
-
"search"
|
|
603
|
-
]
|
|
604
|
-
];
|
|
605
|
-
}, [action]);
|
|
606
602
|
const view = useViewV2({
|
|
603
|
+
action,
|
|
607
604
|
context: viewContext,
|
|
608
|
-
|
|
609
|
-
model: action?.res_model ? String(action.res_model) : void 0
|
|
605
|
+
aid
|
|
610
606
|
});
|
|
611
607
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
612
608
|
ReactContext.Provider,
|
|
@@ -731,7 +727,7 @@ var useGetSpecification = ({
|
|
|
731
727
|
|
|
732
728
|
// src/hooks/core/use-list-data.ts
|
|
733
729
|
var import_react14 = require("react");
|
|
734
|
-
var
|
|
730
|
+
var import_utils5 = require("@fctc/interface-logic/utils");
|
|
735
731
|
|
|
736
732
|
// src/hooks/utils/use-click-outside.ts
|
|
737
733
|
var import_react11 = require("react");
|
|
@@ -873,12 +869,12 @@ var useListData = ({
|
|
|
873
869
|
if (!viewData || !action || !context) {
|
|
874
870
|
return null;
|
|
875
871
|
}
|
|
876
|
-
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0,
|
|
872
|
+
const domainParse = type === "calendar" ? getDateRange(currentDate, mode) : action?.domain ? Array.isArray(action?.domain) ? [...action?.domain] : (0, import_utils5.evalJSONDomain)(action?.domain, context) : [];
|
|
877
873
|
const limit = type === "calendar" ? 2500 : pageLimit;
|
|
878
874
|
const offset = debouncedPage * pageLimit;
|
|
879
875
|
const fields = type === "calendar" ? convertFieldsToArray(viewData?.views?.calendar?.fields) || [] : typeof groupByList === "object" ? groupByList?.fields : void 0;
|
|
880
876
|
const groupby = typeof groupByList === "object" ? [groupByList?.contexts?.[0]?.group_by] : [];
|
|
881
|
-
const sort = order ? order : viewData?.views?.list?.default_order ? (0,
|
|
877
|
+
const sort = order ? order : viewData?.views?.list?.default_order ? (0, import_utils5.formatSortingString)(viewData?.views?.list?.default_order) : "";
|
|
882
878
|
return {
|
|
883
879
|
model: action.res_model,
|
|
884
880
|
specification,
|
|
@@ -906,7 +902,7 @@ var useListData = ({
|
|
|
906
902
|
const list = useGetListData2(
|
|
907
903
|
listDataProps,
|
|
908
904
|
[listDataProps],
|
|
909
|
-
!!listDataProps && !!specification && !(0,
|
|
905
|
+
!!listDataProps && !!specification && !(0, import_utils5.isObjectEmpty)(specification)
|
|
910
906
|
);
|
|
911
907
|
return {
|
|
912
908
|
...list,
|
package/dist/hooks.mjs
CHANGED
|
@@ -142,92 +142,6 @@ var useCallAction = () => {
|
|
|
142
142
|
return [actionData, callAction];
|
|
143
143
|
};
|
|
144
144
|
|
|
145
|
-
// src/hooks/core/use-menu.ts
|
|
146
|
-
var useMenu = ({
|
|
147
|
-
context,
|
|
148
|
-
specification
|
|
149
|
-
}) => {
|
|
150
|
-
const { env } = (0, provider_exports.useEnv)();
|
|
151
|
-
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
152
|
-
const [action, callAction] = useCallAction();
|
|
153
|
-
const menuData = useGetMenu2(
|
|
154
|
-
context,
|
|
155
|
-
specification,
|
|
156
|
-
!!context && Object.keys(context).length > 0
|
|
157
|
-
);
|
|
158
|
-
const [menuId, setMenuId] = useState2(void 0);
|
|
159
|
-
const configedIconData = useMemo(() => {
|
|
160
|
-
const data = menuData.data;
|
|
161
|
-
return data?.map((item) => {
|
|
162
|
-
return {
|
|
163
|
-
...item,
|
|
164
|
-
child_id: item?.child_id?.map((child) => {
|
|
165
|
-
return {
|
|
166
|
-
...child,
|
|
167
|
-
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
|
|
168
|
-
};
|
|
169
|
-
}) ?? [],
|
|
170
|
-
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
|
|
171
|
-
};
|
|
172
|
-
});
|
|
173
|
-
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
174
|
-
const handleChangeMenu = async ({ menu }) => {
|
|
175
|
-
const aidMenu = menu?.action?.id?.id;
|
|
176
|
-
if (menu) {
|
|
177
|
-
setMenuId(menu.id?.toString() ?? "");
|
|
178
|
-
}
|
|
179
|
-
if (aidMenu) {
|
|
180
|
-
const actionResponse = await callAction({
|
|
181
|
-
aid: Number(aidMenu)
|
|
182
|
-
});
|
|
183
|
-
return actionResponse;
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
return {
|
|
187
|
-
...menuData,
|
|
188
|
-
data: configedIconData,
|
|
189
|
-
action: { handleChangeMenu },
|
|
190
|
-
state: { menuId, action },
|
|
191
|
-
context,
|
|
192
|
-
isLoading: menuData.isLoading,
|
|
193
|
-
isError: menuData.isError,
|
|
194
|
-
error: menuData.error,
|
|
195
|
-
refetch: menuData.refetch
|
|
196
|
-
};
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
// src/hooks/core/use-detail.ts
|
|
200
|
-
import { useQuery } from "@tanstack/react-query";
|
|
201
|
-
import { useEffect } from "react";
|
|
202
|
-
var useDetail = (sub) => {
|
|
203
|
-
const { setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
204
|
-
const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
|
|
205
|
-
const fetchGetDetail = useGetDetail2();
|
|
206
|
-
const userDetailQuery = useQuery({
|
|
207
|
-
queryKey: ["userDetailQuery", sub],
|
|
208
|
-
queryFn: () => {
|
|
209
|
-
return fetchGetDetail.mutateAsync({
|
|
210
|
-
model: "res.users",
|
|
211
|
-
ids: [sub],
|
|
212
|
-
specification: { image_256: {} }
|
|
213
|
-
});
|
|
214
|
-
},
|
|
215
|
-
enabled: !!sub
|
|
216
|
-
});
|
|
217
|
-
useEffect(() => {
|
|
218
|
-
if (userDetailQuery.data) {
|
|
219
|
-
const userPicture = userDetailQuery.data;
|
|
220
|
-
setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
|
|
221
|
-
}
|
|
222
|
-
}, [userDetailQuery.isFetched]);
|
|
223
|
-
return { ...userDetailQuery };
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
// src/hooks/core/use-profile.ts
|
|
227
|
-
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
228
|
-
import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
|
|
229
|
-
import { useTranslation } from "react-i18next";
|
|
230
|
-
|
|
231
145
|
// src/utils.ts
|
|
232
146
|
var utils_exports = {};
|
|
233
147
|
__export(utils_exports, {
|
|
@@ -249,7 +163,7 @@ var languages = [
|
|
|
249
163
|
];
|
|
250
164
|
|
|
251
165
|
// src/utils/function.ts
|
|
252
|
-
import { useCallback as useCallback2, useEffect
|
|
166
|
+
import { useCallback as useCallback2, useEffect, useReducer } from "react";
|
|
253
167
|
var countSum = (data, field) => {
|
|
254
168
|
if (!data || !field) return 0;
|
|
255
169
|
return data.reduce(
|
|
@@ -388,7 +302,7 @@ async function setStorageItemAsync(key, value) {
|
|
|
388
302
|
}
|
|
389
303
|
function useStorageState(key) {
|
|
390
304
|
const [state, setState] = useAsyncState();
|
|
391
|
-
|
|
305
|
+
useEffect(() => {
|
|
392
306
|
try {
|
|
393
307
|
const storedValue = localStorage.getItem(key);
|
|
394
308
|
setState(storedValue);
|
|
@@ -410,7 +324,91 @@ function useStorageState(key) {
|
|
|
410
324
|
__reExport(utils_exports, utils_star);
|
|
411
325
|
import * as utils_star from "@fctc/interface-logic/utils";
|
|
412
326
|
|
|
327
|
+
// src/hooks/core/use-menu.ts
|
|
328
|
+
var useMenu = ({
|
|
329
|
+
context,
|
|
330
|
+
specification
|
|
331
|
+
}) => {
|
|
332
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
333
|
+
const { useGetMenu: useGetMenu2 } = (0, provider_exports.useService)();
|
|
334
|
+
const [action, callAction] = useCallAction();
|
|
335
|
+
const menuData = useGetMenu2(
|
|
336
|
+
context,
|
|
337
|
+
specification,
|
|
338
|
+
!!context && !(0, utils_exports.isObjectEmpty)(context)
|
|
339
|
+
);
|
|
340
|
+
const [menuId, setMenuId] = useState2(void 0);
|
|
341
|
+
const configedIconData = useMemo(() => {
|
|
342
|
+
const data = menuData.data;
|
|
343
|
+
return data?.map((item) => {
|
|
344
|
+
return {
|
|
345
|
+
...item,
|
|
346
|
+
child_id: item?.child_id?.map((child) => {
|
|
347
|
+
return {
|
|
348
|
+
...child,
|
|
349
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + child.url_icon
|
|
350
|
+
};
|
|
351
|
+
}) ?? [],
|
|
352
|
+
url_icon: env?.envFile?.VITE_APP_DOMAIN + "/" + item.url_icon
|
|
353
|
+
};
|
|
354
|
+
});
|
|
355
|
+
}, [menuData.data, env?.envFile?.VITE_APP_DOMAIN]);
|
|
356
|
+
const handleChangeMenu = async ({ menu }) => {
|
|
357
|
+
const aidMenu = menu?.action?.id?.id;
|
|
358
|
+
if (menu) {
|
|
359
|
+
setMenuId(menu.id?.toString() ?? "");
|
|
360
|
+
}
|
|
361
|
+
if (aidMenu) {
|
|
362
|
+
const actionResponse = await callAction({
|
|
363
|
+
aid: Number(aidMenu)
|
|
364
|
+
});
|
|
365
|
+
return actionResponse;
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
return {
|
|
369
|
+
...menuData,
|
|
370
|
+
data: configedIconData,
|
|
371
|
+
action: { handleChangeMenu },
|
|
372
|
+
state: { menuId, action },
|
|
373
|
+
context,
|
|
374
|
+
isLoading: menuData.isLoading,
|
|
375
|
+
isError: menuData.isError,
|
|
376
|
+
error: menuData.error,
|
|
377
|
+
refetch: menuData.refetch
|
|
378
|
+
};
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
// src/hooks/core/use-detail.ts
|
|
382
|
+
import { useQuery } from "@tanstack/react-query";
|
|
383
|
+
import { useEffect as useEffect2 } from "react";
|
|
384
|
+
var useDetail = (sub) => {
|
|
385
|
+
const { setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
386
|
+
const { useGetDetail: useGetDetail2 } = (0, provider_exports.useService)();
|
|
387
|
+
const fetchGetDetail = useGetDetail2();
|
|
388
|
+
const userDetailQuery = useQuery({
|
|
389
|
+
queryKey: ["userDetailQuery", sub],
|
|
390
|
+
queryFn: () => {
|
|
391
|
+
return fetchGetDetail.mutateAsync({
|
|
392
|
+
model: "res.users",
|
|
393
|
+
ids: [sub],
|
|
394
|
+
specification: { image_256: {} }
|
|
395
|
+
});
|
|
396
|
+
},
|
|
397
|
+
enabled: !!sub
|
|
398
|
+
});
|
|
399
|
+
useEffect2(() => {
|
|
400
|
+
if (userDetailQuery.data) {
|
|
401
|
+
const userPicture = userDetailQuery.data;
|
|
402
|
+
setUserInfo({ ...env?.user, image: userPicture?.[0]?.image_256 });
|
|
403
|
+
}
|
|
404
|
+
}, [userDetailQuery.isFetched]);
|
|
405
|
+
return { ...userDetailQuery };
|
|
406
|
+
};
|
|
407
|
+
|
|
413
408
|
// src/hooks/core/use-profile.ts
|
|
409
|
+
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
410
|
+
import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
|
|
411
|
+
import { useTranslation } from "react-i18next";
|
|
414
412
|
var useProfile = () => {
|
|
415
413
|
const { setUid, setLang, setUserInfo, env } = (0, provider_exports.useEnv)();
|
|
416
414
|
const { useGetProfile: useGetProfile2 } = (0, provider_exports.useService)();
|
|
@@ -458,21 +456,31 @@ var useUser = () => {
|
|
|
458
456
|
// src/hooks/core/use-view-v2.ts
|
|
459
457
|
import { useMemo as useMemo3 } from "react";
|
|
460
458
|
var useViewV2 = ({
|
|
461
|
-
|
|
459
|
+
action,
|
|
462
460
|
context,
|
|
463
|
-
|
|
464
|
-
model
|
|
461
|
+
aid
|
|
465
462
|
}) => {
|
|
466
463
|
const { useGetView: useGetView2 } = (0, provider_exports.useService)();
|
|
467
464
|
const viewParams = useMemo3(() => {
|
|
468
|
-
if (
|
|
465
|
+
if (!action || !action?.res_model) {
|
|
466
|
+
return void 0;
|
|
467
|
+
}
|
|
468
|
+
const actionResult = action;
|
|
469
469
|
return {
|
|
470
|
-
model,
|
|
471
|
-
views
|
|
470
|
+
model: String(actionResult?.res_model),
|
|
471
|
+
views: [
|
|
472
|
+
...Array.isArray(actionResult?.views) ? actionResult?.views.map(
|
|
473
|
+
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
474
|
+
) : [],
|
|
475
|
+
[
|
|
476
|
+
Array.isArray(actionResult?.search_view_id) ? actionResult?.search_view_id[0] : actionResult?.search_view_id,
|
|
477
|
+
"search"
|
|
478
|
+
]
|
|
479
|
+
],
|
|
472
480
|
context,
|
|
473
|
-
id
|
|
481
|
+
id: isNaN(Number(aid)) ? action?.id : aid
|
|
474
482
|
};
|
|
475
|
-
}, [
|
|
483
|
+
}, [action, context, aid]);
|
|
476
484
|
const view = useGetView2({
|
|
477
485
|
viewParams: viewParams || {},
|
|
478
486
|
enabled: !!viewParams
|
|
@@ -572,22 +580,10 @@ var AppProvider = ({
|
|
|
572
580
|
{ ...(0, utils_exports.evalJSONContext)(action?.context) }
|
|
573
581
|
]);
|
|
574
582
|
}, [menuContext, action?.context, env?.context?.lang]);
|
|
575
|
-
const memoViews = useMemo5(() => {
|
|
576
|
-
if (!action) return [];
|
|
577
|
-
return [
|
|
578
|
-
...Array.isArray(action?.views) ? action.views.map(
|
|
579
|
-
(view2) => view2[1] === "list" ? [view2[0], "list"] : view2
|
|
580
|
-
) : [],
|
|
581
|
-
[
|
|
582
|
-
Array.isArray(action?.search_view_id) ? action.search_view_id[0] : action.search_view_id,
|
|
583
|
-
"search"
|
|
584
|
-
]
|
|
585
|
-
];
|
|
586
|
-
}, [action]);
|
|
587
583
|
const view = useViewV2({
|
|
584
|
+
action,
|
|
588
585
|
context: viewContext,
|
|
589
|
-
|
|
590
|
-
model: action?.res_model ? String(action.res_model) : void 0
|
|
586
|
+
aid
|
|
591
587
|
});
|
|
592
588
|
return /* @__PURE__ */ jsx(
|
|
593
589
|
ReactContext.Provider,
|
|
@@ -715,7 +711,7 @@ import { useMemo as useMemo7, useState as useState5 } from "react";
|
|
|
715
711
|
import {
|
|
716
712
|
evalJSONDomain,
|
|
717
713
|
formatSortingString,
|
|
718
|
-
isObjectEmpty as
|
|
714
|
+
isObjectEmpty as isObjectEmpty4
|
|
719
715
|
} from "@fctc/interface-logic/utils";
|
|
720
716
|
|
|
721
717
|
// src/hooks/utils/use-click-outside.ts
|
|
@@ -891,7 +887,7 @@ var useListData = ({
|
|
|
891
887
|
const list = useGetListData2(
|
|
892
888
|
listDataProps,
|
|
893
889
|
[listDataProps],
|
|
894
|
-
!!listDataProps && !!specification && !
|
|
890
|
+
!!listDataProps && !!specification && !isObjectEmpty4(specification)
|
|
895
891
|
);
|
|
896
892
|
return {
|
|
897
893
|
...list,
|