@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/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 useState7 } from "react";
|
|
4095
4095
|
|
|
4096
4096
|
// src/hooks.ts
|
|
4097
4097
|
var hooks_exports = {};
|
|
@@ -4106,7 +4106,6 @@ __export(hooks_exports, {
|
|
|
4106
4106
|
useDetail: () => useDetail,
|
|
4107
4107
|
useListData: () => useListData,
|
|
4108
4108
|
useMenu: () => useMenu,
|
|
4109
|
-
useMenuItem: () => useMenuItem,
|
|
4110
4109
|
useProfile: () => useProfile,
|
|
4111
4110
|
useUser: () => useUser,
|
|
4112
4111
|
useViewV2: () => useViewV2
|
|
@@ -4889,68 +4888,6 @@ var useAppProvider = () => {
|
|
|
4889
4888
|
return context;
|
|
4890
4889
|
};
|
|
4891
4890
|
|
|
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
|
-
|
|
4954
4891
|
// src/hooks/utils/use-click-outside.ts
|
|
4955
4892
|
import { useEffect as useEffect8, useRef as useRef3 } from "react";
|
|
4956
4893
|
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
@@ -4983,9 +4920,9 @@ var useClickOutside = ({
|
|
|
4983
4920
|
};
|
|
4984
4921
|
|
|
4985
4922
|
// src/hooks/utils/use-debounce.ts
|
|
4986
|
-
import { useEffect as useEffect9, useState as
|
|
4923
|
+
import { useEffect as useEffect9, useState as useState6 } from "react";
|
|
4987
4924
|
function useDebounce(value, delay) {
|
|
4988
|
-
const [debouncedValue, setDebouncedValue] =
|
|
4925
|
+
const [debouncedValue, setDebouncedValue] = useState6(value);
|
|
4989
4926
|
useEffect9(() => {
|
|
4990
4927
|
const handler = setTimeout(() => {
|
|
4991
4928
|
setDebouncedValue(value);
|
|
@@ -5001,6 +4938,26 @@ function useDebounce(value, delay) {
|
|
|
5001
4938
|
__reExport(hooks_exports, hooks_star);
|
|
5002
4939
|
import * as hooks_star from "@fctc/interface-logic/hooks";
|
|
5003
4940
|
|
|
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
|
+
|
|
5004
4961
|
// src/provider.ts
|
|
5005
4962
|
var provider_exports = {};
|
|
5006
4963
|
__reExport(provider_exports, provider_star);
|
|
@@ -5021,22 +4978,22 @@ var many2oneFieldController = (props) => {
|
|
|
5021
4978
|
options: fieldOptions,
|
|
5022
4979
|
showDetail
|
|
5023
4980
|
} = props;
|
|
5024
|
-
const
|
|
5025
|
-
const [
|
|
4981
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
4982
|
+
const [options, setOptions] = useState7([]);
|
|
4983
|
+
const [inputValue, setInputValue] = useState7("");
|
|
5026
4984
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
5027
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
5028
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
5029
|
-
const [domainModal, setDomainModal] =
|
|
5030
|
-
const [domainObject, setDomainObject] =
|
|
4985
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState7(false);
|
|
4986
|
+
const [tempSelectedOption, setTempSelectedOption] = useState7(null);
|
|
4987
|
+
const [domainModal, setDomainModal] = useState7(null);
|
|
4988
|
+
const [domainObject, setDomainObject] = useState7(null);
|
|
5031
4989
|
const actionData = sessionStorageUtils.getActionData();
|
|
5032
4990
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5033
|
-
const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
|
|
5034
4991
|
const initValue = methods?.getValues(name);
|
|
5035
4992
|
const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
|
|
5036
4993
|
const contextObject = {
|
|
5037
4994
|
...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
|
|
5038
4995
|
...fieldContext,
|
|
5039
|
-
...context
|
|
4996
|
+
...env?.context
|
|
5040
4997
|
};
|
|
5041
4998
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
5042
4999
|
const data = {
|
|
@@ -5180,13 +5137,13 @@ var many2oneFieldController = (props) => {
|
|
|
5180
5137
|
};
|
|
5181
5138
|
|
|
5182
5139
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5183
|
-
import { getEnv as
|
|
5140
|
+
import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
|
|
5184
5141
|
import { useGetSelection } from "@fctc/interface-logic/hooks";
|
|
5185
5142
|
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
|
|
5186
5143
|
var many2oneButtonController = (props) => {
|
|
5187
5144
|
const { domain, methods, relation } = props;
|
|
5188
5145
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5189
|
-
const env =
|
|
5146
|
+
const env = getEnv6();
|
|
5190
5147
|
const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
|
|
5191
5148
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5192
5149
|
const { data: dataOfSelection } = useGetSelection({
|
|
@@ -5207,16 +5164,10 @@ var many2oneButtonController = (props) => {
|
|
|
5207
5164
|
};
|
|
5208
5165
|
|
|
5209
5166
|
// src/widget/basic/many2many-field/controller.ts
|
|
5210
|
-
import { useEffect as useEffect11, useMemo as useMemo10, useState as
|
|
5211
|
-
import {
|
|
5212
|
-
useAppDispatch as useAppDispatch5,
|
|
5213
|
-
setFirstDomain,
|
|
5214
|
-
setViewDataStore,
|
|
5215
|
-
setPage,
|
|
5216
|
-
setGroupByDomain
|
|
5217
|
-
} from "@fctc/interface-logic/store";
|
|
5167
|
+
import { useEffect as useEffect11, useMemo as useMemo10, useState as useState8 } from "react";
|
|
5218
5168
|
import {
|
|
5219
5169
|
evalJSONContext as evalJSONContext4,
|
|
5170
|
+
evalJSONDomain as evalJSONDomain4,
|
|
5220
5171
|
formatSortingString as formatSortingString2
|
|
5221
5172
|
} from "@fctc/interface-logic/utils";
|
|
5222
5173
|
var many2manyFieldController = (props) => {
|
|
@@ -5224,45 +5175,43 @@ var many2manyFieldController = (props) => {
|
|
|
5224
5175
|
relation,
|
|
5225
5176
|
domain,
|
|
5226
5177
|
context,
|
|
5178
|
+
options,
|
|
5227
5179
|
tab,
|
|
5228
|
-
model,
|
|
5229
|
-
aid,
|
|
5230
5180
|
setSelectedRowKeys: setSelectedRowKeys4,
|
|
5231
|
-
fields,
|
|
5232
|
-
setFields,
|
|
5233
5181
|
groupByDomain,
|
|
5234
|
-
|
|
5235
|
-
|
|
5236
|
-
sessionStorageUtils
|
|
5182
|
+
enabled: enabledCallAPI,
|
|
5183
|
+
actionData
|
|
5237
5184
|
} = props;
|
|
5238
|
-
const appDispatch = useAppDispatch5();
|
|
5239
|
-
const actionData = sessionStorageUtils.getActionData();
|
|
5240
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5241
|
-
const [order, setOrder] = useState9();
|
|
5242
|
-
const [isLoadedData, setIsLoadedData] = useState9(false);
|
|
5243
|
-
const [domainMany2Many, setDomainMany2Many] = useState9(domain);
|
|
5244
5185
|
const { env } = (0, provider_exports.useEnv)();
|
|
5245
5186
|
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5187
|
+
const [order, setOrder] = useState8();
|
|
5188
|
+
const [page, setPage] = useState8(0);
|
|
5189
|
+
const [domainMany2Many, setDomainMany2Many] = useState8(null);
|
|
5190
|
+
const [debouncedPage] = useDebounce(page, 500);
|
|
5191
|
+
const contextObject = {
|
|
5192
|
+
...env.context,
|
|
5193
|
+
...context || {}
|
|
5194
|
+
};
|
|
5246
5195
|
const viewParams = {
|
|
5247
5196
|
model: relation,
|
|
5248
5197
|
views: [
|
|
5249
5198
|
[false, "list"],
|
|
5250
5199
|
[false, "search"]
|
|
5251
5200
|
],
|
|
5252
|
-
context
|
|
5201
|
+
context: contextObject
|
|
5253
5202
|
};
|
|
5254
|
-
const { data: viewResponse } = useGetView2(viewParams,
|
|
5203
|
+
const { data: viewResponse } = useGetView2(viewParams, enabledCallAPI);
|
|
5255
5204
|
const baseModel = useMemo10(
|
|
5256
5205
|
() => ({
|
|
5257
5206
|
name: String(relation),
|
|
5258
5207
|
view: viewResponse || {},
|
|
5259
|
-
actContext:
|
|
5208
|
+
actContext: contextObject,
|
|
5260
5209
|
fields: [
|
|
5261
5210
|
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5262
5211
|
...tab?.fields ? tab.fields : []
|
|
5263
5212
|
]
|
|
5264
5213
|
}),
|
|
5265
|
-
[
|
|
5214
|
+
[relation, viewResponse]
|
|
5266
5215
|
);
|
|
5267
5216
|
const initModel = (0, hooks_exports.useModel)();
|
|
5268
5217
|
const modelInstance = useMemo10(() => {
|
|
@@ -5281,26 +5230,15 @@ var many2manyFieldController = (props) => {
|
|
|
5281
5230
|
const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
|
|
5282
5231
|
const fetchData = async () => {
|
|
5283
5232
|
try {
|
|
5284
|
-
|
|
5285
|
-
|
|
5286
|
-
|
|
5287
|
-
const modalData = viewResponse?.views?.list?.fields.map((field) => ({
|
|
5288
|
-
...viewResponse?.models?.[String(model)]?.[field?.name],
|
|
5289
|
-
...field
|
|
5290
|
-
}));
|
|
5291
|
-
if (!fields?.[`${aid}_${relation}_popupmany2many`] && modalData) {
|
|
5292
|
-
setFields({
|
|
5293
|
-
...fields,
|
|
5294
|
-
[`${aid}_${relation}_popupmany2many`]: modalData
|
|
5295
|
-
});
|
|
5296
|
-
}
|
|
5297
|
-
appDispatch(setPage(0));
|
|
5233
|
+
const domainParse = typeof domain === "string" ? evalJSONDomain4(domain, contextObject) : Array.isArray(domain) ? domain : [];
|
|
5234
|
+
setDomainMany2Many(domainParse);
|
|
5235
|
+
setPage(0);
|
|
5298
5236
|
} catch (err) {
|
|
5299
5237
|
console.log(err);
|
|
5300
5238
|
}
|
|
5301
5239
|
};
|
|
5302
5240
|
const queryKey = [
|
|
5303
|
-
`view-${relation}
|
|
5241
|
+
`view-${relation}`,
|
|
5304
5242
|
specification,
|
|
5305
5243
|
domainMany2Many,
|
|
5306
5244
|
debouncedPage,
|
|
@@ -5313,16 +5251,16 @@ var many2manyFieldController = (props) => {
|
|
|
5313
5251
|
domain: domainMany2Many,
|
|
5314
5252
|
offset: debouncedPage * 10,
|
|
5315
5253
|
limit: 10,
|
|
5316
|
-
context,
|
|
5254
|
+
context: contextObject,
|
|
5317
5255
|
fields: groupByDomain?.fields,
|
|
5318
5256
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5319
5257
|
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
5320
5258
|
};
|
|
5321
|
-
const enabled =
|
|
5259
|
+
const enabled = enabledCallAPI && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5322
5260
|
const {
|
|
5323
5261
|
data: dataResponse,
|
|
5324
|
-
isLoading
|
|
5325
|
-
isFetched
|
|
5262
|
+
isLoading,
|
|
5263
|
+
isFetched,
|
|
5326
5264
|
isPlaceholderData
|
|
5327
5265
|
} = useGetListData3(data, queryKey, enabled);
|
|
5328
5266
|
useEffect11(() => {
|
|
@@ -5330,76 +5268,59 @@ var many2manyFieldController = (props) => {
|
|
|
5330
5268
|
fetchData();
|
|
5331
5269
|
}
|
|
5332
5270
|
return () => {
|
|
5333
|
-
|
|
5334
|
-
setFields((prevFields) => ({
|
|
5335
|
-
...prevFields,
|
|
5336
|
-
[`${aid}_${relation}_popupmany2many`]: null
|
|
5337
|
-
}));
|
|
5338
|
-
appDispatch(setPage(0));
|
|
5271
|
+
setPage(0);
|
|
5339
5272
|
setSelectedRowKeys4([]);
|
|
5340
5273
|
setDomainMany2Many(null);
|
|
5341
|
-
setIsLoadedData(false);
|
|
5342
5274
|
};
|
|
5343
5275
|
}, [viewResponse]);
|
|
5344
|
-
const { rows, columns, typeTable } = tableController({
|
|
5276
|
+
const { rows, columns, typeTable, onToggleColumnOptional } = tableController({
|
|
5345
5277
|
data: {
|
|
5346
|
-
fields:
|
|
5278
|
+
fields: viewResponse?.views?.list?.fields,
|
|
5347
5279
|
records: dataResponse?.records ?? dataResponse?.groups,
|
|
5348
5280
|
dataModel: viewResponse?.models?.[String(relation)],
|
|
5349
|
-
context:
|
|
5281
|
+
context: contextObject,
|
|
5350
5282
|
typeTable: dataResponse?.groups ? "group" : "list"
|
|
5351
5283
|
}
|
|
5352
5284
|
});
|
|
5353
|
-
const
|
|
5354
|
-
|
|
5355
|
-
model: relation,
|
|
5356
|
-
context
|
|
5357
|
-
|
|
5358
|
-
|
|
5359
|
-
|
|
5360
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5363
|
-
data: dataFormView,
|
|
5364
|
-
queryKey: [`form-view-action-${relation}`],
|
|
5365
|
-
enabled: false
|
|
5285
|
+
const searchControllers = searchController({
|
|
5286
|
+
viewData: viewResponse,
|
|
5287
|
+
model: relation ?? "",
|
|
5288
|
+
context: contextObject,
|
|
5289
|
+
domain,
|
|
5290
|
+
fieldsList: [
|
|
5291
|
+
...columns?.filter(
|
|
5292
|
+
(col) => col?.field?.type_co === "field" && col?.optional !== "hide"
|
|
5293
|
+
)?.map((col) => ({ ...col.field })) ?? []
|
|
5294
|
+
]
|
|
5366
5295
|
});
|
|
5367
|
-
useEffect11(() => {
|
|
5368
|
-
if (isSuccess && dataFormViewResponse) {
|
|
5369
|
-
sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
|
|
5370
|
-
window.location.href = `/form/menu?model=${relation}`;
|
|
5371
|
-
}
|
|
5372
|
-
}, [isSuccess]);
|
|
5373
|
-
useEffect11(() => {
|
|
5374
|
-
if (domainMany2Many && !isLoadedData) {
|
|
5375
|
-
setIsLoadedData(true);
|
|
5376
|
-
}
|
|
5377
|
-
}, [domainMany2Many]);
|
|
5378
5296
|
const handleCreateNewOnPage = async () => {
|
|
5379
|
-
try {
|
|
5380
|
-
refetch();
|
|
5381
|
-
} catch (error) {
|
|
5382
|
-
console.log(error);
|
|
5383
|
-
}
|
|
5384
5297
|
};
|
|
5385
5298
|
return {
|
|
5386
5299
|
handleCreateNewOnPage,
|
|
5387
5300
|
optionsObject,
|
|
5301
|
+
totalRows: dataResponse?.length ?? 0,
|
|
5388
5302
|
rows,
|
|
5389
5303
|
columns,
|
|
5304
|
+
onToggleColumnOptional,
|
|
5390
5305
|
typeTable,
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
isPlaceholderData
|
|
5306
|
+
isLoading,
|
|
5307
|
+
isFetched,
|
|
5308
|
+
isPlaceholderData,
|
|
5309
|
+
setPage,
|
|
5310
|
+
page,
|
|
5311
|
+
viewData: viewResponse,
|
|
5312
|
+
domain: domainMany2Many,
|
|
5313
|
+
setDomain: setDomainMany2Many,
|
|
5314
|
+
searchController: searchControllers
|
|
5394
5315
|
};
|
|
5395
5316
|
};
|
|
5396
5317
|
|
|
5397
5318
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5398
5319
|
import { useMemo as useMemo11 } from "react";
|
|
5399
5320
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5400
|
-
import { getEnv as
|
|
5321
|
+
import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
|
|
5401
5322
|
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5402
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as
|
|
5323
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5403
5324
|
var many2manyTagsController = (props) => {
|
|
5404
5325
|
const {
|
|
5405
5326
|
relation,
|
|
@@ -5410,10 +5331,10 @@ var many2manyTagsController = (props) => {
|
|
|
5410
5331
|
placeholderNoOption
|
|
5411
5332
|
} = props;
|
|
5412
5333
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5413
|
-
const env =
|
|
5334
|
+
const env = getEnv7();
|
|
5414
5335
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5415
5336
|
const domainObject = useMemo11(
|
|
5416
|
-
() =>
|
|
5337
|
+
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5417
5338
|
[domain, formValues]
|
|
5418
5339
|
);
|
|
5419
5340
|
const data = {
|
|
@@ -5455,8 +5376,8 @@ var many2manyTagsController = (props) => {
|
|
|
5455
5376
|
};
|
|
5456
5377
|
|
|
5457
5378
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5458
|
-
import { useState as
|
|
5459
|
-
import { evalJSONDomain as
|
|
5379
|
+
import { useState as useState9 } from "react";
|
|
5380
|
+
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5460
5381
|
var durationController = (props) => {
|
|
5461
5382
|
const { relation, domain, formValues, name, id, model, onRefetch } = props;
|
|
5462
5383
|
const specification = {
|
|
@@ -5466,13 +5387,13 @@ var durationController = (props) => {
|
|
|
5466
5387
|
};
|
|
5467
5388
|
const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
|
|
5468
5389
|
const { env } = (0, provider_exports.useEnv)();
|
|
5469
|
-
const [disabled, setDisabled] =
|
|
5470
|
-
const [modelStatus, setModalStatus] =
|
|
5390
|
+
const [disabled, setDisabled] = useState9(false);
|
|
5391
|
+
const [modelStatus, setModalStatus] = useState9(false);
|
|
5471
5392
|
const queryKey = [`data-status-duration`, specification];
|
|
5472
5393
|
const listDataProps = {
|
|
5473
5394
|
model: relation,
|
|
5474
5395
|
specification,
|
|
5475
|
-
domain:
|
|
5396
|
+
domain: evalJSONDomain6(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5476
5397
|
limit: 10,
|
|
5477
5398
|
offset: 0,
|
|
5478
5399
|
fields: "",
|
|
@@ -5573,10 +5494,10 @@ var priorityFieldController = (props) => {
|
|
|
5573
5494
|
};
|
|
5574
5495
|
|
|
5575
5496
|
// src/widget/basic/download-file-field/controller.ts
|
|
5576
|
-
import { useId, useState as
|
|
5497
|
+
import { useId, useState as useState10 } from "react";
|
|
5577
5498
|
var downloadFileController = () => {
|
|
5578
5499
|
const inputId = useId();
|
|
5579
|
-
const [file, setFile] =
|
|
5500
|
+
const [file, setFile] = useState10(null);
|
|
5580
5501
|
const handleFileChange = (e) => {
|
|
5581
5502
|
setFile(e.target.files[0]);
|
|
5582
5503
|
};
|
|
@@ -6508,11 +6429,11 @@ var dateFieldController = (props) => {
|
|
|
6508
6429
|
};
|
|
6509
6430
|
|
|
6510
6431
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6511
|
-
import { useState as
|
|
6432
|
+
import { useState as useState11 } from "react";
|
|
6512
6433
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6513
6434
|
var copyLinkButtonController = (props) => {
|
|
6514
6435
|
const { value, defaultValue } = props;
|
|
6515
|
-
const [isCopied, setIsCopied] =
|
|
6436
|
+
const [isCopied, setIsCopied] = useState11(false);
|
|
6516
6437
|
const handleCopyToClipboard = async (value2) => {
|
|
6517
6438
|
await copyTextToClipboard(value2);
|
|
6518
6439
|
setIsCopied(true);
|
|
@@ -6560,14 +6481,14 @@ var colorFieldController = (props) => {
|
|
|
6560
6481
|
};
|
|
6561
6482
|
|
|
6562
6483
|
// src/widget/basic/binary-field/controller.ts
|
|
6563
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6484
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState12 } from "react";
|
|
6564
6485
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6565
6486
|
var binaryFieldController = (props) => {
|
|
6566
6487
|
const { name, methods, readonly = false, value } = props;
|
|
6567
6488
|
const inputId = useId2();
|
|
6568
|
-
const [selectedImage, setSelectedImage] =
|
|
6569
|
-
const [initialImage, setInitialImage] =
|
|
6570
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6489
|
+
const [selectedImage, setSelectedImage] = useState12(null);
|
|
6490
|
+
const [initialImage, setInitialImage] = useState12(value || null);
|
|
6491
|
+
const [isInsideTable, setIsInsideTable] = useState12(false);
|
|
6571
6492
|
const { setValue } = methods;
|
|
6572
6493
|
const binaryRef = useRef4(null);
|
|
6573
6494
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6658,7 +6579,7 @@ var binaryFieldController = (props) => {
|
|
|
6658
6579
|
};
|
|
6659
6580
|
|
|
6660
6581
|
// src/widget/advance/table/table-body/controller.ts
|
|
6661
|
-
import { useAppDispatch as
|
|
6582
|
+
import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6662
6583
|
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6663
6584
|
var tableBodyController = (props) => {
|
|
6664
6585
|
const {
|
|
@@ -6671,7 +6592,7 @@ var tableBodyController = (props) => {
|
|
|
6671
6592
|
selectedRowKeysRef,
|
|
6672
6593
|
onClickRow
|
|
6673
6594
|
} = props;
|
|
6674
|
-
const appDispatch =
|
|
6595
|
+
const appDispatch = useAppDispatch5();
|
|
6675
6596
|
const checked = useMemo12(() => {
|
|
6676
6597
|
if (!row?.id) return false;
|
|
6677
6598
|
if (selectedRowKeys?.includes(row.id)) {
|
|
@@ -6726,14 +6647,14 @@ var tableBodyController = (props) => {
|
|
|
6726
6647
|
|
|
6727
6648
|
// src/widget/advance/table/table-head/controller.ts
|
|
6728
6649
|
import {
|
|
6729
|
-
useAppDispatch as
|
|
6650
|
+
useAppDispatch as useAppDispatch6,
|
|
6730
6651
|
useAppSelector as useAppSelector4,
|
|
6731
6652
|
selectSearch as selectSearch3,
|
|
6732
6653
|
setSelectedRowKeys as setSelectedRowKeys2
|
|
6733
6654
|
} from "@fctc/interface-logic/store";
|
|
6734
6655
|
var tableHeadController = (props) => {
|
|
6735
6656
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
6736
|
-
const appDispatch =
|
|
6657
|
+
const appDispatch = useAppDispatch6();
|
|
6737
6658
|
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
6738
6659
|
const handleCheckBoxAll = (event) => {
|
|
6739
6660
|
if (event?.target?.checked && typeTable === "list") {
|
|
@@ -6767,7 +6688,7 @@ var tableHeadController = (props) => {
|
|
|
6767
6688
|
};
|
|
6768
6689
|
|
|
6769
6690
|
// src/widget/advance/table/table-view/controller.ts
|
|
6770
|
-
import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as
|
|
6691
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState13 } from "react";
|
|
6771
6692
|
import {
|
|
6772
6693
|
useAppSelector as useAppSelector5,
|
|
6773
6694
|
selectSearch as selectSearch4,
|
|
@@ -6775,8 +6696,8 @@ import {
|
|
|
6775
6696
|
} from "@fctc/interface-logic/store";
|
|
6776
6697
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6777
6698
|
var tableController = ({ data }) => {
|
|
6778
|
-
const [rows, setRows] =
|
|
6779
|
-
const [columns, setColumns] =
|
|
6699
|
+
const [rows, setRows] = useState13(data.records || []);
|
|
6700
|
+
const [columns, setColumns] = useState13([]);
|
|
6780
6701
|
const dataModelFields = data.fields?.map((field) => {
|
|
6781
6702
|
return {
|
|
6782
6703
|
...data.dataModel?.[field?.name],
|
|
@@ -6850,7 +6771,7 @@ var tableController = ({ data }) => {
|
|
|
6850
6771
|
};
|
|
6851
6772
|
|
|
6852
6773
|
// src/widget/advance/table/table-group/controller.ts
|
|
6853
|
-
import { useEffect as useEffect15, useMemo as useMemo14, useState as
|
|
6774
|
+
import { useEffect as useEffect15, useMemo as useMemo14, useState as useState14 } from "react";
|
|
6854
6775
|
import {
|
|
6855
6776
|
useOdooDataTransform,
|
|
6856
6777
|
useGetListData as useGetListData2
|
|
@@ -6859,7 +6780,7 @@ import {
|
|
|
6859
6780
|
useAppSelector as useAppSelector6,
|
|
6860
6781
|
selectSearch as selectSearch5,
|
|
6861
6782
|
selectList as selectList4,
|
|
6862
|
-
useAppDispatch as
|
|
6783
|
+
useAppDispatch as useAppDispatch7,
|
|
6863
6784
|
setSelectedRowKeys as setSelectedRowKeys3
|
|
6864
6785
|
} from "@fctc/interface-logic/store";
|
|
6865
6786
|
|
|
@@ -6889,14 +6810,14 @@ var tableGroupController = (props) => {
|
|
|
6889
6810
|
setIsAutoSelect,
|
|
6890
6811
|
selectedRowKeysRef
|
|
6891
6812
|
} = props;
|
|
6892
|
-
const [pageGroup, setPageGroup] =
|
|
6813
|
+
const [pageGroup, setPageGroup] = useState14(0);
|
|
6893
6814
|
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
6894
6815
|
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
6895
|
-
const appDispatch =
|
|
6816
|
+
const appDispatch = useAppDispatch7();
|
|
6896
6817
|
const { toDataJS } = useOdooDataTransform();
|
|
6897
6818
|
const initVal = toDataJS(row, viewData, model);
|
|
6898
|
-
const [isShowGroup, setIsShowGroup] =
|
|
6899
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
6819
|
+
const [isShowGroup, setIsShowGroup] = useState14(false);
|
|
6820
|
+
const [colEmptyGroup, setColEmptyGroup] = useState14({
|
|
6900
6821
|
fromStart: 1,
|
|
6901
6822
|
fromEnd: 1
|
|
6902
6823
|
});
|
|
@@ -7033,26 +6954,28 @@ var import_moment2 = __toESM(require_moment());
|
|
|
7033
6954
|
import { SearchType } from "@fctc/interface-logic/constants";
|
|
7034
6955
|
import {
|
|
7035
6956
|
domainHelper as domainHelper2,
|
|
7036
|
-
|
|
6957
|
+
evalJSONContext as evalJSONContext8,
|
|
6958
|
+
evalJSONDomain as evalJSONDomain7,
|
|
7037
6959
|
validateAndParseDate
|
|
7038
6960
|
} from "@fctc/interface-logic/utils";
|
|
7039
|
-
import { useCallback as useCallback3, useEffect as useEffect16, useState as
|
|
6961
|
+
import { useCallback as useCallback3, useEffect as useEffect16, useState as useState15 } from "react";
|
|
7040
6962
|
var searchController = ({
|
|
7041
6963
|
viewData,
|
|
7042
|
-
|
|
7043
|
-
|
|
7044
|
-
|
|
7045
|
-
|
|
7046
|
-
searchMap
|
|
6964
|
+
model,
|
|
6965
|
+
domain,
|
|
6966
|
+
context,
|
|
6967
|
+
fieldsList
|
|
7047
6968
|
}) => {
|
|
7048
|
-
const
|
|
7049
|
-
const [
|
|
7050
|
-
const [
|
|
7051
|
-
const [
|
|
7052
|
-
const [
|
|
7053
|
-
const
|
|
7054
|
-
const
|
|
7055
|
-
const
|
|
6969
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
6970
|
+
const [filterBy, setFilterBy] = useState15(null);
|
|
6971
|
+
const [searchBy, setSearchBy] = useState15(null);
|
|
6972
|
+
const [groupBy, setGroupBy] = useState15(null);
|
|
6973
|
+
const [selectedTags, setSelectedTags] = useState15(null);
|
|
6974
|
+
const [searchString, setSearchString] = useState15("");
|
|
6975
|
+
const [searchMap, setSearchMap] = useState15({});
|
|
6976
|
+
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
6977
|
+
const contextSearch = { ...env.context, ...actionContext };
|
|
6978
|
+
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
7056
6979
|
const clearSearch = () => {
|
|
7057
6980
|
setFilterBy([]);
|
|
7058
6981
|
setGroupBy([]);
|
|
@@ -7097,9 +7020,8 @@ var searchController = ({
|
|
|
7097
7020
|
}
|
|
7098
7021
|
};
|
|
7099
7022
|
useEffect16(() => {
|
|
7100
|
-
clearSearch();
|
|
7101
7023
|
fetchData();
|
|
7102
|
-
}, [
|
|
7024
|
+
}, [model, viewData]);
|
|
7103
7025
|
const onChangeSearchInput = (search_string) => {
|
|
7104
7026
|
setSearchString(search_string);
|
|
7105
7027
|
};
|
|
@@ -7136,27 +7058,28 @@ var searchController = ({
|
|
|
7136
7058
|
};
|
|
7137
7059
|
const formatDomain = () => {
|
|
7138
7060
|
if (domainAction) {
|
|
7139
|
-
|
|
7061
|
+
console.log("domainAction", domainAction);
|
|
7062
|
+
const domain2 = [];
|
|
7140
7063
|
if (domainAction?.length > 0) {
|
|
7141
7064
|
if (Object.keys(searchMap).length > 0) {
|
|
7142
|
-
|
|
7065
|
+
domain2.push("&");
|
|
7143
7066
|
}
|
|
7144
7067
|
domainAction.forEach((domainItem) => {
|
|
7145
|
-
|
|
7068
|
+
domain2.push(domainItem);
|
|
7146
7069
|
});
|
|
7147
7070
|
}
|
|
7148
7071
|
Object.keys(searchMap).forEach((key, keyIndex, keys) => {
|
|
7149
7072
|
if (!key?.includes(SearchType.GROUP)) {
|
|
7150
7073
|
if (keys.length > 1 && keyIndex < keys.length - 1) {
|
|
7151
|
-
|
|
7074
|
+
domain2.push("&");
|
|
7152
7075
|
}
|
|
7153
7076
|
const valuesOfKey = searchMap[key];
|
|
7154
7077
|
valuesOfKey.forEach((value, index) => {
|
|
7155
7078
|
if (index < valuesOfKey.length - 1) {
|
|
7156
|
-
|
|
7079
|
+
domain2.push("|");
|
|
7157
7080
|
}
|
|
7158
7081
|
if (value.domain) {
|
|
7159
|
-
|
|
7082
|
+
domain2.push(...value.domain);
|
|
7160
7083
|
return;
|
|
7161
7084
|
}
|
|
7162
7085
|
let valueDomainItem = value?.value;
|
|
@@ -7172,11 +7095,11 @@ var searchController = ({
|
|
|
7172
7095
|
}
|
|
7173
7096
|
}
|
|
7174
7097
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
7175
|
-
|
|
7098
|
+
domain2.push([value.name, operator, valueDomainItem]);
|
|
7176
7099
|
});
|
|
7177
7100
|
}
|
|
7178
7101
|
});
|
|
7179
|
-
return [...
|
|
7102
|
+
return [...domain2];
|
|
7180
7103
|
}
|
|
7181
7104
|
};
|
|
7182
7105
|
const setTagSearch = useCallback3(
|
|
@@ -7207,16 +7130,16 @@ var searchController = ({
|
|
|
7207
7130
|
const contexts = [];
|
|
7208
7131
|
let groupValues = [];
|
|
7209
7132
|
objValues?.forEach((objValue) => {
|
|
7210
|
-
const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7133
|
+
const { context: context2, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7211
7134
|
const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
|
|
7212
7135
|
contexts.push(
|
|
7213
|
-
...Array.isArray(
|
|
7136
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({ group_by: item })) : [context2]
|
|
7214
7137
|
);
|
|
7215
7138
|
groupValues[indexAppend] = {
|
|
7216
7139
|
contexts: [
|
|
7217
|
-
...Array.isArray(
|
|
7140
|
+
...Array.isArray(context2?.group_by) ? context2.group_by.map((item) => ({
|
|
7218
7141
|
group_by: item
|
|
7219
|
-
})) : [
|
|
7142
|
+
})) : [context2]
|
|
7220
7143
|
],
|
|
7221
7144
|
strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
|
|
7222
7145
|
};
|
|
@@ -7243,39 +7166,38 @@ var searchController = ({
|
|
|
7243
7166
|
[searchMap]
|
|
7244
7167
|
);
|
|
7245
7168
|
useEffect16(() => {
|
|
7246
|
-
setSelectedTags(null);
|
|
7247
7169
|
setTagSearch(searchMap);
|
|
7248
7170
|
}, [searchMap]);
|
|
7249
7171
|
const handleAddTagSearch = (tag) => {
|
|
7250
7172
|
const {
|
|
7251
|
-
domain,
|
|
7173
|
+
domain: domain2,
|
|
7252
7174
|
groupIndex,
|
|
7253
7175
|
value,
|
|
7254
7176
|
type,
|
|
7255
7177
|
title,
|
|
7256
|
-
context,
|
|
7178
|
+
context: context2,
|
|
7257
7179
|
active,
|
|
7258
7180
|
dataIndex
|
|
7259
7181
|
} = tag;
|
|
7260
|
-
const domainFormat = new domainHelper2.Domain(
|
|
7182
|
+
const domainFormat = new domainHelper2.Domain(domain2);
|
|
7261
7183
|
if (type === SearchType.FILTER) {
|
|
7262
7184
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|
|
7263
7185
|
...tag,
|
|
7264
|
-
domain:
|
|
7186
|
+
domain: domain2 ? domainFormat.toList(context2) : null
|
|
7265
7187
|
});
|
|
7266
7188
|
} else if (type === SearchType.SEARCH) {
|
|
7267
7189
|
addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
|
|
7268
7190
|
...tag,
|
|
7269
|
-
domain:
|
|
7270
|
-
...
|
|
7191
|
+
domain: domain2 ? domainFormat.toList({
|
|
7192
|
+
...context2,
|
|
7271
7193
|
self: value
|
|
7272
7194
|
}) : null
|
|
7273
7195
|
});
|
|
7274
7196
|
} else if (type === SearchType.GROUP) {
|
|
7275
7197
|
addSearchItems(`${SearchType.GROUP}`, {
|
|
7276
7198
|
...tag,
|
|
7277
|
-
domain:
|
|
7278
|
-
context,
|
|
7199
|
+
domain: domain2 ? domainFormat.toList({
|
|
7200
|
+
context: context2,
|
|
7279
7201
|
self: value
|
|
7280
7202
|
}) : null
|
|
7281
7203
|
});
|
|
@@ -7295,7 +7217,8 @@ var searchController = ({
|
|
|
7295
7217
|
removeSearchItems,
|
|
7296
7218
|
onSearchString: onChangeSearchInput,
|
|
7297
7219
|
handleAddTagSearch,
|
|
7298
|
-
domain: formatDomain()
|
|
7220
|
+
domain: formatDomain(),
|
|
7221
|
+
context: contextSearch
|
|
7299
7222
|
};
|
|
7300
7223
|
};
|
|
7301
7224
|
export {
|