@tamagui/checkbox-headless 1.89.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/LICENSE +21 -0
- package/dist/cjs/BubbleInput.js +65 -0
- package/dist/cjs/BubbleInput.js.map +6 -0
- package/dist/cjs/BubbleInput.native.js +70 -0
- package/dist/cjs/BubbleInput.native.js.map +6 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +22 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/cjs/useCheckbox.js +83 -0
- package/dist/cjs/useCheckbox.js.map +6 -0
- package/dist/cjs/useCheckbox.native.js +88 -0
- package/dist/cjs/useCheckbox.native.js.map +6 -0
- package/dist/cjs/utils.js +27 -0
- package/dist/cjs/utils.js.map +6 -0
- package/dist/cjs/utils.native.js +33 -0
- package/dist/cjs/utils.native.js.map +6 -0
- package/dist/esm/BubbleInput.js +44 -0
- package/dist/esm/BubbleInput.js.map +6 -0
- package/dist/esm/BubbleInput.mjs +47 -0
- package/dist/esm/BubbleInput.native.js +44 -0
- package/dist/esm/BubbleInput.native.js.map +6 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.native.js +3 -0
- package/dist/esm/index.native.js.map +6 -0
- package/dist/esm/useCheckbox.js +66 -0
- package/dist/esm/useCheckbox.js.map +6 -0
- package/dist/esm/useCheckbox.mjs +58 -0
- package/dist/esm/useCheckbox.native.js +66 -0
- package/dist/esm/useCheckbox.native.js.map +6 -0
- package/dist/esm/utils.js +11 -0
- package/dist/esm/utils.js.map +6 -0
- package/dist/esm/utils.mjs +7 -0
- package/dist/esm/utils.native.js +11 -0
- package/dist/esm/utils.native.js.map +6 -0
- package/dist/jsx/BubbleInput.js +44 -0
- package/dist/jsx/BubbleInput.js.map +6 -0
- package/dist/jsx/BubbleInput.mjs +47 -0
- package/dist/jsx/BubbleInput.native.js +44 -0
- package/dist/jsx/BubbleInput.native.js.map +6 -0
- package/dist/jsx/index.js +3 -0
- package/dist/jsx/index.js.map +6 -0
- package/dist/jsx/index.mjs +2 -0
- package/dist/jsx/index.native.js +3 -0
- package/dist/jsx/index.native.js.map +6 -0
- package/dist/jsx/useCheckbox.js +66 -0
- package/dist/jsx/useCheckbox.js.map +6 -0
- package/dist/jsx/useCheckbox.mjs +58 -0
- package/dist/jsx/useCheckbox.native.js +66 -0
- package/dist/jsx/useCheckbox.native.js.map +6 -0
- package/dist/jsx/utils.js +11 -0
- package/dist/jsx/utils.js.map +6 -0
- package/dist/jsx/utils.mjs +7 -0
- package/dist/jsx/utils.native.js +11 -0
- package/dist/jsx/utils.native.js.map +6 -0
- package/package.json +55 -0
- package/src/BubbleInput.tsx +64 -0
- package/src/index.ts +2 -0
- package/src/useCheckbox.tsx +112 -0
- package/src/utils.tsx +9 -0
- package/types/BubbleInput.d.ts +10 -0
- package/types/BubbleInput.d.ts.map +1 -0
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +1 -0
- package/types/useCheckbox.d.ts +43 -0
- package/types/useCheckbox.d.ts.map +1 -0
- package/types/utils.d.ts +4 -0
- package/types/utils.d.ts.map +1 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/BubbleInput.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,mBAAmB;AAC5B,YAAY,WAAW;AAGvB,SAAS,uBAAuB;AAkC5B;AAxBG,MAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,EAAE,SAAS,UAAU,IAAM,SAAS,UAAU,GAAG,WAAW,IAAI,OAChE,MAAM,MAAM,OAAyB,IAAI,GACzC,cAAc,YAAY,OAAO;AAGvC,eAAM,UAAU,MAAM;AACpB,UAAM,QAAQ,IAAI,SACZ,aAAa,OAAO,iBAAiB,WAKrC,aAJa,OAAO;AAAA,MACxB;AAAA,MACA;AAAA,IACF,EAC8B;AAE9B,QAAI,gBAAgB,WAAW,YAAY;AACzC,YAAM,QAAQ,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC;AAC5C,YAAM,gBAAgB,gBAAgB,OAAO,GAC7C,WAAW,KAAK,OAAO,gBAAgB,OAAO,IAAI,KAAQ,OAAO,GACjE,MAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,aAAa,SAAS,OAAO,CAAC,GAGhC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,gBAAgB,gBAAgB,OAAO,IAAI,KAAQ;AAAA,MAClD,GAAG;AAAA,MACJ,UAAU;AAAA,MACV;AAAA,MACA,eAAa;AAAA,MACb,OAAO;AAAA,QACL,GAAI,WACA;AAAA;AAAA,UAEE,UAAU;AAAA,UACV,eAAe;AAAA,UACf,SAAS;AAAA,UACT,QAAQ;AAAA,QACV,IACA;AAAA,UACE,YAAY;AAAA,UACZ,aAAa;AAAA,QACf;AAAA,QAEJ,GAAG,MAAM;AAAA,MACX;AAAA;AAAA,EACF;AAEJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
|
+
import { isWeb } from "@tamagui/constants";
|
|
3
|
+
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
|
+
import { useLabelContext } from "@tamagui/label";
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { BubbleInput } from "./BubbleInput";
|
|
7
|
+
import { getState, isIndeterminate } from "./utils";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
function useCheckbox(props, [checked, setChecked], ref) {
|
|
10
|
+
const {
|
|
11
|
+
labelledBy: ariaLabelledby,
|
|
12
|
+
name,
|
|
13
|
+
required,
|
|
14
|
+
disabled,
|
|
15
|
+
value = "on",
|
|
16
|
+
onCheckedChange,
|
|
17
|
+
...checkboxProps
|
|
18
|
+
} = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref, (node) => setButton(node)), hasConsumerStoppedPropagationRef = React.useRef(!1), isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1, labelId = useLabelContext(button), labelledBy = ariaLabelledby || labelId;
|
|
19
|
+
return {
|
|
20
|
+
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */ jsx(
|
|
21
|
+
BubbleInput,
|
|
22
|
+
{
|
|
23
|
+
isHidden: !0,
|
|
24
|
+
control: button,
|
|
25
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
26
|
+
name,
|
|
27
|
+
value,
|
|
28
|
+
checked,
|
|
29
|
+
required,
|
|
30
|
+
disabled
|
|
31
|
+
}
|
|
32
|
+
) : null,
|
|
33
|
+
checkboxRef: composedRefs,
|
|
34
|
+
checkboxProps: {
|
|
35
|
+
role: "checkbox",
|
|
36
|
+
"aria-labelledby": labelledBy,
|
|
37
|
+
"aria-checked": isIndeterminate(checked) ? "mixed" : checked,
|
|
38
|
+
...checkboxProps,
|
|
39
|
+
...isWeb && {
|
|
40
|
+
type: "button",
|
|
41
|
+
value,
|
|
42
|
+
"data-state": getState(checked),
|
|
43
|
+
"data-disabled": disabled ? "" : void 0,
|
|
44
|
+
disabled,
|
|
45
|
+
onKeyDown: composeEventHandlers(
|
|
46
|
+
props.onKeyDown,
|
|
47
|
+
(event) => {
|
|
48
|
+
event.key === "Enter" && event.preventDefault();
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
},
|
|
52
|
+
onPress: composeEventHandlers(
|
|
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
|
+
)
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
useCheckbox
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=useCheckbox.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useCheckbox.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,aAAa;AAEtB,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,OAAO,WAAW;AAGlB,SAAS,mBAAmB;AAC5B,SAAS,UAAU,uBAAuB;AAsDlC;AA7BD,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,CAAC,SAAS,UAAU,IAAW,CAAC,GACpE,mCAAmC,MAAM,OAAO,EAAK,GAErD,gBAAgB,QAAS,SAAS,EAAQ,OAAO,QAAQ,MAAM,IAAK,KAAQ,IAE5E,UAAU,gBAAgB,MAAM,GAChC,aAAa,kBAAkB;AAErC,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,UACR,MAA6C;AAAA,UAC9C,CAAC,UAAU;AAET,YAAI,MAAM,QAAQ,WAAS,MAAM,eAAe;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,CAAC,UAAgC;AAC/B;AAAA,YAAW,CAAC,gBACV,gBAAgB,WAAW,IAAI,KAAO,CAAC;AAAA,UACzC,GACI,iBAAiB,0BAA0B,UAC7C,iCAAiC,UAAU,MAAM,qBAAqB,GAIjE,iCAAiC,WAAS,MAAM,gBAAgB;AAAA,QAEzE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
|
+
import { isWeb } from "@tamagui/constants";
|
|
3
|
+
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
|
+
import { useLabelContext } from "@tamagui/label";
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { BubbleInput } from "./BubbleInput.mjs";
|
|
7
|
+
import { getState, isIndeterminate } from "./utils.mjs";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
function useCheckbox(props, [checked, setChecked], ref) {
|
|
10
|
+
const {
|
|
11
|
+
labelledBy: ariaLabelledby,
|
|
12
|
+
name,
|
|
13
|
+
required,
|
|
14
|
+
disabled,
|
|
15
|
+
value = "on",
|
|
16
|
+
onCheckedChange,
|
|
17
|
+
...checkboxProps
|
|
18
|
+
} = props,
|
|
19
|
+
[button, setButton] = React.useState(null),
|
|
20
|
+
composedRefs = useComposedRefs(ref, node => setButton(node)),
|
|
21
|
+
hasConsumerStoppedPropagationRef = React.useRef(!1),
|
|
22
|
+
isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1,
|
|
23
|
+
labelId = useLabelContext(button),
|
|
24
|
+
labelledBy = ariaLabelledby || labelId;
|
|
25
|
+
return {
|
|
26
|
+
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */jsx(BubbleInput, {
|
|
27
|
+
isHidden: !0,
|
|
28
|
+
control: button,
|
|
29
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
30
|
+
name,
|
|
31
|
+
value,
|
|
32
|
+
checked,
|
|
33
|
+
required,
|
|
34
|
+
disabled
|
|
35
|
+
}) : null,
|
|
36
|
+
checkboxRef: composedRefs,
|
|
37
|
+
checkboxProps: {
|
|
38
|
+
role: "checkbox",
|
|
39
|
+
"aria-labelledby": labelledBy,
|
|
40
|
+
"aria-checked": isIndeterminate(checked) ? "mixed" : checked,
|
|
41
|
+
...checkboxProps,
|
|
42
|
+
...(isWeb && {
|
|
43
|
+
type: "button",
|
|
44
|
+
value,
|
|
45
|
+
"data-state": getState(checked),
|
|
46
|
+
"data-disabled": disabled ? "" : void 0,
|
|
47
|
+
disabled,
|
|
48
|
+
onKeyDown: composeEventHandlers(props.onKeyDown, event => {
|
|
49
|
+
event.key === "Enter" && event.preventDefault();
|
|
50
|
+
})
|
|
51
|
+
}),
|
|
52
|
+
onPress: composeEventHandlers(props.onPress, event => {
|
|
53
|
+
setChecked(prevChecked => isIndeterminate(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export { useCheckbox };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
|
+
import { isWeb } from "@tamagui/constants";
|
|
3
|
+
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
|
+
import { useLabelContext } from "@tamagui/label";
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { BubbleInput } from "./BubbleInput";
|
|
7
|
+
import { getState, isIndeterminate } from "./utils";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
function useCheckbox(props, [checked, setChecked], ref) {
|
|
10
|
+
const {
|
|
11
|
+
labelledBy: ariaLabelledby,
|
|
12
|
+
name,
|
|
13
|
+
required,
|
|
14
|
+
disabled,
|
|
15
|
+
value = "on",
|
|
16
|
+
onCheckedChange,
|
|
17
|
+
...checkboxProps
|
|
18
|
+
} = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref, (node) => setButton(node)), hasConsumerStoppedPropagationRef = React.useRef(!1), isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1, labelId = useLabelContext(button), labelledBy = ariaLabelledby || labelId;
|
|
19
|
+
return {
|
|
20
|
+
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */ jsx(
|
|
21
|
+
BubbleInput,
|
|
22
|
+
{
|
|
23
|
+
isHidden: !0,
|
|
24
|
+
control: button,
|
|
25
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
26
|
+
name,
|
|
27
|
+
value,
|
|
28
|
+
checked,
|
|
29
|
+
required,
|
|
30
|
+
disabled
|
|
31
|
+
}
|
|
32
|
+
) : null,
|
|
33
|
+
checkboxRef: composedRefs,
|
|
34
|
+
checkboxProps: {
|
|
35
|
+
role: "checkbox",
|
|
36
|
+
"aria-labelledby": labelledBy,
|
|
37
|
+
"aria-checked": isIndeterminate(checked) ? "mixed" : checked,
|
|
38
|
+
...checkboxProps,
|
|
39
|
+
...isWeb && {
|
|
40
|
+
type: "button",
|
|
41
|
+
value,
|
|
42
|
+
"data-state": getState(checked),
|
|
43
|
+
"data-disabled": disabled ? "" : void 0,
|
|
44
|
+
disabled,
|
|
45
|
+
onKeyDown: composeEventHandlers(
|
|
46
|
+
props.onKeyDown,
|
|
47
|
+
(event) => {
|
|
48
|
+
event.key === "Enter" && event.preventDefault();
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
},
|
|
52
|
+
onPress: composeEventHandlers(
|
|
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
|
+
)
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
useCheckbox
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=useCheckbox.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useCheckbox.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,aAAa;AAEtB,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,OAAO,WAAW;AAGlB,SAAS,mBAAmB;AAC5B,SAAS,UAAU,uBAAuB;AAsDlC;AA7BD,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,CAAC,SAAS,UAAU,IAAW,CAAC,GACpE,mCAAmC,MAAM,OAAO,EAAK,GAErD,gBAAgB,QAAS,SAAS,EAAQ,OAAO,QAAQ,MAAM,IAAK,KAAQ,IAE5E,UAAU,gBAAgB,MAAM,GAChC,aAAa,kBAAkB;AAErC,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,UACR,MAA6C;AAAA,UAC9C,CAAC,UAAU;AAET,YAAI,MAAM,QAAQ,WAAS,MAAM,eAAe;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,CAAC,UAAgC;AAC/B;AAAA,YAAW,CAAC,gBACV,gBAAgB,WAAW,IAAI,KAAO,CAAC;AAAA,UACzC,GACI,iBAAiB,0BAA0B,UAC7C,iCAAiC,UAAU,MAAM,qBAAqB,GAIjE,iCAAiC,WAAS,MAAM,gBAAgB;AAAA,QAEzE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
function isIndeterminate(checked) {
|
|
2
|
+
return checked === "indeterminate";
|
|
3
|
+
}
|
|
4
|
+
function getState(checked) {
|
|
5
|
+
return isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
|
|
6
|
+
}
|
|
7
|
+
export {
|
|
8
|
+
getState,
|
|
9
|
+
isIndeterminate
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
function isIndeterminate(checked) {
|
|
2
|
+
return checked === "indeterminate";
|
|
3
|
+
}
|
|
4
|
+
function getState(checked) {
|
|
5
|
+
return isIndeterminate(checked) ? "indeterminate" : checked ? "checked" : "unchecked";
|
|
6
|
+
}
|
|
7
|
+
export {
|
|
8
|
+
getState,
|
|
9
|
+
isIndeterminate
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { usePrevious } from "@tamagui/use-previous";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { isIndeterminate } from "./utils";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
const BubbleInput = (props) => {
|
|
6
|
+
const { checked, bubbles = !0, control, isHidden, ...inputProps } = props, ref = React.useRef(null), prevChecked = usePrevious(checked);
|
|
7
|
+
return React.useEffect(() => {
|
|
8
|
+
const input = ref.current, inputProto = window.HTMLInputElement.prototype, setChecked = Object.getOwnPropertyDescriptor(
|
|
9
|
+
inputProto,
|
|
10
|
+
"checked"
|
|
11
|
+
).set;
|
|
12
|
+
if (prevChecked !== checked && setChecked) {
|
|
13
|
+
const event = new Event("click", { bubbles });
|
|
14
|
+
input.indeterminate = isIndeterminate(checked), setChecked.call(input, isIndeterminate(checked) ? !1 : checked), input.dispatchEvent(event);
|
|
15
|
+
}
|
|
16
|
+
}, [prevChecked, checked, bubbles]), /* @__PURE__ */ jsx(
|
|
17
|
+
"input",
|
|
18
|
+
{
|
|
19
|
+
type: "checkbox",
|
|
20
|
+
defaultChecked: isIndeterminate(checked) ? !1 : checked,
|
|
21
|
+
...inputProps,
|
|
22
|
+
tabIndex: -1,
|
|
23
|
+
ref,
|
|
24
|
+
"aria-hidden": isHidden,
|
|
25
|
+
style: {
|
|
26
|
+
...isHidden ? {
|
|
27
|
+
// ...controlSize,
|
|
28
|
+
position: "absolute",
|
|
29
|
+
pointerEvents: "none",
|
|
30
|
+
opacity: 0,
|
|
31
|
+
margin: 0
|
|
32
|
+
} : {
|
|
33
|
+
appearance: "auto",
|
|
34
|
+
accentColor: "var(--color6)"
|
|
35
|
+
},
|
|
36
|
+
...props.style
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
BubbleInput
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=BubbleInput.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/BubbleInput.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,mBAAmB;AAC5B,YAAY,WAAW;AAGvB,SAAS,uBAAuB;AAkC5B;AAxBG,MAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,EAAE,SAAS,UAAU,IAAM,SAAS,UAAU,GAAG,WAAW,IAAI,OAChE,MAAM,MAAM,OAAyB,IAAI,GACzC,cAAc,YAAY,OAAO;AAGvC,eAAM,UAAU,MAAM;AACpB,UAAM,QAAQ,IAAI,SACZ,aAAa,OAAO,iBAAiB,WAKrC,aAJa,OAAO;AAAA,MACxB;AAAA,MACA;AAAA,IACF,EAC8B;AAE9B,QAAI,gBAAgB,WAAW,YAAY;AACzC,YAAM,QAAQ,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC;AAC5C,YAAM,gBAAgB,gBAAgB,OAAO,GAC7C,WAAW,KAAK,OAAO,gBAAgB,OAAO,IAAI,KAAQ,OAAO,GACjE,MAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,aAAa,SAAS,OAAO,CAAC,GAGhC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,gBAAgB,gBAAgB,OAAO,IAAI,KAAQ;AAAA,MAClD,GAAG;AAAA,MACJ,UAAU;AAAA,MACV;AAAA,MACA,eAAa;AAAA,MACb,OAAO;AAAA,QACL,GAAI,WACA;AAAA;AAAA,UAEE,UAAU;AAAA,UACV,eAAe;AAAA,UACf,SAAS;AAAA,UACT,QAAQ;AAAA,QACV,IACA;AAAA,UACE,YAAY;AAAA,UACZ,aAAa;AAAA,QACf;AAAA,QAEJ,GAAG,MAAM;AAAA,MACX;AAAA;AAAA,EACF;AAEJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { usePrevious } from "@tamagui/use-previous";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { isIndeterminate } from "./utils.mjs";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
const BubbleInput = props => {
|
|
6
|
+
const {
|
|
7
|
+
checked,
|
|
8
|
+
bubbles = !0,
|
|
9
|
+
control,
|
|
10
|
+
isHidden,
|
|
11
|
+
...inputProps
|
|
12
|
+
} = props,
|
|
13
|
+
ref = React.useRef(null),
|
|
14
|
+
prevChecked = usePrevious(checked);
|
|
15
|
+
return React.useEffect(() => {
|
|
16
|
+
const input = ref.current,
|
|
17
|
+
inputProto = window.HTMLInputElement.prototype,
|
|
18
|
+
setChecked = Object.getOwnPropertyDescriptor(inputProto, "checked").set;
|
|
19
|
+
if (prevChecked !== checked && setChecked) {
|
|
20
|
+
const event = new Event("click", {
|
|
21
|
+
bubbles
|
|
22
|
+
});
|
|
23
|
+
input.indeterminate = isIndeterminate(checked), setChecked.call(input, isIndeterminate(checked) ? !1 : checked), input.dispatchEvent(event);
|
|
24
|
+
}
|
|
25
|
+
}, [prevChecked, checked, bubbles]), /* @__PURE__ */jsx("input", {
|
|
26
|
+
type: "checkbox",
|
|
27
|
+
defaultChecked: isIndeterminate(checked) ? !1 : checked,
|
|
28
|
+
...inputProps,
|
|
29
|
+
tabIndex: -1,
|
|
30
|
+
ref,
|
|
31
|
+
"aria-hidden": isHidden,
|
|
32
|
+
style: {
|
|
33
|
+
...(isHidden ? {
|
|
34
|
+
// ...controlSize,
|
|
35
|
+
position: "absolute",
|
|
36
|
+
pointerEvents: "none",
|
|
37
|
+
opacity: 0,
|
|
38
|
+
margin: 0
|
|
39
|
+
} : {
|
|
40
|
+
appearance: "auto",
|
|
41
|
+
accentColor: "var(--color6)"
|
|
42
|
+
}),
|
|
43
|
+
...props.style
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
export { BubbleInput };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { usePrevious } from "@tamagui/use-previous";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { isIndeterminate } from "./utils";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
const BubbleInput = (props) => {
|
|
6
|
+
const { checked, bubbles = !0, control, isHidden, ...inputProps } = props, ref = React.useRef(null), prevChecked = usePrevious(checked);
|
|
7
|
+
return React.useEffect(() => {
|
|
8
|
+
const input = ref.current, inputProto = window.HTMLInputElement.prototype, setChecked = Object.getOwnPropertyDescriptor(
|
|
9
|
+
inputProto,
|
|
10
|
+
"checked"
|
|
11
|
+
).set;
|
|
12
|
+
if (prevChecked !== checked && setChecked) {
|
|
13
|
+
const event = new Event("click", { bubbles });
|
|
14
|
+
input.indeterminate = isIndeterminate(checked), setChecked.call(input, isIndeterminate(checked) ? !1 : checked), input.dispatchEvent(event);
|
|
15
|
+
}
|
|
16
|
+
}, [prevChecked, checked, bubbles]), /* @__PURE__ */ jsx(
|
|
17
|
+
"input",
|
|
18
|
+
{
|
|
19
|
+
type: "checkbox",
|
|
20
|
+
defaultChecked: isIndeterminate(checked) ? !1 : checked,
|
|
21
|
+
...inputProps,
|
|
22
|
+
tabIndex: -1,
|
|
23
|
+
ref,
|
|
24
|
+
"aria-hidden": isHidden,
|
|
25
|
+
style: {
|
|
26
|
+
...isHidden ? {
|
|
27
|
+
// ...controlSize,
|
|
28
|
+
position: "absolute",
|
|
29
|
+
pointerEvents: "none",
|
|
30
|
+
opacity: 0,
|
|
31
|
+
margin: 0
|
|
32
|
+
} : {
|
|
33
|
+
appearance: "auto",
|
|
34
|
+
accentColor: "var(--color6)"
|
|
35
|
+
},
|
|
36
|
+
...props.style
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
BubbleInput
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=BubbleInput.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/BubbleInput.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,mBAAmB;AAC5B,YAAY,WAAW;AAGvB,SAAS,uBAAuB;AAkC5B;AAxBG,MAAM,cAAc,CAAC,UAA4B;AACtD,QAAM,EAAE,SAAS,UAAU,IAAM,SAAS,UAAU,GAAG,WAAW,IAAI,OAChE,MAAM,MAAM,OAAyB,IAAI,GACzC,cAAc,YAAY,OAAO;AAGvC,eAAM,UAAU,MAAM;AACpB,UAAM,QAAQ,IAAI,SACZ,aAAa,OAAO,iBAAiB,WAKrC,aAJa,OAAO;AAAA,MACxB;AAAA,MACA;AAAA,IACF,EAC8B;AAE9B,QAAI,gBAAgB,WAAW,YAAY;AACzC,YAAM,QAAQ,IAAI,MAAM,SAAS,EAAE,QAAQ,CAAC;AAC5C,YAAM,gBAAgB,gBAAgB,OAAO,GAC7C,WAAW,KAAK,OAAO,gBAAgB,OAAO,IAAI,KAAQ,OAAO,GACjE,MAAM,cAAc,KAAK;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,aAAa,SAAS,OAAO,CAAC,GAGhC;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,gBAAgB,gBAAgB,OAAO,IAAI,KAAQ;AAAA,MAClD,GAAG;AAAA,MACJ,UAAU;AAAA,MACV;AAAA,MACA,eAAa;AAAA,MACb,OAAO;AAAA,QACL,GAAI,WACA;AAAA;AAAA,UAEE,UAAU;AAAA,UACV,eAAe;AAAA,UACf,SAAS;AAAA,UACT,QAAQ;AAAA,QACV,IACA;AAAA,UACE,YAAY;AAAA,UACZ,aAAa;AAAA,QACf;AAAA,QAEJ,GAAG,MAAM;AAAA,MACX;AAAA;AAAA,EACF;AAEJ;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
|
+
import { isWeb } from "@tamagui/constants";
|
|
3
|
+
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
|
+
import { useLabelContext } from "@tamagui/label";
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { BubbleInput } from "./BubbleInput";
|
|
7
|
+
import { getState, isIndeterminate } from "./utils";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
function useCheckbox(props, [checked, setChecked], ref) {
|
|
10
|
+
const {
|
|
11
|
+
labelledBy: ariaLabelledby,
|
|
12
|
+
name,
|
|
13
|
+
required,
|
|
14
|
+
disabled,
|
|
15
|
+
value = "on",
|
|
16
|
+
onCheckedChange,
|
|
17
|
+
...checkboxProps
|
|
18
|
+
} = props, [button, setButton] = React.useState(null), composedRefs = useComposedRefs(ref, (node) => setButton(node)), hasConsumerStoppedPropagationRef = React.useRef(!1), isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1, labelId = useLabelContext(button), labelledBy = ariaLabelledby || labelId;
|
|
19
|
+
return {
|
|
20
|
+
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */ jsx(
|
|
21
|
+
BubbleInput,
|
|
22
|
+
{
|
|
23
|
+
isHidden: !0,
|
|
24
|
+
control: button,
|
|
25
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
26
|
+
name,
|
|
27
|
+
value,
|
|
28
|
+
checked,
|
|
29
|
+
required,
|
|
30
|
+
disabled
|
|
31
|
+
}
|
|
32
|
+
) : null,
|
|
33
|
+
checkboxRef: composedRefs,
|
|
34
|
+
checkboxProps: {
|
|
35
|
+
role: "checkbox",
|
|
36
|
+
"aria-labelledby": labelledBy,
|
|
37
|
+
"aria-checked": isIndeterminate(checked) ? "mixed" : checked,
|
|
38
|
+
...checkboxProps,
|
|
39
|
+
...isWeb && {
|
|
40
|
+
type: "button",
|
|
41
|
+
value,
|
|
42
|
+
"data-state": getState(checked),
|
|
43
|
+
"data-disabled": disabled ? "" : void 0,
|
|
44
|
+
disabled,
|
|
45
|
+
onKeyDown: composeEventHandlers(
|
|
46
|
+
props.onKeyDown,
|
|
47
|
+
(event) => {
|
|
48
|
+
event.key === "Enter" && event.preventDefault();
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
},
|
|
52
|
+
onPress: composeEventHandlers(
|
|
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
|
+
)
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
useCheckbox
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=useCheckbox.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/useCheckbox.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,uBAAuB;AAChC,SAAS,aAAa;AAEtB,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,OAAO,WAAW;AAGlB,SAAS,mBAAmB;AAC5B,SAAS,UAAU,uBAAuB;AAsDlC;AA7BD,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,CAAC,SAAS,UAAU,IAAW,CAAC,GACpE,mCAAmC,MAAM,OAAO,EAAK,GAErD,gBAAgB,QAAS,SAAS,EAAQ,OAAO,QAAQ,MAAM,IAAK,KAAQ,IAE5E,UAAU,gBAAgB,MAAM,GAChC,aAAa,kBAAkB;AAErC,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,UACR,MAA6C;AAAA,UAC9C,CAAC,UAAU;AAET,YAAI,MAAM,QAAQ,WAAS,MAAM,eAAe;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN,CAAC,UAAgC;AAC/B;AAAA,YAAW,CAAC,gBACV,gBAAgB,WAAW,IAAI,KAAO,CAAC;AAAA,UACzC,GACI,iBAAiB,0BAA0B,UAC7C,iCAAiC,UAAU,MAAM,qBAAqB,GAIjE,iCAAiC,WAAS,MAAM,gBAAgB;AAAA,QAEzE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { useComposedRefs } from "@tamagui/compose-refs";
|
|
2
|
+
import { isWeb } from "@tamagui/constants";
|
|
3
|
+
import { composeEventHandlers } from "@tamagui/helpers";
|
|
4
|
+
import { useLabelContext } from "@tamagui/label";
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { BubbleInput } from "./BubbleInput.mjs";
|
|
7
|
+
import { getState, isIndeterminate } from "./utils.mjs";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
function useCheckbox(props, [checked, setChecked], ref) {
|
|
10
|
+
const {
|
|
11
|
+
labelledBy: ariaLabelledby,
|
|
12
|
+
name,
|
|
13
|
+
required,
|
|
14
|
+
disabled,
|
|
15
|
+
value = "on",
|
|
16
|
+
onCheckedChange,
|
|
17
|
+
...checkboxProps
|
|
18
|
+
} = props,
|
|
19
|
+
[button, setButton] = React.useState(null),
|
|
20
|
+
composedRefs = useComposedRefs(ref, node => setButton(node)),
|
|
21
|
+
hasConsumerStoppedPropagationRef = React.useRef(!1),
|
|
22
|
+
isFormControl = isWeb ? button ? !!button.closest("form") : !0 : !1,
|
|
23
|
+
labelId = useLabelContext(button),
|
|
24
|
+
labelledBy = ariaLabelledby || labelId;
|
|
25
|
+
return {
|
|
26
|
+
bubbleInput: isWeb && isFormControl ? /* @__PURE__ */jsx(BubbleInput, {
|
|
27
|
+
isHidden: !0,
|
|
28
|
+
control: button,
|
|
29
|
+
bubbles: !hasConsumerStoppedPropagationRef.current,
|
|
30
|
+
name,
|
|
31
|
+
value,
|
|
32
|
+
checked,
|
|
33
|
+
required,
|
|
34
|
+
disabled
|
|
35
|
+
}) : null,
|
|
36
|
+
checkboxRef: composedRefs,
|
|
37
|
+
checkboxProps: {
|
|
38
|
+
role: "checkbox",
|
|
39
|
+
"aria-labelledby": labelledBy,
|
|
40
|
+
"aria-checked": isIndeterminate(checked) ? "mixed" : checked,
|
|
41
|
+
...checkboxProps,
|
|
42
|
+
...(isWeb && {
|
|
43
|
+
type: "button",
|
|
44
|
+
value,
|
|
45
|
+
"data-state": getState(checked),
|
|
46
|
+
"data-disabled": disabled ? "" : void 0,
|
|
47
|
+
disabled,
|
|
48
|
+
onKeyDown: composeEventHandlers(props.onKeyDown, event => {
|
|
49
|
+
event.key === "Enter" && event.preventDefault();
|
|
50
|
+
})
|
|
51
|
+
}),
|
|
52
|
+
onPress: composeEventHandlers(props.onPress, event => {
|
|
53
|
+
setChecked(prevChecked => isIndeterminate(prevChecked) ? !0 : !prevChecked), isFormControl && "isPropagationStopped" in event && (hasConsumerStoppedPropagationRef.current = event.isPropagationStopped(), hasConsumerStoppedPropagationRef.current || event.stopPropagation());
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export { useCheckbox };
|