@fctc/widget-logic 1.0.11 → 1.2.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 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.tsx
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.tsx
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.tsx
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.tsx
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.tsx
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.tsx
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.tsx
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.tsx
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 };
@@ -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,61 @@
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
+ // Default to empty array to avoid undefined errors
35
+ refs
36
+ }) => {
37
+ const ref = (0, import_react.useRef)(null);
38
+ (0, import_react.useEffect)(() => {
39
+ const listener = (event) => {
40
+ const { target } = event;
41
+ if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
42
+ return;
43
+ }
44
+ if (!(target instanceof HTMLElement)) return;
45
+ const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
46
+ const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
47
+ if (shouldTrigger && !shouldIgnore) {
48
+ handler(event);
49
+ }
50
+ };
51
+ events.forEach((event) => document.addEventListener(event, listener));
52
+ return () => {
53
+ events.forEach((event) => document.removeEventListener(event, listener));
54
+ };
55
+ }, [handler, nodes, events]);
56
+ return ref;
57
+ };
58
+ // Annotate the CommonJS export names for ESM import in node:
59
+ 0 && (module.exports = {
60
+ useClickOutside
61
+ });
@@ -0,0 +1,34 @@
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
+ // Default to empty array to avoid undefined errors
9
+ refs
10
+ }) => {
11
+ const ref = useRef(null);
12
+ useEffect(() => {
13
+ const listener = (event) => {
14
+ const { target } = event;
15
+ if (refs && refs?.length > 0 && refs?.some((r) => r.current?.contains(target))) {
16
+ return;
17
+ }
18
+ if (!(target instanceof HTMLElement)) return;
19
+ const shouldIgnore = target.hasAttribute("data-ignore-outside-clicks") || !document.body.contains(target) && target.tagName !== "HTML";
20
+ const shouldTrigger = nodes.length > 0 ? nodes.every((node) => node && !event.composedPath().includes(node)) : ref.current && !ref.current.contains(target);
21
+ if (shouldTrigger && !shouldIgnore) {
22
+ handler(event);
23
+ }
24
+ };
25
+ events.forEach((event) => document.addEventListener(event, listener));
26
+ return () => {
27
+ events.forEach((event) => document.removeEventListener(event, listener));
28
+ };
29
+ }, [handler, nodes, events]);
30
+ return ref;
31
+ };
32
+ export {
33
+ useClickOutside
34
+ };
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.tsx
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.tsx
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.tsx
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.tsx
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.tsx
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.tsx
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';