@fctc/widget-logic 2.0.3 → 2.0.7
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 +1 -12
- package/dist/hooks.d.ts +1 -12
- package/dist/hooks.js +6 -179
- package/dist/hooks.mjs +2 -179
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +246 -321
- package/dist/index.mjs +158 -237
- package/dist/types.d.mts +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/widget.d.mts +45 -17
- package/dist/widget.d.ts +45 -17
- package/dist/widget.js +238 -311
- package/dist/widget.mjs +154 -231
- package/package.json +96 -96
package/dist/index.mjs
CHANGED
|
@@ -4086,7 +4086,6 @@ __export(index_exports, {
|
|
|
4086
4086
|
useGetRowIds: () => useGetRowIds,
|
|
4087
4087
|
useListData: () => useListData,
|
|
4088
4088
|
useMenu: () => useMenu,
|
|
4089
|
-
useMenuItem: () => useMenuItem,
|
|
4090
4089
|
useProfile: () => useProfile,
|
|
4091
4090
|
useSelectionState: () => useSelectionState,
|
|
4092
4091
|
useStorageState: () => useStorageState,
|
|
@@ -4107,7 +4106,6 @@ __export(hooks_exports, {
|
|
|
4107
4106
|
useDetail: () => useDetail,
|
|
4108
4107
|
useListData: () => useListData,
|
|
4109
4108
|
useMenu: () => useMenu,
|
|
4110
|
-
useMenuItem: () => useMenuItem,
|
|
4111
4109
|
useProfile: () => useProfile,
|
|
4112
4110
|
useUser: () => useUser,
|
|
4113
4111
|
useViewV2: () => useViewV2
|
|
@@ -4890,68 +4888,6 @@ var useAppProvider = () => {
|
|
|
4890
4888
|
return context;
|
|
4891
4889
|
};
|
|
4892
4890
|
|
|
4893
|
-
// src/hooks/core/use-menu-item.tsx
|
|
4894
|
-
import { getEnv as getEnv5 } from "@fctc/interface-logic/environment";
|
|
4895
|
-
import { useGetActionDetail } from "@fctc/interface-logic/hooks";
|
|
4896
|
-
import { useState as useState5 } from "react";
|
|
4897
|
-
|
|
4898
|
-
// src/utils.ts
|
|
4899
|
-
var utils_exports = {};
|
|
4900
|
-
__export(utils_exports, {
|
|
4901
|
-
API_APP_URL: () => API_APP_URL,
|
|
4902
|
-
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
4903
|
-
STORAGES: () => STORAGES,
|
|
4904
|
-
combineContexts: () => combineContexts,
|
|
4905
|
-
convertFieldsToArray: () => convertFieldsToArray,
|
|
4906
|
-
countSum: () => countSum,
|
|
4907
|
-
getDateRange: () => getDateRange,
|
|
4908
|
-
languages: () => languages,
|
|
4909
|
-
mergeButtons: () => mergeButtons,
|
|
4910
|
-
setStorageItemAsync: () => setStorageItemAsync,
|
|
4911
|
-
useGetRowIds: () => useGetRowIds,
|
|
4912
|
-
useSelectionState: () => useSelectionState,
|
|
4913
|
-
useStorageState: () => useStorageState
|
|
4914
|
-
});
|
|
4915
|
-
__reExport(utils_exports, utils_star);
|
|
4916
|
-
import * as utils_star from "@fctc/interface-logic/utils";
|
|
4917
|
-
|
|
4918
|
-
// src/hooks/core/use-menu-item.tsx
|
|
4919
|
-
var useMenuItem = (props) => {
|
|
4920
|
-
const { menu, activeMenuId } = props;
|
|
4921
|
-
const model = menu?.action?.res_model;
|
|
4922
|
-
const aid = menu?.action?.id?.id;
|
|
4923
|
-
const id = menu?.id;
|
|
4924
|
-
const context = getEnv5().context;
|
|
4925
|
-
const queryActionDetail = useGetActionDetail({
|
|
4926
|
-
aid,
|
|
4927
|
-
id,
|
|
4928
|
-
model,
|
|
4929
|
-
context,
|
|
4930
|
-
enabled: true,
|
|
4931
|
-
queryKey: [`action-${aid}`]
|
|
4932
|
-
}).data;
|
|
4933
|
-
const [path, setPath] = useState5("");
|
|
4934
|
-
const handleClick = () => {
|
|
4935
|
-
if (location?.pathname === "/list/menu" && activeMenuId === menu?.id) {
|
|
4936
|
-
return;
|
|
4937
|
-
}
|
|
4938
|
-
const hasListView = queryActionDetail.views.some(
|
|
4939
|
-
([id2, type]) => type === "list"
|
|
4940
|
-
);
|
|
4941
|
-
const viewType = hasListView ? "list" : "form";
|
|
4942
|
-
const isAccountPayment = menu?.action?.res_model === "account.payment" && menu?.action?.id?.id === 1551;
|
|
4943
|
-
const isConvertCurrencyMenu = menu?.action?.res_model === "currency.convert" && menu?.action?.id?.id === 1562;
|
|
4944
|
-
const path2 = (0, utils_exports.formatUrlPath)({
|
|
4945
|
-
viewType,
|
|
4946
|
-
actionPath: isConvertCurrencyMenu ? "menu" : isAccountPayment ? "menu" : menu?.action?.path || "menu",
|
|
4947
|
-
aid: menu?.action?.id?.id,
|
|
4948
|
-
model: queryActionDetail.res_model
|
|
4949
|
-
});
|
|
4950
|
-
setPath(path2);
|
|
4951
|
-
};
|
|
4952
|
-
return { handleClick, path, queryActionDetail };
|
|
4953
|
-
};
|
|
4954
|
-
|
|
4955
4891
|
// src/hooks/utils/use-click-outside.ts
|
|
4956
4892
|
import { useEffect as useEffect7, useRef as useRef2 } from "react";
|
|
4957
4893
|
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
@@ -4984,9 +4920,9 @@ var useClickOutside = ({
|
|
|
4984
4920
|
};
|
|
4985
4921
|
|
|
4986
4922
|
// src/hooks/utils/use-debounce.ts
|
|
4987
|
-
import { useEffect as useEffect8, useState as
|
|
4923
|
+
import { useEffect as useEffect8, useState as useState5 } from "react";
|
|
4988
4924
|
function useDebounce(value, delay) {
|
|
4989
|
-
const [debouncedValue, setDebouncedValue] =
|
|
4925
|
+
const [debouncedValue, setDebouncedValue] = useState5(value);
|
|
4990
4926
|
useEffect8(() => {
|
|
4991
4927
|
const handler = setTimeout(() => {
|
|
4992
4928
|
setDebouncedValue(value);
|
|
@@ -5244,18 +5180,18 @@ var ChevronBottomIcon = ({
|
|
|
5244
5180
|
};
|
|
5245
5181
|
|
|
5246
5182
|
// src/widget/basic/status-dropdown-field/controller.ts
|
|
5247
|
-
import { useEffect as useEffect9, useRef as useRef3, useState as
|
|
5248
|
-
import { getEnv as
|
|
5183
|
+
import { useEffect as useEffect9, useRef as useRef3, useState as useState6 } from "react";
|
|
5184
|
+
import { getEnv as getEnv5 } from "@fctc/interface-logic/environment";
|
|
5249
5185
|
import { useSave } from "@fctc/interface-logic/hooks";
|
|
5250
5186
|
var statusDropdownController = (props) => {
|
|
5251
5187
|
const { selection, isForm, id, model, name, state, onRefetch } = props;
|
|
5252
|
-
const env =
|
|
5188
|
+
const env = getEnv5();
|
|
5253
5189
|
const colors = {
|
|
5254
5190
|
normal: "bg-[#e9ecef]",
|
|
5255
5191
|
done: "bg-primary",
|
|
5256
5192
|
blocked: "bg-red-500"
|
|
5257
5193
|
};
|
|
5258
|
-
const [isOpen, setIsOpen] =
|
|
5194
|
+
const [isOpen, setIsOpen] = useState6(false);
|
|
5259
5195
|
const buttonRef = useRef3(null);
|
|
5260
5196
|
useEffect9(() => {
|
|
5261
5197
|
const handleClickOutside = (event) => {
|
|
@@ -5298,7 +5234,27 @@ var statusDropdownController = (props) => {
|
|
|
5298
5234
|
};
|
|
5299
5235
|
|
|
5300
5236
|
// src/widget/basic/many2one-field/controller.ts
|
|
5301
|
-
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as
|
|
5237
|
+
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState7 } from "react";
|
|
5238
|
+
|
|
5239
|
+
// src/utils.ts
|
|
5240
|
+
var utils_exports = {};
|
|
5241
|
+
__export(utils_exports, {
|
|
5242
|
+
API_APP_URL: () => API_APP_URL,
|
|
5243
|
+
API_PRESCHOOL_URL: () => API_PRESCHOOL_URL,
|
|
5244
|
+
STORAGES: () => STORAGES,
|
|
5245
|
+
combineContexts: () => combineContexts,
|
|
5246
|
+
convertFieldsToArray: () => convertFieldsToArray,
|
|
5247
|
+
countSum: () => countSum,
|
|
5248
|
+
getDateRange: () => getDateRange,
|
|
5249
|
+
languages: () => languages,
|
|
5250
|
+
mergeButtons: () => mergeButtons,
|
|
5251
|
+
setStorageItemAsync: () => setStorageItemAsync,
|
|
5252
|
+
useGetRowIds: () => useGetRowIds,
|
|
5253
|
+
useSelectionState: () => useSelectionState,
|
|
5254
|
+
useStorageState: () => useStorageState
|
|
5255
|
+
});
|
|
5256
|
+
__reExport(utils_exports, utils_star2);
|
|
5257
|
+
import * as utils_star2 from "@fctc/interface-logic/utils";
|
|
5302
5258
|
|
|
5303
5259
|
// src/provider.ts
|
|
5304
5260
|
var provider_exports = {};
|
|
@@ -5320,22 +5276,22 @@ var many2oneFieldController = (props) => {
|
|
|
5320
5276
|
options: fieldOptions,
|
|
5321
5277
|
showDetail
|
|
5322
5278
|
} = props;
|
|
5323
|
-
const
|
|
5324
|
-
const [
|
|
5279
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5280
|
+
const [options, setOptions] = useState7([]);
|
|
5281
|
+
const [inputValue, setInputValue] = useState7("");
|
|
5325
5282
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
5326
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
5327
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
5328
|
-
const [domainModal, setDomainModal] =
|
|
5329
|
-
const [domainObject, setDomainObject] =
|
|
5283
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState7(false);
|
|
5284
|
+
const [tempSelectedOption, setTempSelectedOption] = useState7(null);
|
|
5285
|
+
const [domainModal, setDomainModal] = useState7(null);
|
|
5286
|
+
const [domainObject, setDomainObject] = useState7(null);
|
|
5330
5287
|
const actionData = sessionStorageUtils.getActionData();
|
|
5331
5288
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5332
|
-
const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
|
|
5333
5289
|
const initValue = methods?.getValues(name);
|
|
5334
5290
|
const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
|
|
5335
5291
|
const contextObject = {
|
|
5336
5292
|
...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
|
|
5337
5293
|
...fieldContext,
|
|
5338
|
-
...context
|
|
5294
|
+
...env?.context
|
|
5339
5295
|
};
|
|
5340
5296
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5341
5297
|
const data = {
|
|
@@ -5479,13 +5435,13 @@ var many2oneFieldController = (props) => {
|
|
|
5479
5435
|
};
|
|
5480
5436
|
|
|
5481
5437
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5482
|
-
import { getEnv as
|
|
5438
|
+
import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
|
|
5483
5439
|
import { useGetSelection } from "@fctc/interface-logic/hooks";
|
|
5484
5440
|
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
|
|
5485
5441
|
var many2oneButtonController = (props) => {
|
|
5486
5442
|
const { domain, methods, relation } = props;
|
|
5487
5443
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5488
|
-
const env =
|
|
5444
|
+
const env = getEnv6();
|
|
5489
5445
|
const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
|
|
5490
5446
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5491
5447
|
const { data: dataOfSelection } = useGetSelection({
|
|
@@ -5506,16 +5462,10 @@ var many2oneButtonController = (props) => {
|
|
|
5506
5462
|
};
|
|
5507
5463
|
|
|
5508
5464
|
// src/widget/basic/many2many-field/controller.ts
|
|
5509
|
-
import { useEffect as useEffect11, useMemo as useMemo10, useState as
|
|
5510
|
-
import {
|
|
5511
|
-
useAppDispatch as useAppDispatch5,
|
|
5512
|
-
setFirstDomain,
|
|
5513
|
-
setViewDataStore,
|
|
5514
|
-
setPage,
|
|
5515
|
-
setGroupByDomain
|
|
5516
|
-
} from "@fctc/interface-logic/store";
|
|
5465
|
+
import { useEffect as useEffect11, useMemo as useMemo10, useState as useState8 } from "react";
|
|
5517
5466
|
import {
|
|
5518
5467
|
evalJSONContext as evalJSONContext4,
|
|
5468
|
+
evalJSONDomain as evalJSONDomain4,
|
|
5519
5469
|
formatSortingString as formatSortingString2
|
|
5520
5470
|
} from "@fctc/interface-logic/utils";
|
|
5521
5471
|
var many2manyFieldController = (props) => {
|
|
@@ -5523,45 +5473,43 @@ var many2manyFieldController = (props) => {
|
|
|
5523
5473
|
relation,
|
|
5524
5474
|
domain,
|
|
5525
5475
|
context,
|
|
5476
|
+
options,
|
|
5526
5477
|
tab,
|
|
5527
|
-
model,
|
|
5528
|
-
aid,
|
|
5529
5478
|
setSelectedRowKeys: setSelectedRowKeys4,
|
|
5530
|
-
fields,
|
|
5531
|
-
setFields,
|
|
5532
5479
|
groupByDomain,
|
|
5533
|
-
|
|
5534
|
-
|
|
5535
|
-
sessionStorageUtils
|
|
5480
|
+
enabled: enabledCallAPI,
|
|
5481
|
+
actionData
|
|
5536
5482
|
} = props;
|
|
5537
|
-
const appDispatch = useAppDispatch5();
|
|
5538
|
-
const actionData = sessionStorageUtils.getActionData();
|
|
5539
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5540
|
-
const [order, setOrder] = useState9();
|
|
5541
|
-
const [isLoadedData, setIsLoadedData] = useState9(false);
|
|
5542
|
-
const [domainMany2Many, setDomainMany2Many] = useState9(domain);
|
|
5543
5483
|
const { env } = (0, provider_exports.useEnv)();
|
|
5544
5484
|
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5485
|
+
const [order, setOrder] = useState8();
|
|
5486
|
+
const [page, setPage] = useState8(0);
|
|
5487
|
+
const [domainMany2Many, setDomainMany2Many] = useState8(null);
|
|
5488
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
5489
|
+
const contextObject = {
|
|
5490
|
+
...env.context,
|
|
5491
|
+
...context || {}
|
|
5492
|
+
};
|
|
5545
5493
|
const viewParams = {
|
|
5546
5494
|
model: relation,
|
|
5547
5495
|
views: [
|
|
5548
5496
|
[false, "list"],
|
|
5549
5497
|
[false, "search"]
|
|
5550
5498
|
],
|
|
5551
|
-
context
|
|
5499
|
+
context: contextObject
|
|
5552
5500
|
};
|
|
5553
|
-
const { data: viewResponse } = useGetView2(viewParams,
|
|
5501
|
+
const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
|
|
5554
5502
|
const baseModel = useMemo10(
|
|
5555
5503
|
() => ({
|
|
5556
5504
|
name: String(relation),
|
|
5557
5505
|
view: viewResponse || {},
|
|
5558
|
-
actContext:
|
|
5506
|
+
actContext: contextObject,
|
|
5559
5507
|
fields: [
|
|
5560
5508
|
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5561
5509
|
...tab?.fields ? tab.fields : []
|
|
5562
5510
|
]
|
|
5563
5511
|
}),
|
|
5564
|
-
[
|
|
5512
|
+
[relation, viewResponse]
|
|
5565
5513
|
);
|
|
5566
5514
|
const initModel = (0, hooks_exports.useModel)();
|
|
5567
5515
|
const modelInstance = useMemo10(() => {
|
|
@@ -5580,26 +5528,15 @@ var many2manyFieldController = (props) => {
|
|
|
5580
5528
|
const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
|
|
5581
5529
|
const fetchData = async () => {
|
|
5582
5530
|
try {
|
|
5583
|
-
|
|
5584
|
-
|
|
5585
|
-
|
|
5586
|
-
const modalData = viewResponse?.views?.list?.fields.map((field) => ({
|
|
5587
|
-
...viewResponse?.models?.[String(model)]?.[field?.name],
|
|
5588
|
-
...field
|
|
5589
|
-
}));
|
|
5590
|
-
if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
|
|
5591
|
-
setFields({
|
|
5592
|
-
...fields,
|
|
5593
|
-
[`${aid}_${relation}_popupmany2many`]: modalData
|
|
5594
|
-
});
|
|
5595
|
-
}
|
|
5596
|
-
appDispatch(setPage(0));
|
|
5531
|
+
const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5532
|
+
setDomainMany2Many(domainParse);
|
|
5533
|
+
setPage(0);
|
|
5597
5534
|
} catch (err) {
|
|
5598
5535
|
console.log(err);
|
|
5599
5536
|
}
|
|
5600
5537
|
};
|
|
5601
5538
|
const queryKey = [
|
|
5602
|
-
`view-${relation}
|
|
5539
|
+
`view-${relation}`,
|
|
5603
5540
|
specification,
|
|
5604
5541
|
domainMany2Many,
|
|
5605
5542
|
debouncedPage,
|
|
@@ -5612,16 +5549,16 @@ var many2manyFieldController = (props) => {
|
|
|
5612
5549
|
domain: domainMany2Many,
|
|
5613
5550
|
offset: debouncedPage * 10,
|
|
5614
5551
|
limit: 10,
|
|
5615
|
-
context,
|
|
5552
|
+
context: contextObject,
|
|
5616
5553
|
fields: groupByDomain?.fields,
|
|
5617
5554
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5618
5555
|
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
5619
5556
|
};
|
|
5620
|
-
const enabled =
|
|
5557
|
+
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5621
5558
|
const {
|
|
5622
5559
|
data: dataResponse,
|
|
5623
|
-
isLoading
|
|
5624
|
-
isFetched
|
|
5560
|
+
isLoading,
|
|
5561
|
+
isFetched,
|
|
5625
5562
|
isPlaceholderData
|
|
5626
5563
|
} = useGetListData3(data, queryKey, enabled);
|
|
5627
5564
|
useEffect11(() => {
|
|
@@ -5629,76 +5566,59 @@ var many2manyFieldController = (props) => {
|
|
|
5629
5566
|
fetchData();
|
|
5630
5567
|
}
|
|
5631
5568
|
return () => {
|
|
5632
|
-
|
|
5633
|
-
setFields((prevFields) => ({
|
|
5634
|
-
...prevFields,
|
|
5635
|
-
[`${aid}_${relation}_popupmany2many`]: null
|
|
5636
|
-
}));
|
|
5637
|
-
appDispatch(setPage(0));
|
|
5569
|
+
setPage(0);
|
|
5638
5570
|
setSelectedRowKeys4([]);
|
|
5639
5571
|
setDomainMany2Many(null);
|
|
5640
|
-
setIsLoadedData(false);
|
|
5641
5572
|
};
|
|
5642
5573
|
}, [viewResponse]);
|
|
5643
|
-
const { rows, columns, typeTable } = tableController({
|
|
5574
|
+
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
5644
5575
|
data: {
|
|
5645
|
-
fields:
|
|
5576
|
+
fields: viewResponse?.views?.list?.fields,
|
|
5646
5577
|
records: dataResponse?.records ?? dataResponse?.groups,
|
|
5647
5578
|
dataModel: viewResponse?.models?.[String(relation)],
|
|
5648
|
-
context:
|
|
5579
|
+
context: contextObject,
|
|
5649
5580
|
typeTable: dataResponse?.groups ? "group" : "list"
|
|
5650
5581
|
}
|
|
5651
5582
|
});
|
|
5652
|
-
const
|
|
5653
|
-
|
|
5654
|
-
model: relation,
|
|
5655
|
-
context
|
|
5656
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5659
|
-
|
|
5660
|
-
|
|
5661
|
-
|
|
5662
|
-
data: dataFormView,
|
|
5663
|
-
queryKey: [`form-view-action-${relation}`],
|
|
5664
|
-
enabled: false
|
|
5583
|
+
const searchControllers = searchController({
|
|
5584
|
+
viewData: viewResponse,
|
|
5585
|
+
model: relation ?? "",
|
|
5586
|
+
context: contextObject,
|
|
5587
|
+
domain,
|
|
5588
|
+
fieldsList: [
|
|
5589
|
+
...columns?.filter(
|
|
5590
|
+
(col) => col?.field?.type_co === "field" && col?.optional !== "hide"
|
|
5591
|
+
)?.map((col) => ({ ...col.field })) ?? []
|
|
5592
|
+
]
|
|
5665
5593
|
});
|
|
5666
|
-
useEffect11(() => {
|
|
5667
|
-
if (isSuccess && dataFormViewResponse) {
|
|
5668
|
-
sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
|
|
5669
|
-
window.location.href = `/form/menu?model=${relation}`;
|
|
5670
|
-
}
|
|
5671
|
-
}, [isSuccess]);
|
|
5672
|
-
useEffect11(() => {
|
|
5673
|
-
if (domainMany2Many && !isLoadedData) {
|
|
5674
|
-
setIsLoadedData(true);
|
|
5675
|
-
}
|
|
5676
|
-
}, [domainMany2Many]);
|
|
5677
5594
|
const handleCreateNewOnPage = async () => {
|
|
5678
|
-
try {
|
|
5679
|
-
refetch();
|
|
5680
|
-
} catch (error) {
|
|
5681
|
-
console.log(error);
|
|
5682
|
-
}
|
|
5683
5595
|
};
|
|
5684
5596
|
return {
|
|
5685
5597
|
handleCreateNewOnPage,
|
|
5686
5598
|
optionsObject,
|
|
5599
|
+
totalRows: dataResponse?.length ?? 0,
|
|
5687
5600
|
rows,
|
|
5688
5601
|
columns,
|
|
5602
|
+
onToggleColumnOptional,
|
|
5689
5603
|
typeTable,
|
|
5690
|
-
|
|
5691
|
-
|
|
5692
|
-
isPlaceholderData
|
|
5604
|
+
isLoading,
|
|
5605
|
+
isFetched,
|
|
5606
|
+
isPlaceholderData,
|
|
5607
|
+
setPage,
|
|
5608
|
+
page,
|
|
5609
|
+
viewData: viewResponse,
|
|
5610
|
+
domain: domainMany2Many,
|
|
5611
|
+
setDomain: setDomainMany2Many,
|
|
5612
|
+
searchController: searchControllers
|
|
5693
5613
|
};
|
|
5694
5614
|
};
|
|
5695
5615
|
|
|
5696
5616
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5697
5617
|
import { useMemo as useMemo11 } from "react";
|
|
5698
5618
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5699
|
-
import { getEnv as
|
|
5619
|
+
import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
|
|
5700
5620
|
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5701
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as
|
|
5621
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5702
5622
|
var many2manyTagsController = (props) => {
|
|
5703
5623
|
const {
|
|
5704
5624
|
relation,
|
|
@@ -5709,10 +5629,10 @@ var many2manyTagsController = (props) => {
|
|
|
5709
5629
|
placeholderNoOption
|
|
5710
5630
|
} = props;
|
|
5711
5631
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5712
|
-
const env =
|
|
5632
|
+
const env = getEnv7();
|
|
5713
5633
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5714
5634
|
const domainObject = useMemo11(
|
|
5715
|
-
() =>
|
|
5635
|
+
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5716
5636
|
[domain, formValues]
|
|
5717
5637
|
);
|
|
5718
5638
|
const data = {
|
|
@@ -5754,8 +5674,8 @@ var many2manyTagsController = (props) => {
|
|
|
5754
5674
|
};
|
|
5755
5675
|
|
|
5756
5676
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5757
|
-
import { useState as
|
|
5758
|
-
import { evalJSONDomain as
|
|
5677
|
+
import { useState as useState9 } from "react";
|
|
5678
|
+
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5759
5679
|
var durationController = (props) => {
|
|
5760
5680
|
const { relation, domain, formValues, name, id, model, onRefetch } = props;
|
|
5761
5681
|
const specification = {
|
|
@@ -5765,13 +5685,13 @@ var durationController = (props) => {
|
|
|
5765
5685
|
};
|
|
5766
5686
|
const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
|
|
5767
5687
|
const { env } = (0, provider_exports.useEnv)();
|
|
5768
|
-
const [disabled, setDisabled] =
|
|
5769
|
-
const [modelStatus, setModalStatus] =
|
|
5688
|
+
const [disabled, setDisabled] = useState9(false);
|
|
5689
|
+
const [modelStatus, setModalStatus] = useState9(false);
|
|
5770
5690
|
const queryKey = [`data-status-duration`, specification];
|
|
5771
5691
|
const listDataProps = {
|
|
5772
5692
|
model: relation,
|
|
5773
5693
|
specification,
|
|
5774
|
-
domain:
|
|
5694
|
+
domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5775
5695
|
limit: 10,
|
|
5776
5696
|
offset: 0,
|
|
5777
5697
|
fields: "",
|
|
@@ -5872,10 +5792,10 @@ var priorityFieldController = (props) => {
|
|
|
5872
5792
|
};
|
|
5873
5793
|
|
|
5874
5794
|
// src/widget/basic/download-file-field/controller.ts
|
|
5875
|
-
import { useId, useState as
|
|
5795
|
+
import { useId, useState as useState10 } from "react";
|
|
5876
5796
|
var downloadFileController = () => {
|
|
5877
5797
|
const inputId = useId();
|
|
5878
|
-
const [file, setFile] =
|
|
5798
|
+
const [file, setFile] = useState10(null);
|
|
5879
5799
|
const handleFileChange = (e) => {
|
|
5880
5800
|
setFile(e.target.files[0]);
|
|
5881
5801
|
};
|
|
@@ -6807,11 +6727,11 @@ var dateFieldController = (props) => {
|
|
|
6807
6727
|
};
|
|
6808
6728
|
|
|
6809
6729
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6810
|
-
import { useState as
|
|
6730
|
+
import { useState as useState11 } from "react";
|
|
6811
6731
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6812
6732
|
var copyLinkButtonController = (props) => {
|
|
6813
6733
|
const { value, defaultValue } = props;
|
|
6814
|
-
const [isCopied, setIsCopied] =
|
|
6734
|
+
const [isCopied, setIsCopied] = useState11(false);
|
|
6815
6735
|
const handleCopyToClipboard = async (value2) => {
|
|
6816
6736
|
await copyTextToClipboard(value2);
|
|
6817
6737
|
setIsCopied(true);
|
|
@@ -6859,14 +6779,14 @@ var colorFieldController = (props) => {
|
|
|
6859
6779
|
};
|
|
6860
6780
|
|
|
6861
6781
|
// src/widget/basic/binary-field/controller.ts
|
|
6862
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6782
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
|
|
6863
6783
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6864
6784
|
var binaryFieldController = (props) => {
|
|
6865
6785
|
const { name, methods, readonly = false, value } = props;
|
|
6866
6786
|
const inputId = useId2();
|
|
6867
|
-
const [selectedImage, setSelectedImage] =
|
|
6868
|
-
const [initialImage, setInitialImage] =
|
|
6869
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6787
|
+
const [selectedImage, setSelectedImage] = useState12(null);
|
|
6788
|
+
const [initialImage, setInitialImage] = useState12(value || null);
|
|
6789
|
+
const [isInsideTable, setIsInsideTable] = useState12(false);
|
|
6870
6790
|
const { setValue } = methods;
|
|
6871
6791
|
const binaryRef = useRef4(null);
|
|
6872
6792
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6957,7 +6877,7 @@ var binaryFieldController = (props) => {
|
|
|
6957
6877
|
};
|
|
6958
6878
|
|
|
6959
6879
|
// src/widget/advance/table/table-body/controller.ts
|
|
6960
|
-
import { useAppDispatch as
|
|
6880
|
+
import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6961
6881
|
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6962
6882
|
var tableBodyController = (props) => {
|
|
6963
6883
|
const {
|
|
@@ -6970,7 +6890,7 @@ var tableBodyController = (props) => {
|
|
|
6970
6890
|
selectedRowKeysRef,
|
|
6971
6891
|
onClickRow
|
|
6972
6892
|
} = props;
|
|
6973
|
-
const appDispatch =
|
|
6893
|
+
const appDispatch = useAppDispatch5();
|
|
6974
6894
|
const checked = useMemo12(() => {
|
|
6975
6895
|
if (!row?.id) return false;
|
|
6976
6896
|
if (selectedRowKeys?.includes(row.id)) {
|
|
@@ -7025,14 +6945,14 @@ var tableBodyController = (props) => {
|
|
|
7025
6945
|
|
|
7026
6946
|
// src/widget/advance/table/table-head/controller.ts
|
|
7027
6947
|
import {
|
|
7028
|
-
useAppDispatch as
|
|
6948
|
+
useAppDispatch as useAppDispatch6,
|
|
7029
6949
|
useAppSelector as useAppSelector4,
|
|
7030
6950
|
selectSearch as selectSearch3,
|
|
7031
6951
|
setSelectedRowKeys as setSelectedRowKeys2
|
|
7032
6952
|
} from "@fctc/interface-logic/store";
|
|
7033
6953
|
var tableHeadController = (props) => {
|
|
7034
6954
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
7035
|
-
const appDispatch =
|
|
6955
|
+
const appDispatch = useAppDispatch6();
|
|
7036
6956
|
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
7037
6957
|
const handleCheckBoxAll = (event) => {
|
|
7038
6958
|
if (event?.target?.checked && typeTable === "list") {
|
|
@@ -7066,7 +6986,7 @@ var tableHeadController = (props) => {
|
|
|
7066
6986
|
};
|
|
7067
6987
|
|
|
7068
6988
|
// src/widget/advance/table/table-view/controller.ts
|
|
7069
|
-
import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as
|
|
6989
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState13 } from "react";
|
|
7070
6990
|
import {
|
|
7071
6991
|
useAppSelector as useAppSelector5,
|
|
7072
6992
|
selectSearch as selectSearch4,
|
|
@@ -7074,8 +6994,8 @@ import {
|
|
|
7074
6994
|
} from "@fctc/interface-logic/store";
|
|
7075
6995
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
7076
6996
|
var tableController = ({ data }) => {
|
|
7077
|
-
const [rows, setRows] =
|
|
7078
|
-
const [columns, setColumns] =
|
|
6997
|
+
const [rows, setRows] = useState13(data.records || []);
|
|
6998
|
+
const [columns, setColumns] = useState13([]);
|
|
7079
6999
|
const dataModelFields = data.fields?.map((field) => {
|
|
7080
7000
|
return {
|
|
7081
7001
|
...data.dataModel?.[field?.name],
|
|
@@ -7149,7 +7069,7 @@ var tableController = ({ data }) => {
|
|
|
7149
7069
|
};
|
|
7150
7070
|
|
|
7151
7071
|
// src/widget/advance/table/table-group/controller.ts
|
|
7152
|
-
import { useEffect as useEffect15, useMemo as useMemo14, useState as
|
|
7072
|
+
import { useEffect as useEffect15, useMemo as useMemo14, useState as useState14 } from "react";
|
|
7153
7073
|
import {
|
|
7154
7074
|
useOdooDataTransform,
|
|
7155
7075
|
useGetListData as useGetListData2
|
|
@@ -7158,7 +7078,7 @@ import {
|
|
|
7158
7078
|
useAppSelector as useAppSelector6,
|
|
7159
7079
|
selectSearch as selectSearch5,
|
|
7160
7080
|
selectList as selectList4,
|
|
7161
|
-
useAppDispatch as
|
|
7081
|
+
useAppDispatch as useAppDispatch7,
|
|
7162
7082
|
setSelectedRowKeys as setSelectedRowKeys3
|
|
7163
7083
|
} from "@fctc/interface-logic/store";
|
|
7164
7084
|
|
|
@@ -7188,14 +7108,14 @@ var tableGroupController = (props) => {
|
|
|
7188
7108
|
setIsAutoSelect,
|
|
7189
7109
|
selectedRowKeysRef
|
|
7190
7110
|
} = props;
|
|
7191
|
-
const [pageGroup, setPageGroup] =
|
|
7111
|
+
const [pageGroup, setPageGroup] = useState14(0);
|
|
7192
7112
|
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
7193
7113
|
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
7194
|
-
const appDispatch =
|
|
7114
|
+
const appDispatch = useAppDispatch7();
|
|
7195
7115
|
const { toDataJS } = useOdooDataTransform();
|
|
7196
7116
|
const initVal = toDataJS(row, viewData, model);
|
|
7197
|
-
const [isShowGroup, setIsShowGroup] =
|
|
7198
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
7117
|
+
const [isShowGroup, setIsShowGroup] = useState14(false);
|
|
7118
|
+
const [colEmptyGroup, setColEmptyGroup] = useState14({
|
|
7199
7119
|
fromStart: 1,
|
|
7200
7120
|
fromEnd: 1
|
|
7201
7121
|
});
|
|
@@ -7332,26 +7252,28 @@ var import_moment2 = __toESM(require_moment());
|
|
|
7332
7252
|
import { SearchType } from "@fctc/interface-logic/constants";
|
|
7333
7253
|
import {
|
|
7334
7254
|
domainHelper as domainHelper2,
|
|
7335
|
-
|
|
7255
|
+
evalJSONContext as evalJSONContext8,
|
|
7256
|
+
evalJSONDomain as evalJSONDomain7,
|
|
7336
7257
|
validateAndParseDate
|
|
7337
7258
|
} from "@fctc/interface-logic/utils";
|
|
7338
|
-
import { useCallback as useCallback3, useEffect as useEffect16, useState as
|
|
7259
|
+
import { useCallback as useCallback3, useEffect as useEffect16, useState as useState15 } from "react";
|
|
7339
7260
|
var searchController = ({
|
|
7340
7261
|
viewData,
|
|
7341
|
-
|
|
7342
|
-
|
|
7343
|
-
|
|
7344
|
-
|
|
7345
|
-
searchMap
|
|
7262
|
+
model,
|
|
7263
|
+
domain,
|
|
7264
|
+
context,
|
|
7265
|
+
fieldsList
|
|
7346
7266
|
}) => {
|
|
7347
|
-
const
|
|
7348
|
-
const [
|
|
7349
|
-
const [
|
|
7350
|
-
const [
|
|
7351
|
-
const [
|
|
7352
|
-
const
|
|
7353
|
-
const
|
|
7354
|
-
const
|
|
7267
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
7268
|
+
const [filterBy, setFilterBy] = useState15(null);
|
|
7269
|
+
const [searchBy, setSearchBy] = useState15(null);
|
|
7270
|
+
const [groupBy, setGroupBy] = useState15(null);
|
|
7271
|
+
const [selectedTags, setSelectedTags] = useState15(null);
|
|
7272
|
+
const [searchString, setSearchString] = useState15("");
|
|
7273
|
+
const [searchMap, setSearchMap] = useState15({});
|
|
7274
|
+
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
7275
|
+
const contextSearch = { ...env.context, ...actionContext };
|
|
7276
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
7355
7277
|
const clearSearch = () => {
|
|
7356
7278
|
setFilterBy([]);
|
|
7357
7279
|
setGroupBy([]);
|
|
@@ -7396,9 +7318,8 @@ var searchController = ({
|
|
|
7396
7318
|
}
|
|
7397
7319
|
};
|
|
7398
7320
|
useEffect16(() => {
|
|
7399
|
-
clearSearch();
|
|
7400
7321
|
fetchData();
|
|
7401
|
-
}, [
|
|
7322
|
+
}, [model, viewData]);
|
|
7402
7323
|
const onChangeSearchInput = (search_string) => {
|
|
7403
7324
|
setSearchString(search_string);
|
|
7404
7325
|
};
|
|
@@ -7435,27 +7356,28 @@ var searchController = ({
|
|
|
7435
7356
|
};
|
|
7436
7357
|
const formatDomain = () => {
|
|
7437
7358
|
if (domainAction) {
|
|
7438
|
-
|
|
7359
|
+
console.log("domainAction", domainAction);
|
|
7360
|
+
const domain2 = [];
|
|
7439
7361
|
if (domainAction?.length > 0) {
|
|
7440
7362
|
if (Object.keys(searchMap).length > 0) {
|
|
7441
|
-
|
|
7363
|
+
domain2.push("&");
|
|
7442
7364
|
}
|
|
7443
7365
|
domainAction.forEach((domainItem) => {
|
|
7444
|
-
|
|
7366
|
+
domain2.push(domainItem);
|
|
7445
7367
|
});
|
|
7446
7368
|
}
|
|
7447
7369
|
Object.keys(searchMap).forEach((key, keyIndex, keys) => {
|
|
7448
7370
|
if (!key?.includes(SearchType.GROUP)) {
|
|
7449
7371
|
if (keys.length > 1 && keyIndex < keys.length - 1) {
|
|
7450
|
-
|
|
7372
|
+
domain2.push("&");
|
|
7451
7373
|
}
|
|
7452
7374
|
const valuesOfKey = searchMap[key];
|
|
7453
7375
|
valuesOfKey.forEach((value, index) => {
|
|
7454
7376
|
if (index < valuesOfKey.length - 1) {
|
|
7455
|
-
|
|
7377
|
+
domain2.push("|");
|
|
7456
7378
|
}
|
|
7457
7379
|
if (value.domain) {
|
|
7458
|
-
|
|
7380
|
+
domain2.push(...value.domain);
|
|
7459
7381
|
return;
|
|
7460
7382
|
}
|
|
7461
7383
|
let valueDomainItem = value?.value;
|
|
@@ -7471,11 +7393,11 @@ var searchController = ({
|
|
|
7471
7393
|
}
|
|
7472
7394
|
}
|
|
7473
7395
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
7474
|
-
|
|
7396
|
+
domain2.push([value.name, operator, valueDomainItem]);
|
|
7475
7397
|
});
|
|
7476
7398
|
}
|
|
7477
7399
|
});
|
|
7478
|
-
return [...
|
|
7400
|
+
return [...domain2];
|
|
7479
7401
|
}
|
|
7480
7402
|
};
|
|
7481
7403
|
const setTagSearch = useCallback3(
|
|
@@ -7506,16 +7428,16 @@ var searchController = ({
|
|
|
7506
7428
|
const contexts = [];
|
|
7507
7429
|
let groupValues = [];
|
|
7508
7430
|
objValues?.forEach((objValue) => {
|
|
7509
|
-
const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7431
|
+
const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7510
7432
|
const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
|
|
7511
7433
|
contexts.push(
|
|
7512
|
-
...Array.isArray(
|
|
7434
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
|
|
7513
7435
|
);
|
|
7514
7436
|
groupValues[indexAppend] = {
|
|
7515
7437
|
contexts: [
|
|
7516
|
-
...Array.isArray(
|
|
7438
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
|
|
7517
7439
|
group_by: item
|
|
7518
|
-
})) : [
|
|
7440
|
+
})) : [context2]
|
|
7519
7441
|
],
|
|
7520
7442
|
strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
|
|
7521
7443
|
};
|
|
@@ -7542,39 +7464,38 @@ var searchController = ({
|
|
|
7542
7464
|
[searchMap]
|
|
7543
7465
|
);
|
|
7544
7466
|
useEffect16(() => {
|
|
7545
|
-
setSelectedTags(null);
|
|
7546
7467
|
setTagSearch(searchMap);
|
|
7547
7468
|
}, [searchMap]);
|
|
7548
7469
|
const handleAddTagSearch = (tag) => {
|
|
7549
7470
|
const {
|
|
7550
|
-
domain,
|
|
7471
|
+
domain: domain2,
|
|
7551
7472
|
groupIndex,
|
|
7552
7473
|
value,
|
|
7553
7474
|
type,
|
|
7554
7475
|
title,
|
|
7555
|
-
context,
|
|
7476
|
+
context: context2,
|
|
7556
7477
|
active,
|
|
7557
7478
|
dataIndex
|
|
7558
7479
|
} = tag;
|
|
7559
|
-
const domainFormat = new domainHelper2.Domain(
|
|
7480
|
+
const domainFormat = new domainHelper2.Domain(domain2);
|
|
7560
7481
|
if (type === SearchType.FILTER) {
|
|
7561
7482
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|
|
7562
7483
|
...tag,
|
|
7563
|
-
domain:
|
|
7484
|
+
domain: domain2 ? domainFormat.toList(context2) : null
|
|
7564
7485
|
});
|
|
7565
7486
|
} else if (type === SearchType.SEARCH) {
|
|
7566
7487
|
addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
|
|
7567
7488
|
...tag,
|
|
7568
|
-
domain:
|
|
7569
|
-
...
|
|
7489
|
+
domain: domain2 ? domainFormat.toList({
|
|
7490
|
+
...context2,
|
|
7570
7491
|
self: value
|
|
7571
7492
|
}) : null
|
|
7572
7493
|
});
|
|
7573
7494
|
} else if (type === SearchType.GROUP) {
|
|
7574
7495
|
addSearchItems(`${SearchType.GROUP}`, {
|
|
7575
7496
|
...tag,
|
|
7576
|
-
domain:
|
|
7577
|
-
context,
|
|
7497
|
+
domain: domain2 ? domainFormat.toList({
|
|
7498
|
+
context: context2,
|
|
7578
7499
|
self: value
|
|
7579
7500
|
}) : null
|
|
7580
7501
|
});
|
|
@@ -7594,7 +7515,8 @@ var searchController = ({
|
|
|
7594
7515
|
removeSearchItems,
|
|
7595
7516
|
onSearchString: onChangeSearchInput,
|
|
7596
7517
|
handleAddTagSearch,
|
|
7597
|
-
domain: formatDomain()
|
|
7518
|
+
domain: formatDomain(),
|
|
7519
|
+
context: contextSearch
|
|
7598
7520
|
};
|
|
7599
7521
|
};
|
|
7600
7522
|
|
|
@@ -7675,7 +7597,6 @@ export {
|
|
|
7675
7597
|
useGetRowIds,
|
|
7676
7598
|
useListData,
|
|
7677
7599
|
useMenu,
|
|
7678
|
-
useMenuItem,
|
|
7679
7600
|
useProfile,
|
|
7680
7601
|
useSelectionState,
|
|
7681
7602
|
useStorageState,
|