@fctc/widget-logic 1.10.6 → 2.0.2
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 +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +315 -247
- package/dist/index.mjs +230 -158
- package/dist/types.d.mts +0 -1
- package/dist/types.d.ts +0 -1
- package/dist/widget.d.mts +17 -45
- package/dist/widget.d.ts +17 -45
- package/dist/widget.js +305 -239
- package/dist/widget.mjs +224 -154
- 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 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);
|
|
@@ -4978,22 +5021,22 @@ var many2oneFieldController = (props) => {
|
|
|
4978
5021
|
options: fieldOptions,
|
|
4979
5022
|
showDetail
|
|
4980
5023
|
} = props;
|
|
4981
|
-
const
|
|
4982
|
-
const [
|
|
4983
|
-
const [inputValue, setInputValue] = useState7("");
|
|
5024
|
+
const [options, setOptions] = useState8([]);
|
|
5025
|
+
const [inputValue, setInputValue] = useState8("");
|
|
4984
5026
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
4985
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
4986
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
4987
|
-
const [domainModal, setDomainModal] =
|
|
4988
|
-
const [domainObject, setDomainObject] =
|
|
5027
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
|
|
5028
|
+
const [tempSelectedOption, setTempSelectedOption] = useState8(null);
|
|
5029
|
+
const [domainModal, setDomainModal] = useState8(null);
|
|
5030
|
+
const [domainObject, setDomainObject] = useState8(null);
|
|
4989
5031
|
const actionData = sessionStorageUtils.getActionData();
|
|
4990
5032
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5033
|
+
const { context } = (0, store_exports.useAppSelector)(store_exports.selectEnv);
|
|
4991
5034
|
const initValue = methods?.getValues(name);
|
|
4992
5035
|
const optionsObject = (0, utils_exports.evalJSONContext)(fieldOptions) || {};
|
|
4993
5036
|
const contextObject = {
|
|
4994
5037
|
...(0, utils_exports.evalJSONContext)(actionData?.context) || {},
|
|
4995
5038
|
...fieldContext,
|
|
4996
|
-
...
|
|
5039
|
+
...context
|
|
4997
5040
|
};
|
|
4998
5041
|
const { useGetSelection: useGetSelection3 } = (0, provider_exports.useService)();
|
|
4999
5042
|
const data = {
|
|
@@ -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,10 +5207,16 @@ 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";
|
|
5211
|
+
import {
|
|
5212
|
+
useAppDispatch as useAppDispatch5,
|
|
5213
|
+
setFirstDomain,
|
|
5214
|
+
setViewDataStore,
|
|
5215
|
+
setPage,
|
|
5216
|
+
setGroupByDomain
|
|
5217
|
+
} from "@fctc/interface-logic/store";
|
|
5168
5218
|
import {
|
|
5169
5219
|
evalJSONContext as evalJSONContext4,
|
|
5170
|
-
evalJSONDomain as evalJSONDomain4,
|
|
5171
5220
|
formatSortingString as formatSortingString2
|
|
5172
5221
|
} from "@fctc/interface-logic/utils";
|
|
5173
5222
|
var many2manyFieldController = (props) => {
|
|
@@ -5175,44 +5224,45 @@ var many2manyFieldController = (props) => {
|
|
|
5175
5224
|
relation,
|
|
5176
5225
|
domain,
|
|
5177
5226
|
context,
|
|
5178
|
-
options,
|
|
5179
5227
|
tab,
|
|
5228
|
+
model,
|
|
5229
|
+
aid,
|
|
5180
5230
|
setSelectedRowKeys: setSelectedRowKeys4,
|
|
5231
|
+
fields,
|
|
5232
|
+
setFields,
|
|
5181
5233
|
groupByDomain,
|
|
5182
|
-
|
|
5183
|
-
|
|
5234
|
+
page,
|
|
5235
|
+
options,
|
|
5236
|
+
sessionStorageUtils
|
|
5184
5237
|
} = 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);
|
|
5185
5244
|
const { env } = (0, provider_exports.useEnv)();
|
|
5186
5245
|
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5187
|
-
const [order, setOrder] = useState8();
|
|
5188
|
-
const [isLoadedData, setIsLoadedData] = useState8(false);
|
|
5189
|
-
const [page, setPage] = useState8(0);
|
|
5190
|
-
const [domainMany2Many, setDomainMany2Many] = useState8(null);
|
|
5191
|
-
const [debouncedPage] = useDebounce(page, 500);
|
|
5192
|
-
const contextObject = {
|
|
5193
|
-
...env.context,
|
|
5194
|
-
...context || {}
|
|
5195
|
-
};
|
|
5196
5246
|
const viewParams = {
|
|
5197
5247
|
model: relation,
|
|
5198
5248
|
views: [
|
|
5199
5249
|
[false, "list"],
|
|
5200
5250
|
[false, "search"]
|
|
5201
5251
|
],
|
|
5202
|
-
context
|
|
5252
|
+
context
|
|
5203
5253
|
};
|
|
5204
|
-
const { data: viewResponse } = useGetView2(viewParams,
|
|
5254
|
+
const { data: viewResponse } = useGetView2(viewParams, actionData);
|
|
5205
5255
|
const baseModel = useMemo10(
|
|
5206
5256
|
() => ({
|
|
5207
5257
|
name: String(relation),
|
|
5208
5258
|
view: viewResponse || {},
|
|
5209
|
-
actContext:
|
|
5259
|
+
actContext: context,
|
|
5210
5260
|
fields: [
|
|
5211
5261
|
...Object.values(viewResponse?.views?.list?.fields ?? {}),
|
|
5212
5262
|
...tab?.fields ? tab.fields : []
|
|
5213
5263
|
]
|
|
5214
5264
|
}),
|
|
5215
|
-
[
|
|
5265
|
+
[model, viewResponse]
|
|
5216
5266
|
);
|
|
5217
5267
|
const initModel = (0, hooks_exports.useModel)();
|
|
5218
5268
|
const modelInstance = useMemo10(() => {
|
|
@@ -5231,15 +5281,26 @@ var many2manyFieldController = (props) => {
|
|
|
5231
5281
|
const optionsObject = tab?.options ? evalJSONContext4(tab?.options) : (options ? evalJSONContext4(options) : {}) || {};
|
|
5232
5282
|
const fetchData = async () => {
|
|
5233
5283
|
try {
|
|
5234
|
-
|
|
5235
|
-
|
|
5236
|
-
|
|
5284
|
+
setDomainMany2Many(domain);
|
|
5285
|
+
appDispatch(setFirstDomain(domain));
|
|
5286
|
+
appDispatch(setViewDataStore(viewResponse));
|
|
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));
|
|
5237
5298
|
} catch (err) {
|
|
5238
5299
|
console.log(err);
|
|
5239
5300
|
}
|
|
5240
5301
|
};
|
|
5241
5302
|
const queryKey = [
|
|
5242
|
-
`view-${relation}`,
|
|
5303
|
+
`view-${relation}-${aid}`,
|
|
5243
5304
|
specification,
|
|
5244
5305
|
domainMany2Many,
|
|
5245
5306
|
debouncedPage,
|
|
@@ -5252,16 +5313,16 @@ var many2manyFieldController = (props) => {
|
|
|
5252
5313
|
domain: domainMany2Many,
|
|
5253
5314
|
offset: debouncedPage * 10,
|
|
5254
5315
|
limit: 10,
|
|
5255
|
-
context
|
|
5316
|
+
context,
|
|
5256
5317
|
fields: groupByDomain?.fields,
|
|
5257
5318
|
groupby: [groupByDomain?.contexts[0]?.group_by],
|
|
5258
5319
|
sort: order ? order : default_order ? formatSortingString2(default_order) : ""
|
|
5259
5320
|
};
|
|
5260
|
-
const enabled =
|
|
5321
|
+
const enabled = isLoadedData && !!specification && !!relation && !!domainMany2Many && !!viewResponse;
|
|
5261
5322
|
const {
|
|
5262
5323
|
data: dataResponse,
|
|
5263
|
-
isLoading,
|
|
5264
|
-
isFetched,
|
|
5324
|
+
isLoading: isDataLoading,
|
|
5325
|
+
isFetched: isDataResponseFetched,
|
|
5265
5326
|
isPlaceholderData
|
|
5266
5327
|
} = useGetListData3(data, queryKey, enabled);
|
|
5267
5328
|
useEffect11(() => {
|
|
@@ -5269,65 +5330,76 @@ var many2manyFieldController = (props) => {
|
|
|
5269
5330
|
fetchData();
|
|
5270
5331
|
}
|
|
5271
5332
|
return () => {
|
|
5272
|
-
|
|
5333
|
+
appDispatch(setGroupByDomain(null));
|
|
5334
|
+
setFields((prevFields) => ({
|
|
5335
|
+
...prevFields,
|
|
5336
|
+
[`${aid}_${relation}_popupmany2many`]: null
|
|
5337
|
+
}));
|
|
5338
|
+
appDispatch(setPage(0));
|
|
5273
5339
|
setSelectedRowKeys4([]);
|
|
5274
5340
|
setDomainMany2Many(null);
|
|
5275
5341
|
setIsLoadedData(false);
|
|
5276
5342
|
};
|
|
5277
5343
|
}, [viewResponse]);
|
|
5278
|
-
const { rows, columns, typeTable
|
|
5344
|
+
const { rows, columns, typeTable } = tableController({
|
|
5279
5345
|
data: {
|
|
5280
|
-
fields: viewResponse?.views?.list?.fields,
|
|
5346
|
+
fields: fields?.[`${aid}_${relation}_popupmany2many`] || viewResponse?.views?.list?.fields,
|
|
5281
5347
|
records: dataResponse?.records ?? dataResponse?.groups,
|
|
5282
5348
|
dataModel: viewResponse?.models?.[String(relation)],
|
|
5283
|
-
context:
|
|
5349
|
+
context: { ...env.context, ...context },
|
|
5284
5350
|
typeTable: dataResponse?.groups ? "group" : "list"
|
|
5285
5351
|
}
|
|
5286
5352
|
});
|
|
5287
|
-
const
|
|
5288
|
-
|
|
5289
|
-
model: relation
|
|
5290
|
-
context
|
|
5291
|
-
|
|
5292
|
-
|
|
5293
|
-
|
|
5294
|
-
|
|
5295
|
-
|
|
5296
|
-
|
|
5353
|
+
const dataFormView = {
|
|
5354
|
+
id: null,
|
|
5355
|
+
model: relation,
|
|
5356
|
+
context
|
|
5357
|
+
};
|
|
5358
|
+
const {
|
|
5359
|
+
refetch,
|
|
5360
|
+
data: dataFormViewResponse,
|
|
5361
|
+
isSuccess
|
|
5362
|
+
} = useGetFormView({
|
|
5363
|
+
data: dataFormView,
|
|
5364
|
+
queryKey: [`form-view-action-${relation}`],
|
|
5365
|
+
enabled: false
|
|
5297
5366
|
});
|
|
5367
|
+
useEffect11(() => {
|
|
5368
|
+
if (isSuccess && dataFormViewResponse) {
|
|
5369
|
+
sessionStorage.setItem("actionData", JSON.stringify(dataFormViewResponse));
|
|
5370
|
+
window.location.href = `/form/menu?model=${relation}`;
|
|
5371
|
+
}
|
|
5372
|
+
}, [isSuccess]);
|
|
5298
5373
|
useEffect11(() => {
|
|
5299
5374
|
if (domainMany2Many && !isLoadedData) {
|
|
5300
5375
|
setIsLoadedData(true);
|
|
5301
5376
|
}
|
|
5302
5377
|
}, [domainMany2Many]);
|
|
5303
5378
|
const handleCreateNewOnPage = async () => {
|
|
5379
|
+
try {
|
|
5380
|
+
refetch();
|
|
5381
|
+
} catch (error) {
|
|
5382
|
+
console.log(error);
|
|
5383
|
+
}
|
|
5304
5384
|
};
|
|
5305
5385
|
return {
|
|
5306
5386
|
handleCreateNewOnPage,
|
|
5307
5387
|
optionsObject,
|
|
5308
|
-
totalRows: dataResponse?.length ?? 0,
|
|
5309
5388
|
rows,
|
|
5310
5389
|
columns,
|
|
5311
|
-
onToggleColumnOptional,
|
|
5312
5390
|
typeTable,
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
isPlaceholderData
|
|
5316
|
-
setPage,
|
|
5317
|
-
page,
|
|
5318
|
-
viewData: viewResponse,
|
|
5319
|
-
domain: domainMany2Many,
|
|
5320
|
-
setDomain: setDomainMany2Many,
|
|
5321
|
-
searchController: searchControllers
|
|
5391
|
+
isDataLoading,
|
|
5392
|
+
isDataResponseFetched,
|
|
5393
|
+
isPlaceholderData
|
|
5322
5394
|
};
|
|
5323
5395
|
};
|
|
5324
5396
|
|
|
5325
5397
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5326
5398
|
import { useMemo as useMemo11 } from "react";
|
|
5327
5399
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5328
|
-
import { getEnv as
|
|
5400
|
+
import { getEnv as getEnv8 } from "@fctc/interface-logic/environment";
|
|
5329
5401
|
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5330
|
-
import { evalJSONContext as evalJSONContext5, evalJSONDomain as
|
|
5402
|
+
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain4 } from "@fctc/interface-logic/utils";
|
|
5331
5403
|
var many2manyTagsController = (props) => {
|
|
5332
5404
|
const {
|
|
5333
5405
|
relation,
|
|
@@ -5338,10 +5410,10 @@ var many2manyTagsController = (props) => {
|
|
|
5338
5410
|
placeholderNoOption
|
|
5339
5411
|
} = props;
|
|
5340
5412
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5341
|
-
const env =
|
|
5413
|
+
const env = getEnv8();
|
|
5342
5414
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5343
5415
|
const domainObject = useMemo11(
|
|
5344
|
-
() =>
|
|
5416
|
+
() => evalJSONDomain4(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
5345
5417
|
[domain, formValues]
|
|
5346
5418
|
);
|
|
5347
5419
|
const data = {
|
|
@@ -5383,8 +5455,8 @@ var many2manyTagsController = (props) => {
|
|
|
5383
5455
|
};
|
|
5384
5456
|
|
|
5385
5457
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5386
|
-
import { useState as
|
|
5387
|
-
import { evalJSONDomain as
|
|
5458
|
+
import { useState as useState10 } from "react";
|
|
5459
|
+
import { evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5388
5460
|
var durationController = (props) => {
|
|
5389
5461
|
const { relation, domain, formValues, name, id, model, onRefetch } = props;
|
|
5390
5462
|
const specification = {
|
|
@@ -5394,13 +5466,13 @@ var durationController = (props) => {
|
|
|
5394
5466
|
};
|
|
5395
5467
|
const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
|
|
5396
5468
|
const { env } = (0, provider_exports.useEnv)();
|
|
5397
|
-
const [disabled, setDisabled] =
|
|
5398
|
-
const [modelStatus, setModalStatus] =
|
|
5469
|
+
const [disabled, setDisabled] = useState10(false);
|
|
5470
|
+
const [modelStatus, setModalStatus] = useState10(false);
|
|
5399
5471
|
const queryKey = [`data-status-duration`, specification];
|
|
5400
5472
|
const listDataProps = {
|
|
5401
5473
|
model: relation,
|
|
5402
5474
|
specification,
|
|
5403
|
-
domain:
|
|
5475
|
+
domain: evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues))),
|
|
5404
5476
|
limit: 10,
|
|
5405
5477
|
offset: 0,
|
|
5406
5478
|
fields: "",
|
|
@@ -5501,10 +5573,10 @@ var priorityFieldController = (props) => {
|
|
|
5501
5573
|
};
|
|
5502
5574
|
|
|
5503
5575
|
// src/widget/basic/download-file-field/controller.ts
|
|
5504
|
-
import { useId, useState as
|
|
5576
|
+
import { useId, useState as useState11 } from "react";
|
|
5505
5577
|
var downloadFileController = () => {
|
|
5506
5578
|
const inputId = useId();
|
|
5507
|
-
const [file, setFile] =
|
|
5579
|
+
const [file, setFile] = useState11(null);
|
|
5508
5580
|
const handleFileChange = (e) => {
|
|
5509
5581
|
setFile(e.target.files[0]);
|
|
5510
5582
|
};
|
|
@@ -6436,11 +6508,11 @@ var dateFieldController = (props) => {
|
|
|
6436
6508
|
};
|
|
6437
6509
|
|
|
6438
6510
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6439
|
-
import { useState as
|
|
6511
|
+
import { useState as useState12 } from "react";
|
|
6440
6512
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6441
6513
|
var copyLinkButtonController = (props) => {
|
|
6442
6514
|
const { value, defaultValue } = props;
|
|
6443
|
-
const [isCopied, setIsCopied] =
|
|
6515
|
+
const [isCopied, setIsCopied] = useState12(false);
|
|
6444
6516
|
const handleCopyToClipboard = async (value2) => {
|
|
6445
6517
|
await copyTextToClipboard(value2);
|
|
6446
6518
|
setIsCopied(true);
|
|
@@ -6488,14 +6560,14 @@ var colorFieldController = (props) => {
|
|
|
6488
6560
|
};
|
|
6489
6561
|
|
|
6490
6562
|
// src/widget/basic/binary-field/controller.ts
|
|
6491
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6563
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
|
|
6492
6564
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6493
6565
|
var binaryFieldController = (props) => {
|
|
6494
6566
|
const { name, methods, readonly = false, value } = props;
|
|
6495
6567
|
const inputId = useId2();
|
|
6496
|
-
const [selectedImage, setSelectedImage] =
|
|
6497
|
-
const [initialImage, setInitialImage] =
|
|
6498
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6568
|
+
const [selectedImage, setSelectedImage] = useState13(null);
|
|
6569
|
+
const [initialImage, setInitialImage] = useState13(value || null);
|
|
6570
|
+
const [isInsideTable, setIsInsideTable] = useState13(false);
|
|
6499
6571
|
const { setValue } = methods;
|
|
6500
6572
|
const binaryRef = useRef4(null);
|
|
6501
6573
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6586,7 +6658,7 @@ var binaryFieldController = (props) => {
|
|
|
6586
6658
|
};
|
|
6587
6659
|
|
|
6588
6660
|
// src/widget/advance/table/table-body/controller.ts
|
|
6589
|
-
import { useAppDispatch as
|
|
6661
|
+
import { useAppDispatch as useAppDispatch6, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6590
6662
|
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6591
6663
|
var tableBodyController = (props) => {
|
|
6592
6664
|
const {
|
|
@@ -6599,7 +6671,7 @@ var tableBodyController = (props) => {
|
|
|
6599
6671
|
selectedRowKeysRef,
|
|
6600
6672
|
onClickRow
|
|
6601
6673
|
} = props;
|
|
6602
|
-
const appDispatch =
|
|
6674
|
+
const appDispatch = useAppDispatch6();
|
|
6603
6675
|
const checked = useMemo12(() => {
|
|
6604
6676
|
if (!row?.id) return false;
|
|
6605
6677
|
if (selectedRowKeys?.includes(row.id)) {
|
|
@@ -6654,14 +6726,14 @@ var tableBodyController = (props) => {
|
|
|
6654
6726
|
|
|
6655
6727
|
// src/widget/advance/table/table-head/controller.ts
|
|
6656
6728
|
import {
|
|
6657
|
-
useAppDispatch as
|
|
6729
|
+
useAppDispatch as useAppDispatch7,
|
|
6658
6730
|
useAppSelector as useAppSelector4,
|
|
6659
6731
|
selectSearch as selectSearch3,
|
|
6660
6732
|
setSelectedRowKeys as setSelectedRowKeys2
|
|
6661
6733
|
} from "@fctc/interface-logic/store";
|
|
6662
6734
|
var tableHeadController = (props) => {
|
|
6663
6735
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
6664
|
-
const appDispatch =
|
|
6736
|
+
const appDispatch = useAppDispatch7();
|
|
6665
6737
|
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
6666
6738
|
const handleCheckBoxAll = (event) => {
|
|
6667
6739
|
if (event?.target?.checked && typeTable === "list") {
|
|
@@ -6695,7 +6767,7 @@ var tableHeadController = (props) => {
|
|
|
6695
6767
|
};
|
|
6696
6768
|
|
|
6697
6769
|
// src/widget/advance/table/table-view/controller.ts
|
|
6698
|
-
import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as
|
|
6770
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useRef as useRef5, useState as useState14 } from "react";
|
|
6699
6771
|
import {
|
|
6700
6772
|
useAppSelector as useAppSelector5,
|
|
6701
6773
|
selectSearch as selectSearch4,
|
|
@@ -6703,8 +6775,8 @@ import {
|
|
|
6703
6775
|
} from "@fctc/interface-logic/store";
|
|
6704
6776
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6705
6777
|
var tableController = ({ data }) => {
|
|
6706
|
-
const [rows, setRows] =
|
|
6707
|
-
const [columns, setColumns] =
|
|
6778
|
+
const [rows, setRows] = useState14(data.records || []);
|
|
6779
|
+
const [columns, setColumns] = useState14([]);
|
|
6708
6780
|
const dataModelFields = data.fields?.map((field) => {
|
|
6709
6781
|
return {
|
|
6710
6782
|
...data.dataModel?.[field?.name],
|
|
@@ -6778,7 +6850,7 @@ var tableController = ({ data }) => {
|
|
|
6778
6850
|
};
|
|
6779
6851
|
|
|
6780
6852
|
// src/widget/advance/table/table-group/controller.ts
|
|
6781
|
-
import { useEffect as useEffect15, useMemo as useMemo14, useState as
|
|
6853
|
+
import { useEffect as useEffect15, useMemo as useMemo14, useState as useState15 } from "react";
|
|
6782
6854
|
import {
|
|
6783
6855
|
useOdooDataTransform,
|
|
6784
6856
|
useGetListData as useGetListData2
|
|
@@ -6787,7 +6859,7 @@ import {
|
|
|
6787
6859
|
useAppSelector as useAppSelector6,
|
|
6788
6860
|
selectSearch as selectSearch5,
|
|
6789
6861
|
selectList as selectList4,
|
|
6790
|
-
useAppDispatch as
|
|
6862
|
+
useAppDispatch as useAppDispatch8,
|
|
6791
6863
|
setSelectedRowKeys as setSelectedRowKeys3
|
|
6792
6864
|
} from "@fctc/interface-logic/store";
|
|
6793
6865
|
|
|
@@ -6817,14 +6889,14 @@ var tableGroupController = (props) => {
|
|
|
6817
6889
|
setIsAutoSelect,
|
|
6818
6890
|
selectedRowKeysRef
|
|
6819
6891
|
} = props;
|
|
6820
|
-
const [pageGroup, setPageGroup] =
|
|
6892
|
+
const [pageGroup, setPageGroup] = useState15(0);
|
|
6821
6893
|
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
6822
6894
|
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
6823
|
-
const appDispatch =
|
|
6895
|
+
const appDispatch = useAppDispatch8();
|
|
6824
6896
|
const { toDataJS } = useOdooDataTransform();
|
|
6825
6897
|
const initVal = toDataJS(row, viewData, model);
|
|
6826
|
-
const [isShowGroup, setIsShowGroup] =
|
|
6827
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
6898
|
+
const [isShowGroup, setIsShowGroup] = useState15(false);
|
|
6899
|
+
const [colEmptyGroup, setColEmptyGroup] = useState15({
|
|
6828
6900
|
fromStart: 1,
|
|
6829
6901
|
fromEnd: 1
|
|
6830
6902
|
});
|
|
@@ -6961,28 +7033,26 @@ var import_moment2 = __toESM(require_moment());
|
|
|
6961
7033
|
import { SearchType } from "@fctc/interface-logic/constants";
|
|
6962
7034
|
import {
|
|
6963
7035
|
domainHelper as domainHelper2,
|
|
6964
|
-
|
|
6965
|
-
evalJSONDomain as evalJSONDomain7,
|
|
7036
|
+
evalJSONDomain as evalJSONDomain6,
|
|
6966
7037
|
validateAndParseDate
|
|
6967
7038
|
} from "@fctc/interface-logic/utils";
|
|
6968
|
-
import { useCallback as useCallback3, useEffect as useEffect16, useState as
|
|
7039
|
+
import { useCallback as useCallback3, useEffect as useEffect16, useState as useState16 } from "react";
|
|
6969
7040
|
var searchController = ({
|
|
6970
7041
|
viewData,
|
|
6971
|
-
|
|
6972
|
-
|
|
6973
|
-
|
|
6974
|
-
|
|
7042
|
+
actionData,
|
|
7043
|
+
fieldsList,
|
|
7044
|
+
contextSearch,
|
|
7045
|
+
setSearchMap,
|
|
7046
|
+
searchMap
|
|
6975
7047
|
}) => {
|
|
6976
|
-
const
|
|
6977
|
-
const [
|
|
6978
|
-
const [
|
|
6979
|
-
const [
|
|
6980
|
-
const [
|
|
6981
|
-
const [
|
|
6982
|
-
const
|
|
6983
|
-
const
|
|
6984
|
-
const contextSearch = { ...env.context, ...actionContext };
|
|
6985
|
-
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
7048
|
+
const [filterBy, setFilterBy] = useState16(null);
|
|
7049
|
+
const [searchBy, setSearchBy] = useState16(null);
|
|
7050
|
+
const [groupBy, setGroupBy] = useState16(null);
|
|
7051
|
+
const [selectedTags, setSelectedTags] = useState16(null);
|
|
7052
|
+
const [searchString, setSearchString] = useState16("");
|
|
7053
|
+
const domainAction = actionData?.domain ? Array.isArray(actionData?.domain) ? [...actionData?.domain] : evalJSONDomain6(actionData?.domain, contextSearch) : [];
|
|
7054
|
+
const aid = actionData?.id;
|
|
7055
|
+
const model = actionData?.res_model;
|
|
6986
7056
|
const clearSearch = () => {
|
|
6987
7057
|
setFilterBy([]);
|
|
6988
7058
|
setGroupBy([]);
|
|
@@ -7027,8 +7097,9 @@ var searchController = ({
|
|
|
7027
7097
|
}
|
|
7028
7098
|
};
|
|
7029
7099
|
useEffect16(() => {
|
|
7100
|
+
clearSearch();
|
|
7030
7101
|
fetchData();
|
|
7031
|
-
}, [model, viewData]);
|
|
7102
|
+
}, [aid, model, viewData]);
|
|
7032
7103
|
const onChangeSearchInput = (search_string) => {
|
|
7033
7104
|
setSearchString(search_string);
|
|
7034
7105
|
};
|
|
@@ -7065,27 +7136,27 @@ var searchController = ({
|
|
|
7065
7136
|
};
|
|
7066
7137
|
const formatDomain = () => {
|
|
7067
7138
|
if (domainAction) {
|
|
7068
|
-
const
|
|
7139
|
+
const domain = [];
|
|
7069
7140
|
if (domainAction?.length > 0) {
|
|
7070
7141
|
if (Object.keys(searchMap).length > 0) {
|
|
7071
|
-
|
|
7142
|
+
domain.push("&");
|
|
7072
7143
|
}
|
|
7073
7144
|
domainAction.forEach((domainItem) => {
|
|
7074
|
-
|
|
7145
|
+
domain.push(domainItem);
|
|
7075
7146
|
});
|
|
7076
7147
|
}
|
|
7077
7148
|
Object.keys(searchMap).forEach((key, keyIndex, keys) => {
|
|
7078
7149
|
if (!key?.includes(SearchType.GROUP)) {
|
|
7079
7150
|
if (keys.length > 1 && keyIndex < keys.length - 1) {
|
|
7080
|
-
|
|
7151
|
+
domain.push("&");
|
|
7081
7152
|
}
|
|
7082
7153
|
const valuesOfKey = searchMap[key];
|
|
7083
7154
|
valuesOfKey.forEach((value, index) => {
|
|
7084
7155
|
if (index < valuesOfKey.length - 1) {
|
|
7085
|
-
|
|
7156
|
+
domain.push("|");
|
|
7086
7157
|
}
|
|
7087
7158
|
if (value.domain) {
|
|
7088
|
-
|
|
7159
|
+
domain.push(...value.domain);
|
|
7089
7160
|
return;
|
|
7090
7161
|
}
|
|
7091
7162
|
let valueDomainItem = value?.value;
|
|
@@ -7101,11 +7172,11 @@ var searchController = ({
|
|
|
7101
7172
|
}
|
|
7102
7173
|
}
|
|
7103
7174
|
const operator = value?.modelType === "date" || value?.modelType === "datetime" || value?.modelType === "boolean" || value?.modelType === "integer" ? value?.operator ?? "=" : value.operator ?? "ilike";
|
|
7104
|
-
|
|
7175
|
+
domain.push([value.name, operator, valueDomainItem]);
|
|
7105
7176
|
});
|
|
7106
7177
|
}
|
|
7107
7178
|
});
|
|
7108
|
-
return [...
|
|
7179
|
+
return [...domain];
|
|
7109
7180
|
}
|
|
7110
7181
|
};
|
|
7111
7182
|
const setTagSearch = useCallback3(
|
|
@@ -7136,16 +7207,16 @@ var searchController = ({
|
|
|
7136
7207
|
const contexts = [];
|
|
7137
7208
|
let groupValues = [];
|
|
7138
7209
|
objValues?.forEach((objValue) => {
|
|
7139
|
-
const { context
|
|
7210
|
+
const { context, value, active, groupIndex: groupIndex2, isDefault } = objValue;
|
|
7140
7211
|
const indexAppend = groupIndex2 != null ? groupIndex2 : viewData?.views?.search?.filters_by?.length ?? 0;
|
|
7141
7212
|
contexts.push(
|
|
7142
|
-
...Array.isArray(
|
|
7213
|
+
...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({ group_by: item })) : [context]
|
|
7143
7214
|
);
|
|
7144
7215
|
groupValues[indexAppend] = {
|
|
7145
7216
|
contexts: [
|
|
7146
|
-
...Array.isArray(
|
|
7217
|
+
...Array.isArray(context?.group_by) ? context.group_by.map((item) => ({
|
|
7147
7218
|
group_by: item
|
|
7148
|
-
})) : [
|
|
7219
|
+
})) : [context]
|
|
7149
7220
|
],
|
|
7150
7221
|
strings: isDefault ? [value] : [...groupValues[indexAppend]?.strings ?? [], value]
|
|
7151
7222
|
};
|
|
@@ -7177,34 +7248,34 @@ var searchController = ({
|
|
|
7177
7248
|
}, [searchMap]);
|
|
7178
7249
|
const handleAddTagSearch = (tag) => {
|
|
7179
7250
|
const {
|
|
7180
|
-
domain
|
|
7251
|
+
domain,
|
|
7181
7252
|
groupIndex,
|
|
7182
7253
|
value,
|
|
7183
7254
|
type,
|
|
7184
7255
|
title,
|
|
7185
|
-
context
|
|
7256
|
+
context,
|
|
7186
7257
|
active,
|
|
7187
7258
|
dataIndex
|
|
7188
7259
|
} = tag;
|
|
7189
|
-
const domainFormat = new domainHelper2.Domain(
|
|
7260
|
+
const domainFormat = new domainHelper2.Domain(domain);
|
|
7190
7261
|
if (type === SearchType.FILTER) {
|
|
7191
7262
|
addSearchItems(`${SearchType.FILTER}_${groupIndex}`, {
|
|
7192
7263
|
...tag,
|
|
7193
|
-
domain:
|
|
7264
|
+
domain: domain ? domainFormat.toList(context) : null
|
|
7194
7265
|
});
|
|
7195
7266
|
} else if (type === SearchType.SEARCH) {
|
|
7196
7267
|
addSearchItems(`${SearchType.SEARCH}_${String(dataIndex)}`, {
|
|
7197
7268
|
...tag,
|
|
7198
|
-
domain:
|
|
7199
|
-
...
|
|
7269
|
+
domain: domain ? domainFormat.toList({
|
|
7270
|
+
...context,
|
|
7200
7271
|
self: value
|
|
7201
7272
|
}) : null
|
|
7202
7273
|
});
|
|
7203
7274
|
} else if (type === SearchType.GROUP) {
|
|
7204
7275
|
addSearchItems(`${SearchType.GROUP}`, {
|
|
7205
7276
|
...tag,
|
|
7206
|
-
domain:
|
|
7207
|
-
context
|
|
7277
|
+
domain: domain ? domainFormat.toList({
|
|
7278
|
+
context,
|
|
7208
7279
|
self: value
|
|
7209
7280
|
}) : null
|
|
7210
7281
|
});
|
|
@@ -7224,8 +7295,7 @@ var searchController = ({
|
|
|
7224
7295
|
removeSearchItems,
|
|
7225
7296
|
onSearchString: onChangeSearchInput,
|
|
7226
7297
|
handleAddTagSearch,
|
|
7227
|
-
domain: formatDomain()
|
|
7228
|
-
context: contextSearch
|
|
7298
|
+
domain: formatDomain()
|
|
7229
7299
|
};
|
|
7230
7300
|
};
|
|
7231
7301
|
export {
|