@tamagui/checkbox-headless 1.118.0 → 1.118.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/cjs/useCheckbox.cjs +11 -8
- package/dist/cjs/useCheckbox.js +13 -15
- package/dist/cjs/useCheckbox.js.map +1 -1
- package/dist/cjs/useCheckbox.native.js +17 -11
- package/dist/cjs/useCheckbox.native.js.map +2 -2
- package/dist/esm/useCheckbox.js +14 -16
- package/dist/esm/useCheckbox.js.map +1 -1
- package/dist/esm/useCheckbox.mjs +12 -9
- package/dist/esm/useCheckbox.mjs.map +1 -1
- package/dist/esm/useCheckbox.native.js +18 -12
- package/dist/esm/useCheckbox.native.js.map +2 -2
- package/dist/jsx/useCheckbox.js +14 -16
- package/dist/jsx/useCheckbox.js.map +1 -1
- package/dist/jsx/useCheckbox.mjs +12 -9
- package/dist/jsx/useCheckbox.mjs.map +1 -1
- package/dist/jsx/useCheckbox.native.js +18 -12
- package/dist/jsx/useCheckbox.native.js.map +2 -2
- package/package.json +10 -10
- package/src/useCheckbox.tsx +30 -24
- package/types/useCheckbox.d.ts.map +1 -1
package/dist/cjs/useCheckbox.cjs
CHANGED
|
@@ -53,11 +53,18 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
53
53
|
...checkboxProps
|
|
54
54
|
} = props,
|
|
55
55
|
[button, setButton] = import_react.default.useState(null),
|
|
56
|
-
composedRefs = (0, import_compose_refs.useComposedRefs)(ref,
|
|
56
|
+
composedRefs = (0, import_compose_refs.useComposedRefs)(ref, setButton),
|
|
57
57
|
hasConsumerStoppedPropagationRef = import_react.default.useRef(!1),
|
|
58
58
|
isFormControl = import_constants.isWeb ? button ? !!button.closest("form") : !0 : !1,
|
|
59
59
|
labelId = (0, import_label.useLabelContext)(button),
|
|
60
|
-
labelledBy = ariaLabelledby || labelId
|
|
60
|
+
labelledBy = ariaLabelledby || labelId,
|
|
61
|
+
parentKeyDown = props.onKeyDown,
|
|
62
|
+
handleKeyDown = (0, import_react.useMemo)(() => (0, import_helpers.composeEventHandlers)(parentKeyDown, event => {
|
|
63
|
+
event.key === "Enter" && event.preventDefault();
|
|
64
|
+
}), [parentKeyDown]),
|
|
65
|
+
handlePress = (0, import_react.useMemo)(() => (0, import_helpers.composeEventHandlers)(props.onPress, event => {
|
|
66
|
+
setChecked(prevChecked => (0, import_utils.isIndeterminate)(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
67
|
+
}), [isFormControl]);
|
|
61
68
|
return {
|
|
62
69
|
bubbleInput: import_constants.isWeb && isFormControl ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_BubbleInput.BubbleInput, {
|
|
63
70
|
isHidden: !0,
|
|
@@ -81,13 +88,9 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
81
88
|
"data-state": (0, import_utils.getState)(checked),
|
|
82
89
|
"data-disabled": disabled ? "" : void 0,
|
|
83
90
|
disabled,
|
|
84
|
-
onKeyDown:
|
|
85
|
-
event.key === "Enter" && event.preventDefault();
|
|
86
|
-
})
|
|
91
|
+
onKeyDown: handleKeyDown
|
|
87
92
|
}),
|
|
88
|
-
onPress:
|
|
89
|
-
setChecked(prevChecked => (0, import_utils.isIndeterminate)(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
90
|
-
})
|
|
93
|
+
onPress: handlePress
|
|
91
94
|
}
|
|
92
95
|
};
|
|
93
96
|
}
|
package/dist/cjs/useCheckbox.js
CHANGED
|
@@ -35,7 +35,17 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
35
35
|
value = "on",
|
|
36
36
|
onCheckedChange,
|
|
37
37
|
...checkboxProps
|
|
38
|
-
} = props, [button, setButton] = import_react.default.useState(null), composedRefs = (0, import_compose_refs.useComposedRefs)(ref,
|
|
38
|
+
} = props, [button, setButton] = import_react.default.useState(null), composedRefs = (0, import_compose_refs.useComposedRefs)(ref, setButton), hasConsumerStoppedPropagationRef = import_react.default.useRef(!1), isFormControl = import_constants.isWeb ? button ? !!button.closest("form") : !0 : !1, labelId = (0, import_label.useLabelContext)(button), labelledBy = ariaLabelledby || labelId, parentKeyDown = props.onKeyDown, handleKeyDown = (0, import_react.useMemo)(
|
|
39
|
+
() => (0, import_helpers.composeEventHandlers)(parentKeyDown, (event) => {
|
|
40
|
+
event.key === "Enter" && event.preventDefault();
|
|
41
|
+
}),
|
|
42
|
+
[parentKeyDown]
|
|
43
|
+
), handlePress = (0, import_react.useMemo)(
|
|
44
|
+
() => (0, import_helpers.composeEventHandlers)(props.onPress, (event) => {
|
|
45
|
+
setChecked((prevChecked) => (0, import_utils.isIndeterminate)(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
46
|
+
}),
|
|
47
|
+
[isFormControl]
|
|
48
|
+
);
|
|
39
49
|
return {
|
|
40
50
|
bubbleInput: import_constants.isWeb && isFormControl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
41
51
|
import_BubbleInput.BubbleInput,
|
|
@@ -62,21 +72,9 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
62
72
|
"data-state": (0, import_utils.getState)(checked),
|
|
63
73
|
"data-disabled": disabled ? "" : void 0,
|
|
64
74
|
disabled,
|
|
65
|
-
onKeyDown:
|
|
66
|
-
props.onKeyDown,
|
|
67
|
-
(event) => {
|
|
68
|
-
event.key === "Enter" && event.preventDefault();
|
|
69
|
-
}
|
|
70
|
-
)
|
|
75
|
+
onKeyDown: handleKeyDown
|
|
71
76
|
},
|
|
72
|
-
onPress:
|
|
73
|
-
props.onPress,
|
|
74
|
-
(event) => {
|
|
75
|
-
setChecked(
|
|
76
|
-
(prevChecked) => (0, import_utils.isIndeterminate)(prevChecked) ? !0 : !prevChecked
|
|
77
|
-
), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
78
|
-
}
|
|
79
|
-
)
|
|
77
|
+
onPress: handlePress
|
|
80
78
|
}
|
|
81
79
|
};
|
|
82
80
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useCheckbox.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAgC,kCAChC,mBAAsB,+BAEtB,iBAAqC,6BACrC,eAAgC,2BAChC,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAgC,kCAChC,mBAAsB,+BAEtB,iBAAqC,6BACrC,eAAgC,2BAChC,eAA4C,2BAG5C,qBAA4B,0BAC5B,eAA0C,oBAgFlC;AAvDD,SAAS,YACd,OACA,CAAC,SAAS,UAAU,GAIpB,KACA;AACA,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,GAAG;AAAA,EACL,IAAI,OACE,CAAC,QAAQ,SAAS,IAAI,aAAAA,QAAM,SAAmC,IAAI,GACnE,mBAAe,qCAAgB,KAAK,SAAgB,GACpD,mCAAmC,aAAAA,QAAM,OAAO,EAAK,GAErD,gBAAgB,yBAAS,SAAS,EAAQ,OAAO,QAAQ,MAAM,IAAK,KAAQ,IAE5E,cAAU,8BAAgB,MAAM,GAChC,aAAa,kBAAkB,SAE/B,gBAAiB,MAA6C,WAE9D,oBAAgB;AAAA,IACpB,UACE,qCAAqB,eAAe,CAAC,UAAU;AAE7C,MAAI,MAAM,QAAQ,WAAS,MAAM,eAAe;AAAA,IAClD,CAAC;AAAA,IACH,CAAC,aAAa;AAAA,EAChB,GAEM,kBAAc;AAAA,IAClB,UACE,qCAAqB,MAAM,SAAgB,CAAC,UAAgC;AAC1E,iBAAW,CAAC,oBAAiB,8BAAgB,WAAW,IAAI,KAAO,CAAC,WAAY,GAC5E,iBAAiB,0BAA0B,UAC7C,iCAAiC,UAAU,MAAM,qBAAqB,GAIjE,iCAAiC,WAAS,MAAM,gBAAgB;AAAA,IAEzE,CAAC;AAAA,IACH,CAAC,aAAa;AAAA,EAChB;AAEA,SAAO;AAAA,IACL,aACE,0BAAS,gBACP;AAAA,MAAC;AAAA;AAAA,QACC,UAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS,CAAC,iCAAiC;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF,IACE;AAAA,IACN,aAAa;AAAA,IACb,eAAe;AAAA,MACb,MAAM;AAAA,MACN,mBAAmB;AAAA,MACnB,oBAAgB,8BAAgB,OAAO,IAAI,UAAU;AAAA,MACrD,GAAG;AAAA,MACH,GAAI,0BAAS;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA,kBAAc,uBAAS,OAAO;AAAA,QAC9B,iBAAiB,WAAW,KAAK;AAAA,QACjC;AAAA,QACA,WAAW;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AACF;",
|
|
5
5
|
"names": ["React"]
|
|
6
6
|
}
|
|
@@ -28,9 +28,21 @@ __export(useCheckbox_exports, {
|
|
|
28
28
|
module.exports = __toCommonJS(useCheckbox_exports);
|
|
29
29
|
var import_jsx_runtime = require("react/jsx-runtime"), import_compose_refs = require("@tamagui/compose-refs"), import_constants = require("@tamagui/constants"), import_helpers = require("@tamagui/helpers"), import_label = require("@tamagui/label"), import_react = __toESM(require("react")), import_BubbleInput = require("./BubbleInput"), import_utils = require("./utils");
|
|
30
30
|
function useCheckbox(props, param, ref) {
|
|
31
|
-
var [checked, setChecked] = param, { labelledBy: ariaLabelledby, name, required, disabled, value = "on", onCheckedChange, ...checkboxProps } = props, [button, setButton] = import_react.default.useState(null), composedRefs = (0, import_compose_refs.useComposedRefs)(ref, function(
|
|
32
|
-
return
|
|
33
|
-
|
|
31
|
+
var [checked, setChecked] = param, { labelledBy: ariaLabelledby, name, required, disabled, value = "on", onCheckedChange, ...checkboxProps } = props, [button, setButton] = import_react.default.useState(null), composedRefs = (0, import_compose_refs.useComposedRefs)(ref, setButton), hasConsumerStoppedPropagationRef = import_react.default.useRef(!1), isFormControl = import_constants.isWeb ? button ? !!button.closest("form") : !0 : !1, labelId = (0, import_label.useLabelContext)(button), labelledBy = ariaLabelledby || labelId, parentKeyDown = props.onKeyDown, handleKeyDown = (0, import_react.useMemo)(function() {
|
|
32
|
+
return (0, import_helpers.composeEventHandlers)(parentKeyDown, function(event) {
|
|
33
|
+
event.key === "Enter" && event.preventDefault();
|
|
34
|
+
});
|
|
35
|
+
}, [
|
|
36
|
+
parentKeyDown
|
|
37
|
+
]), handlePress = (0, import_react.useMemo)(function() {
|
|
38
|
+
return (0, import_helpers.composeEventHandlers)(props.onPress, function(event) {
|
|
39
|
+
setChecked(function(prevChecked) {
|
|
40
|
+
return (0, import_utils.isIndeterminate)(prevChecked) ? !0 : !prevChecked;
|
|
41
|
+
}), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
42
|
+
});
|
|
43
|
+
}, [
|
|
44
|
+
isFormControl
|
|
45
|
+
]);
|
|
34
46
|
return {
|
|
35
47
|
bubbleInput: import_constants.isWeb && isFormControl ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_BubbleInput.BubbleInput, {
|
|
36
48
|
isHidden: !0,
|
|
@@ -54,15 +66,9 @@ function useCheckbox(props, param, ref) {
|
|
|
54
66
|
"data-state": (0, import_utils.getState)(checked),
|
|
55
67
|
"data-disabled": disabled ? "" : void 0,
|
|
56
68
|
disabled,
|
|
57
|
-
onKeyDown:
|
|
58
|
-
event.key === "Enter" && event.preventDefault();
|
|
59
|
-
})
|
|
69
|
+
onKeyDown: handleKeyDown
|
|
60
70
|
},
|
|
61
|
-
onPress:
|
|
62
|
-
setChecked(function(prevChecked) {
|
|
63
|
-
return (0, import_utils.isIndeterminate)(prevChecked) ? !0 : !prevChecked;
|
|
64
|
-
}), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
65
|
-
})
|
|
71
|
+
onPress: handlePress
|
|
66
72
|
}
|
|
67
73
|
};
|
|
68
74
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Users/n8/tamagui/code/ui/checkbox-headless/src/useCheckbox.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAAA,sBAAgC,kCAChC,mBAAsB,+BAEtB,iBAAqC,6BACrC,eAAgC,2BAChC,
|
|
5
|
-
"names": ["useCheckbox", "props", "ref", "checked", "setChecked", "labelledBy", "ariaLabelledby", "name", "required", "disabled", "value", "onCheckedChange", "checkboxProps", "button", "setButton", "React", "useState", "composedRefs", "useComposedRefs", "
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAAA,sBAAgC,kCAChC,mBAAsB,+BAEtB,iBAAqC,6BACrC,eAAgC,2BAChC,eAA4C,2BAG5C,qBAA4B,0BAC5B,eAA0C;AAyBnC,SAASA,YACdC,OACA,OAIAC,KAAiB;MAJjB,CAACC,SAASC,UAAAA,IAAV,OAMM,EACJC,YAAYC,gBACZC,MACAC,UACAC,UACAC,QAAQ,MACRC,iBACA,GAAGC,cAAAA,IACDX,OACE,CAACY,QAAQC,SAAAA,IAAaC,aAAAA,QAAMC,SAAmC,IAAA,GAC/DC,mBAAeC,qCAAgBhB,KAAKY,SAAAA,GACpCK,mCAAmCJ,aAAAA,QAAMK,OAAO,EAAA,GAEhDC,gBAAgBC,yBAAST,SAASU,EAAQV,OAAOW,QAAQ,MAAA,IAAW,KAAQ,IAE5EC,cAAUC,8BAAgBb,MAAAA,GAC1BR,aAAaC,kBAAkBmB,SAE/BE,gBAAiB1B,MAA6C2B,WAE9DC,oBAAgBC,sBACpB,WAAA;eACEC,qCAAqBJ,eAAe,SAACK,OAAAA;AAEnC,MAAIA,MAAMC,QAAQ,WAASD,MAAME,eAAc;IACjD,CAAA;KACF;IAACP;GAAc,GAGXQ,kBAAcL,sBAClB,WAAA;eACEC,qCAAqB9B,MAAMmC,SAAgB,SAACJ,OAAAA;AAC1C5B,iBAAW,SAACiC,aAAAA;mBAAiBC,8BAAgBD,WAAAA,IAAe,KAAO,CAACA;UAChEhB,iBAAiB,0BAA0BW,UAC7Cb,iCAAiCoB,UAAUP,MAAMQ,qBAAoB,GAIhErB,iCAAiCoB,WAASP,MAAMS,gBAAe;IAExE,CAAA;KACF;IAACpB;GAAc;AAGjB,SAAO;IACLqB,aACEpB,0BAASD,gBACP,uCAAAsB,KAACC,gCAAAA;MACCC,UAAQ;MACRC,SAASjC;MACTkC,SAAS,CAAC5B,iCAAiCoB;MAC3ChC;MACAG;MACAP;MACAK;MACAC;SAEA;IACNuC,aAAa/B;IACbL,eAAe;MACbqC,MAAM;MACN,mBAAmB5C;MACnB,oBAAgBiC,8BAAgBnC,OAAAA,IAAW,UAAUA;MACrD,GAAGS;MACH,GAAIU,0BAAS;QACX4B,MAAM;QACNxC;QACA,kBAAcyC,uBAAShD,OAAAA;QACvB,iBAAiBM,WAAW,KAAK2C;QACjC3C;QACAmB,WAAWC;MACb;MACAO,SAASD;IACX;EACF;AACF;",
|
|
5
|
+
"names": ["useCheckbox", "props", "ref", "checked", "setChecked", "labelledBy", "ariaLabelledby", "name", "required", "disabled", "value", "onCheckedChange", "checkboxProps", "button", "setButton", "React", "useState", "composedRefs", "useComposedRefs", "hasConsumerStoppedPropagationRef", "useRef", "isFormControl", "isWeb", "Boolean", "closest", "labelId", "useLabelContext", "parentKeyDown", "onKeyDown", "handleKeyDown", "useMemo", "composeEventHandlers", "event", "key", "preventDefault", "handlePress", "onPress", "prevChecked", "isIndeterminate", "current", "isPropagationStopped", "stopPropagation", "bubbleInput", "_jsx", "BubbleInput", "isHidden", "control", "bubbles", "checkboxRef", "role", "type", "getState", "undefined"]
|
|
6
6
|
}
|
package/dist/esm/useCheckbox.js
CHANGED
|
@@ -2,7 +2,7 @@ import { useComposedRefs } from "@tamagui/compose-refs";
|
|
|
2
2
|
import { isWeb } from "@tamagui/constants";
|
|
3
3
|
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
4
|
import { useLabelContext } from "@tamagui/label";
|
|
5
|
-
import React from "react";
|
|
5
|
+
import React, { useMemo } from "react";
|
|
6
6
|
import { BubbleInput } from "./BubbleInput";
|
|
7
7
|
import { getState, isIndeterminate } from "./utils";
|
|
8
8
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -15,7 +15,17 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
15
15
|
value = "on",
|
|
16
16
|
onCheckedChange,
|
|
17
17
|
...checkboxProps
|
|
18
|
-
} = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref,
|
|
18
|
+
} = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref, setButton), hasConsumerStoppedPropagationRef = React.useRef(!1), isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1, labelId = useLabelContext(button), labelledBy = ariaLabelledby || labelId, parentKeyDown = props.onKeyDown, handleKeyDown = useMemo(
|
|
19
|
+
() => composeEventHandlers(parentKeyDown, (event) => {
|
|
20
|
+
event.key === "Enter" && event.preventDefault();
|
|
21
|
+
}),
|
|
22
|
+
[parentKeyDown]
|
|
23
|
+
), handlePress = useMemo(
|
|
24
|
+
() => composeEventHandlers(props.onPress, (event) => {
|
|
25
|
+
setChecked((prevChecked) => isIndeterminate(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
26
|
+
}),
|
|
27
|
+
[isFormControl]
|
|
28
|
+
);
|
|
19
29
|
return {
|
|
20
30
|
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */ jsx(
|
|
21
31
|
BubbleInput,
|
|
@@ -42,21 +52,9 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
42
52
|
"data-state": getState(checked),
|
|
43
53
|
"data-disabled": disabled ? "" : void 0,
|
|
44
54
|
disabled,
|
|
45
|
-
onKeyDown:
|
|
46
|
-
props.onKeyDown,
|
|
47
|
-
(event) => {
|
|
48
|
-
event.key === "Enter" && event.preventDefault();
|
|
49
|
-
}
|
|
50
|
-
)
|
|
55
|
+
onKeyDown: handleKeyDown
|
|
51
56
|
},
|
|
52
|
-
onPress:
|
|
53
|
-
props.onPress,
|
|
54
|
-
(event) => {
|
|
55
|
-
setChecked(
|
|
56
|
-
(prevChecked) => isIndeterminate(prevChecked) ? !0 : !prevChecked
|
|
57
|
-
), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
58
|
-
}
|
|
59
|
-
)
|
|
57
|
+
onPress: handlePress
|
|
60
58
|
}
|
|
61
59
|
};
|
|
62
60
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useCheckbox.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,aAAa;AAEtB,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,OAAO,
|
|
4
|
+
"mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,aAAa;AAEtB,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,OAAO,SAAsB,eAAe;AAG5C,SAAS,mBAAmB;AAC5B,SAAS,UAAU,uBAAuB;AAgFlC;AAvDD,SAAS,YACd,OACA,CAAC,SAAS,UAAU,GAIpB,KACA;AACA,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,GAAG;AAAA,EACL,IAAI,OACE,CAAC,QAAQ,SAAS,IAAI,MAAM,SAAmC,IAAI,GACnE,eAAe,gBAAgB,KAAK,SAAgB,GACpD,mCAAmC,MAAM,OAAO,EAAK,GAErD,gBAAgB,QAAS,SAAS,EAAQ,OAAO,QAAQ,MAAM,IAAK,KAAQ,IAE5E,UAAU,gBAAgB,MAAM,GAChC,aAAa,kBAAkB,SAE/B,gBAAiB,MAA6C,WAE9D,gBAAgB;AAAA,IACpB,MACE,qBAAqB,eAAe,CAAC,UAAU;AAE7C,MAAI,MAAM,QAAQ,WAAS,MAAM,eAAe;AAAA,IAClD,CAAC;AAAA,IACH,CAAC,aAAa;AAAA,EAChB,GAEM,cAAc;AAAA,IAClB,MACE,qBAAqB,MAAM,SAAgB,CAAC,UAAgC;AAC1E,iBAAW,CAAC,gBAAiB,gBAAgB,WAAW,IAAI,KAAO,CAAC,WAAY,GAC5E,iBAAiB,0BAA0B,UAC7C,iCAAiC,UAAU,MAAM,qBAAqB,GAIjE,iCAAiC,WAAS,MAAM,gBAAgB;AAAA,IAEzE,CAAC;AAAA,IACH,CAAC,aAAa;AAAA,EAChB;AAEA,SAAO;AAAA,IACL,aACE,SAAS,gBACP;AAAA,MAAC;AAAA;AAAA,QACC,UAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS,CAAC,iCAAiC;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF,IACE;AAAA,IACN,aAAa;AAAA,IACb,eAAe;AAAA,MACb,MAAM;AAAA,MACN,mBAAmB;AAAA,MACnB,gBAAgB,gBAAgB,OAAO,IAAI,UAAU;AAAA,MACrD,GAAG;AAAA,MACH,GAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA,cAAc,SAAS,OAAO;AAAA,QAC9B,iBAAiB,WAAW,KAAK;AAAA,QACjC;AAAA,QACA,WAAW;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/useCheckbox.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import { useComposedRefs } from "@tamagui/compose-refs";
|
|
|
2
2
|
import { isWeb } from "@tamagui/constants";
|
|
3
3
|
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
4
|
import { useLabelContext } from "@tamagui/label";
|
|
5
|
-
import React from "react";
|
|
5
|
+
import React, { useMemo } from "react";
|
|
6
6
|
import { BubbleInput } from "./BubbleInput.mjs";
|
|
7
7
|
import { getState, isIndeterminate } from "./utils.mjs";
|
|
8
8
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -17,11 +17,18 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
17
17
|
...checkboxProps
|
|
18
18
|
} = props,
|
|
19
19
|
[button, setButton] = React.useState(null),
|
|
20
|
-
composedRefs = useComposedRefs(ref,
|
|
20
|
+
composedRefs = useComposedRefs(ref, setButton),
|
|
21
21
|
hasConsumerStoppedPropagationRef = React.useRef(!1),
|
|
22
22
|
isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1,
|
|
23
23
|
labelId = useLabelContext(button),
|
|
24
|
-
labelledBy = ariaLabelledby || labelId
|
|
24
|
+
labelledBy = ariaLabelledby || labelId,
|
|
25
|
+
parentKeyDown = props.onKeyDown,
|
|
26
|
+
handleKeyDown = useMemo(() => composeEventHandlers(parentKeyDown, event => {
|
|
27
|
+
event.key === "Enter" && event.preventDefault();
|
|
28
|
+
}), [parentKeyDown]),
|
|
29
|
+
handlePress = useMemo(() => composeEventHandlers(props.onPress, event => {
|
|
30
|
+
setChecked(prevChecked => isIndeterminate(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
31
|
+
}), [isFormControl]);
|
|
25
32
|
return {
|
|
26
33
|
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */jsx(BubbleInput, {
|
|
27
34
|
isHidden: !0,
|
|
@@ -45,13 +52,9 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
45
52
|
"data-state": getState(checked),
|
|
46
53
|
"data-disabled": disabled ? "" : void 0,
|
|
47
54
|
disabled,
|
|
48
|
-
onKeyDown:
|
|
49
|
-
event.key === "Enter" && event.preventDefault();
|
|
50
|
-
})
|
|
55
|
+
onKeyDown: handleKeyDown
|
|
51
56
|
}),
|
|
52
|
-
onPress:
|
|
53
|
-
setChecked(prevChecked => isIndeterminate(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
54
|
-
})
|
|
57
|
+
onPress: handlePress
|
|
55
58
|
}
|
|
56
59
|
};
|
|
57
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useComposedRefs","isWeb","composeEventHandlers","useLabelContext","React","BubbleInput","getState","isIndeterminate","jsx","useCheckbox","props","checked","setChecked","ref","labelledBy","ariaLabelledby","name","required","disabled","value","onCheckedChange","checkboxProps","button","setButton","useState","composedRefs","
|
|
1
|
+
{"version":3,"names":["useComposedRefs","isWeb","composeEventHandlers","useLabelContext","React","useMemo","BubbleInput","getState","isIndeterminate","jsx","useCheckbox","props","checked","setChecked","ref","labelledBy","ariaLabelledby","name","required","disabled","value","onCheckedChange","checkboxProps","button","setButton","useState","composedRefs","hasConsumerStoppedPropagationRef","useRef","isFormControl","closest","labelId","parentKeyDown","onKeyDown","handleKeyDown","event","key","preventDefault","handlePress","onPress","prevChecked","current","isPropagationStopped","stopPropagation","bubbleInput","isHidden","control","bubbles","checkboxRef","role","type"],"sources":["../../src/useCheckbox.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAA,QAAuB;AAChC,SAASC,KAAA,QAAa;AAEtB,SAASC,oBAAA,QAA4B;AACrC,SAASC,eAAA,QAAuB;AAChC,OAAOC,KAAA,IAAsBC,OAAA,QAAe;AAG5C,SAASC,WAAA,QAAmB;AAC5B,SAASC,QAAA,EAAUC,eAAA,QAAuB;AAgFlC,SAAAC,GAAA;AAvDD,SAASC,YACdC,KAAA,EACA,CAACC,OAAA,EAASC,UAAU,GAIpBC,GAAA,EACA;EACA,MAAM;MACJC,UAAA,EAAYC,cAAA;MACZC,IAAA;MACAC,QAAA;MACAC,QAAA;MACAC,KAAA,GAAQ;MACRC,eAAA;MACA,GAAGC;IACL,IAAIX,KAAA;IACE,CAACY,MAAA,EAAQC,SAAS,IAAIpB,KAAA,CAAMqB,QAAA,CAAmC,IAAI;IACnEC,YAAA,GAAe1B,eAAA,CAAgBc,GAAA,EAAKU,SAAgB;IACpDG,gCAAA,GAAmCvB,KAAA,CAAMwB,MAAA,CAAO,EAAK;IAErDC,aAAA,GAAgB5B,KAAA,GAASsB,MAAA,GAAS,EAAQA,MAAA,CAAOO,OAAA,CAAQ,MAAM,IAAK,KAAQ;IAE5EC,OAAA,GAAU5B,eAAA,CAAgBoB,MAAM;IAChCR,UAAA,GAAaC,cAAA,IAAkBe,OAAA;IAE/BC,aAAA,GAAiBrB,KAAA,CAA6CsB,SAAA;IAE9DC,aAAA,GAAgB7B,OAAA,CACpB,MACEH,oBAAA,CAAqB8B,aAAA,EAAgBG,KAAA,IAAU;MAEzCA,KAAA,CAAMC,GAAA,KAAQ,WAASD,KAAA,CAAME,cAAA,CAAe;IAClD,CAAC,GACH,CAACL,aAAa,CAChB;IAEMM,WAAA,GAAcjC,OAAA,CAClB,MACEH,oBAAA,CAAqBS,KAAA,CAAM4B,OAAA,EAAiBJ,KAAA,IAAgC;MAC1EtB,UAAA,CAAY2B,WAAA,IAAiBhC,eAAA,CAAgBgC,WAAW,IAAI,KAAO,CAACA,WAAY,GAC5EX,aAAA,IAAiB,0BAA0BM,KAAA,KAC7CR,gCAAA,CAAiCc,OAAA,GAAUN,KAAA,CAAMO,oBAAA,CAAqB,GAIjEf,gCAAA,CAAiCc,OAAA,IAASN,KAAA,CAAMQ,eAAA,CAAgB;IAEzE,CAAC,GACH,CAACd,aAAa,CAChB;EAEA,OAAO;IACLe,WAAA,EACE3C,KAAA,IAAS4B,aAAA,GACP,eAAApB,GAAA,CAACH,WAAA;MACCuC,QAAA,EAAQ;MACRC,OAAA,EAASvB,MAAA;MACTwB,OAAA,EAAS,CAACpB,gCAAA,CAAiCc,OAAA;MAC3CxB,IAAA;MACAG,KAAA;MACAR,OAAA;MACAM,QAAA;MACAC;IAAA,CACF,IACE;IACN6B,WAAA,EAAatB,YAAA;IACbJ,aAAA,EAAe;MACb2B,IAAA,EAAM;MACN,mBAAmBlC,UAAA;MACnB,gBAAgBP,eAAA,CAAgBI,OAAO,IAAI,UAAUA,OAAA;MACrD,GAAGU,aAAA;MACH,IAAIrB,KAAA,IAAS;QACXiD,IAAA,EAAM;QACN9B,KAAA;QACA,cAAcb,QAAA,CAASK,OAAO;QAC9B,iBAAiBO,QAAA,GAAW,KAAK;QACjCA,QAAA;QACAc,SAAA,EAAWC;MACb;MACAK,OAAA,EAASD;IACX;EACF;AACF","ignoreList":[]}
|
|
@@ -3,13 +3,25 @@ import { useComposedRefs } from "@tamagui/compose-refs";
|
|
|
3
3
|
import { isWeb } from "@tamagui/constants";
|
|
4
4
|
import { composeEventHandlers } from "@tamagui/helpers";
|
|
5
5
|
import { useLabelContext } from "@tamagui/label";
|
|
6
|
-
import React from "react";
|
|
6
|
+
import React, { useMemo } from "react";
|
|
7
7
|
import { BubbleInput } from "./BubbleInput";
|
|
8
8
|
import { getState, isIndeterminate } from "./utils";
|
|
9
9
|
function useCheckbox(props, param, ref) {
|
|
10
|
-
var [checked, setChecked] = param, { labelledBy: ariaLabelledby, name, required, disabled, value = "on", onCheckedChange, ...checkboxProps } = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref, function(
|
|
11
|
-
return
|
|
12
|
-
|
|
10
|
+
var [checked, setChecked] = param, { labelledBy: ariaLabelledby, name, required, disabled, value = "on", onCheckedChange, ...checkboxProps } = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref, setButton), hasConsumerStoppedPropagationRef = React.useRef(!1), isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1, labelId = useLabelContext(button), labelledBy = ariaLabelledby || labelId, parentKeyDown = props.onKeyDown, handleKeyDown = useMemo(function() {
|
|
11
|
+
return composeEventHandlers(parentKeyDown, function(event) {
|
|
12
|
+
event.key === "Enter" && event.preventDefault();
|
|
13
|
+
});
|
|
14
|
+
}, [
|
|
15
|
+
parentKeyDown
|
|
16
|
+
]), handlePress = useMemo(function() {
|
|
17
|
+
return composeEventHandlers(props.onPress, function(event) {
|
|
18
|
+
setChecked(function(prevChecked) {
|
|
19
|
+
return isIndeterminate(prevChecked) ? !0 : !prevChecked;
|
|
20
|
+
}), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
21
|
+
});
|
|
22
|
+
}, [
|
|
23
|
+
isFormControl
|
|
24
|
+
]);
|
|
13
25
|
return {
|
|
14
26
|
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */ _jsx(BubbleInput, {
|
|
15
27
|
isHidden: !0,
|
|
@@ -33,15 +45,9 @@ function useCheckbox(props, param, ref) {
|
|
|
33
45
|
"data-state": getState(checked),
|
|
34
46
|
"data-disabled": disabled ? "" : void 0,
|
|
35
47
|
disabled,
|
|
36
|
-
onKeyDown:
|
|
37
|
-
event.key === "Enter" && event.preventDefault();
|
|
38
|
-
})
|
|
48
|
+
onKeyDown: handleKeyDown
|
|
39
49
|
},
|
|
40
|
-
onPress:
|
|
41
|
-
setChecked(function(prevChecked) {
|
|
42
|
-
return isIndeterminate(prevChecked) ? !0 : !prevChecked;
|
|
43
|
-
}), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
44
|
-
})
|
|
50
|
+
onPress: handlePress
|
|
45
51
|
}
|
|
46
52
|
};
|
|
47
53
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Users/n8/tamagui/code/ui/checkbox-headless/src/useCheckbox.tsx"],
|
|
4
|
-
"mappings": ";AAAA,SAASA,uBAAuB;AAChC,SAASC,aAAa;AAEtB,SAASC,4BAA4B;AACrC,SAASC,uBAAuB;AAChC,OAAOC,
|
|
5
|
-
"names": ["useComposedRefs", "isWeb", "composeEventHandlers", "useLabelContext", "React", "BubbleInput", "getState", "isIndeterminate", "useCheckbox", "props", "ref", "checked", "setChecked", "labelledBy", "ariaLabelledby", "name", "required", "disabled", "value", "onCheckedChange", "checkboxProps", "button", "setButton", "useState", "composedRefs", "
|
|
4
|
+
"mappings": ";AAAA,SAASA,uBAAuB;AAChC,SAASC,aAAa;AAEtB,SAASC,4BAA4B;AACrC,SAASC,uBAAuB;AAChC,OAAOC,SAAsBC,eAAe;AAG5C,SAASC,mBAAmB;AAC5B,SAASC,UAAUC,uBAAuB;AAyBnC,SAASC,YACdC,OACA,OAIAC,KAAiB;MAJjB,CAACC,SAASC,UAAAA,IAAV,OAMM,EACJC,YAAYC,gBACZC,MACAC,UACAC,UACAC,QAAQ,MACRC,iBACA,GAAGC,cAAAA,IACDX,OACE,CAACY,QAAQC,SAAAA,IAAanB,MAAMoB,SAAmC,IAAA,GAC/DC,eAAezB,gBAAgBW,KAAKY,SAAAA,GACpCG,mCAAmCtB,MAAMuB,OAAO,EAAA,GAEhDC,gBAAgB3B,QAASqB,SAASO,EAAQP,OAAOQ,QAAQ,MAAA,IAAW,KAAQ,IAE5EC,UAAU5B,gBAAgBmB,MAAAA,GAC1BR,aAAaC,kBAAkBgB,SAE/BC,gBAAiBtB,MAA6CuB,WAE9DC,gBAAgB7B,QACpB,WAAA;WACEH,qBAAqB8B,eAAe,SAACG,OAAAA;AAEnC,MAAIA,MAAMC,QAAQ,WAASD,MAAME,eAAc;IACjD,CAAA;KACF;IAACL;GAAc,GAGXM,cAAcjC,QAClB,WAAA;WACEH,qBAAqBQ,MAAM6B,SAAgB,SAACJ,OAAAA;AAC1CtB,iBAAW,SAAC2B,aAAAA;eAAiBhC,gBAAgBgC,WAAAA,IAAe,KAAO,CAACA;UAChEZ,iBAAiB,0BAA0BO,UAC7CT,iCAAiCe,UAAUN,MAAMO,qBAAoB,GAIhEhB,iCAAiCe,WAASN,MAAMQ,gBAAe;IAExE,CAAA;KACF;IAACf;GAAc;AAGjB,SAAO;IACLgB,aACE3C,SAAS2B,gBACP,qBAACtB,aAAAA;MACCuC,UAAQ;MACRC,SAASxB;MACTyB,SAAS,CAACrB,iCAAiCe;MAC3CzB;MACAG;MACAP;MACAK;MACAC;SAEA;IACN8B,aAAavB;IACbJ,eAAe;MACb4B,MAAM;MACN,mBAAmBnC;MACnB,gBAAgBN,gBAAgBI,OAAAA,IAAW,UAAUA;MACrD,GAAGS;MACH,GAAIpB,SAAS;QACXiD,MAAM;QACN/B;QACA,cAAcZ,SAASK,OAAAA;QACvB,iBAAiBM,WAAW,KAAKiC;QACjCjC;QACAe,WAAWC;MACb;MACAK,SAASD;IACX;EACF;AACF;",
|
|
5
|
+
"names": ["useComposedRefs", "isWeb", "composeEventHandlers", "useLabelContext", "React", "useMemo", "BubbleInput", "getState", "isIndeterminate", "useCheckbox", "props", "ref", "checked", "setChecked", "labelledBy", "ariaLabelledby", "name", "required", "disabled", "value", "onCheckedChange", "checkboxProps", "button", "setButton", "useState", "composedRefs", "hasConsumerStoppedPropagationRef", "useRef", "isFormControl", "Boolean", "closest", "labelId", "parentKeyDown", "onKeyDown", "handleKeyDown", "event", "key", "preventDefault", "handlePress", "onPress", "prevChecked", "current", "isPropagationStopped", "stopPropagation", "bubbleInput", "isHidden", "control", "bubbles", "checkboxRef", "role", "type", "undefined"]
|
|
6
6
|
}
|
package/dist/jsx/useCheckbox.js
CHANGED
|
@@ -2,7 +2,7 @@ import { useComposedRefs } from "@tamagui/compose-refs";
|
|
|
2
2
|
import { isWeb } from "@tamagui/constants";
|
|
3
3
|
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
4
|
import { useLabelContext } from "@tamagui/label";
|
|
5
|
-
import React from "react";
|
|
5
|
+
import React, { useMemo } from "react";
|
|
6
6
|
import { BubbleInput } from "./BubbleInput";
|
|
7
7
|
import { getState, isIndeterminate } from "./utils";
|
|
8
8
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -15,7 +15,17 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
15
15
|
value = "on",
|
|
16
16
|
onCheckedChange,
|
|
17
17
|
...checkboxProps
|
|
18
|
-
} = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref,
|
|
18
|
+
} = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref, setButton), hasConsumerStoppedPropagationRef = React.useRef(!1), isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1, labelId = useLabelContext(button), labelledBy = ariaLabelledby || labelId, parentKeyDown = props.onKeyDown, handleKeyDown = useMemo(
|
|
19
|
+
() => composeEventHandlers(parentKeyDown, (event) => {
|
|
20
|
+
event.key === "Enter" && event.preventDefault();
|
|
21
|
+
}),
|
|
22
|
+
[parentKeyDown]
|
|
23
|
+
), handlePress = useMemo(
|
|
24
|
+
() => composeEventHandlers(props.onPress, (event) => {
|
|
25
|
+
setChecked((prevChecked) => isIndeterminate(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
26
|
+
}),
|
|
27
|
+
[isFormControl]
|
|
28
|
+
);
|
|
19
29
|
return {
|
|
20
30
|
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */ jsx(
|
|
21
31
|
BubbleInput,
|
|
@@ -42,21 +52,9 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
42
52
|
"data-state": getState(checked),
|
|
43
53
|
"data-disabled": disabled ? "" : void 0,
|
|
44
54
|
disabled,
|
|
45
|
-
onKeyDown:
|
|
46
|
-
props.onKeyDown,
|
|
47
|
-
(event) => {
|
|
48
|
-
event.key === "Enter" && event.preventDefault();
|
|
49
|
-
}
|
|
50
|
-
)
|
|
55
|
+
onKeyDown: handleKeyDown
|
|
51
56
|
},
|
|
52
|
-
onPress:
|
|
53
|
-
props.onPress,
|
|
54
|
-
(event) => {
|
|
55
|
-
setChecked(
|
|
56
|
-
(prevChecked) => isIndeterminate(prevChecked) ? !0 : !prevChecked
|
|
57
|
-
), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
58
|
-
}
|
|
59
|
-
)
|
|
57
|
+
onPress: handlePress
|
|
60
58
|
}
|
|
61
59
|
};
|
|
62
60
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/useCheckbox.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,aAAa;AAEtB,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,OAAO,
|
|
4
|
+
"mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,aAAa;AAEtB,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,OAAO,SAAsB,eAAe;AAG5C,SAAS,mBAAmB;AAC5B,SAAS,UAAU,uBAAuB;AAgFlC;AAvDD,SAAS,YACd,OACA,CAAC,SAAS,UAAU,GAIpB,KACA;AACA,QAAM;AAAA,IACJ,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,GAAG;AAAA,EACL,IAAI,OACE,CAAC,QAAQ,SAAS,IAAI,MAAM,SAAmC,IAAI,GACnE,eAAe,gBAAgB,KAAK,SAAgB,GACpD,mCAAmC,MAAM,OAAO,EAAK,GAErD,gBAAgB,QAAS,SAAS,EAAQ,OAAO,QAAQ,MAAM,IAAK,KAAQ,IAE5E,UAAU,gBAAgB,MAAM,GAChC,aAAa,kBAAkB,SAE/B,gBAAiB,MAA6C,WAE9D,gBAAgB;AAAA,IACpB,MACE,qBAAqB,eAAe,CAAC,UAAU;AAE7C,MAAI,MAAM,QAAQ,WAAS,MAAM,eAAe;AAAA,IAClD,CAAC;AAAA,IACH,CAAC,aAAa;AAAA,EAChB,GAEM,cAAc;AAAA,IAClB,MACE,qBAAqB,MAAM,SAAgB,CAAC,UAAgC;AAC1E,iBAAW,CAAC,gBAAiB,gBAAgB,WAAW,IAAI,KAAO,CAAC,WAAY,GAC5E,iBAAiB,0BAA0B,UAC7C,iCAAiC,UAAU,MAAM,qBAAqB,GAIjE,iCAAiC,WAAS,MAAM,gBAAgB;AAAA,IAEzE,CAAC;AAAA,IACH,CAAC,aAAa;AAAA,EAChB;AAEA,SAAO;AAAA,IACL,aACE,SAAS,gBACP;AAAA,MAAC;AAAA;AAAA,QACC,UAAQ;AAAA,QACR,SAAS;AAAA,QACT,SAAS,CAAC,iCAAiC;AAAA,QAC3C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACF,IACE;AAAA,IACN,aAAa;AAAA,IACb,eAAe;AAAA,MACb,MAAM;AAAA,MACN,mBAAmB;AAAA,MACnB,gBAAgB,gBAAgB,OAAO,IAAI,UAAU;AAAA,MACrD,GAAG;AAAA,MACH,GAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA,cAAc,SAAS,OAAO;AAAA,QAC9B,iBAAiB,WAAW,KAAK;AAAA,QACjC;AAAA,QACA,WAAW;AAAA,MACb;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/jsx/useCheckbox.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import { useComposedRefs } from "@tamagui/compose-refs";
|
|
|
2
2
|
import { isWeb } from "@tamagui/constants";
|
|
3
3
|
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
4
|
import { useLabelContext } from "@tamagui/label";
|
|
5
|
-
import React from "react";
|
|
5
|
+
import React, { useMemo } from "react";
|
|
6
6
|
import { BubbleInput } from "./BubbleInput.mjs";
|
|
7
7
|
import { getState, isIndeterminate } from "./utils.mjs";
|
|
8
8
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -17,11 +17,18 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
17
17
|
...checkboxProps
|
|
18
18
|
} = props,
|
|
19
19
|
[button, setButton] = React.useState(null),
|
|
20
|
-
composedRefs = useComposedRefs(ref,
|
|
20
|
+
composedRefs = useComposedRefs(ref, setButton),
|
|
21
21
|
hasConsumerStoppedPropagationRef = React.useRef(!1),
|
|
22
22
|
isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1,
|
|
23
23
|
labelId = useLabelContext(button),
|
|
24
|
-
labelledBy = ariaLabelledby || labelId
|
|
24
|
+
labelledBy = ariaLabelledby || labelId,
|
|
25
|
+
parentKeyDown = props.onKeyDown,
|
|
26
|
+
handleKeyDown = useMemo(() => composeEventHandlers(parentKeyDown, event => {
|
|
27
|
+
event.key === "Enter" && event.preventDefault();
|
|
28
|
+
}), [parentKeyDown]),
|
|
29
|
+
handlePress = useMemo(() => composeEventHandlers(props.onPress, event => {
|
|
30
|
+
setChecked(prevChecked => isIndeterminate(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
31
|
+
}), [isFormControl]);
|
|
25
32
|
return {
|
|
26
33
|
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */jsx(BubbleInput, {
|
|
27
34
|
isHidden: !0,
|
|
@@ -45,13 +52,9 @@ function useCheckbox(props, [checked, setChecked], ref) {
|
|
|
45
52
|
"data-state": getState(checked),
|
|
46
53
|
"data-disabled": disabled ? "" : void 0,
|
|
47
54
|
disabled,
|
|
48
|
-
onKeyDown:
|
|
49
|
-
event.key === "Enter" && event.preventDefault();
|
|
50
|
-
})
|
|
55
|
+
onKeyDown: handleKeyDown
|
|
51
56
|
}),
|
|
52
|
-
onPress:
|
|
53
|
-
setChecked(prevChecked => isIndeterminate(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
54
|
-
})
|
|
57
|
+
onPress: handlePress
|
|
55
58
|
}
|
|
56
59
|
};
|
|
57
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useComposedRefs","isWeb","composeEventHandlers","useLabelContext","React","BubbleInput","getState","isIndeterminate","jsx","useCheckbox","props","checked","setChecked","ref","labelledBy","ariaLabelledby","name","required","disabled","value","onCheckedChange","checkboxProps","button","setButton","useState","composedRefs","
|
|
1
|
+
{"version":3,"names":["useComposedRefs","isWeb","composeEventHandlers","useLabelContext","React","useMemo","BubbleInput","getState","isIndeterminate","jsx","useCheckbox","props","checked","setChecked","ref","labelledBy","ariaLabelledby","name","required","disabled","value","onCheckedChange","checkboxProps","button","setButton","useState","composedRefs","hasConsumerStoppedPropagationRef","useRef","isFormControl","closest","labelId","parentKeyDown","onKeyDown","handleKeyDown","event","key","preventDefault","handlePress","onPress","prevChecked","current","isPropagationStopped","stopPropagation","bubbleInput","isHidden","control","bubbles","checkboxRef","role","type"],"sources":["../../src/useCheckbox.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,eAAA,QAAuB;AAChC,SAASC,KAAA,QAAa;AAEtB,SAASC,oBAAA,QAA4B;AACrC,SAASC,eAAA,QAAuB;AAChC,OAAOC,KAAA,IAAsBC,OAAA,QAAe;AAG5C,SAASC,WAAA,QAAmB;AAC5B,SAASC,QAAA,EAAUC,eAAA,QAAuB;AAgFlC,SAAAC,GAAA;AAvDD,SAASC,YACdC,KAAA,EACA,CAACC,OAAA,EAASC,UAAU,GAIpBC,GAAA,EACA;EACA,MAAM;MACJC,UAAA,EAAYC,cAAA;MACZC,IAAA;MACAC,QAAA;MACAC,QAAA;MACAC,KAAA,GAAQ;MACRC,eAAA;MACA,GAAGC;IACL,IAAIX,KAAA;IACE,CAACY,MAAA,EAAQC,SAAS,IAAIpB,KAAA,CAAMqB,QAAA,CAAmC,IAAI;IACnEC,YAAA,GAAe1B,eAAA,CAAgBc,GAAA,EAAKU,SAAgB;IACpDG,gCAAA,GAAmCvB,KAAA,CAAMwB,MAAA,CAAO,EAAK;IAErDC,aAAA,GAAgB5B,KAAA,GAASsB,MAAA,GAAS,EAAQA,MAAA,CAAOO,OAAA,CAAQ,MAAM,IAAK,KAAQ;IAE5EC,OAAA,GAAU5B,eAAA,CAAgBoB,MAAM;IAChCR,UAAA,GAAaC,cAAA,IAAkBe,OAAA;IAE/BC,aAAA,GAAiBrB,KAAA,CAA6CsB,SAAA;IAE9DC,aAAA,GAAgB7B,OAAA,CACpB,MACEH,oBAAA,CAAqB8B,aAAA,EAAgBG,KAAA,IAAU;MAEzCA,KAAA,CAAMC,GAAA,KAAQ,WAASD,KAAA,CAAME,cAAA,CAAe;IAClD,CAAC,GACH,CAACL,aAAa,CAChB;IAEMM,WAAA,GAAcjC,OAAA,CAClB,MACEH,oBAAA,CAAqBS,KAAA,CAAM4B,OAAA,EAAiBJ,KAAA,IAAgC;MAC1EtB,UAAA,CAAY2B,WAAA,IAAiBhC,eAAA,CAAgBgC,WAAW,IAAI,KAAO,CAACA,WAAY,GAC5EX,aAAA,IAAiB,0BAA0BM,KAAA,KAC7CR,gCAAA,CAAiCc,OAAA,GAAUN,KAAA,CAAMO,oBAAA,CAAqB,GAIjEf,gCAAA,CAAiCc,OAAA,IAASN,KAAA,CAAMQ,eAAA,CAAgB;IAEzE,CAAC,GACH,CAACd,aAAa,CAChB;EAEA,OAAO;IACLe,WAAA,EACE3C,KAAA,IAAS4B,aAAA,GACP,eAAApB,GAAA,CAACH,WAAA;MACCuC,QAAA,EAAQ;MACRC,OAAA,EAASvB,MAAA;MACTwB,OAAA,EAAS,CAACpB,gCAAA,CAAiCc,OAAA;MAC3CxB,IAAA;MACAG,KAAA;MACAR,OAAA;MACAM,QAAA;MACAC;IAAA,CACF,IACE;IACN6B,WAAA,EAAatB,YAAA;IACbJ,aAAA,EAAe;MACb2B,IAAA,EAAM;MACN,mBAAmBlC,UAAA;MACnB,gBAAgBP,eAAA,CAAgBI,OAAO,IAAI,UAAUA,OAAA;MACrD,GAAGU,aAAA;MACH,IAAIrB,KAAA,IAAS;QACXiD,IAAA,EAAM;QACN9B,KAAA;QACA,cAAcb,QAAA,CAASK,OAAO;QAC9B,iBAAiBO,QAAA,GAAW,KAAK;QACjCA,QAAA;QACAc,SAAA,EAAWC;MACb;MACAK,OAAA,EAASD;IACX;EACF;AACF","ignoreList":[]}
|
|
@@ -3,13 +3,25 @@ import { useComposedRefs } from "@tamagui/compose-refs";
|
|
|
3
3
|
import { isWeb } from "@tamagui/constants";
|
|
4
4
|
import { composeEventHandlers } from "@tamagui/helpers";
|
|
5
5
|
import { useLabelContext } from "@tamagui/label";
|
|
6
|
-
import React from "react";
|
|
6
|
+
import React, { useMemo } from "react";
|
|
7
7
|
import { BubbleInput } from "./BubbleInput";
|
|
8
8
|
import { getState, isIndeterminate } from "./utils";
|
|
9
9
|
function useCheckbox(props, param, ref) {
|
|
10
|
-
var [checked, setChecked] = param, { labelledBy: ariaLabelledby, name, required, disabled, value = "on", onCheckedChange, ...checkboxProps } = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref, function(
|
|
11
|
-
return
|
|
12
|
-
|
|
10
|
+
var [checked, setChecked] = param, { labelledBy: ariaLabelledby, name, required, disabled, value = "on", onCheckedChange, ...checkboxProps } = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref, setButton), hasConsumerStoppedPropagationRef = React.useRef(!1), isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1, labelId = useLabelContext(button), labelledBy = ariaLabelledby || labelId, parentKeyDown = props.onKeyDown, handleKeyDown = useMemo(function() {
|
|
11
|
+
return composeEventHandlers(parentKeyDown, function(event) {
|
|
12
|
+
event.key === "Enter" && event.preventDefault();
|
|
13
|
+
});
|
|
14
|
+
}, [
|
|
15
|
+
parentKeyDown
|
|
16
|
+
]), handlePress = useMemo(function() {
|
|
17
|
+
return composeEventHandlers(props.onPress, function(event) {
|
|
18
|
+
setChecked(function(prevChecked) {
|
|
19
|
+
return isIndeterminate(prevChecked) ? !0 : !prevChecked;
|
|
20
|
+
}), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
21
|
+
});
|
|
22
|
+
}, [
|
|
23
|
+
isFormControl
|
|
24
|
+
]);
|
|
13
25
|
return {
|
|
14
26
|
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */ _jsx(BubbleInput, {
|
|
15
27
|
isHidden: !0,
|
|
@@ -33,15 +45,9 @@ function useCheckbox(props, param, ref) {
|
|
|
33
45
|
"data-state": getState(checked),
|
|
34
46
|
"data-disabled": disabled ? "" : void 0,
|
|
35
47
|
disabled,
|
|
36
|
-
onKeyDown:
|
|
37
|
-
event.key === "Enter" && event.preventDefault();
|
|
38
|
-
})
|
|
48
|
+
onKeyDown: handleKeyDown
|
|
39
49
|
},
|
|
40
|
-
onPress:
|
|
41
|
-
setChecked(function(prevChecked) {
|
|
42
|
-
return isIndeterminate(prevChecked) ? !0 : !prevChecked;
|
|
43
|
-
}), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
44
|
-
})
|
|
50
|
+
onPress: handlePress
|
|
45
51
|
}
|
|
46
52
|
};
|
|
47
53
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Users/n8/tamagui/code/ui/checkbox-headless/src/useCheckbox.tsx"],
|
|
4
|
-
"mappings": ";AAAA,SAASA,uBAAuB;AAChC,SAASC,aAAa;AAEtB,SAASC,4BAA4B;AACrC,SAASC,uBAAuB;AAChC,OAAOC,
|
|
5
|
-
"names": ["useComposedRefs", "isWeb", "composeEventHandlers", "useLabelContext", "React", "BubbleInput", "getState", "isIndeterminate", "useCheckbox", "props", "ref", "checked", "setChecked", "labelledBy", "ariaLabelledby", "name", "required", "disabled", "value", "onCheckedChange", "checkboxProps", "button", "setButton", "useState", "composedRefs", "
|
|
4
|
+
"mappings": ";AAAA,SAASA,uBAAuB;AAChC,SAASC,aAAa;AAEtB,SAASC,4BAA4B;AACrC,SAASC,uBAAuB;AAChC,OAAOC,SAAsBC,eAAe;AAG5C,SAASC,mBAAmB;AAC5B,SAASC,UAAUC,uBAAuB;AAyBnC,SAASC,YACdC,OACA,OAIAC,KAAiB;MAJjB,CAACC,SAASC,UAAAA,IAAV,OAMM,EACJC,YAAYC,gBACZC,MACAC,UACAC,UACAC,QAAQ,MACRC,iBACA,GAAGC,cAAAA,IACDX,OACE,CAACY,QAAQC,SAAAA,IAAanB,MAAMoB,SAAmC,IAAA,GAC/DC,eAAezB,gBAAgBW,KAAKY,SAAAA,GACpCG,mCAAmCtB,MAAMuB,OAAO,EAAA,GAEhDC,gBAAgB3B,QAASqB,SAASO,EAAQP,OAAOQ,QAAQ,MAAA,IAAW,KAAQ,IAE5EC,UAAU5B,gBAAgBmB,MAAAA,GAC1BR,aAAaC,kBAAkBgB,SAE/BC,gBAAiBtB,MAA6CuB,WAE9DC,gBAAgB7B,QACpB,WAAA;WACEH,qBAAqB8B,eAAe,SAACG,OAAAA;AAEnC,MAAIA,MAAMC,QAAQ,WAASD,MAAME,eAAc;IACjD,CAAA;KACF;IAACL;GAAc,GAGXM,cAAcjC,QAClB,WAAA;WACEH,qBAAqBQ,MAAM6B,SAAgB,SAACJ,OAAAA;AAC1CtB,iBAAW,SAAC2B,aAAAA;eAAiBhC,gBAAgBgC,WAAAA,IAAe,KAAO,CAACA;UAChEZ,iBAAiB,0BAA0BO,UAC7CT,iCAAiCe,UAAUN,MAAMO,qBAAoB,GAIhEhB,iCAAiCe,WAASN,MAAMQ,gBAAe;IAExE,CAAA;KACF;IAACf;GAAc;AAGjB,SAAO;IACLgB,aACE3C,SAAS2B,gBACP,qBAACtB,aAAAA;MACCuC,UAAQ;MACRC,SAASxB;MACTyB,SAAS,CAACrB,iCAAiCe;MAC3CzB;MACAG;MACAP;MACAK;MACAC;SAEA;IACN8B,aAAavB;IACbJ,eAAe;MACb4B,MAAM;MACN,mBAAmBnC;MACnB,gBAAgBN,gBAAgBI,OAAAA,IAAW,UAAUA;MACrD,GAAGS;MACH,GAAIpB,SAAS;QACXiD,MAAM;QACN/B;QACA,cAAcZ,SAASK,OAAAA;QACvB,iBAAiBM,WAAW,KAAKiC;QACjCjC;QACAe,WAAWC;MACb;MACAK,SAASD;IACX;EACF;AACF;",
|
|
5
|
+
"names": ["useComposedRefs", "isWeb", "composeEventHandlers", "useLabelContext", "React", "useMemo", "BubbleInput", "getState", "isIndeterminate", "useCheckbox", "props", "ref", "checked", "setChecked", "labelledBy", "ariaLabelledby", "name", "required", "disabled", "value", "onCheckedChange", "checkboxProps", "button", "setButton", "useState", "composedRefs", "hasConsumerStoppedPropagationRef", "useRef", "isFormControl", "Boolean", "closest", "labelId", "parentKeyDown", "onKeyDown", "handleKeyDown", "event", "key", "preventDefault", "handlePress", "onPress", "prevChecked", "current", "isPropagationStopped", "stopPropagation", "bubbleInput", "isHidden", "control", "bubbles", "checkboxRef", "role", "type", "undefined"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/checkbox-headless",
|
|
3
|
-
"version": "1.118.
|
|
3
|
+
"version": "1.118.2",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"*.css"
|
|
6
6
|
],
|
|
@@ -23,14 +23,14 @@
|
|
|
23
23
|
"clean:build": "tamagui-build clean:build"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@tamagui/compose-refs": "1.118.
|
|
27
|
-
"@tamagui/constants": "1.118.
|
|
28
|
-
"@tamagui/create-context": "1.118.
|
|
29
|
-
"@tamagui/focusable": "1.118.
|
|
30
|
-
"@tamagui/helpers": "1.118.
|
|
31
|
-
"@tamagui/label": "1.118.
|
|
32
|
-
"@tamagui/use-controllable-state": "1.118.
|
|
33
|
-
"@tamagui/use-previous": "1.118.
|
|
26
|
+
"@tamagui/compose-refs": "1.118.2",
|
|
27
|
+
"@tamagui/constants": "1.118.2",
|
|
28
|
+
"@tamagui/create-context": "1.118.2",
|
|
29
|
+
"@tamagui/focusable": "1.118.2",
|
|
30
|
+
"@tamagui/helpers": "1.118.2",
|
|
31
|
+
"@tamagui/label": "1.118.2",
|
|
32
|
+
"@tamagui/use-controllable-state": "1.118.2",
|
|
33
|
+
"@tamagui/use-previous": "1.118.2"
|
|
34
34
|
},
|
|
35
35
|
"exports": {
|
|
36
36
|
"./package.json": "./package.json",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@tamagui/build": "1.118.
|
|
49
|
+
"@tamagui/build": "1.118.2",
|
|
50
50
|
"react": "*"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
package/src/useCheckbox.tsx
CHANGED
|
@@ -3,7 +3,7 @@ import { isWeb } from '@tamagui/constants'
|
|
|
3
3
|
import type { GestureReponderEvent } from '@tamagui/core'
|
|
4
4
|
import { composeEventHandlers } from '@tamagui/helpers'
|
|
5
5
|
import { useLabelContext } from '@tamagui/label'
|
|
6
|
-
import React from 'react'
|
|
6
|
+
import React, { useCallback, useMemo } from 'react'
|
|
7
7
|
import type { PressableProps, View, ViewProps } from 'react-native'
|
|
8
8
|
|
|
9
9
|
import { BubbleInput } from './BubbleInput'
|
|
@@ -50,7 +50,7 @@ export function useCheckbox<R extends View, P extends CheckboxProps>(
|
|
|
50
50
|
...checkboxProps
|
|
51
51
|
} = props
|
|
52
52
|
const [button, setButton] = React.useState<HTMLButtonElement | null>(null)
|
|
53
|
-
const composedRefs = useComposedRefs(ref,
|
|
53
|
+
const composedRefs = useComposedRefs(ref, setButton as any)
|
|
54
54
|
const hasConsumerStoppedPropagationRef = React.useRef(false)
|
|
55
55
|
// We set this to true by default so that events bubble to forms without JS (SSR)
|
|
56
56
|
const isFormControl = isWeb ? (button ? Boolean(button.closest('form')) : true) : false
|
|
@@ -58,6 +58,32 @@ export function useCheckbox<R extends View, P extends CheckboxProps>(
|
|
|
58
58
|
const labelId = useLabelContext(button)
|
|
59
59
|
const labelledBy = ariaLabelledby || labelId
|
|
60
60
|
|
|
61
|
+
const parentKeyDown = (props as React.HTMLProps<HTMLButtonElement>).onKeyDown
|
|
62
|
+
|
|
63
|
+
const handleKeyDown = useMemo(
|
|
64
|
+
() =>
|
|
65
|
+
composeEventHandlers(parentKeyDown, (event) => {
|
|
66
|
+
// According to WAI ARIA, Checkboxes don't activate on enter keypress
|
|
67
|
+
if (event.key === 'Enter') event.preventDefault()
|
|
68
|
+
}),
|
|
69
|
+
[parentKeyDown]
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
const handlePress = useMemo(
|
|
73
|
+
() =>
|
|
74
|
+
composeEventHandlers(props.onPress as any, (event: GestureReponderEvent) => {
|
|
75
|
+
setChecked((prevChecked) => (isIndeterminate(prevChecked) ? true : !prevChecked))
|
|
76
|
+
if (isFormControl && 'isPropagationStopped' in event) {
|
|
77
|
+
hasConsumerStoppedPropagationRef.current = event.isPropagationStopped()
|
|
78
|
+
// if checkbox is in a form, stop propagation from the button so that we only propagate
|
|
79
|
+
// one click event (from the input). We propagate changes from an input so that native
|
|
80
|
+
// form validation works and form events reflect checkbox updates.
|
|
81
|
+
if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation()
|
|
82
|
+
}
|
|
83
|
+
}),
|
|
84
|
+
[isFormControl]
|
|
85
|
+
)
|
|
86
|
+
|
|
61
87
|
return {
|
|
62
88
|
bubbleInput:
|
|
63
89
|
isWeb && isFormControl ? (
|
|
@@ -84,29 +110,9 @@ export function useCheckbox<R extends View, P extends CheckboxProps>(
|
|
|
84
110
|
'data-state': getState(checked),
|
|
85
111
|
'data-disabled': disabled ? '' : undefined,
|
|
86
112
|
disabled: disabled,
|
|
87
|
-
onKeyDown:
|
|
88
|
-
(props as React.HTMLProps<HTMLButtonElement>).onKeyDown,
|
|
89
|
-
(event) => {
|
|
90
|
-
// According to WAI ARIA, Checkboxes don't activate on enter keypress
|
|
91
|
-
if (event.key === 'Enter') event.preventDefault()
|
|
92
|
-
}
|
|
93
|
-
),
|
|
113
|
+
onKeyDown: handleKeyDown,
|
|
94
114
|
}),
|
|
95
|
-
onPress:
|
|
96
|
-
props.onPress as any,
|
|
97
|
-
(event: GestureReponderEvent) => {
|
|
98
|
-
setChecked((prevChecked) =>
|
|
99
|
-
isIndeterminate(prevChecked) ? true : !prevChecked
|
|
100
|
-
)
|
|
101
|
-
if (isFormControl && 'isPropagationStopped' in event) {
|
|
102
|
-
hasConsumerStoppedPropagationRef.current = event.isPropagationStopped()
|
|
103
|
-
// if checkbox is in a form, stop propagation from the button so that we only propagate
|
|
104
|
-
// one click event (from the input). We propagate changes from an input so that native
|
|
105
|
-
// form validation works and form events reflect checkbox updates.
|
|
106
|
-
if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation()
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
),
|
|
115
|
+
onPress: handlePress,
|
|
110
116
|
} satisfies CheckboxBaseProps,
|
|
111
117
|
}
|
|
112
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCheckbox.d.ts","sourceRoot":"","sources":["../src/useCheckbox.tsx"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"useCheckbox.d.ts","sourceRoot":"","sources":["../src/useCheckbox.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA+B,MAAM,OAAO,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAKnE,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,eAAe,CAAA;AAEpD,KAAK,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;AAEpE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,cAAc,CAAC,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,kBAAkB,CAAA;AAElE,wBAAgB,WAAW,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,aAAa,EACjE,KAAK,EAAE,CAAC,EACR,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;IACrB,YAAY;IACZ,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;CACnD,EACD,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;EA6ElB"}
|