@fctc/widget-logic 2.0.9 → 2.1.0
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 +12 -1
- package/dist/hooks.d.ts +12 -1
- package/dist/hooks.js +179 -6
- package/dist/hooks.mjs +179 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +204 -246
- package/dist/index.mjs +157 -199
- package/dist/types.d.mts +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/widget.d.mts +3 -29
- package/dist/widget.d.ts +3 -29
- package/dist/widget.js +194 -238
- package/dist/widget.mjs +151 -194
- package/package.json +2 -2
package/dist/widget.mjs
CHANGED
|
@@ -4091,7 +4091,7 @@ var statusDropdownController = (props) => {
|
|
|
4091
4091
|
};
|
|
4092
4092
|
|
|
4093
4093
|
// src/widget/basic/many2one-field/controller.ts
|
|
4094
|
-
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as
|
|
4094
|
+
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState8 } from "react";
|
|
4095
4095
|
|
|
4096
4096
|
// src/hooks.ts
|
|
4097
4097
|
var hooks_exports = {};
|
|
@@ -4106,6 +4106,7 @@ __export(hooks_exports, {
|
|
|
4106
4106
|
useDetail: () => useDetail,
|
|
4107
4107
|
useListData: () => useListData,
|
|
4108
4108
|
useMenu: () => useMenu,
|
|
4109
|
+
useMenuItem: () => useMenuItem,
|
|
4109
4110
|
useProfile: () => useProfile,
|
|
4110
4111
|
useUser: () => useUser,
|
|
4111
4112
|
useViewV2: () => useViewV2
|
|
@@ -4888,6 +4889,68 @@ var useAppProvider = () => {
|
|
|
4888
4889
|
return context;
|
|
4889
4890
|
};
|
|
4890
4891
|
|
|
4892
|
+
// src/hooks/core/use-menu-item.tsx
|
|
4893
|
+
import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
|
|
4894
|
+
import { useGetActionDetail } from "@fctc/interface-logic/hooks";
|
|
4895
|
+
import { useState as useState6 } from "react";
|
|
4896
|
+
|
|
4897
|
+
// src/utils.ts
|
|
4898
|
+
var utils_exports = {};
|
|
4899
|
+
__export(utils_exports, {
|
|
4900
|
+
API_APP_URL: () => API_APP_URL,
|
|
4901
|
+
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
4902
|
+
STORAGES: () => STORAGES,
|
|
4903
|
+
combineContexts: () => combineContexts,
|
|
4904
|
+
convertFieldsToArray: () => convertFieldsToArray,
|
|
4905
|
+
countSum: () => countSum,
|
|
4906
|
+
getDateRange: () => getDateRange,
|
|
4907
|
+
languages: () => languages,
|
|
4908
|
+
mergeButtons: () => mergeButtons,
|
|
4909
|
+
setStorageItemAsync: () => setStorageItemAsync,
|
|
4910
|
+
useGetRowIds: () => useGetRowIds,
|
|
4911
|
+
useSelectionState: () => useSelectionState,
|
|
4912
|
+
useStorageState: () => useStorageState
|
|
4913
|
+
});
|
|
4914
|
+
__reExport(utils_exports, utils_star);
|
|
4915
|
+
import * as utils_star from "@fctc/interface-logic/utils";
|
|
4916
|
+
|
|
4917
|
+
// src/hooks/core/use-menu-item.tsx
|
|
4918
|
+
var useMenuItem = (props) => {
|
|
4919
|
+
const { menu, activeMenuId } = props;
|
|
4920
|
+
const model = menu?.action?.res_model;
|
|
4921
|
+
const aid = menu?.action?.id?.id;
|
|
4922
|
+
const id = menu?.id;
|
|
4923
|
+
const context = getEnv6().context;
|
|
4924
|
+
const queryActionDetail = useGetActionDetail({
|
|
4925
|
+
aid,
|
|
4926
|
+
id,
|
|
4927
|
+
model,
|
|
4928
|
+
context,
|
|
4929
|
+
enabled: true,
|
|
4930
|
+
queryKey: [`action-${aid}`]
|
|
4931
|
+
}).data;
|
|
4932
|
+
const [path, setPath] = useState6("");
|
|
4933
|
+
const handleClick = () => {
|
|
4934
|
+
if (location?.pathname === "/list/menu" && activeMenuId === menu?.id) {
|
|
4935
|
+
return;
|
|
4936
|
+
}
|
|
4937
|
+
const hasListView = queryActionDetail.views.some(
|
|
4938
|
+
([id2, type]) => type === "list"
|
|
4939
|
+
);
|
|
4940
|
+
const viewType = hasListView ? "list" : "form";
|
|
4941
|
+
const isAccountPayment = menu?.action?.res_model === "account.payment" && menu?.action?.id?.id === 1551;
|
|
4942
|
+
const isConvertCurrencyMenu = menu?.action?.res_model === "currency.convert" && menu?.action?.id?.id === 1562;
|
|
4943
|
+
const path2 = (0, utils_exports.formatUrlPath)({
|
|
4944
|
+
viewType,
|
|
4945
|
+
actionPath: isConvertCurrencyMenu ? "menu" : isAccountPayment ? "menu" : menu?.action?.path || "menu",
|
|
4946
|
+
aid: menu?.action?.id?.id,
|
|
4947
|
+
model: queryActionDetail.res_model
|
|
4948
|
+
});
|
|
4949
|
+
setPath(path2);
|
|
4950
|
+
};
|
|
4951
|
+
return { handleClick, path, queryActionDetail };
|
|
4952
|
+
};
|
|
4953
|
+
|
|
4891
4954
|
// src/hooks/utils/use-click-outside.ts
|
|
4892
4955
|
import { useEffect as useEffect8, useRef as useRef3 } from "react";
|
|
4893
4956
|
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
@@ -4920,9 +4983,9 @@ var useClickOutside = ({
|
|
|
4920
4983
|
};
|
|
4921
4984
|
|
|
4922
4985
|
// src/hooks/utils/use-debounce.ts
|
|
4923
|
-
import { useEffect as useEffect9, useState as
|
|
4986
|
+
import { useEffect as useEffect9, useState as useState7 } from "react";
|
|
4924
4987
|
function useDebounce(value, delay) {
|
|
4925
|
-
const [debouncedValue, setDebouncedValue] =
|
|
4988
|
+
const [debouncedValue, setDebouncedValue] = useState7(value);
|
|
4926
4989
|
useEffect9(() => {
|
|
4927
4990
|
const handler = setTimeout(() => {
|
|
4928
4991
|
setDebouncedValue(value);
|
|
@@ -4938,26 +5001,6 @@ function useDebounce(value, delay) {
|
|
|
4938
5001
|
__reExport(hooks_exports, hooks_star);
|
|
4939
5002
|
import * as hooks_star from "@fctc/interface-logic/hooks";
|
|
4940
5003
|
|
|
4941
|
-
// src/utils.ts
|
|
4942
|
-
var utils_exports = {};
|
|
4943
|
-
__export(utils_exports, {
|
|
4944
|
-
API_APP_URL: () => API_APP_URL,
|
|
4945
|
-
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
4946
|
-
STORAGES: () => STORAGES,
|
|
4947
|
-
combineContexts: () => combineContexts,
|
|
4948
|
-
convertFieldsToArray: () => convertFieldsToArray,
|
|
4949
|
-
countSum: () => countSum,
|
|
4950
|
-
getDateRange: () => getDateRange,
|
|
4951
|
-
languages: () => languages,
|
|
4952
|
-
mergeButtons: () => mergeButtons,
|
|
4953
|
-
setStorageItemAsync: () => setStorageItemAsync,
|
|
4954
|
-
useGetRowIds: () => useGetRowIds,
|
|
4955
|
-
useSelectionState: () => useSelectionState,
|
|
4956
|
-
useStorageState: () => useStorageState
|
|
4957
|
-
});
|
|
4958
|
-
__reExport(utils_exports, utils_star2);
|
|
4959
|
-
import * as utils_star2 from "@fctc/interface-logic/utils";
|
|
4960
|
-
|
|
4961
5004
|
// src/provider.ts
|
|
4962
5005
|
var provider_exports = {};
|
|
4963
5006
|
__reExport(provider_exports, provider_star);
|
|
@@ -4979,13 +5022,13 @@ var many2oneFieldController = (props) => {
|
|
|
4979
5022
|
showDetail
|
|
4980
5023
|
} = props;
|
|
4981
5024
|
const { env } = (0, provider_exports.useEnv)();
|
|
4982
|
-
const [options, setOptions] =
|
|
4983
|
-
const [inputValue, setInputValue] =
|
|
5025
|
+
const [options, setOptions] = useState8([]);
|
|
5026
|
+
const [inputValue, setInputValue] = useState8("");
|
|
4984
5027
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
4985
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
4986
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
4987
|
-
const [domainModal, setDomainModal] =
|
|
4988
|
-
const [domainObject, setDomainObject] =
|
|
5028
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
|
|
5029
|
+
const [tempSelectedOption, setTempSelectedOption] = useState8(null);
|
|
5030
|
+
const [domainModal, setDomainModal] = useState8(null);
|
|
5031
|
+
const [domainObject, setDomainObject] = useState8(null);
|
|
4989
5032
|
const actionData = sessionStorageUtils.getActionData();
|
|
4990
5033
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
4991
5034
|
const initValue = methods?.getValues(name);
|
|
@@ -4995,7 +5038,7 @@ var many2oneFieldController = (props) => {
|
|
|
4995
5038
|
...fieldContext,
|
|
4996
5039
|
...env?.context
|
|
4997
5040
|
};
|
|
4998
|
-
const { useGetSelection:
|
|
5041
|
+
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
4999
5042
|
const data = {
|
|
5000
5043
|
model: relation,
|
|
5001
5044
|
domain: domainObject,
|
|
@@ -5011,7 +5054,7 @@ var many2oneFieldController = (props) => {
|
|
|
5011
5054
|
data: dataOfSelection,
|
|
5012
5055
|
refetch,
|
|
5013
5056
|
isFetching
|
|
5014
|
-
} =
|
|
5057
|
+
} = useGetSelection2({
|
|
5015
5058
|
data,
|
|
5016
5059
|
queryKey,
|
|
5017
5060
|
enabled: false
|
|
@@ -5137,13 +5180,13 @@ var many2oneFieldController = (props) => {
|
|
|
5137
5180
|
};
|
|
5138
5181
|
|
|
5139
5182
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5140
|
-
import { getEnv as
|
|
5183
|
+
import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
|
|
5141
5184
|
import { useGetSelection } from "@fctc/interface-logic/hooks";
|
|
5142
5185
|
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
|
|
5143
5186
|
var many2oneButtonController = (props) => {
|
|
5144
5187
|
const { domain, methods, relation } = props;
|
|
5145
5188
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5146
|
-
const env =
|
|
5189
|
+
const env = getEnv7();
|
|
5147
5190
|
const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
|
|
5148
5191
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5149
5192
|
const { data: dataOfSelection } = useGetSelection({
|
|
@@ -5164,7 +5207,7 @@ var many2oneButtonController = (props) => {
|
|
|
5164
5207
|
};
|
|
5165
5208
|
|
|
5166
5209
|
// src/widget/basic/many2many-field/controller.ts
|
|
5167
|
-
import { useEffect as useEffect11, useMemo as useMemo10, useState as
|
|
5210
|
+
import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
|
|
5168
5211
|
import {
|
|
5169
5212
|
evalJSONContext as evalJSONContext4,
|
|
5170
5213
|
evalJSONDomain as evalJSONDomain4,
|
|
@@ -5177,16 +5220,16 @@ var many2manyFieldController = (props) => {
|
|
|
5177
5220
|
context,
|
|
5178
5221
|
options,
|
|
5179
5222
|
tab,
|
|
5180
|
-
setSelectedRowKeys:
|
|
5223
|
+
setSelectedRowKeys: setSelectedRowKeys3,
|
|
5181
5224
|
groupByDomain,
|
|
5182
5225
|
enabled: enabledCallAPI,
|
|
5183
5226
|
actionData
|
|
5184
5227
|
} = props;
|
|
5185
5228
|
const { env } = (0, provider_exports.useEnv)();
|
|
5186
5229
|
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5187
|
-
const [order, setOrder] =
|
|
5188
|
-
const [page, setPage] =
|
|
5189
|
-
const [domainMany2Many, setDomainMany2Many] =
|
|
5230
|
+
const [order, setOrder] = useState9();
|
|
5231
|
+
const [page, setPage] = useState9(0);
|
|
5232
|
+
const [domainMany2Many, setDomainMany2Many] = useState9(null);
|
|
5190
5233
|
const [debouncedPage] = useDebounce(page, 500);
|
|
5191
5234
|
const contextObject = {
|
|
5192
5235
|
...env.context,
|
|
@@ -5269,7 +5312,7 @@ var many2manyFieldController = (props) => {
|
|
|
5269
5312
|
}
|
|
5270
5313
|
return () => {
|
|
5271
5314
|
setPage(0);
|
|
5272
|
-
|
|
5315
|
+
setSelectedRowKeys3([]);
|
|
5273
5316
|
setDomainMany2Many(null);
|
|
5274
5317
|
};
|
|
5275
5318
|
}, [viewResponse]);
|
|
@@ -5318,8 +5361,6 @@ var many2manyFieldController = (props) => {
|
|
|
5318
5361
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5319
5362
|
import { useMemo as useMemo11 } from "react";
|
|
5320
5363
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5321
|
-
import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
|
|
5322
|
-
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5323
5364
|
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5324
5365
|
var many2manyTagsController = (props) => {
|
|
5325
5366
|
const {
|
|
@@ -5331,7 +5372,8 @@ var many2manyTagsController = (props) => {
|
|
|
5331
5372
|
placeholderNoOption
|
|
5332
5373
|
} = props;
|
|
5333
5374
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5334
|
-
const env =
|
|
5375
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5376
|
+
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5335
5377
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5336
5378
|
const domainObject = useMemo11(
|
|
5337
5379
|
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
@@ -5370,16 +5412,15 @@ var many2manyTagsController = (props) => {
|
|
|
5370
5412
|
options,
|
|
5371
5413
|
customNoOptionsMessage,
|
|
5372
5414
|
tranfer,
|
|
5373
|
-
dataOfSelection,
|
|
5374
5415
|
isUser
|
|
5375
5416
|
};
|
|
5376
5417
|
};
|
|
5377
5418
|
|
|
5378
5419
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5379
|
-
import { useState as
|
|
5420
|
+
import { useState as useState10 } from "react";
|
|
5380
5421
|
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5381
5422
|
var durationController = (props) => {
|
|
5382
|
-
const { relation, domain, formValues, name, id, model, onRefetch } = props;
|
|
5423
|
+
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5383
5424
|
const specification = {
|
|
5384
5425
|
id: 0,
|
|
5385
5426
|
name: "",
|
|
@@ -5387,8 +5428,8 @@ var durationController = (props) => {
|
|
|
5387
5428
|
};
|
|
5388
5429
|
const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
|
|
5389
5430
|
const { env } = (0, provider_exports.useEnv)();
|
|
5390
|
-
const [disabled, setDisabled] =
|
|
5391
|
-
const [modelStatus, setModalStatus] =
|
|
5431
|
+
const [disabled, setDisabled] = useState10(false);
|
|
5432
|
+
const [modelStatus, setModalStatus] = useState10(false);
|
|
5392
5433
|
const queryKey = [`data-status-duration`, specification];
|
|
5393
5434
|
const listDataProps = {
|
|
5394
5435
|
model: relation,
|
|
@@ -5403,7 +5444,11 @@ var durationController = (props) => {
|
|
|
5403
5444
|
},
|
|
5404
5445
|
sort: ""
|
|
5405
5446
|
};
|
|
5406
|
-
const { data: dataResponse } = useGetListData3(
|
|
5447
|
+
const { data: dataResponse } = useGetListData3(
|
|
5448
|
+
listDataProps,
|
|
5449
|
+
queryKey,
|
|
5450
|
+
enabled
|
|
5451
|
+
);
|
|
5407
5452
|
const { mutate: fetchChangeStatus } = useChangeStatus();
|
|
5408
5453
|
const handleClick = async (stage_id) => {
|
|
5409
5454
|
setDisabled(true);
|
|
@@ -5439,41 +5484,28 @@ var durationController = (props) => {
|
|
|
5439
5484
|
};
|
|
5440
5485
|
|
|
5441
5486
|
// src/widget/basic/priority-field/controller.ts
|
|
5442
|
-
import { useSave as useSave2 } from "@fctc/interface-logic/hooks";
|
|
5443
5487
|
import { evalJSONContext as evalJSONContext6 } from "@fctc/interface-logic/utils";
|
|
5444
5488
|
var priorityFieldController = (props) => {
|
|
5445
|
-
const {
|
|
5446
|
-
value,
|
|
5447
|
-
isForm,
|
|
5448
|
-
name,
|
|
5449
|
-
methods,
|
|
5450
|
-
onChange,
|
|
5451
|
-
model,
|
|
5452
|
-
selection,
|
|
5453
|
-
id,
|
|
5454
|
-
actionData,
|
|
5455
|
-
viewData,
|
|
5456
|
-
context
|
|
5457
|
-
} = props;
|
|
5489
|
+
const { name, model, id, actionData, context, onChange, specification } = props;
|
|
5458
5490
|
const _context = { ...evalJSONContext6(actionData?.context) };
|
|
5459
5491
|
const contextObject = { ...context, ..._context };
|
|
5460
|
-
const
|
|
5461
|
-
const label = viewData?.models?.[model]?.[name ?? ""]?.string ?? name;
|
|
5492
|
+
const { useSave: useSave2 } = (0, provider_exports.useService)();
|
|
5462
5493
|
const { mutateAsync: fetchSave } = useSave2();
|
|
5463
5494
|
const savePriorities = async ({
|
|
5464
|
-
value
|
|
5495
|
+
value,
|
|
5465
5496
|
resetPriority
|
|
5466
5497
|
}) => {
|
|
5467
|
-
const priorityValue =
|
|
5498
|
+
const priorityValue = value <= 0 ? 0 : value - 1;
|
|
5468
5499
|
try {
|
|
5469
5500
|
fetchSave({
|
|
5470
5501
|
ids: id ? [id] : [],
|
|
5471
|
-
data: { [name
|
|
5472
|
-
model: model
|
|
5473
|
-
context: contextObject
|
|
5502
|
+
data: { [String(name)]: String(priorityValue) },
|
|
5503
|
+
model: String(model),
|
|
5504
|
+
context: contextObject,
|
|
5505
|
+
specification
|
|
5474
5506
|
});
|
|
5475
5507
|
if (typeof onChange === "function") {
|
|
5476
|
-
onChange(name
|
|
5508
|
+
onChange(String(name), String(priorityValue));
|
|
5477
5509
|
}
|
|
5478
5510
|
} catch (error) {
|
|
5479
5511
|
if (resetPriority) {
|
|
@@ -5482,22 +5514,15 @@ var priorityFieldController = (props) => {
|
|
|
5482
5514
|
}
|
|
5483
5515
|
};
|
|
5484
5516
|
return {
|
|
5485
|
-
|
|
5486
|
-
isForm,
|
|
5487
|
-
methods,
|
|
5488
|
-
defaultPriority,
|
|
5489
|
-
savePriorities,
|
|
5490
|
-
label,
|
|
5491
|
-
id,
|
|
5492
|
-
onChange
|
|
5517
|
+
savePriorities
|
|
5493
5518
|
};
|
|
5494
5519
|
};
|
|
5495
5520
|
|
|
5496
5521
|
// src/widget/basic/download-file-field/controller.ts
|
|
5497
|
-
import { useId, useState as
|
|
5522
|
+
import { useId, useState as useState11 } from "react";
|
|
5498
5523
|
var downloadFileController = () => {
|
|
5499
5524
|
const inputId = useId();
|
|
5500
|
-
const [file, setFile] =
|
|
5525
|
+
const [file, setFile] = useState11(null);
|
|
5501
5526
|
const handleFileChange = (e) => {
|
|
5502
5527
|
setFile(e.target.files[0]);
|
|
5503
5528
|
};
|
|
@@ -6429,11 +6454,11 @@ var dateFieldController = (props) => {
|
|
|
6429
6454
|
};
|
|
6430
6455
|
|
|
6431
6456
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6432
|
-
import { useState as
|
|
6457
|
+
import { useState as useState12 } from "react";
|
|
6433
6458
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6434
6459
|
var copyLinkButtonController = (props) => {
|
|
6435
6460
|
const { value, defaultValue } = props;
|
|
6436
|
-
const [isCopied, setIsCopied] =
|
|
6461
|
+
const [isCopied, setIsCopied] = useState12(false);
|
|
6437
6462
|
const handleCopyToClipboard = async (value2) => {
|
|
6438
6463
|
await copyTextToClipboard(value2);
|
|
6439
6464
|
setIsCopied(true);
|
|
@@ -6452,11 +6477,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
|
|
|
6452
6477
|
var colorFieldController = (props) => {
|
|
6453
6478
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6454
6479
|
const { env } = (0, provider_exports.useEnv)();
|
|
6455
|
-
const { useSave:
|
|
6480
|
+
const { useSave: useSave2 } = (0, provider_exports.useService)();
|
|
6456
6481
|
const _context = { ...evalJSONContext7(actionData?.context) || {} };
|
|
6457
6482
|
const contextObject = { ...env.context, ..._context };
|
|
6458
6483
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6459
|
-
const { mutate: onSave } =
|
|
6484
|
+
const { mutate: onSave } = useSave2();
|
|
6460
6485
|
const savePickColor = async (colorObject) => {
|
|
6461
6486
|
const { id } = colorObject;
|
|
6462
6487
|
if (value === id) return;
|
|
@@ -6481,14 +6506,14 @@ var colorFieldController = (props) => {
|
|
|
6481
6506
|
};
|
|
6482
6507
|
|
|
6483
6508
|
// src/widget/basic/binary-field/controller.ts
|
|
6484
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6509
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
|
|
6485
6510
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6486
6511
|
var binaryFieldController = (props) => {
|
|
6487
6512
|
const { name, methods, readonly = false, value } = props;
|
|
6488
6513
|
const inputId = useId2();
|
|
6489
|
-
const [selectedImage, setSelectedImage] =
|
|
6490
|
-
const [initialImage, setInitialImage] =
|
|
6491
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6514
|
+
const [selectedImage, setSelectedImage] = useState13(null);
|
|
6515
|
+
const [initialImage, setInitialImage] = useState13(value || null);
|
|
6516
|
+
const [isInsideTable, setIsInsideTable] = useState13(false);
|
|
6492
6517
|
const { setValue } = methods;
|
|
6493
6518
|
const binaryRef = useRef4(null);
|
|
6494
6519
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6578,108 +6603,41 @@ var binaryFieldController = (props) => {
|
|
|
6578
6603
|
};
|
|
6579
6604
|
};
|
|
6580
6605
|
|
|
6581
|
-
// src/widget/advance/table/table-body/controller.ts
|
|
6582
|
-
import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6583
|
-
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6584
|
-
var tableBodyController = (props) => {
|
|
6585
|
-
const {
|
|
6586
|
-
checkedAll,
|
|
6587
|
-
checkboxRef,
|
|
6588
|
-
setIsAutoSelect,
|
|
6589
|
-
selectedRowKeys,
|
|
6590
|
-
row,
|
|
6591
|
-
isAutoSelect,
|
|
6592
|
-
selectedRowKeysRef,
|
|
6593
|
-
onClickRow
|
|
6594
|
-
} = props;
|
|
6595
|
-
const appDispatch = useAppDispatch5();
|
|
6596
|
-
const checked = useMemo12(() => {
|
|
6597
|
-
if (!row?.id) return false;
|
|
6598
|
-
if (selectedRowKeys?.includes(row.id)) {
|
|
6599
|
-
return true;
|
|
6600
|
-
}
|
|
6601
|
-
return checkedAll;
|
|
6602
|
-
}, [row?.id, selectedRowKeys, checkedAll]);
|
|
6603
|
-
const handleCheckBoxSingle = (event) => {
|
|
6604
|
-
event.stopPropagation();
|
|
6605
|
-
if (checkedAll) {
|
|
6606
|
-
checkboxRef.current = "uncheck";
|
|
6607
|
-
setIsAutoSelect(true);
|
|
6608
|
-
return;
|
|
6609
|
-
}
|
|
6610
|
-
const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
|
|
6611
|
-
console.log("newSelectedRowKeys", newSelectedRowKeys);
|
|
6612
|
-
appDispatch(setSelectedRowKeys(newSelectedRowKeys));
|
|
6613
|
-
};
|
|
6614
|
-
const handleClickRow = (col, row2) => {
|
|
6615
|
-
onClickRow(col, row2);
|
|
6616
|
-
};
|
|
6617
|
-
useEffect13(() => {
|
|
6618
|
-
if (!row?.id) return;
|
|
6619
|
-
if (isAutoSelect) {
|
|
6620
|
-
if (checkboxRef?.current === "uncheck") {
|
|
6621
|
-
const filtered = selectedRowKeysRef.current.filter(
|
|
6622
|
-
(id) => id !== row.id
|
|
6623
|
-
);
|
|
6624
|
-
selectedRowKeysRef.current = filtered;
|
|
6625
|
-
appDispatch(setSelectedRowKeys(filtered));
|
|
6626
|
-
} else {
|
|
6627
|
-
const unique = Array.from(
|
|
6628
|
-
/* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
|
|
6629
|
-
);
|
|
6630
|
-
selectedRowKeysRef.current = unique;
|
|
6631
|
-
appDispatch(setSelectedRowKeys(unique));
|
|
6632
|
-
}
|
|
6633
|
-
}
|
|
6634
|
-
}, [isAutoSelect]);
|
|
6635
|
-
useEffect13(() => {
|
|
6636
|
-
if (!checkedAll) {
|
|
6637
|
-
checkboxRef.current = "enabled";
|
|
6638
|
-
false;
|
|
6639
|
-
}
|
|
6640
|
-
}, [checkedAll]);
|
|
6641
|
-
return {
|
|
6642
|
-
handleCheckBoxSingle,
|
|
6643
|
-
checked,
|
|
6644
|
-
handleClickRow
|
|
6645
|
-
};
|
|
6646
|
-
};
|
|
6647
|
-
|
|
6648
6606
|
// src/widget/advance/table/table-head/controller.ts
|
|
6649
6607
|
import {
|
|
6650
|
-
useAppDispatch as
|
|
6608
|
+
useAppDispatch as useAppDispatch5,
|
|
6651
6609
|
useAppSelector as useAppSelector4,
|
|
6652
6610
|
selectSearch as selectSearch3,
|
|
6653
|
-
setSelectedRowKeys
|
|
6611
|
+
setSelectedRowKeys
|
|
6654
6612
|
} from "@fctc/interface-logic/store";
|
|
6655
6613
|
var tableHeadController = (props) => {
|
|
6656
6614
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
6657
|
-
const appDispatch =
|
|
6615
|
+
const appDispatch = useAppDispatch5();
|
|
6658
6616
|
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
6659
6617
|
const handleCheckBoxAll = (event) => {
|
|
6660
6618
|
if (event?.target?.checked && typeTable === "list") {
|
|
6661
6619
|
const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
|
|
6662
|
-
appDispatch(
|
|
6620
|
+
appDispatch(setSelectedRowKeys(allRowKeys));
|
|
6663
6621
|
} else if (event?.target?.checked && typeTable === "group") {
|
|
6664
6622
|
const rowsIDs = document.querySelectorAll("tr[data-row-id]");
|
|
6665
6623
|
const ids = Array.from(rowsIDs)?.map(
|
|
6666
6624
|
(row) => Number(row?.getAttribute("data-row-id"))
|
|
6667
6625
|
);
|
|
6668
6626
|
if (ids?.length > 0) {
|
|
6669
|
-
appDispatch(
|
|
6627
|
+
appDispatch(setSelectedRowKeys(ids));
|
|
6670
6628
|
} else {
|
|
6671
6629
|
const sum = countSum(
|
|
6672
6630
|
rows,
|
|
6673
6631
|
typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
|
|
6674
6632
|
);
|
|
6675
6633
|
const keys = Array.from({ length: sum }, (_) => void 0);
|
|
6676
|
-
appDispatch(
|
|
6634
|
+
appDispatch(setSelectedRowKeys(keys));
|
|
6677
6635
|
}
|
|
6678
6636
|
if (selectedRowKeysRef) {
|
|
6679
6637
|
selectedRowKeysRef.current = [];
|
|
6680
6638
|
}
|
|
6681
6639
|
} else {
|
|
6682
|
-
appDispatch(
|
|
6640
|
+
appDispatch(setSelectedRowKeys([]));
|
|
6683
6641
|
}
|
|
6684
6642
|
};
|
|
6685
6643
|
return {
|
|
@@ -6688,7 +6646,7 @@ var tableHeadController = (props) => {
|
|
|
6688
6646
|
};
|
|
6689
6647
|
|
|
6690
6648
|
// src/widget/advance/table/table-view/controller.ts
|
|
6691
|
-
import { useEffect as
|
|
6649
|
+
import { useEffect as useEffect13, useMemo as useMemo12, useRef as useRef5, useState as useState14 } from "react";
|
|
6692
6650
|
import {
|
|
6693
6651
|
useAppSelector as useAppSelector5,
|
|
6694
6652
|
selectSearch as selectSearch4,
|
|
@@ -6696,8 +6654,8 @@ import {
|
|
|
6696
6654
|
} from "@fctc/interface-logic/store";
|
|
6697
6655
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6698
6656
|
var tableController = ({ data }) => {
|
|
6699
|
-
const [rows, setRows] =
|
|
6700
|
-
const [columns, setColumns] =
|
|
6657
|
+
const [rows, setRows] = useState14(data.records || []);
|
|
6658
|
+
const [columns, setColumns] = useState14([]);
|
|
6701
6659
|
const dataModelFields = data.fields?.map((field) => {
|
|
6702
6660
|
return {
|
|
6703
6661
|
...data.dataModel?.[field?.name],
|
|
@@ -6725,7 +6683,7 @@ var tableController = ({ data }) => {
|
|
|
6725
6683
|
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
6726
6684
|
});
|
|
6727
6685
|
};
|
|
6728
|
-
|
|
6686
|
+
useEffect13(() => {
|
|
6729
6687
|
setRows(transformData(data.records || null));
|
|
6730
6688
|
}, [data.records]);
|
|
6731
6689
|
const handleGetColumns = () => {
|
|
@@ -6746,7 +6704,7 @@ var tableController = ({ data }) => {
|
|
|
6746
6704
|
}
|
|
6747
6705
|
return cols;
|
|
6748
6706
|
};
|
|
6749
|
-
|
|
6707
|
+
useEffect13(() => {
|
|
6750
6708
|
const columns2 = handleGetColumns();
|
|
6751
6709
|
setColumns(columns2);
|
|
6752
6710
|
}, [data.records]);
|
|
@@ -6771,7 +6729,7 @@ var tableController = ({ data }) => {
|
|
|
6771
6729
|
};
|
|
6772
6730
|
|
|
6773
6731
|
// src/widget/advance/table/table-group/controller.ts
|
|
6774
|
-
import { useEffect as
|
|
6732
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useState as useState15 } from "react";
|
|
6775
6733
|
import {
|
|
6776
6734
|
useOdooDataTransform,
|
|
6777
6735
|
useGetListData as useGetListData2
|
|
@@ -6780,8 +6738,8 @@ import {
|
|
|
6780
6738
|
useAppSelector as useAppSelector6,
|
|
6781
6739
|
selectSearch as selectSearch5,
|
|
6782
6740
|
selectList as selectList4,
|
|
6783
|
-
useAppDispatch as
|
|
6784
|
-
setSelectedRowKeys as
|
|
6741
|
+
useAppDispatch as useAppDispatch6,
|
|
6742
|
+
setSelectedRowKeys as setSelectedRowKeys2
|
|
6785
6743
|
} from "@fctc/interface-logic/store";
|
|
6786
6744
|
|
|
6787
6745
|
// src/environment.ts
|
|
@@ -6810,18 +6768,18 @@ var tableGroupController = (props) => {
|
|
|
6810
6768
|
setIsAutoSelect,
|
|
6811
6769
|
selectedRowKeysRef
|
|
6812
6770
|
} = props;
|
|
6813
|
-
const [pageGroup, setPageGroup] =
|
|
6771
|
+
const [pageGroup, setPageGroup] = useState15(0);
|
|
6814
6772
|
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
6815
6773
|
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
6816
|
-
const appDispatch =
|
|
6774
|
+
const appDispatch = useAppDispatch6();
|
|
6817
6775
|
const { toDataJS } = useOdooDataTransform();
|
|
6818
6776
|
const initVal = toDataJS(row, viewData, model);
|
|
6819
|
-
const [isShowGroup, setIsShowGroup] =
|
|
6820
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
6777
|
+
const [isShowGroup, setIsShowGroup] = useState15(false);
|
|
6778
|
+
const [colEmptyGroup, setColEmptyGroup] = useState15({
|
|
6821
6779
|
fromStart: 1,
|
|
6822
6780
|
fromEnd: 1
|
|
6823
6781
|
});
|
|
6824
|
-
const processedData =
|
|
6782
|
+
const processedData = useMemo13(() => {
|
|
6825
6783
|
const calculateColSpanEmpty = () => {
|
|
6826
6784
|
const startIndex = columns.findIndex(
|
|
6827
6785
|
(col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
|
|
@@ -6836,7 +6794,7 @@ var tableGroupController = (props) => {
|
|
|
6836
6794
|
};
|
|
6837
6795
|
return calculateColSpanEmpty();
|
|
6838
6796
|
}, [columns, row]);
|
|
6839
|
-
const shouldFetchData =
|
|
6797
|
+
const shouldFetchData = useMemo13(() => {
|
|
6840
6798
|
return !!isShowGroup;
|
|
6841
6799
|
}, [isShowGroup]);
|
|
6842
6800
|
const enabled = shouldFetchData && !!processedData;
|
|
@@ -6876,7 +6834,7 @@ var tableGroupController = (props) => {
|
|
|
6876
6834
|
}
|
|
6877
6835
|
});
|
|
6878
6836
|
const leftPadding = level > 1 ? level * 8 + "px" : "0px";
|
|
6879
|
-
|
|
6837
|
+
useEffect14(() => {
|
|
6880
6838
|
if (isShowGroup && selectedTags?.length > 0) {
|
|
6881
6839
|
setIsShowGroup(false);
|
|
6882
6840
|
}
|
|
@@ -6899,24 +6857,24 @@ var tableGroupController = (props) => {
|
|
|
6899
6857
|
const filteredIds = selectedRowKeys.filter(
|
|
6900
6858
|
(id) => !ids.includes(id)
|
|
6901
6859
|
);
|
|
6902
|
-
appDispatch(
|
|
6860
|
+
appDispatch(setSelectedRowKeys2(filteredIds));
|
|
6903
6861
|
} else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
|
|
6904
6862
|
const clonedKeys = [...selectedRowKeys];
|
|
6905
|
-
appDispatch(
|
|
6906
|
-
setTimeout(() => appDispatch(
|
|
6863
|
+
appDispatch(setSelectedRowKeys2([...clonedKeys, -1]));
|
|
6864
|
+
setTimeout(() => appDispatch(setSelectedRowKeys2(clonedKeys)), 500);
|
|
6907
6865
|
} else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
|
|
6908
6866
|
const filteredKeys = selectedRowKeys.filter((id) => id > -1);
|
|
6909
|
-
appDispatch(
|
|
6867
|
+
appDispatch(setSelectedRowKeys2(filteredKeys));
|
|
6910
6868
|
}
|
|
6911
6869
|
toggleShowGroup();
|
|
6912
6870
|
};
|
|
6913
|
-
|
|
6871
|
+
useEffect14(() => {
|
|
6914
6872
|
if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
|
|
6915
6873
|
return;
|
|
6916
6874
|
}
|
|
6917
6875
|
const clonedKeys = [...selectedRowKeys];
|
|
6918
|
-
|
|
6919
|
-
setTimeout(() =>
|
|
6876
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
6877
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
6920
6878
|
}, [isQueryFetched]);
|
|
6921
6879
|
return {
|
|
6922
6880
|
handleExpandChildGroup,
|
|
@@ -6958,7 +6916,7 @@ import {
|
|
|
6958
6916
|
evalJSONDomain as evalJSONDomain7,
|
|
6959
6917
|
validateAndParseDate
|
|
6960
6918
|
} from "@fctc/interface-logic/utils";
|
|
6961
|
-
import { useCallback as useCallback3, useEffect as
|
|
6919
|
+
import { useCallback as useCallback3, useEffect as useEffect15, useState as useState16 } from "react";
|
|
6962
6920
|
var searchController = ({
|
|
6963
6921
|
viewData,
|
|
6964
6922
|
model,
|
|
@@ -6967,12 +6925,12 @@ var searchController = ({
|
|
|
6967
6925
|
fieldsList
|
|
6968
6926
|
}) => {
|
|
6969
6927
|
const { env } = (0, provider_exports.useEnv)();
|
|
6970
|
-
const [filterBy, setFilterBy] =
|
|
6971
|
-
const [searchBy, setSearchBy] =
|
|
6972
|
-
const [groupBy, setGroupBy] =
|
|
6973
|
-
const [selectedTags, setSelectedTags] =
|
|
6974
|
-
const [searchString, setSearchString] =
|
|
6975
|
-
const [searchMap, setSearchMap] =
|
|
6928
|
+
const [filterBy, setFilterBy] = useState16(null);
|
|
6929
|
+
const [searchBy, setSearchBy] = useState16(null);
|
|
6930
|
+
const [groupBy, setGroupBy] = useState16(null);
|
|
6931
|
+
const [selectedTags, setSelectedTags] = useState16(null);
|
|
6932
|
+
const [searchString, setSearchString] = useState16("");
|
|
6933
|
+
const [searchMap, setSearchMap] = useState16({});
|
|
6976
6934
|
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
6977
6935
|
const contextSearch = { ...env.context, ...actionContext };
|
|
6978
6936
|
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
@@ -7019,7 +6977,7 @@ var searchController = ({
|
|
|
7019
6977
|
}
|
|
7020
6978
|
}
|
|
7021
6979
|
};
|
|
7022
|
-
|
|
6980
|
+
useEffect15(() => {
|
|
7023
6981
|
fetchData();
|
|
7024
6982
|
}, [model, viewData]);
|
|
7025
6983
|
const onChangeSearchInput = (search_string) => {
|
|
@@ -7164,7 +7122,7 @@ var searchController = ({
|
|
|
7164
7122
|
},
|
|
7165
7123
|
[searchMap]
|
|
7166
7124
|
);
|
|
7167
|
-
|
|
7125
|
+
useEffect15(() => {
|
|
7168
7126
|
setTagSearch(searchMap);
|
|
7169
7127
|
}, [searchMap]);
|
|
7170
7128
|
const handleAddTagSearch = (tag) => {
|
|
@@ -7235,7 +7193,6 @@ export {
|
|
|
7235
7193
|
priorityFieldController,
|
|
7236
7194
|
searchController,
|
|
7237
7195
|
statusDropdownController,
|
|
7238
|
-
tableBodyController,
|
|
7239
7196
|
tableController,
|
|
7240
7197
|
tableGroupController,
|
|
7241
7198
|
tableHeadController
|