@fctc/widget-logic 1.1.0 → 1.3.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/action.js +4 -4
- package/dist/action.mjs +4 -4
- package/dist/common.d.mts +13 -0
- package/dist/common.d.ts +13 -0
- package/dist/common.js +60 -0
- package/dist/common.mjs +33 -0
- package/dist/form.js +3 -3
- package/dist/form.mjs +3 -3
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +48 -21
- package/dist/index.mjs +47 -21
- package/dist/table.d.mts +28 -3
- package/dist/table.d.ts +28 -3
- package/dist/table.js +8 -14
- package/dist/table.mjs +8 -14
- package/package.json +6 -1
package/dist/action.js
CHANGED
|
@@ -27,7 +27,7 @@ __export(action_exports, {
|
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(action_exports);
|
|
29
29
|
|
|
30
|
-
// src/action/use-archieve-row.
|
|
30
|
+
// src/action/use-archieve-row.ts
|
|
31
31
|
var import_interface_logic = require("@fctc/interface-logic");
|
|
32
32
|
var useArchieveHandler = ({
|
|
33
33
|
data,
|
|
@@ -54,7 +54,7 @@ var useArchieveHandler = ({
|
|
|
54
54
|
return handleDuplicateRecord;
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
// src/action/use-duplicate-row.
|
|
57
|
+
// src/action/use-duplicate-row.ts
|
|
58
58
|
var import_interface_logic2 = require("@fctc/interface-logic");
|
|
59
59
|
var useDuplicateRowHandler = ({
|
|
60
60
|
data,
|
|
@@ -80,7 +80,7 @@ var useDuplicateRowHandler = ({
|
|
|
80
80
|
return handleDuplicateRecord;
|
|
81
81
|
};
|
|
82
82
|
|
|
83
|
-
// src/action/use-get-field-export.
|
|
83
|
+
// src/action/use-get-field-export.ts
|
|
84
84
|
var import_interface_logic3 = require("@fctc/interface-logic");
|
|
85
85
|
var useGetFieldExportHandler = ({
|
|
86
86
|
data,
|
|
@@ -113,7 +113,7 @@ var useGetFieldExportHandler = ({
|
|
|
113
113
|
return handleGetFieldExport;
|
|
114
114
|
};
|
|
115
115
|
|
|
116
|
-
// src/action/use-export-excel.
|
|
116
|
+
// src/action/use-export-excel.ts
|
|
117
117
|
var import_interface_logic4 = require("@fctc/interface-logic");
|
|
118
118
|
var useExportExcelHandler = ({
|
|
119
119
|
data,
|
package/dist/action.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/action/use-archieve-row.
|
|
1
|
+
// src/action/use-archieve-row.ts
|
|
2
2
|
import { useButton } from "@fctc/interface-logic";
|
|
3
3
|
var useArchieveHandler = ({
|
|
4
4
|
data,
|
|
@@ -25,7 +25,7 @@ var useArchieveHandler = ({
|
|
|
25
25
|
return handleDuplicateRecord;
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
// src/action/use-duplicate-row.
|
|
28
|
+
// src/action/use-duplicate-row.ts
|
|
29
29
|
import { useDuplicateRecord } from "@fctc/interface-logic";
|
|
30
30
|
var useDuplicateRowHandler = ({
|
|
31
31
|
data,
|
|
@@ -51,7 +51,7 @@ var useDuplicateRowHandler = ({
|
|
|
51
51
|
return handleDuplicateRecord;
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
// src/action/use-get-field-export.
|
|
54
|
+
// src/action/use-get-field-export.ts
|
|
55
55
|
import { useGetFieldExport } from "@fctc/interface-logic";
|
|
56
56
|
var useGetFieldExportHandler = ({
|
|
57
57
|
data,
|
|
@@ -84,7 +84,7 @@ var useGetFieldExportHandler = ({
|
|
|
84
84
|
return handleGetFieldExport;
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
// src/action/use-export-excel.
|
|
87
|
+
// src/action/use-export-excel.ts
|
|
88
88
|
import { evalJSONDomain, useExportExcel } from "@fctc/interface-logic";
|
|
89
89
|
var useExportExcelHandler = ({
|
|
90
90
|
data,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
|
|
3
|
+
declare const DEFAULT_EVENTS: readonly ["mousedown", "touchstart"];
|
|
4
|
+
type EventType = (typeof DEFAULT_EVENTS)[number];
|
|
5
|
+
interface UseClickOutsideOptions {
|
|
6
|
+
handler: (event?: Event) => void;
|
|
7
|
+
events?: readonly EventType[];
|
|
8
|
+
nodes?: (HTMLDivElement | null)[];
|
|
9
|
+
refs?: any;
|
|
10
|
+
}
|
|
11
|
+
declare const useClickOutside: ({ handler, events, nodes, refs, }: UseClickOutsideOptions) => RefObject<HTMLDivElement | null>;
|
|
12
|
+
|
|
13
|
+
export { useClickOutside };
|
package/dist/common.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
|
|
3
|
+
declare const DEFAULT_EVENTS: readonly ["mousedown", "touchstart"];
|
|
4
|
+
type EventType = (typeof DEFAULT_EVENTS)[number];
|
|
5
|
+
interface UseClickOutsideOptions {
|
|
6
|
+
handler: (event?: Event) => void;
|
|
7
|
+
events?: readonly EventType[];
|
|
8
|
+
nodes?: (HTMLDivElement | null)[];
|
|
9
|
+
refs?: any;
|
|
10
|
+
}
|
|
11
|
+
declare const useClickOutside: ({ handler, events, nodes, refs, }: UseClickOutsideOptions) => RefObject<HTMLDivElement | null>;
|
|
12
|
+
|
|
13
|
+
export { useClickOutside };
|
package/dist/common.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/common.ts
|
|
21
|
+
var common_exports = {};
|
|
22
|
+
__export(common_exports, {
|
|
23
|
+
useClickOutside: () => useClickOutside
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(common_exports);
|
|
26
|
+
|
|
27
|
+
// src/common/use-click-outside.ts
|
|
28
|
+
var import_react = require("react");
|
|
29
|
+
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
30
|
+
var useClickOutside = ({
|
|
31
|
+
handler,
|
|
32
|
+
events = DEFAULT_EVENTS,
|
|
33
|
+
nodes = [],
|
|
34
|
+
refs
|
|
35
|
+
}) => {
|
|
36
|
+
const ref = (0, import_react.useRef)(null);
|
|
37
|
+
(0, import_react.useEffect)(() => {
|
|
38
|
+
const listener = (event) => {
|
|
39
|
+
const { target } = event;
|
|
40
|
+
if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (!(target instanceof HTMLElement)) return;
|
|
44
|
+
const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
|
|
45
|
+
const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
|
|
46
|
+
if (shouldTrigger && !shouldIgnore) {
|
|
47
|
+
handler(event);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
events.forEach((event) => document.addEventListener(event, listener));
|
|
51
|
+
return () => {
|
|
52
|
+
events.forEach((event) => document.removeEventListener(event, listener));
|
|
53
|
+
};
|
|
54
|
+
}, [handler, nodes, events]);
|
|
55
|
+
return ref;
|
|
56
|
+
};
|
|
57
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
58
|
+
0 && (module.exports = {
|
|
59
|
+
useClickOutside
|
|
60
|
+
});
|
package/dist/common.mjs
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// src/common/use-click-outside.ts
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
4
|
+
var useClickOutside = ({
|
|
5
|
+
handler,
|
|
6
|
+
events = DEFAULT_EVENTS,
|
|
7
|
+
nodes = [],
|
|
8
|
+
refs
|
|
9
|
+
}) => {
|
|
10
|
+
const ref = useRef(null);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const listener = (event) => {
|
|
13
|
+
const { target } = event;
|
|
14
|
+
if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!(target instanceof HTMLElement)) return;
|
|
18
|
+
const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
|
|
19
|
+
const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
|
|
20
|
+
if (shouldTrigger && !shouldIgnore) {
|
|
21
|
+
handler(event);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
events.forEach((event) => document.addEventListener(event, listener));
|
|
25
|
+
return () => {
|
|
26
|
+
events.forEach((event) => document.removeEventListener(event, listener));
|
|
27
|
+
};
|
|
28
|
+
}, [handler, nodes, events]);
|
|
29
|
+
return ref;
|
|
30
|
+
};
|
|
31
|
+
export {
|
|
32
|
+
useClickOutside
|
|
33
|
+
};
|
package/dist/form.js
CHANGED
|
@@ -26,7 +26,7 @@ __export(form_exports, {
|
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(form_exports);
|
|
28
28
|
|
|
29
|
-
// src/widget/form/use-on-change-form.
|
|
29
|
+
// src/widget/form/use-on-change-form.ts
|
|
30
30
|
var import_interface_logic = require("@fctc/interface-logic");
|
|
31
31
|
var UseOnChangeFormHandler = ({
|
|
32
32
|
data,
|
|
@@ -55,7 +55,7 @@ var UseOnChangeFormHandler = ({
|
|
|
55
55
|
return handleOnChangeForm;
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
// src/widget/form/use-save-form.
|
|
58
|
+
// src/widget/form/use-save-form.ts
|
|
59
59
|
var import_interface_logic2 = require("@fctc/interface-logic");
|
|
60
60
|
var useSaveFormHandler = ({
|
|
61
61
|
data,
|
|
@@ -83,7 +83,7 @@ var useSaveFormHandler = ({
|
|
|
83
83
|
return handleSaveForm;
|
|
84
84
|
};
|
|
85
85
|
|
|
86
|
-
// src/widget/form/use-remove-row.
|
|
86
|
+
// src/widget/form/use-remove-row.ts
|
|
87
87
|
var import_interface_logic3 = require("@fctc/interface-logic");
|
|
88
88
|
var useRemoveRowHandler = ({
|
|
89
89
|
data,
|
package/dist/form.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/widget/form/use-on-change-form.
|
|
1
|
+
// src/widget/form/use-on-change-form.ts
|
|
2
2
|
import { useOnChangeForm } from "@fctc/interface-logic";
|
|
3
3
|
var UseOnChangeFormHandler = ({
|
|
4
4
|
data,
|
|
@@ -27,7 +27,7 @@ var UseOnChangeFormHandler = ({
|
|
|
27
27
|
return handleOnChangeForm;
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
// src/widget/form/use-save-form.
|
|
30
|
+
// src/widget/form/use-save-form.ts
|
|
31
31
|
import { useSave } from "@fctc/interface-logic";
|
|
32
32
|
var useSaveFormHandler = ({
|
|
33
33
|
data,
|
|
@@ -55,7 +55,7 @@ var useSaveFormHandler = ({
|
|
|
55
55
|
return handleSaveForm;
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
// src/widget/form/use-remove-row.
|
|
58
|
+
// src/widget/form/use-remove-row.ts
|
|
59
59
|
import { useRemoveRow } from "@fctc/interface-logic";
|
|
60
60
|
var useRemoveRowHandler = ({
|
|
61
61
|
data,
|
package/dist/index.d.mts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { useArchieveHandler, useDuplicateRowHandler, useExportExcelHandler, useGetFieldExportHandler } from './action.mjs';
|
|
2
2
|
export { UseOnChangeFormHandler, useRemoveRowHandler, useSaveFormHandler } from './form.mjs';
|
|
3
3
|
export { useTableHandler } from './table.mjs';
|
|
4
|
+
export { useClickOutside } from './common.mjs';
|
|
5
|
+
import 'react';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { useArchieveHandler, useDuplicateRowHandler, useExportExcelHandler, useGetFieldExportHandler } from './action.js';
|
|
2
2
|
export { UseOnChangeFormHandler, useRemoveRowHandler, useSaveFormHandler } from './form.js';
|
|
3
3
|
export { useTableHandler } from './table.js';
|
|
4
|
+
export { useClickOutside } from './common.js';
|
|
5
|
+
import 'react';
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,7 @@ var index_exports = {};
|
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
UseOnChangeFormHandler: () => UseOnChangeFormHandler,
|
|
24
24
|
useArchieveHandler: () => useArchieveHandler,
|
|
25
|
+
useClickOutside: () => useClickOutside,
|
|
25
26
|
useDuplicateRowHandler: () => useDuplicateRowHandler,
|
|
26
27
|
useExportExcelHandler: () => useExportExcelHandler,
|
|
27
28
|
useGetFieldExportHandler: () => useGetFieldExportHandler,
|
|
@@ -31,7 +32,7 @@ __export(index_exports, {
|
|
|
31
32
|
});
|
|
32
33
|
module.exports = __toCommonJS(index_exports);
|
|
33
34
|
|
|
34
|
-
// src/action/use-archieve-row.
|
|
35
|
+
// src/action/use-archieve-row.ts
|
|
35
36
|
var import_interface_logic = require("@fctc/interface-logic");
|
|
36
37
|
var useArchieveHandler = ({
|
|
37
38
|
data,
|
|
@@ -58,7 +59,7 @@ var useArchieveHandler = ({
|
|
|
58
59
|
return handleDuplicateRecord;
|
|
59
60
|
};
|
|
60
61
|
|
|
61
|
-
// src/action/use-duplicate-row.
|
|
62
|
+
// src/action/use-duplicate-row.ts
|
|
62
63
|
var import_interface_logic2 = require("@fctc/interface-logic");
|
|
63
64
|
var useDuplicateRowHandler = ({
|
|
64
65
|
data,
|
|
@@ -84,7 +85,7 @@ var useDuplicateRowHandler = ({
|
|
|
84
85
|
return handleDuplicateRecord;
|
|
85
86
|
};
|
|
86
87
|
|
|
87
|
-
// src/action/use-get-field-export.
|
|
88
|
+
// src/action/use-get-field-export.ts
|
|
88
89
|
var import_interface_logic3 = require("@fctc/interface-logic");
|
|
89
90
|
var useGetFieldExportHandler = ({
|
|
90
91
|
data,
|
|
@@ -117,7 +118,7 @@ var useGetFieldExportHandler = ({
|
|
|
117
118
|
return handleGetFieldExport;
|
|
118
119
|
};
|
|
119
120
|
|
|
120
|
-
// src/action/use-export-excel.
|
|
121
|
+
// src/action/use-export-excel.ts
|
|
121
122
|
var import_interface_logic4 = require("@fctc/interface-logic");
|
|
122
123
|
var useExportExcelHandler = ({
|
|
123
124
|
data,
|
|
@@ -148,7 +149,7 @@ var useExportExcelHandler = ({
|
|
|
148
149
|
return handleExport;
|
|
149
150
|
};
|
|
150
151
|
|
|
151
|
-
// src/widget/form/use-on-change-form.
|
|
152
|
+
// src/widget/form/use-on-change-form.ts
|
|
152
153
|
var import_interface_logic5 = require("@fctc/interface-logic");
|
|
153
154
|
var UseOnChangeFormHandler = ({
|
|
154
155
|
data,
|
|
@@ -177,7 +178,7 @@ var UseOnChangeFormHandler = ({
|
|
|
177
178
|
return handleOnChangeForm;
|
|
178
179
|
};
|
|
179
180
|
|
|
180
|
-
// src/widget/form/use-save-form.
|
|
181
|
+
// src/widget/form/use-save-form.ts
|
|
181
182
|
var import_interface_logic6 = require("@fctc/interface-logic");
|
|
182
183
|
var useSaveFormHandler = ({
|
|
183
184
|
data,
|
|
@@ -205,7 +206,7 @@ var useSaveFormHandler = ({
|
|
|
205
206
|
return handleSaveForm;
|
|
206
207
|
};
|
|
207
208
|
|
|
208
|
-
// src/widget/form/use-remove-row.
|
|
209
|
+
// src/widget/form/use-remove-row.ts
|
|
209
210
|
var import_interface_logic7 = require("@fctc/interface-logic");
|
|
210
211
|
var useRemoveRowHandler = ({
|
|
211
212
|
data,
|
|
@@ -231,7 +232,7 @@ var useRemoveRowHandler = ({
|
|
|
231
232
|
return handleRemoveRow;
|
|
232
233
|
};
|
|
233
234
|
|
|
234
|
-
// src/widget/table/use-table.
|
|
235
|
+
// src/widget/table/use-table.ts
|
|
235
236
|
var import_interface_logic8 = require("@fctc/interface-logic");
|
|
236
237
|
var import_react = require("react");
|
|
237
238
|
function mergeButtons(fields) {
|
|
@@ -245,20 +246,14 @@ function mergeButtons(fields) {
|
|
|
245
246
|
}
|
|
246
247
|
return others;
|
|
247
248
|
}
|
|
248
|
-
var useTableHandler = ({
|
|
249
|
-
fields,
|
|
250
|
-
data,
|
|
251
|
-
dataModel,
|
|
252
|
-
context,
|
|
253
|
-
typeTable
|
|
254
|
-
}) => {
|
|
249
|
+
var useTableHandler = ({ data }) => {
|
|
255
250
|
const [rows, setRows] = (0, import_react.useState)(data || []);
|
|
256
251
|
const [columns, setColumns] = (0, import_react.useState)([]);
|
|
257
|
-
const dataModelFields = fields?.map((field) => {
|
|
252
|
+
const dataModelFields = data.fields?.map((field) => {
|
|
258
253
|
return {
|
|
259
|
-
...dataModel?.[field?.name],
|
|
254
|
+
...data.dataModel?.[field?.name],
|
|
260
255
|
...field,
|
|
261
|
-
string: field?.string || dataModel?.[field?.name]?.string
|
|
256
|
+
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
262
257
|
};
|
|
263
258
|
});
|
|
264
259
|
const mergeFields = mergeButtons(dataModelFields);
|
|
@@ -271,7 +266,7 @@ var useTableHandler = ({
|
|
|
271
266
|
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
272
267
|
transformedItem[field] = item[field];
|
|
273
268
|
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
274
|
-
if (typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
269
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
275
270
|
transformedItem["string"] = item[field]?.[1];
|
|
276
271
|
}
|
|
277
272
|
transformedItem[field] = item[field];
|
|
@@ -288,7 +283,7 @@ var useTableHandler = ({
|
|
|
288
283
|
let cols = [];
|
|
289
284
|
try {
|
|
290
285
|
cols = mergeFields?.filter((item) => {
|
|
291
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_interface_logic8.domainHelper.matchDomains(context, item?.column_invisible) : item?.invisible ? import_interface_logic8.domainHelper.matchDomains(context, item?.invisible) : false);
|
|
286
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_interface_logic8.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_interface_logic8.domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
292
287
|
})?.map((field) => {
|
|
293
288
|
return {
|
|
294
289
|
name: field?.name,
|
|
@@ -322,13 +317,45 @@ var useTableHandler = ({
|
|
|
322
317
|
rows,
|
|
323
318
|
columns,
|
|
324
319
|
onToggleColumnOptional,
|
|
325
|
-
typeTable
|
|
320
|
+
typeTable: data.typeTable
|
|
326
321
|
};
|
|
327
322
|
};
|
|
323
|
+
|
|
324
|
+
// src/common/use-click-outside.ts
|
|
325
|
+
var import_react2 = require("react");
|
|
326
|
+
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
327
|
+
var useClickOutside = ({
|
|
328
|
+
handler,
|
|
329
|
+
events = DEFAULT_EVENTS,
|
|
330
|
+
nodes = [],
|
|
331
|
+
refs
|
|
332
|
+
}) => {
|
|
333
|
+
const ref = (0, import_react2.useRef)(null);
|
|
334
|
+
(0, import_react2.useEffect)(() => {
|
|
335
|
+
const listener = (event) => {
|
|
336
|
+
const { target } = event;
|
|
337
|
+
if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
if (!(target instanceof HTMLElement)) return;
|
|
341
|
+
const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
|
|
342
|
+
const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
|
|
343
|
+
if (shouldTrigger && !shouldIgnore) {
|
|
344
|
+
handler(event);
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
events.forEach((event) => document.addEventListener(event, listener));
|
|
348
|
+
return () => {
|
|
349
|
+
events.forEach((event) => document.removeEventListener(event, listener));
|
|
350
|
+
};
|
|
351
|
+
}, [handler, nodes, events]);
|
|
352
|
+
return ref;
|
|
353
|
+
};
|
|
328
354
|
// Annotate the CommonJS export names for ESM import in node:
|
|
329
355
|
0 && (module.exports = {
|
|
330
356
|
UseOnChangeFormHandler,
|
|
331
357
|
useArchieveHandler,
|
|
358
|
+
useClickOutside,
|
|
332
359
|
useDuplicateRowHandler,
|
|
333
360
|
useExportExcelHandler,
|
|
334
361
|
useGetFieldExportHandler,
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/action/use-archieve-row.
|
|
1
|
+
// src/action/use-archieve-row.ts
|
|
2
2
|
import { useButton } from "@fctc/interface-logic";
|
|
3
3
|
var useArchieveHandler = ({
|
|
4
4
|
data,
|
|
@@ -25,7 +25,7 @@ var useArchieveHandler = ({
|
|
|
25
25
|
return handleDuplicateRecord;
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
// src/action/use-duplicate-row.
|
|
28
|
+
// src/action/use-duplicate-row.ts
|
|
29
29
|
import { useDuplicateRecord } from "@fctc/interface-logic";
|
|
30
30
|
var useDuplicateRowHandler = ({
|
|
31
31
|
data,
|
|
@@ -51,7 +51,7 @@ var useDuplicateRowHandler = ({
|
|
|
51
51
|
return handleDuplicateRecord;
|
|
52
52
|
};
|
|
53
53
|
|
|
54
|
-
// src/action/use-get-field-export.
|
|
54
|
+
// src/action/use-get-field-export.ts
|
|
55
55
|
import { useGetFieldExport } from "@fctc/interface-logic";
|
|
56
56
|
var useGetFieldExportHandler = ({
|
|
57
57
|
data,
|
|
@@ -84,7 +84,7 @@ var useGetFieldExportHandler = ({
|
|
|
84
84
|
return handleGetFieldExport;
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
// src/action/use-export-excel.
|
|
87
|
+
// src/action/use-export-excel.ts
|
|
88
88
|
import { evalJSONDomain, useExportExcel } from "@fctc/interface-logic";
|
|
89
89
|
var useExportExcelHandler = ({
|
|
90
90
|
data,
|
|
@@ -115,7 +115,7 @@ var useExportExcelHandler = ({
|
|
|
115
115
|
return handleExport;
|
|
116
116
|
};
|
|
117
117
|
|
|
118
|
-
// src/widget/form/use-on-change-form.
|
|
118
|
+
// src/widget/form/use-on-change-form.ts
|
|
119
119
|
import { useOnChangeForm } from "@fctc/interface-logic";
|
|
120
120
|
var UseOnChangeFormHandler = ({
|
|
121
121
|
data,
|
|
@@ -144,7 +144,7 @@ var UseOnChangeFormHandler = ({
|
|
|
144
144
|
return handleOnChangeForm;
|
|
145
145
|
};
|
|
146
146
|
|
|
147
|
-
// src/widget/form/use-save-form.
|
|
147
|
+
// src/widget/form/use-save-form.ts
|
|
148
148
|
import { useSave } from "@fctc/interface-logic";
|
|
149
149
|
var useSaveFormHandler = ({
|
|
150
150
|
data,
|
|
@@ -172,7 +172,7 @@ var useSaveFormHandler = ({
|
|
|
172
172
|
return handleSaveForm;
|
|
173
173
|
};
|
|
174
174
|
|
|
175
|
-
// src/widget/form/use-remove-row.
|
|
175
|
+
// src/widget/form/use-remove-row.ts
|
|
176
176
|
import { useRemoveRow } from "@fctc/interface-logic";
|
|
177
177
|
var useRemoveRowHandler = ({
|
|
178
178
|
data,
|
|
@@ -198,7 +198,7 @@ var useRemoveRowHandler = ({
|
|
|
198
198
|
return handleRemoveRow;
|
|
199
199
|
};
|
|
200
200
|
|
|
201
|
-
// src/widget/table/use-table.
|
|
201
|
+
// src/widget/table/use-table.ts
|
|
202
202
|
import { domainHelper } from "@fctc/interface-logic";
|
|
203
203
|
import { useEffect, useState } from "react";
|
|
204
204
|
function mergeButtons(fields) {
|
|
@@ -212,20 +212,14 @@ function mergeButtons(fields) {
|
|
|
212
212
|
}
|
|
213
213
|
return others;
|
|
214
214
|
}
|
|
215
|
-
var useTableHandler = ({
|
|
216
|
-
fields,
|
|
217
|
-
data,
|
|
218
|
-
dataModel,
|
|
219
|
-
context,
|
|
220
|
-
typeTable
|
|
221
|
-
}) => {
|
|
215
|
+
var useTableHandler = ({ data }) => {
|
|
222
216
|
const [rows, setRows] = useState(data || []);
|
|
223
217
|
const [columns, setColumns] = useState([]);
|
|
224
|
-
const dataModelFields = fields?.map((field) => {
|
|
218
|
+
const dataModelFields = data.fields?.map((field) => {
|
|
225
219
|
return {
|
|
226
|
-
...dataModel?.[field?.name],
|
|
220
|
+
...data.dataModel?.[field?.name],
|
|
227
221
|
...field,
|
|
228
|
-
string: field?.string || dataModel?.[field?.name]?.string
|
|
222
|
+
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
229
223
|
};
|
|
230
224
|
});
|
|
231
225
|
const mergeFields = mergeButtons(dataModelFields);
|
|
@@ -238,7 +232,7 @@ var useTableHandler = ({
|
|
|
238
232
|
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
239
233
|
transformedItem[field] = item[field];
|
|
240
234
|
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
241
|
-
if (typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
235
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
242
236
|
transformedItem["string"] = item[field]?.[1];
|
|
243
237
|
}
|
|
244
238
|
transformedItem[field] = item[field];
|
|
@@ -255,7 +249,7 @@ var useTableHandler = ({
|
|
|
255
249
|
let cols = [];
|
|
256
250
|
try {
|
|
257
251
|
cols = mergeFields?.filter((item) => {
|
|
258
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(context, item?.column_invisible) : item?.invisible ? domainHelper.matchDomains(context, item?.invisible) : false);
|
|
252
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
259
253
|
})?.map((field) => {
|
|
260
254
|
return {
|
|
261
255
|
name: field?.name,
|
|
@@ -289,12 +283,44 @@ var useTableHandler = ({
|
|
|
289
283
|
rows,
|
|
290
284
|
columns,
|
|
291
285
|
onToggleColumnOptional,
|
|
292
|
-
typeTable
|
|
286
|
+
typeTable: data.typeTable
|
|
293
287
|
};
|
|
294
288
|
};
|
|
289
|
+
|
|
290
|
+
// src/common/use-click-outside.ts
|
|
291
|
+
import { useEffect as useEffect2, useRef } from "react";
|
|
292
|
+
var DEFAULT_EVENTS = ["mousedown", "touchstart"];
|
|
293
|
+
var useClickOutside = ({
|
|
294
|
+
handler,
|
|
295
|
+
events = DEFAULT_EVENTS,
|
|
296
|
+
nodes = [],
|
|
297
|
+
refs
|
|
298
|
+
}) => {
|
|
299
|
+
const ref = useRef(null);
|
|
300
|
+
useEffect2(() => {
|
|
301
|
+
const listener = (event) => {
|
|
302
|
+
const { target } = event;
|
|
303
|
+
if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
if (!(target instanceof HTMLElement)) return;
|
|
307
|
+
const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
|
|
308
|
+
const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
|
|
309
|
+
if (shouldTrigger && !shouldIgnore) {
|
|
310
|
+
handler(event);
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
events.forEach((event) => document.addEventListener(event, listener));
|
|
314
|
+
return () => {
|
|
315
|
+
events.forEach((event) => document.removeEventListener(event, listener));
|
|
316
|
+
};
|
|
317
|
+
}, [handler, nodes, events]);
|
|
318
|
+
return ref;
|
|
319
|
+
};
|
|
295
320
|
export {
|
|
296
321
|
UseOnChangeFormHandler,
|
|
297
322
|
useArchieveHandler,
|
|
323
|
+
useClickOutside,
|
|
298
324
|
useDuplicateRowHandler,
|
|
299
325
|
useExportExcelHandler,
|
|
300
326
|
useGetFieldExportHandler,
|
package/dist/table.d.mts
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
interface UseTableProps {
|
|
2
|
+
data: {
|
|
3
|
+
fields: any[];
|
|
4
|
+
data: any[];
|
|
5
|
+
dataModel: {
|
|
6
|
+
[fieldName: string]: {
|
|
7
|
+
string?: string;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
context: any;
|
|
12
|
+
typeTable?: 'list' | 'group' | 'calendar';
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
declare const useTableHandler: ({ data }: UseTableProps) => {
|
|
16
|
+
rows: {
|
|
17
|
+
fields: any[];
|
|
18
|
+
data: any[];
|
|
19
|
+
dataModel: {
|
|
20
|
+
[fieldName: string]: {
|
|
21
|
+
string?: string;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
context: any;
|
|
26
|
+
typeTable?: "list" | "group" | "calendar";
|
|
27
|
+
};
|
|
3
28
|
columns: any;
|
|
4
29
|
onToggleColumnOptional: (item: any) => void;
|
|
5
|
-
typeTable:
|
|
30
|
+
typeTable: "list" | "group" | "calendar" | undefined;
|
|
6
31
|
};
|
|
7
32
|
|
|
8
33
|
export { useTableHandler };
|
package/dist/table.d.ts
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
interface UseTableProps {
|
|
2
|
+
data: {
|
|
3
|
+
fields: any[];
|
|
4
|
+
data: any[];
|
|
5
|
+
dataModel: {
|
|
6
|
+
[fieldName: string]: {
|
|
7
|
+
string?: string;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
context: any;
|
|
12
|
+
typeTable?: 'list' | 'group' | 'calendar';
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
declare const useTableHandler: ({ data }: UseTableProps) => {
|
|
16
|
+
rows: {
|
|
17
|
+
fields: any[];
|
|
18
|
+
data: any[];
|
|
19
|
+
dataModel: {
|
|
20
|
+
[fieldName: string]: {
|
|
21
|
+
string?: string;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
context: any;
|
|
26
|
+
typeTable?: "list" | "group" | "calendar";
|
|
27
|
+
};
|
|
3
28
|
columns: any;
|
|
4
29
|
onToggleColumnOptional: (item: any) => void;
|
|
5
|
-
typeTable:
|
|
30
|
+
typeTable: "list" | "group" | "calendar" | undefined;
|
|
6
31
|
};
|
|
7
32
|
|
|
8
33
|
export { useTableHandler };
|
package/dist/table.js
CHANGED
|
@@ -24,7 +24,7 @@ __export(table_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(table_exports);
|
|
26
26
|
|
|
27
|
-
// src/widget/table/use-table.
|
|
27
|
+
// src/widget/table/use-table.ts
|
|
28
28
|
var import_interface_logic = require("@fctc/interface-logic");
|
|
29
29
|
var import_react = require("react");
|
|
30
30
|
function mergeButtons(fields) {
|
|
@@ -38,20 +38,14 @@ function mergeButtons(fields) {
|
|
|
38
38
|
}
|
|
39
39
|
return others;
|
|
40
40
|
}
|
|
41
|
-
var useTableHandler = ({
|
|
42
|
-
fields,
|
|
43
|
-
data,
|
|
44
|
-
dataModel,
|
|
45
|
-
context,
|
|
46
|
-
typeTable
|
|
47
|
-
}) => {
|
|
41
|
+
var useTableHandler = ({ data }) => {
|
|
48
42
|
const [rows, setRows] = (0, import_react.useState)(data || []);
|
|
49
43
|
const [columns, setColumns] = (0, import_react.useState)([]);
|
|
50
|
-
const dataModelFields = fields?.map((field) => {
|
|
44
|
+
const dataModelFields = data.fields?.map((field) => {
|
|
51
45
|
return {
|
|
52
|
-
...dataModel?.[field?.name],
|
|
46
|
+
...data.dataModel?.[field?.name],
|
|
53
47
|
...field,
|
|
54
|
-
string: field?.string || dataModel?.[field?.name]?.string
|
|
48
|
+
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
55
49
|
};
|
|
56
50
|
});
|
|
57
51
|
const mergeFields = mergeButtons(dataModelFields);
|
|
@@ -64,7 +58,7 @@ var useTableHandler = ({
|
|
|
64
58
|
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
65
59
|
transformedItem[field] = item[field];
|
|
66
60
|
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
67
|
-
if (typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
61
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
68
62
|
transformedItem["string"] = item[field]?.[1];
|
|
69
63
|
}
|
|
70
64
|
transformedItem[field] = item[field];
|
|
@@ -81,7 +75,7 @@ var useTableHandler = ({
|
|
|
81
75
|
let cols = [];
|
|
82
76
|
try {
|
|
83
77
|
cols = mergeFields?.filter((item) => {
|
|
84
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_interface_logic.domainHelper.matchDomains(context, item?.column_invisible) : item?.invisible ? import_interface_logic.domainHelper.matchDomains(context, item?.invisible) : false);
|
|
78
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? import_interface_logic.domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? import_interface_logic.domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
85
79
|
})?.map((field) => {
|
|
86
80
|
return {
|
|
87
81
|
name: field?.name,
|
|
@@ -115,7 +109,7 @@ var useTableHandler = ({
|
|
|
115
109
|
rows,
|
|
116
110
|
columns,
|
|
117
111
|
onToggleColumnOptional,
|
|
118
|
-
typeTable
|
|
112
|
+
typeTable: data.typeTable
|
|
119
113
|
};
|
|
120
114
|
};
|
|
121
115
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/table.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// src/widget/table/use-table.
|
|
1
|
+
// src/widget/table/use-table.ts
|
|
2
2
|
import { domainHelper } from "@fctc/interface-logic";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
4
|
function mergeButtons(fields) {
|
|
@@ -12,20 +12,14 @@ function mergeButtons(fields) {
|
|
|
12
12
|
}
|
|
13
13
|
return others;
|
|
14
14
|
}
|
|
15
|
-
var useTableHandler = ({
|
|
16
|
-
fields,
|
|
17
|
-
data,
|
|
18
|
-
dataModel,
|
|
19
|
-
context,
|
|
20
|
-
typeTable
|
|
21
|
-
}) => {
|
|
15
|
+
var useTableHandler = ({ data }) => {
|
|
22
16
|
const [rows, setRows] = useState(data || []);
|
|
23
17
|
const [columns, setColumns] = useState([]);
|
|
24
|
-
const dataModelFields = fields?.map((field) => {
|
|
18
|
+
const dataModelFields = data.fields?.map((field) => {
|
|
25
19
|
return {
|
|
26
|
-
...dataModel?.[field?.name],
|
|
20
|
+
...data.dataModel?.[field?.name],
|
|
27
21
|
...field,
|
|
28
|
-
string: field?.string || dataModel?.[field?.name]?.string
|
|
22
|
+
string: field?.string || data.dataModel?.[field?.name]?.string
|
|
29
23
|
};
|
|
30
24
|
});
|
|
31
25
|
const mergeFields = mergeButtons(dataModelFields);
|
|
@@ -38,7 +32,7 @@ var useTableHandler = ({
|
|
|
38
32
|
if (item[field] && typeof item[field] === "object" && item[field].display_name) {
|
|
39
33
|
transformedItem[field] = item[field];
|
|
40
34
|
} else if (Array.isArray(item[field]) && item[field].length > 0) {
|
|
41
|
-
if (typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
35
|
+
if (data.typeTable === "group" && item[field]?.length === 2 && typeof item[field]?.[1] === "string") {
|
|
42
36
|
transformedItem["string"] = item[field]?.[1];
|
|
43
37
|
}
|
|
44
38
|
transformedItem[field] = item[field];
|
|
@@ -55,7 +49,7 @@ var useTableHandler = ({
|
|
|
55
49
|
let cols = [];
|
|
56
50
|
try {
|
|
57
51
|
cols = mergeFields?.filter((item) => {
|
|
58
|
-
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(context, item?.column_invisible) : item?.invisible ? domainHelper.matchDomains(context, item?.invisible) : false);
|
|
52
|
+
return item?.widget !== "details_Receive_money" && !(item?.column_invisible ? domainHelper.matchDomains(data.context, item?.column_invisible) : item?.invisible ? domainHelper.matchDomains(data.context, item?.invisible) : false);
|
|
59
53
|
})?.map((field) => {
|
|
60
54
|
return {
|
|
61
55
|
name: field?.name,
|
|
@@ -89,7 +83,7 @@ var useTableHandler = ({
|
|
|
89
83
|
rows,
|
|
90
84
|
columns,
|
|
91
85
|
onToggleColumnOptional,
|
|
92
|
-
typeTable
|
|
86
|
+
typeTable: data.typeTable
|
|
93
87
|
};
|
|
94
88
|
};
|
|
95
89
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fctc/widget-logic",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"main": "dist/index.cjs",
|
|
5
5
|
"module": "dist/index.mjs",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -24,6 +24,11 @@
|
|
|
24
24
|
"types": "./dist/table.d.ts",
|
|
25
25
|
"import": "./dist/table.mjs",
|
|
26
26
|
"require": "./dist/table.cjs"
|
|
27
|
+
},
|
|
28
|
+
"./common": {
|
|
29
|
+
"types": "./dist/common.d.ts",
|
|
30
|
+
"import": "./dist/common.mjs",
|
|
31
|
+
"require": "./dist/common.cjs"
|
|
27
32
|
}
|
|
28
33
|
},
|
|
29
34
|
"files": [
|