abdul-react 0.0.23 → 0.0.24
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/lib/components/Checkbox/Checkbox.js +61 -19
- package/lib/components/Checkbox/Checkbox.js.map +1 -1
- package/lib/index.cjs +60 -18
- package/lib/index.cjs.map +1 -1
- package/lib/node_modules/js-beautify/js/src/css/beautifier.js +1 -1
- package/lib/node_modules/js-beautify/js/src/html/beautifier.js +1 -1
- package/package.json +1 -1
|
@@ -1,36 +1,78 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useEffect } from 'react';
|
|
2
|
+
import { useState, useRef, useEffect } from 'react';
|
|
3
3
|
import classNames from '../../_virtual/index.js';
|
|
4
4
|
import Icon from '../Icon/Icon.js';
|
|
5
5
|
import Typography from '../Typography/Typography.js';
|
|
6
6
|
|
|
7
|
-
const Checkbox =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
const Checkbox = props => {
|
|
8
|
+
const {
|
|
9
|
+
id,
|
|
10
|
+
name,
|
|
11
|
+
label,
|
|
12
|
+
disabled = false,
|
|
13
|
+
checked: controlledChecked,
|
|
14
|
+
partial = false,
|
|
15
|
+
onChange,
|
|
16
|
+
variant,
|
|
17
|
+
isDefaultHover = false,
|
|
18
|
+
labelFontSize = 12
|
|
19
|
+
} = props;
|
|
20
|
+
// Detect controlled vs uncontrolled mode
|
|
21
|
+
const isControlled = Object.prototype.hasOwnProperty.call(props, 'checked') && typeof controlledChecked !== 'undefined';
|
|
22
|
+
const [checked, setChecked] = useState(!!controlledChecked);
|
|
23
|
+
const inputRef = useRef(null);
|
|
24
|
+
// Keep internal state in sync when controlled
|
|
20
25
|
useEffect(() => {
|
|
21
|
-
setChecked(
|
|
22
|
-
}, [
|
|
26
|
+
if (isControlled) setChecked(!!controlledChecked);
|
|
27
|
+
}, [controlledChecked, isControlled]);
|
|
28
|
+
// Apply native indeterminate for partial state
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (inputRef.current) {
|
|
31
|
+
inputRef.current.indeterminate = partial && !checked;
|
|
32
|
+
}
|
|
33
|
+
}, [partial, checked]);
|
|
34
|
+
// Stop the grid/excel selection from hijacking events
|
|
35
|
+
const stopAllCapture = e => {
|
|
36
|
+
e.stopPropagation();
|
|
37
|
+
if (e.nativeEvent?.stopImmediatePropagation) {
|
|
38
|
+
// prevents other React and non-React listeners from firing
|
|
39
|
+
e.nativeEvent.stopImmediatePropagation();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const handleChange = e => {
|
|
43
|
+
if (!isControlled) {
|
|
44
|
+
setChecked(e.target.checked); // keep UI responsive even if parent doesn't update
|
|
45
|
+
}
|
|
46
|
+
onChange?.(e); // still notify parent
|
|
47
|
+
};
|
|
23
48
|
return jsxs("label", {
|
|
24
49
|
className: "ff-checkbox--overlay",
|
|
25
50
|
htmlFor: id,
|
|
51
|
+
// Shield at capture phase so document/grid listeners don't see these
|
|
52
|
+
onPointerDownCapture: stopAllCapture,
|
|
53
|
+
onMouseDownCapture: stopAllCapture,
|
|
54
|
+
onClickCapture: stopAllCapture,
|
|
55
|
+
// Small z-index bump helps if a low z-index overlay exists
|
|
56
|
+
style: {
|
|
57
|
+
position: 'relative',
|
|
58
|
+
zIndex: 2
|
|
59
|
+
},
|
|
60
|
+
"data-ff-checkbox-root": true,
|
|
26
61
|
children: [jsx("input", {
|
|
62
|
+
ref: inputRef,
|
|
27
63
|
type: "checkbox",
|
|
28
64
|
className: "ff-checkbox-input",
|
|
29
65
|
id: id,
|
|
30
66
|
name: name,
|
|
31
|
-
checked: checked,
|
|
32
|
-
onChange:
|
|
33
|
-
disabled: disabled
|
|
67
|
+
checked: !!checked,
|
|
68
|
+
onChange: handleChange,
|
|
69
|
+
disabled: disabled,
|
|
70
|
+
"aria-checked": partial ? 'mixed' : checked,
|
|
71
|
+
"aria-disabled": disabled,
|
|
72
|
+
// Also shield on the input itself
|
|
73
|
+
onPointerDownCapture: stopAllCapture,
|
|
74
|
+
onMouseDownCapture: stopAllCapture,
|
|
75
|
+
onClickCapture: stopAllCapture
|
|
34
76
|
}), jsx("span", {
|
|
35
77
|
className: classNames('ff-checkbox-custom', {
|
|
36
78
|
'ff-checkbox-checked': checked,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":[null],"names":["Checkbox","id","name","label","disabled","checked","
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":[null],"names":["Checkbox","props","id","name","label","disabled","checked","controlledChecked","partial","onChange","variant","isDefaultHover","labelFontSize","isControlled","Object","prototype","hasOwnProperty","call","setChecked","useState","inputRef","useRef","useEffect","current","indeterminate","stopAllCapture","e","stopPropagation","nativeEvent","stopImmediatePropagation","handleChange","target","_jsxs","className","htmlFor","onPointerDownCapture","onMouseDownCapture","onClickCapture","style","position","zIndex","children","_jsx","ref","type","classNames","Icon","color","Typography","as","fontSize"],"mappings":"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"}
|
package/lib/index.cjs
CHANGED
|
@@ -2371,33 +2371,75 @@ const dropdownDefaultCSSData$1 = {
|
|
|
2371
2371
|
maxDropdownHeight: 160
|
|
2372
2372
|
};
|
|
2373
2373
|
|
|
2374
|
-
const Checkbox =
|
|
2375
|
-
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2374
|
+
const Checkbox = props => {
|
|
2375
|
+
const {
|
|
2376
|
+
id,
|
|
2377
|
+
name,
|
|
2378
|
+
label,
|
|
2379
|
+
disabled = false,
|
|
2380
|
+
checked: controlledChecked,
|
|
2381
|
+
partial = false,
|
|
2382
|
+
onChange,
|
|
2383
|
+
variant,
|
|
2384
|
+
isDefaultHover = false,
|
|
2385
|
+
labelFontSize = 12
|
|
2386
|
+
} = props;
|
|
2387
|
+
// Detect controlled vs uncontrolled mode
|
|
2388
|
+
const isControlled = Object.prototype.hasOwnProperty.call(props, 'checked') && typeof controlledChecked !== 'undefined';
|
|
2389
|
+
const [checked, setChecked] = React.useState(!!controlledChecked);
|
|
2390
|
+
const inputRef = React.useRef(null);
|
|
2391
|
+
// Keep internal state in sync when controlled
|
|
2392
|
+
React.useEffect(() => {
|
|
2393
|
+
if (isControlled) setChecked(!!controlledChecked);
|
|
2394
|
+
}, [controlledChecked, isControlled]);
|
|
2395
|
+
// Apply native indeterminate for partial state
|
|
2387
2396
|
React.useEffect(() => {
|
|
2388
|
-
|
|
2389
|
-
|
|
2397
|
+
if (inputRef.current) {
|
|
2398
|
+
inputRef.current.indeterminate = partial && !checked;
|
|
2399
|
+
}
|
|
2400
|
+
}, [partial, checked]);
|
|
2401
|
+
// Stop the grid/excel selection from hijacking events
|
|
2402
|
+
const stopAllCapture = e => {
|
|
2403
|
+
e.stopPropagation();
|
|
2404
|
+
if (e.nativeEvent?.stopImmediatePropagation) {
|
|
2405
|
+
// prevents other React and non-React listeners from firing
|
|
2406
|
+
e.nativeEvent.stopImmediatePropagation();
|
|
2407
|
+
}
|
|
2408
|
+
};
|
|
2409
|
+
const handleChange = e => {
|
|
2410
|
+
if (!isControlled) {
|
|
2411
|
+
setChecked(e.target.checked); // keep UI responsive even if parent doesn't update
|
|
2412
|
+
}
|
|
2413
|
+
onChange?.(e); // still notify parent
|
|
2414
|
+
};
|
|
2390
2415
|
return jsxRuntime.jsxs("label", {
|
|
2391
2416
|
className: "ff-checkbox--overlay",
|
|
2392
2417
|
htmlFor: id,
|
|
2418
|
+
// Shield at capture phase so document/grid listeners don't see these
|
|
2419
|
+
onPointerDownCapture: stopAllCapture,
|
|
2420
|
+
onMouseDownCapture: stopAllCapture,
|
|
2421
|
+
onClickCapture: stopAllCapture,
|
|
2422
|
+
// Small z-index bump helps if a low z-index overlay exists
|
|
2423
|
+
style: {
|
|
2424
|
+
position: 'relative',
|
|
2425
|
+
zIndex: 2
|
|
2426
|
+
},
|
|
2427
|
+
"data-ff-checkbox-root": true,
|
|
2393
2428
|
children: [jsxRuntime.jsx("input", {
|
|
2429
|
+
ref: inputRef,
|
|
2394
2430
|
type: "checkbox",
|
|
2395
2431
|
className: "ff-checkbox-input",
|
|
2396
2432
|
id: id,
|
|
2397
2433
|
name: name,
|
|
2398
|
-
checked: checked,
|
|
2399
|
-
onChange:
|
|
2400
|
-
disabled: disabled
|
|
2434
|
+
checked: !!checked,
|
|
2435
|
+
onChange: handleChange,
|
|
2436
|
+
disabled: disabled,
|
|
2437
|
+
"aria-checked": partial ? 'mixed' : checked,
|
|
2438
|
+
"aria-disabled": disabled,
|
|
2439
|
+
// Also shield on the input itself
|
|
2440
|
+
onPointerDownCapture: stopAllCapture,
|
|
2441
|
+
onMouseDownCapture: stopAllCapture,
|
|
2442
|
+
onClickCapture: stopAllCapture
|
|
2401
2443
|
}), jsxRuntime.jsx("span", {
|
|
2402
2444
|
className: classNames('ff-checkbox-custom', {
|
|
2403
2445
|
'ff-checkbox-checked': checked,
|