@fctc/widget-logic 2.0.9 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks.d.mts +12 -1
- package/dist/hooks.d.ts +12 -1
- package/dist/hooks.js +179 -6
- package/dist/hooks.mjs +179 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +204 -246
- package/dist/index.mjs +157 -199
- package/dist/types.d.mts +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/widget.d.mts +3 -29
- package/dist/widget.d.ts +3 -29
- package/dist/widget.js +194 -238
- package/dist/widget.mjs +151 -194
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -4072,7 +4072,6 @@ __export(index_exports, {
|
|
|
4072
4072
|
searchController: () => searchController,
|
|
4073
4073
|
setStorageItemAsync: () => setStorageItemAsync,
|
|
4074
4074
|
statusDropdownController: () => statusDropdownController,
|
|
4075
|
-
tableBodyController: () => tableBodyController,
|
|
4076
4075
|
tableController: () => tableController,
|
|
4077
4076
|
tableGroupController: () => tableGroupController,
|
|
4078
4077
|
tableHeadController: () => tableHeadController,
|
|
@@ -4086,6 +4085,7 @@ __export(index_exports, {
|
|
|
4086
4085
|
useGetRowIds: () => useGetRowIds,
|
|
4087
4086
|
useListData: () => useListData,
|
|
4088
4087
|
useMenu: () => useMenu,
|
|
4088
|
+
useMenuItem: () => useMenuItem,
|
|
4089
4089
|
useProfile: () => useProfile,
|
|
4090
4090
|
useSelectionState: () => useSelectionState,
|
|
4091
4091
|
useStorageState: () => useStorageState,
|
|
@@ -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 getEnv5 } from "@fctc/interface-logic/environment";
|
|
4894
|
+
import { useGetActionDetail } from "@fctc/interface-logic/hooks";
|
|
4895
|
+
import { useState as useState5 } 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 = getEnv5().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] = useState5("");
|
|
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 useEffect7, useRef as useRef2 } 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 useEffect8, useState as
|
|
4986
|
+
import { useEffect as useEffect8, useState as useState6 } from "react";
|
|
4924
4987
|
function useDebounce(value, delay) {
|
|
4925
|
-
const [debouncedValue, setDebouncedValue] =
|
|
4988
|
+
const [debouncedValue, setDebouncedValue] = useState6(value);
|
|
4926
4989
|
useEffect8(() => {
|
|
4927
4990
|
const handler = setTimeout(() => {
|
|
4928
4991
|
setDebouncedValue(value);
|
|
@@ -5180,18 +5243,18 @@ var ChevronBottomIcon = ({
|
|
|
5180
5243
|
};
|
|
5181
5244
|
|
|
5182
5245
|
// src/widget/basic/status-dropdown-field/controller.ts
|
|
5183
|
-
import { useEffect as useEffect9, useRef as useRef3, useState as
|
|
5184
|
-
import { getEnv as
|
|
5246
|
+
import { useEffect as useEffect9, useRef as useRef3, useState as useState7 } from "react";
|
|
5247
|
+
import { getEnv as getEnv6 } from "@fctc/interface-logic/environment";
|
|
5185
5248
|
import { useSave } from "@fctc/interface-logic/hooks";
|
|
5186
5249
|
var statusDropdownController = (props) => {
|
|
5187
5250
|
const { selection, isForm, id, model, name, state, onRefetch } = props;
|
|
5188
|
-
const env =
|
|
5251
|
+
const env = getEnv6();
|
|
5189
5252
|
const colors = {
|
|
5190
5253
|
normal: "bg-[#e9ecef]",
|
|
5191
5254
|
done: "bg-primary",
|
|
5192
5255
|
blocked: "bg-red-500"
|
|
5193
5256
|
};
|
|
5194
|
-
const [isOpen, setIsOpen] =
|
|
5257
|
+
const [isOpen, setIsOpen] = useState7(false);
|
|
5195
5258
|
const buttonRef = useRef3(null);
|
|
5196
5259
|
useEffect9(() => {
|
|
5197
5260
|
const handleClickOutside = (event) => {
|
|
@@ -5234,27 +5297,7 @@ var statusDropdownController = (props) => {
|
|
|
5234
5297
|
};
|
|
5235
5298
|
|
|
5236
5299
|
// src/widget/basic/many2one-field/controller.ts
|
|
5237
|
-
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as
|
|
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";
|
|
5300
|
+
import { useCallback as useCallback2, useEffect as useEffect10, useMemo as useMemo9, useState as useState8 } from "react";
|
|
5258
5301
|
|
|
5259
5302
|
// src/provider.ts
|
|
5260
5303
|
var provider_exports = {};
|
|
@@ -5277,13 +5320,13 @@ var many2oneFieldController = (props) => {
|
|
|
5277
5320
|
showDetail
|
|
5278
5321
|
} = props;
|
|
5279
5322
|
const { env } = (0, provider_exports.useEnv)();
|
|
5280
|
-
const [options, setOptions] =
|
|
5281
|
-
const [inputValue, setInputValue] =
|
|
5323
|
+
const [options, setOptions] = useState8([]);
|
|
5324
|
+
const [inputValue, setInputValue] = useState8("");
|
|
5282
5325
|
const [debouncedInputValue] = useDebounce(inputValue, 1e3);
|
|
5283
|
-
const [isShowModalMany2Many, setIsShowModalMany2Many] =
|
|
5284
|
-
const [tempSelectedOption, setTempSelectedOption] =
|
|
5285
|
-
const [domainModal, setDomainModal] =
|
|
5286
|
-
const [domainObject, setDomainObject] =
|
|
5326
|
+
const [isShowModalMany2Many, setIsShowModalMany2Many] = useState8(false);
|
|
5327
|
+
const [tempSelectedOption, setTempSelectedOption] = useState8(null);
|
|
5328
|
+
const [domainModal, setDomainModal] = useState8(null);
|
|
5329
|
+
const [domainObject, setDomainObject] = useState8(null);
|
|
5287
5330
|
const actionData = sessionStorageUtils.getActionData();
|
|
5288
5331
|
const { menuList } = (0, store_exports.useAppSelector)(store_exports.selectNavbar);
|
|
5289
5332
|
const initValue = methods?.getValues(name);
|
|
@@ -5293,7 +5336,7 @@ var many2oneFieldController = (props) => {
|
|
|
5293
5336
|
...fieldContext,
|
|
5294
5337
|
...env?.context
|
|
5295
5338
|
};
|
|
5296
|
-
const { useGetSelection:
|
|
5339
|
+
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5297
5340
|
const data = {
|
|
5298
5341
|
model: relation,
|
|
5299
5342
|
domain: domainObject,
|
|
@@ -5309,7 +5352,7 @@ var many2oneFieldController = (props) => {
|
|
|
5309
5352
|
data: dataOfSelection,
|
|
5310
5353
|
refetch,
|
|
5311
5354
|
isFetching
|
|
5312
|
-
} =
|
|
5355
|
+
} = useGetSelection2({
|
|
5313
5356
|
data,
|
|
5314
5357
|
queryKey,
|
|
5315
5358
|
enabled: false
|
|
@@ -5435,13 +5478,13 @@ var many2oneFieldController = (props) => {
|
|
|
5435
5478
|
};
|
|
5436
5479
|
|
|
5437
5480
|
// src/widget/basic/many2one-button-field/controller.ts
|
|
5438
|
-
import { getEnv as
|
|
5481
|
+
import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
|
|
5439
5482
|
import { useGetSelection } from "@fctc/interface-logic/hooks";
|
|
5440
5483
|
import { evalJSONDomain as evalJSONDomain3, evalJSONContext as evalJSONContext3 } from "@fctc/interface-logic/utils";
|
|
5441
5484
|
var many2oneButtonController = (props) => {
|
|
5442
5485
|
const { domain, methods, relation } = props;
|
|
5443
5486
|
const actionDataString = sessionStorage.getItem("actionData");
|
|
5444
|
-
const env =
|
|
5487
|
+
const env = getEnv7();
|
|
5445
5488
|
const domainObject = evalJSONDomain3(domain, methods?.getValues() || {});
|
|
5446
5489
|
const actionData = actionDataString && actionDataString !== "undefined" ? JSON.parse(actionDataString) : {};
|
|
5447
5490
|
const { data: dataOfSelection } = useGetSelection({
|
|
@@ -5462,7 +5505,7 @@ var many2oneButtonController = (props) => {
|
|
|
5462
5505
|
};
|
|
5463
5506
|
|
|
5464
5507
|
// src/widget/basic/many2many-field/controller.ts
|
|
5465
|
-
import { useEffect as useEffect11, useMemo as useMemo10, useState as
|
|
5508
|
+
import { useEffect as useEffect11, useMemo as useMemo10, useState as useState9 } from "react";
|
|
5466
5509
|
import {
|
|
5467
5510
|
evalJSONContext as evalJSONContext4,
|
|
5468
5511
|
evalJSONDomain as evalJSONDomain4,
|
|
@@ -5475,16 +5518,16 @@ var many2manyFieldController = (props) => {
|
|
|
5475
5518
|
context,
|
|
5476
5519
|
options,
|
|
5477
5520
|
tab,
|
|
5478
|
-
setSelectedRowKeys:
|
|
5521
|
+
setSelectedRowKeys: setSelectedRowKeys3,
|
|
5479
5522
|
groupByDomain,
|
|
5480
5523
|
enabled: enabledCallAPI,
|
|
5481
5524
|
actionData
|
|
5482
5525
|
} = props;
|
|
5483
5526
|
const { env } = (0, provider_exports.useEnv)();
|
|
5484
5527
|
const { useGetView: useGetView2, useGetListData: useGetListData3, useGetFormView } = (0, provider_exports.useService)();
|
|
5485
|
-
const [order, setOrder] =
|
|
5486
|
-
const [page, setPage] =
|
|
5487
|
-
const [domainMany2Many, setDomainMany2Many] =
|
|
5528
|
+
const [order, setOrder] = useState9();
|
|
5529
|
+
const [page, setPage] = useState9(0);
|
|
5530
|
+
const [domainMany2Many, setDomainMany2Many] = useState9(null);
|
|
5488
5531
|
const [debouncedPage] = useDebounce(page, 500);
|
|
5489
5532
|
const contextObject = {
|
|
5490
5533
|
...env.context,
|
|
@@ -5567,7 +5610,7 @@ var many2manyFieldController = (props) => {
|
|
|
5567
5610
|
}
|
|
5568
5611
|
return () => {
|
|
5569
5612
|
setPage(0);
|
|
5570
|
-
|
|
5613
|
+
setSelectedRowKeys3([]);
|
|
5571
5614
|
setDomainMany2Many(null);
|
|
5572
5615
|
};
|
|
5573
5616
|
}, [viewResponse]);
|
|
@@ -5616,8 +5659,6 @@ var many2manyFieldController = (props) => {
|
|
|
5616
5659
|
// src/widget/basic/many2many-tags-field/controller.ts
|
|
5617
5660
|
import { useMemo as useMemo11 } from "react";
|
|
5618
5661
|
import { WIDGETAVATAR, WIDGETCOLOR } from "@fctc/interface-logic/constants";
|
|
5619
|
-
import { getEnv as getEnv7 } from "@fctc/interface-logic/environment";
|
|
5620
|
-
import { useGetSelection as useGetSelection2 } from "@fctc/interface-logic/hooks";
|
|
5621
5662
|
import { evalJSONContext as evalJSONContext5, evalJSONDomain as evalJSONDomain5 } from "@fctc/interface-logic/utils";
|
|
5622
5663
|
var many2manyTagsController = (props) => {
|
|
5623
5664
|
const {
|
|
@@ -5629,7 +5670,8 @@ var many2manyTagsController = (props) => {
|
|
|
5629
5670
|
placeholderNoOption
|
|
5630
5671
|
} = props;
|
|
5631
5672
|
const isUser = relation === "res.users" || relation === "res.partner";
|
|
5632
|
-
const env =
|
|
5673
|
+
const { env } = (0, provider_exports.useEnv)();
|
|
5674
|
+
const { useGetSelection: useGetSelection2 } = (0, provider_exports.useService)();
|
|
5633
5675
|
const addtionalFields = optionsFields ? evalJSONContext5(optionsFields) : null;
|
|
5634
5676
|
const domainObject = useMemo11(
|
|
5635
5677
|
() => evalJSONDomain5(domain, JSON.parse(JSON.stringify(formValues || {}))),
|
|
@@ -5668,16 +5710,15 @@ var many2manyTagsController = (props) => {
|
|
|
5668
5710
|
options,
|
|
5669
5711
|
customNoOptionsMessage,
|
|
5670
5712
|
tranfer,
|
|
5671
|
-
dataOfSelection,
|
|
5672
5713
|
isUser
|
|
5673
5714
|
};
|
|
5674
5715
|
};
|
|
5675
5716
|
|
|
5676
5717
|
// src/widget/basic/status-bar-field/controller.ts
|
|
5677
|
-
import { useState as
|
|
5718
|
+
import { useState as useState10 } from "react";
|
|
5678
5719
|
import { evalJSONDomain as evalJSONDomain6 } from "@fctc/interface-logic/utils";
|
|
5679
5720
|
var durationController = (props) => {
|
|
5680
|
-
const { relation, domain, formValues, name, id, model, onRefetch } = props;
|
|
5721
|
+
const { relation, domain, formValues, name, id, model, onRefetch, enabled } = props;
|
|
5681
5722
|
const specification = {
|
|
5682
5723
|
id: 0,
|
|
5683
5724
|
name: "",
|
|
@@ -5685,8 +5726,8 @@ var durationController = (props) => {
|
|
|
5685
5726
|
};
|
|
5686
5727
|
const { useGetListData: useGetListData3, useChangeStatus } = (0, provider_exports.useService)();
|
|
5687
5728
|
const { env } = (0, provider_exports.useEnv)();
|
|
5688
|
-
const [disabled, setDisabled] =
|
|
5689
|
-
const [modelStatus, setModalStatus] =
|
|
5729
|
+
const [disabled, setDisabled] = useState10(false);
|
|
5730
|
+
const [modelStatus, setModalStatus] = useState10(false);
|
|
5690
5731
|
const queryKey = [`data-status-duration`, specification];
|
|
5691
5732
|
const listDataProps = {
|
|
5692
5733
|
model: relation,
|
|
@@ -5701,7 +5742,11 @@ var durationController = (props) => {
|
|
|
5701
5742
|
},
|
|
5702
5743
|
sort: ""
|
|
5703
5744
|
};
|
|
5704
|
-
const { data: dataResponse } = useGetListData3(
|
|
5745
|
+
const { data: dataResponse } = useGetListData3(
|
|
5746
|
+
listDataProps,
|
|
5747
|
+
queryKey,
|
|
5748
|
+
enabled
|
|
5749
|
+
);
|
|
5705
5750
|
const { mutate: fetchChangeStatus } = useChangeStatus();
|
|
5706
5751
|
const handleClick = async (stage_id) => {
|
|
5707
5752
|
setDisabled(true);
|
|
@@ -5737,41 +5782,28 @@ var durationController = (props) => {
|
|
|
5737
5782
|
};
|
|
5738
5783
|
|
|
5739
5784
|
// src/widget/basic/priority-field/controller.ts
|
|
5740
|
-
import { useSave as useSave2 } from "@fctc/interface-logic/hooks";
|
|
5741
5785
|
import { evalJSONContext as evalJSONContext6 } from "@fctc/interface-logic/utils";
|
|
5742
5786
|
var priorityFieldController = (props) => {
|
|
5743
|
-
const {
|
|
5744
|
-
value,
|
|
5745
|
-
isForm,
|
|
5746
|
-
name,
|
|
5747
|
-
methods,
|
|
5748
|
-
onChange,
|
|
5749
|
-
model,
|
|
5750
|
-
selection,
|
|
5751
|
-
id,
|
|
5752
|
-
actionData,
|
|
5753
|
-
viewData,
|
|
5754
|
-
context
|
|
5755
|
-
} = props;
|
|
5787
|
+
const { name, model, id, actionData, context, onChange, specification } = props;
|
|
5756
5788
|
const _context = { ...evalJSONContext6(actionData?.context) };
|
|
5757
5789
|
const contextObject = { ...context, ..._context };
|
|
5758
|
-
const
|
|
5759
|
-
const label = viewData?.models?.[model]?.[name ?? ""]?.string ?? name;
|
|
5790
|
+
const { useSave: useSave2 } = (0, provider_exports.useService)();
|
|
5760
5791
|
const { mutateAsync: fetchSave } = useSave2();
|
|
5761
5792
|
const savePriorities = async ({
|
|
5762
|
-
value
|
|
5793
|
+
value,
|
|
5763
5794
|
resetPriority
|
|
5764
5795
|
}) => {
|
|
5765
|
-
const priorityValue =
|
|
5796
|
+
const priorityValue = value <= 0 ? 0 : value - 1;
|
|
5766
5797
|
try {
|
|
5767
5798
|
fetchSave({
|
|
5768
5799
|
ids: id ? [id] : [],
|
|
5769
|
-
data: { [name
|
|
5770
|
-
model: model
|
|
5771
|
-
context: contextObject
|
|
5800
|
+
data: { [String(name)]: String(priorityValue) },
|
|
5801
|
+
model: String(model),
|
|
5802
|
+
context: contextObject,
|
|
5803
|
+
specification
|
|
5772
5804
|
});
|
|
5773
5805
|
if (typeof onChange === "function") {
|
|
5774
|
-
onChange(name
|
|
5806
|
+
onChange(String(name), String(priorityValue));
|
|
5775
5807
|
}
|
|
5776
5808
|
} catch (error) {
|
|
5777
5809
|
if (resetPriority) {
|
|
@@ -5780,22 +5812,15 @@ var priorityFieldController = (props) => {
|
|
|
5780
5812
|
}
|
|
5781
5813
|
};
|
|
5782
5814
|
return {
|
|
5783
|
-
|
|
5784
|
-
isForm,
|
|
5785
|
-
methods,
|
|
5786
|
-
defaultPriority,
|
|
5787
|
-
savePriorities,
|
|
5788
|
-
label,
|
|
5789
|
-
id,
|
|
5790
|
-
onChange
|
|
5815
|
+
savePriorities
|
|
5791
5816
|
};
|
|
5792
5817
|
};
|
|
5793
5818
|
|
|
5794
5819
|
// src/widget/basic/download-file-field/controller.ts
|
|
5795
|
-
import { useId, useState as
|
|
5820
|
+
import { useId, useState as useState11 } from "react";
|
|
5796
5821
|
var downloadFileController = () => {
|
|
5797
5822
|
const inputId = useId();
|
|
5798
|
-
const [file, setFile] =
|
|
5823
|
+
const [file, setFile] = useState11(null);
|
|
5799
5824
|
const handleFileChange = (e) => {
|
|
5800
5825
|
setFile(e.target.files[0]);
|
|
5801
5826
|
};
|
|
@@ -6727,11 +6752,11 @@ var dateFieldController = (props) => {
|
|
|
6727
6752
|
};
|
|
6728
6753
|
|
|
6729
6754
|
// src/widget/basic/copy-link-button/controller.ts
|
|
6730
|
-
import { useState as
|
|
6755
|
+
import { useState as useState12 } from "react";
|
|
6731
6756
|
import { copyTextToClipboard } from "@fctc/interface-logic/utils";
|
|
6732
6757
|
var copyLinkButtonController = (props) => {
|
|
6733
6758
|
const { value, defaultValue } = props;
|
|
6734
|
-
const [isCopied, setIsCopied] =
|
|
6759
|
+
const [isCopied, setIsCopied] = useState12(false);
|
|
6735
6760
|
const handleCopyToClipboard = async (value2) => {
|
|
6736
6761
|
await copyTextToClipboard(value2);
|
|
6737
6762
|
setIsCopied(true);
|
|
@@ -6750,11 +6775,11 @@ import { evalJSONContext as evalJSONContext7 } from "@fctc/interface-logic/utils
|
|
|
6750
6775
|
var colorFieldController = (props) => {
|
|
6751
6776
|
const { value, isForm, name, formValues, idForm, model, actionData } = props;
|
|
6752
6777
|
const { env } = (0, provider_exports.useEnv)();
|
|
6753
|
-
const { useSave:
|
|
6778
|
+
const { useSave: useSave2 } = (0, provider_exports.useService)();
|
|
6754
6779
|
const _context = { ...evalJSONContext7(actionData?.context) || {} };
|
|
6755
6780
|
const contextObject = { ...env.context, ..._context };
|
|
6756
6781
|
const idDefault = isForm ? idForm : formValues?.id;
|
|
6757
|
-
const { mutate: onSave } =
|
|
6782
|
+
const { mutate: onSave } = useSave2();
|
|
6758
6783
|
const savePickColor = async (colorObject) => {
|
|
6759
6784
|
const { id } = colorObject;
|
|
6760
6785
|
if (value === id) return;
|
|
@@ -6779,14 +6804,14 @@ var colorFieldController = (props) => {
|
|
|
6779
6804
|
};
|
|
6780
6805
|
|
|
6781
6806
|
// src/widget/basic/binary-field/controller.ts
|
|
6782
|
-
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as
|
|
6807
|
+
import { useEffect as useEffect12, useId as useId2, useRef as useRef4, useState as useState13 } from "react";
|
|
6783
6808
|
import { isBase64Image } from "@fctc/interface-logic/utils";
|
|
6784
6809
|
var binaryFieldController = (props) => {
|
|
6785
6810
|
const { name, methods, readonly = false, value } = props;
|
|
6786
6811
|
const inputId = useId2();
|
|
6787
|
-
const [selectedImage, setSelectedImage] =
|
|
6788
|
-
const [initialImage, setInitialImage] =
|
|
6789
|
-
const [isInsideTable, setIsInsideTable] =
|
|
6812
|
+
const [selectedImage, setSelectedImage] = useState13(null);
|
|
6813
|
+
const [initialImage, setInitialImage] = useState13(value || null);
|
|
6814
|
+
const [isInsideTable, setIsInsideTable] = useState13(false);
|
|
6790
6815
|
const { setValue } = methods;
|
|
6791
6816
|
const binaryRef = useRef4(null);
|
|
6792
6817
|
const convertUrlToBase64 = async (url) => {
|
|
@@ -6876,108 +6901,41 @@ var binaryFieldController = (props) => {
|
|
|
6876
6901
|
};
|
|
6877
6902
|
};
|
|
6878
6903
|
|
|
6879
|
-
// src/widget/advance/table/table-body/controller.ts
|
|
6880
|
-
import { useAppDispatch as useAppDispatch5, setSelectedRowKeys } from "@fctc/interface-logic/store";
|
|
6881
|
-
import { useEffect as useEffect13, useMemo as useMemo12 } from "react";
|
|
6882
|
-
var tableBodyController = (props) => {
|
|
6883
|
-
const {
|
|
6884
|
-
checkedAll,
|
|
6885
|
-
checkboxRef,
|
|
6886
|
-
setIsAutoSelect,
|
|
6887
|
-
selectedRowKeys,
|
|
6888
|
-
row,
|
|
6889
|
-
isAutoSelect,
|
|
6890
|
-
selectedRowKeysRef,
|
|
6891
|
-
onClickRow
|
|
6892
|
-
} = props;
|
|
6893
|
-
const appDispatch = useAppDispatch5();
|
|
6894
|
-
const checked = useMemo12(() => {
|
|
6895
|
-
if (!row?.id) return false;
|
|
6896
|
-
if (selectedRowKeys?.includes(row.id)) {
|
|
6897
|
-
return true;
|
|
6898
|
-
}
|
|
6899
|
-
return checkedAll;
|
|
6900
|
-
}, [row?.id, selectedRowKeys, checkedAll]);
|
|
6901
|
-
const handleCheckBoxSingle = (event) => {
|
|
6902
|
-
event.stopPropagation();
|
|
6903
|
-
if (checkedAll) {
|
|
6904
|
-
checkboxRef.current = "uncheck";
|
|
6905
|
-
setIsAutoSelect(true);
|
|
6906
|
-
return;
|
|
6907
|
-
}
|
|
6908
|
-
const newSelectedRowKeys = selectedRowKeys?.includes(row.id) ? selectedRowKeys?.filter((key) => key !== row.id) : [...selectedRowKeys, row.id];
|
|
6909
|
-
console.log("newSelectedRowKeys", newSelectedRowKeys);
|
|
6910
|
-
appDispatch(setSelectedRowKeys(newSelectedRowKeys));
|
|
6911
|
-
};
|
|
6912
|
-
const handleClickRow = (col, row2) => {
|
|
6913
|
-
onClickRow(col, row2);
|
|
6914
|
-
};
|
|
6915
|
-
useEffect13(() => {
|
|
6916
|
-
if (!row?.id) return;
|
|
6917
|
-
if (isAutoSelect) {
|
|
6918
|
-
if (checkboxRef?.current === "uncheck") {
|
|
6919
|
-
const filtered = selectedRowKeysRef.current.filter(
|
|
6920
|
-
(id) => id !== row.id
|
|
6921
|
-
);
|
|
6922
|
-
selectedRowKeysRef.current = filtered;
|
|
6923
|
-
appDispatch(setSelectedRowKeys(filtered));
|
|
6924
|
-
} else {
|
|
6925
|
-
const unique = Array.from(
|
|
6926
|
-
/* @__PURE__ */ new Set([...selectedRowKeysRef?.current, row?.id])
|
|
6927
|
-
);
|
|
6928
|
-
selectedRowKeysRef.current = unique;
|
|
6929
|
-
appDispatch(setSelectedRowKeys(unique));
|
|
6930
|
-
}
|
|
6931
|
-
}
|
|
6932
|
-
}, [isAutoSelect]);
|
|
6933
|
-
useEffect13(() => {
|
|
6934
|
-
if (!checkedAll) {
|
|
6935
|
-
checkboxRef.current = "enabled";
|
|
6936
|
-
false;
|
|
6937
|
-
}
|
|
6938
|
-
}, [checkedAll]);
|
|
6939
|
-
return {
|
|
6940
|
-
handleCheckBoxSingle,
|
|
6941
|
-
checked,
|
|
6942
|
-
handleClickRow
|
|
6943
|
-
};
|
|
6944
|
-
};
|
|
6945
|
-
|
|
6946
6904
|
// src/widget/advance/table/table-head/controller.ts
|
|
6947
6905
|
import {
|
|
6948
|
-
useAppDispatch as
|
|
6906
|
+
useAppDispatch as useAppDispatch5,
|
|
6949
6907
|
useAppSelector as useAppSelector4,
|
|
6950
6908
|
selectSearch as selectSearch3,
|
|
6951
|
-
setSelectedRowKeys
|
|
6909
|
+
setSelectedRowKeys
|
|
6952
6910
|
} from "@fctc/interface-logic/store";
|
|
6953
6911
|
var tableHeadController = (props) => {
|
|
6954
6912
|
const { typeTable, rows, selectedRowKeysRef } = props;
|
|
6955
|
-
const appDispatch =
|
|
6913
|
+
const appDispatch = useAppDispatch5();
|
|
6956
6914
|
const { groupByDomain } = useAppSelector4(selectSearch3);
|
|
6957
6915
|
const handleCheckBoxAll = (event) => {
|
|
6958
6916
|
if (event?.target?.checked && typeTable === "list") {
|
|
6959
6917
|
const allRowKeys = Array.isArray(rows) ? rows.map((record) => record?.id) : [];
|
|
6960
|
-
appDispatch(
|
|
6918
|
+
appDispatch(setSelectedRowKeys(allRowKeys));
|
|
6961
6919
|
} else if (event?.target?.checked && typeTable === "group") {
|
|
6962
6920
|
const rowsIDs = document.querySelectorAll("tr[data-row-id]");
|
|
6963
6921
|
const ids = Array.from(rowsIDs)?.map(
|
|
6964
6922
|
(row) => Number(row?.getAttribute("data-row-id"))
|
|
6965
6923
|
);
|
|
6966
6924
|
if (ids?.length > 0) {
|
|
6967
|
-
appDispatch(
|
|
6925
|
+
appDispatch(setSelectedRowKeys(ids));
|
|
6968
6926
|
} else {
|
|
6969
6927
|
const sum = countSum(
|
|
6970
6928
|
rows,
|
|
6971
6929
|
typeof groupByDomain === "object" ? groupByDomain?.contexts?.[0]?.group_by : void 0
|
|
6972
6930
|
);
|
|
6973
6931
|
const keys = Array.from({ length: sum }, (_) => void 0);
|
|
6974
|
-
appDispatch(
|
|
6932
|
+
appDispatch(setSelectedRowKeys(keys));
|
|
6975
6933
|
}
|
|
6976
6934
|
if (selectedRowKeysRef) {
|
|
6977
6935
|
selectedRowKeysRef.current = [];
|
|
6978
6936
|
}
|
|
6979
6937
|
} else {
|
|
6980
|
-
appDispatch(
|
|
6938
|
+
appDispatch(setSelectedRowKeys([]));
|
|
6981
6939
|
}
|
|
6982
6940
|
};
|
|
6983
6941
|
return {
|
|
@@ -6986,7 +6944,7 @@ var tableHeadController = (props) => {
|
|
|
6986
6944
|
};
|
|
6987
6945
|
|
|
6988
6946
|
// src/widget/advance/table/table-view/controller.ts
|
|
6989
|
-
import { useEffect as
|
|
6947
|
+
import { useEffect as useEffect13, useMemo as useMemo12, useRef as useRef5, useState as useState14 } from "react";
|
|
6990
6948
|
import {
|
|
6991
6949
|
useAppSelector as useAppSelector5,
|
|
6992
6950
|
selectSearch as selectSearch4,
|
|
@@ -6994,8 +6952,8 @@ import {
|
|
|
6994
6952
|
} from "@fctc/interface-logic/store";
|
|
6995
6953
|
import { domainHelper } from "@fctc/interface-logic/utils";
|
|
6996
6954
|
var tableController = ({ data }) => {
|
|
6997
|
-
const [rows, setRows] =
|
|
6998
|
-
const [columns, setColumns] =
|
|
6955
|
+
const [rows, setRows] = useState14(data.records || []);
|
|
6956
|
+
const [columns, setColumns] = useState14([]);
|
|
6999
6957
|
const dataModelFields = data.fields?.map((field) => {
|
|
7000
6958
|
return {
|
|
7001
6959
|
...data.dataModel?.[field?.name],
|
|
@@ -7023,7 +6981,7 @@ var tableController = ({ data }) => {
|
|
|
7023
6981
|
return item.display_name ? { ...transformedItem, item: item.display_name } : transformedItem;
|
|
7024
6982
|
});
|
|
7025
6983
|
};
|
|
7026
|
-
|
|
6984
|
+
useEffect13(() => {
|
|
7027
6985
|
setRows(transformData(data.records || null));
|
|
7028
6986
|
}, [data.records]);
|
|
7029
6987
|
const handleGetColumns = () => {
|
|
@@ -7044,7 +7002,7 @@ var tableController = ({ data }) => {
|
|
|
7044
7002
|
}
|
|
7045
7003
|
return cols;
|
|
7046
7004
|
};
|
|
7047
|
-
|
|
7005
|
+
useEffect13(() => {
|
|
7048
7006
|
const columns2 = handleGetColumns();
|
|
7049
7007
|
setColumns(columns2);
|
|
7050
7008
|
}, [data.records]);
|
|
@@ -7069,7 +7027,7 @@ var tableController = ({ data }) => {
|
|
|
7069
7027
|
};
|
|
7070
7028
|
|
|
7071
7029
|
// src/widget/advance/table/table-group/controller.ts
|
|
7072
|
-
import { useEffect as
|
|
7030
|
+
import { useEffect as useEffect14, useMemo as useMemo13, useState as useState15 } from "react";
|
|
7073
7031
|
import {
|
|
7074
7032
|
useOdooDataTransform,
|
|
7075
7033
|
useGetListData as useGetListData2
|
|
@@ -7078,8 +7036,8 @@ import {
|
|
|
7078
7036
|
useAppSelector as useAppSelector6,
|
|
7079
7037
|
selectSearch as selectSearch5,
|
|
7080
7038
|
selectList as selectList4,
|
|
7081
|
-
useAppDispatch as
|
|
7082
|
-
setSelectedRowKeys as
|
|
7039
|
+
useAppDispatch as useAppDispatch6,
|
|
7040
|
+
setSelectedRowKeys as setSelectedRowKeys2
|
|
7083
7041
|
} from "@fctc/interface-logic/store";
|
|
7084
7042
|
|
|
7085
7043
|
// src/environment.ts
|
|
@@ -7108,18 +7066,18 @@ var tableGroupController = (props) => {
|
|
|
7108
7066
|
setIsAutoSelect,
|
|
7109
7067
|
selectedRowKeysRef
|
|
7110
7068
|
} = props;
|
|
7111
|
-
const [pageGroup, setPageGroup] =
|
|
7069
|
+
const [pageGroup, setPageGroup] = useState15(0);
|
|
7112
7070
|
const { groupByDomain, selectedTags } = useAppSelector6(selectSearch5);
|
|
7113
7071
|
const { selectedRowKeys } = useAppSelector6(selectList4);
|
|
7114
|
-
const appDispatch =
|
|
7072
|
+
const appDispatch = useAppDispatch6();
|
|
7115
7073
|
const { toDataJS } = useOdooDataTransform();
|
|
7116
7074
|
const initVal = toDataJS(row, viewData, model);
|
|
7117
|
-
const [isShowGroup, setIsShowGroup] =
|
|
7118
|
-
const [colEmptyGroup, setColEmptyGroup] =
|
|
7075
|
+
const [isShowGroup, setIsShowGroup] = useState15(false);
|
|
7076
|
+
const [colEmptyGroup, setColEmptyGroup] = useState15({
|
|
7119
7077
|
fromStart: 1,
|
|
7120
7078
|
fromEnd: 1
|
|
7121
7079
|
});
|
|
7122
|
-
const processedData =
|
|
7080
|
+
const processedData = useMemo13(() => {
|
|
7123
7081
|
const calculateColSpanEmpty = () => {
|
|
7124
7082
|
const startIndex = columns.findIndex(
|
|
7125
7083
|
(col) => col.field.type === "monetary" && typeof row[col.key] === "number" || col.field.aggregator === "sum"
|
|
@@ -7134,7 +7092,7 @@ var tableGroupController = (props) => {
|
|
|
7134
7092
|
};
|
|
7135
7093
|
return calculateColSpanEmpty();
|
|
7136
7094
|
}, [columns, row]);
|
|
7137
|
-
const shouldFetchData =
|
|
7095
|
+
const shouldFetchData = useMemo13(() => {
|
|
7138
7096
|
return !!isShowGroup;
|
|
7139
7097
|
}, [isShowGroup]);
|
|
7140
7098
|
const enabled = shouldFetchData && !!processedData;
|
|
@@ -7174,7 +7132,7 @@ var tableGroupController = (props) => {
|
|
|
7174
7132
|
}
|
|
7175
7133
|
});
|
|
7176
7134
|
const leftPadding = level > 1 ? level * 8 + "px" : "0px";
|
|
7177
|
-
|
|
7135
|
+
useEffect14(() => {
|
|
7178
7136
|
if (isShowGroup && selectedTags?.length > 0) {
|
|
7179
7137
|
setIsShowGroup(false);
|
|
7180
7138
|
}
|
|
@@ -7197,24 +7155,24 @@ var tableGroupController = (props) => {
|
|
|
7197
7155
|
const filteredIds = selectedRowKeys.filter(
|
|
7198
7156
|
(id) => !ids.includes(id)
|
|
7199
7157
|
);
|
|
7200
|
-
appDispatch(
|
|
7158
|
+
appDispatch(setSelectedRowKeys2(filteredIds));
|
|
7201
7159
|
} else if (!isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && checkedAll && !allIdsNull && isQueryFetched) {
|
|
7202
7160
|
const clonedKeys = [...selectedRowKeys];
|
|
7203
|
-
appDispatch(
|
|
7204
|
-
setTimeout(() => appDispatch(
|
|
7161
|
+
appDispatch(setSelectedRowKeys2([...clonedKeys, -1]));
|
|
7162
|
+
setTimeout(() => appDispatch(setSelectedRowKeys2(clonedKeys)), 500);
|
|
7205
7163
|
} else if (isShowGroup && selectedRowKeys?.length > 0 && typeTableGroup === "list" && !checkedAll && !allIdsNull) {
|
|
7206
7164
|
const filteredKeys = selectedRowKeys.filter((id) => id > -1);
|
|
7207
|
-
appDispatch(
|
|
7165
|
+
appDispatch(setSelectedRowKeys2(filteredKeys));
|
|
7208
7166
|
}
|
|
7209
7167
|
toggleShowGroup();
|
|
7210
7168
|
};
|
|
7211
|
-
|
|
7169
|
+
useEffect14(() => {
|
|
7212
7170
|
if (!isQueryFetched || !rowsGroup || !checkedAll || allIdsNull || typeTableGroup === "group") {
|
|
7213
7171
|
return;
|
|
7214
7172
|
}
|
|
7215
7173
|
const clonedKeys = [...selectedRowKeys];
|
|
7216
|
-
|
|
7217
|
-
setTimeout(() =>
|
|
7174
|
+
setSelectedRowKeys2([...clonedKeys, -1]);
|
|
7175
|
+
setTimeout(() => setSelectedRowKeys2(clonedKeys), 500);
|
|
7218
7176
|
}, [isQueryFetched]);
|
|
7219
7177
|
return {
|
|
7220
7178
|
handleExpandChildGroup,
|
|
@@ -7256,7 +7214,7 @@ import {
|
|
|
7256
7214
|
evalJSONDomain as evalJSONDomain7,
|
|
7257
7215
|
validateAndParseDate
|
|
7258
7216
|
} from "@fctc/interface-logic/utils";
|
|
7259
|
-
import { useCallback as useCallback3, useEffect as
|
|
7217
|
+
import { useCallback as useCallback3, useEffect as useEffect15, useState as useState16 } from "react";
|
|
7260
7218
|
var searchController = ({
|
|
7261
7219
|
viewData,
|
|
7262
7220
|
model,
|
|
@@ -7265,12 +7223,12 @@ var searchController = ({
|
|
|
7265
7223
|
fieldsList
|
|
7266
7224
|
}) => {
|
|
7267
7225
|
const { env } = (0, provider_exports.useEnv)();
|
|
7268
|
-
const [filterBy, setFilterBy] =
|
|
7269
|
-
const [searchBy, setSearchBy] =
|
|
7270
|
-
const [groupBy, setGroupBy] =
|
|
7271
|
-
const [selectedTags, setSelectedTags] =
|
|
7272
|
-
const [searchString, setSearchString] =
|
|
7273
|
-
const [searchMap, setSearchMap] =
|
|
7226
|
+
const [filterBy, setFilterBy] = useState16(null);
|
|
7227
|
+
const [searchBy, setSearchBy] = useState16(null);
|
|
7228
|
+
const [groupBy, setGroupBy] = useState16(null);
|
|
7229
|
+
const [selectedTags, setSelectedTags] = useState16(null);
|
|
7230
|
+
const [searchString, setSearchString] = useState16("");
|
|
7231
|
+
const [searchMap, setSearchMap] = useState16({});
|
|
7274
7232
|
const actionContext = typeof context === "string" ? evalJSONContext8(context) : context;
|
|
7275
7233
|
const contextSearch = { ...env.context, ...actionContext };
|
|
7276
7234
|
const domainAction = domain ? Array.isArray(domain) ? [...domain] : evalJSONDomain7(domain, contextSearch) : [];
|
|
@@ -7317,7 +7275,7 @@ var searchController = ({
|
|
|
7317
7275
|
}
|
|
7318
7276
|
}
|
|
7319
7277
|
};
|
|
7320
|
-
|
|
7278
|
+
useEffect15(() => {
|
|
7321
7279
|
fetchData();
|
|
7322
7280
|
}, [model, viewData]);
|
|
7323
7281
|
const onChangeSearchInput = (search_string) => {
|
|
@@ -7462,7 +7420,7 @@ var searchController = ({
|
|
|
7462
7420
|
},
|
|
7463
7421
|
[searchMap]
|
|
7464
7422
|
);
|
|
7465
|
-
|
|
7423
|
+
useEffect15(() => {
|
|
7466
7424
|
setTagSearch(searchMap);
|
|
7467
7425
|
}, [searchMap]);
|
|
7468
7426
|
const handleAddTagSearch = (tag) => {
|
|
@@ -7582,7 +7540,6 @@ export {
|
|
|
7582
7540
|
searchController,
|
|
7583
7541
|
setStorageItemAsync,
|
|
7584
7542
|
statusDropdownController,
|
|
7585
|
-
tableBodyController,
|
|
7586
7543
|
tableController,
|
|
7587
7544
|
tableGroupController,
|
|
7588
7545
|
tableHeadController,
|
|
@@ -7596,6 +7553,7 @@ export {
|
|
|
7596
7553
|
useGetRowIds,
|
|
7597
7554
|
useListData,
|
|
7598
7555
|
useMenu,
|
|
7556
|
+
useMenuItem,
|
|
7599
7557
|
useProfile,
|
|
7600
7558
|
useSelectionState,
|
|
7601
7559
|
useStorageState,
|